X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=priv%2Fstatic%2Fpacks%2Fflavours%2Fglitch%2Fasync%2Fstatus.js.map;h=a8c110f98602389ac4a3e4d138ad7611b1804479;hb=a42a0716ec769dfbd97505b6c872c5ea1a8f800a;hp=ac72c2d9291a213255b80870db0c7fde5ddf9936;hpb=54e7087ab412a488f8ad7286aef89d313e5e7b14;p=akkoma
diff --git a/priv/static/packs/flavours/glitch/async/status.js.map b/priv/static/packs/flavours/glitch/async/status.js.map
index ac72c2d92..a8c110f98 100644
--- a/priv/static/packs/flavours/glitch/async/status.js.map
+++ b/priv/static/packs/flavours/glitch/async/status.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/detailed_status.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/status/index.js"],"names":["DetailedStatus","height","e","button","ctrlKey","altKey","metaKey","_this","context","router","preventDefault","history","push","props","status","getIn","stopPropagation","destination","media","startTime","onOpenVideo","c","node","_measureHeight","href","target","nodeName","parentNode","window","open","heightJustChanged","_this2","this","measureHeight","scheduleIdleTask","setState","Math","ceil","scrollHeight","onHeightChange","componentDidUpdate","prevProps","prevState","state","render","get","_this$props","expanded","onToggleHidden","settings","outerStyle","boxSizing","compact","mediaIcon","applicationLink","reblogLink","reblogIcon","favouriteLink","size","some","item","Object","_babel_runtime_helpers_esm_jsx__WEBPACK_IMPORTED_MODULE_0__","flavours_glitch_components_attachment_list__WEBPACK_IMPORTED_MODULE_11__","video","flavours_glitch_features_video__WEBPACK_IMPORTED_MODULE_16__","preview","src","alt","inline","sensitive","letterbox","fullwidth","preventPlayback","handleOpenVideo","autoplay","flavours_glitch_components_media_gallery__WEBPACK_IMPORTED_MODULE_10__","standalone","hidden","onOpenMedia","_card__WEBPACK_IMPORTED_MODULE_14__","card","className","rel","react_router_dom__WEBPACK_IMPORTED_MODULE_12__","to","react_intl__WEBPACK_IMPORTED_MODULE_13__","value","onClick","handleModalLink","style","react__WEBPACK_IMPORTED_MODULE_4___default","a","createElement","ref","setRef","classNames","data-status-by","handleAccountClick","flavours_glitch_components_avatar__WEBPACK_IMPORTED_MODULE_7__","account","flavours_glitch_components_display_name__WEBPACK_IMPORTED_MODULE_8__","localDomain","domain","flavours_glitch_components_status_content__WEBPACK_IMPORTED_MODULE_9__","collapsed","onExpandedToggle","parseClick","onUpdate","handleChildUpdate","Date","hour12","year","month","day","hour","minute","flavours_glitch_components_status_visibility_icon__WEBPACK_IMPORTED_MODULE_17__","visibility","ImmutablePureComponent","PropTypes","object","ImmutablePropTypes","map","isRequired","func","bool","string","messages","defineMessages","delete","id","defaultMessage","redraft","direct","mention","reply","reblog","reblog_private","cannot_reblog","favourite","bookmark","mute","muteConversation","unmuteConversation","block","report","share","pin","unpin","embed","admin_account","admin_status","copy","ActionBar","injectIntl","onReply","onReblog","onFavourite","onBookmark","onDelete","onDirect","onMention","onMute","onMuteConversation","onBlock","onReport","onPin","navigator","text","url","onEmbed","textarea","document","textContent","position","body","appendChild","select","execCommand","removeChild","intl","publicStatus","includes","mutingConversation","menu","formatMessage","action","handleCopy","handleEmbed","me","handlePinClick","handleConversationMuteClick","handleDeleteClick","name","handleMentionClick","handleDirectClick","handleMuteClick","handleBlockClick","handleReport","isStaff","accountAdminLink","statusAdminLink","undefined","shareButton","jsx","icon_button","title","icon","handleShare","reblog_disabled","reblog_message","handleReplyClick","disabled","active","handleReblogClick","animate","handleFavouriteClick","handleBookmarkClick","dropdown_menu_container","items","direction","ariaLabel","React","PureComponent","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","blockConfirm","revealAll","hideAll","detailedStatus","replyConfirm","replyMessage","Status","connect","getStatus","makeGetStatus","params","statusId","ancestorsIds","Immutable","List","descendantsIds","withMutations","mutable","unshift","ids","length","shift","replies","reverse","forEach","askReplyConfirmation","trim","fullscreen","isExpanded","threadExpanded","setExpansion","dispatch","unfavourite","shiftKey","favouriteModal","handleModalFavourite","openModal","message","confirm","onDoNotAsk","changeLocalSetting","onConfirm","replyCompose","unreblog","boostModal","handleModalReblog","unbookmark","withRedraft","_this$props2","deleteModal","deleteStatus","directCompose","mentionCompose","index","time","initMuteModal","unmuteStatus","muteStatus","_this$props3","index_es","values","blockAccount","initReport","handleMoveUp","handleMoveDown","_this$props4","_selectChild","indexOf","_this$props5","isFullscreen","prevRouterProps","_ref","location","mastodonModalOpen","componentDidMount","attachFullscreenListener","onFullScreenChange","fetchStatus","_this$props6","element","querySelectorAll","requestAnimationFrame","scrollIntoView","getDerivedStateFromProps","autoUnfoldCW","focus","renderChildren","list","status_container","onMoveUp","onMoveDown","contextType","_this$props7","componentWillUnmount","detachFullscreenListener","ancestors","descendants","_this$props8","_this$state","column","column_back_button","missing_indicator","handlers","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyMention","openProfile","handleHotkeyOpenProfile","toggleSpoiler","handleExpandedToggle","label","column_header","showBackButton","extraButton","aria-label","handleToggleAll","aria-pressed","react_router_scroll_4_es","scrollKey","shouldUpdateScroll","react_default","react_hotkeys_index_es","tabIndex","textForScreenReader","detailed_status","handleOpenMedia","action_bar_ActionBar","handlePin"],"mappings":"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","file":"flavours/glitch/async/status.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport DisplayName from 'flavours/glitch/components/display_name';\nimport StatusContent from 'flavours/glitch/components/status_content';\nimport MediaGallery from 'flavours/glitch/components/media_gallery';\nimport AttachmentList from 'flavours/glitch/components/attachment_list';\nimport { Link } from 'react-router-dom';\nimport { FormattedDate, FormattedNumber } from 'react-intl';\nimport Card from './card';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Video from 'flavours/glitch/features/video';\nimport VisibilityIcon from 'flavours/glitch/components/status_visibility_icon';\nimport scheduleIdleTask from 'flavours/glitch/util/schedule_idle_task';\nimport classNames from 'classnames';\n\nexport default class DetailedStatus extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n settings: ImmutablePropTypes.map.isRequired,\n onOpenMedia: PropTypes.func.isRequired,\n onOpenVideo: PropTypes.func.isRequired,\n onToggleHidden: PropTypes.func,\n expanded: PropTypes.bool,\n measureHeight: PropTypes.bool,\n onHeightChange: PropTypes.func,\n domain: PropTypes.string.isRequired,\n compact: PropTypes.bool,\n };\n\n state = {\n height: null,\n };\n\n handleAccountClick = (e) => {\n if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {\n e.preventDefault();\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n\n e.stopPropagation();\n }\n\n parseClick = (e, destination) => {\n if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {\n e.preventDefault();\n this.context.router.history.push(destination);\n }\n\n e.stopPropagation();\n }\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n _measureHeight (heightJustChanged) {\n if (this.props.measureHeight && this.node) {\n scheduleIdleTask(() => this.node && this.setState({ height: Math.ceil(this.node.scrollHeight) + 1 }));\n\n if (this.props.onHeightChange && heightJustChanged) {\n this.props.onHeightChange();\n }\n }\n }\n\n setRef = c => {\n this.node = c;\n this._measureHeight();\n }\n\n componentDidUpdate (prevProps, prevState) {\n this._measureHeight(prevState.height !== this.state.height);\n }\n\n handleChildUpdate = () => {\n this._measureHeight();\n }\n\n handleModalLink = e => {\n e.preventDefault();\n\n let href;\n\n if (e.target.nodeName !== 'A') {\n href = e.target.parentNode.href;\n } else {\n href = e.target.href;\n }\n\n window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');\n }\n\n render () {\n const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;\n const { expanded, onToggleHidden, settings } = this.props;\n const outerStyle = { boxSizing: 'border-box' };\n const { compact } = this.props;\n\n if (!status) {\n return null;\n }\n\n let media = '';\n let mediaIcon = null;\n let applicationLink = '';\n let reblogLink = '';\n let reblogIcon = 'retweet';\n let favouriteLink = '';\n\n if (this.props.measureHeight) {\n outerStyle.height = `${this.state.height}px`;\n }\n\n if (status.get('media_attachments').size > 0) {\n if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {\n media = ;\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n const video = status.getIn(['media_attachments', 0]);\n media = (\n \n );\n mediaIcon = 'video-camera';\n } else {\n media = (\n \n );\n mediaIcon = 'picture-o';\n }\n } else media = ;\n\n if (status.get('application')) {\n applicationLink = · {status.getIn(['application', 'name'])};\n }\n\n if (status.get('visibility') === 'direct') {\n reblogIcon = 'envelope';\n } else if (status.get('visibility') === 'private') {\n reblogIcon = 'lock';\n }\n\n if (status.get('visibility') === 'private') {\n reblogLink = ;\n } else if (this.context.router) {\n reblogLink = (\n \n \n \n \n \n \n );\n } else {\n reblogLink = (\n \n \n \n \n \n \n );\n }\n\n if (this.context.router) {\n favouriteLink = (\n \n \n \n \n \n \n );\n } else {\n favouriteLink = (\n \n \n \n \n \n \n );\n }\n\n return (\n
\n
\n
\n \n \n \n\n
\n\n
\n
\n \n {applicationLink} · {reblogLink} · {favouriteLink} ·
\n
\n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { me, isStaff } from 'flavours/glitch/util/initial_state';\nimport { accountAdminLink, statusAdminLink } from 'flavours/glitch/util/backend_links';\n\nconst messages = defineMessages({\n delete: { id: 'status.delete', defaultMessage: 'Delete' },\n redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },\n direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },\n mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },\n reply: { id: 'status.reply', defaultMessage: 'Reply' },\n reblog: { id: 'status.reblog', defaultMessage: 'Boost' },\n reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost to original audience' },\n cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },\n favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },\n bookmark: { id: 'status.bookmark', defaultMessage: 'Bookmark' },\n mute: { id: 'status.mute', defaultMessage: 'Mute @{name}' },\n muteConversation: { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' },\n unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' },\n block: { id: 'status.block', defaultMessage: 'Block @{name}' },\n report: { id: 'status.report', defaultMessage: 'Report @{name}' },\n share: { id: 'status.share', defaultMessage: 'Share' },\n pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },\n unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },\n embed: { id: 'status.embed', defaultMessage: 'Embed' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' },\n copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },\n});\n\n@injectIntl\nexport default class ActionBar extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n onReply: PropTypes.func.isRequired,\n onReblog: PropTypes.func.isRequired,\n onFavourite: PropTypes.func.isRequired,\n onBookmark: PropTypes.func.isRequired,\n onMute: PropTypes.func,\n onMuteConversation: PropTypes.func,\n onBlock: PropTypes.func,\n onDelete: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onReport: PropTypes.func,\n onPin: PropTypes.func,\n onEmbed: PropTypes.func,\n intl: PropTypes.object.isRequired,\n };\n\n handleReplyClick = () => {\n this.props.onReply(this.props.status);\n }\n\n handleReblogClick = (e) => {\n this.props.onReblog(this.props.status, e);\n }\n\n handleFavouriteClick = (e) => {\n this.props.onFavourite(this.props.status, e);\n }\n\n handleBookmarkClick = (e) => {\n this.props.onBookmark(this.props.status, e);\n }\n\n handleDeleteClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history);\n }\n\n handleRedraftClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history, true);\n }\n\n handleDirectClick = () => {\n this.props.onDirect(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMentionClick = () => {\n this.props.onMention(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMuteClick = () => {\n this.props.onMute(this.props.status.get('account'));\n }\n\n handleConversationMuteClick = () => {\n this.props.onMuteConversation(this.props.status);\n }\n\n handleBlockClick = () => {\n this.props.onBlock(this.props.status.get('account'));\n }\n\n handleReport = () => {\n this.props.onReport(this.props.status);\n }\n\n handlePinClick = () => {\n this.props.onPin(this.props.status);\n }\n\n handleShare = () => {\n navigator.share({\n text: this.props.status.get('search_index'),\n url: this.props.status.get('url'),\n });\n }\n\n handleEmbed = () => {\n this.props.onEmbed(this.props.status);\n }\n\n handleCopy = () => {\n const url = this.props.status.get('url');\n const textarea = document.createElement('textarea');\n\n textarea.textContent = url;\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n }\n\n render () {\n const { status, intl } = this.props;\n\n const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n const mutingConversation = status.get('muted');\n\n let menu = [];\n\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });\n menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });\n menu.push(null);\n }\n\n if (me === status.getIn(['account', 'id'])) {\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });\n }\n\n menu.push(null);\n menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });\n menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });\n menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });\n menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });\n if (isStaff && (accountAdminLink || statusAdminLink)) {\n menu.push(null);\n if (accountAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }),\n href: accountAdminLink(status.getIn(['account', 'id'])),\n });\n }\n if (statusAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_status),\n href: statusAdminLink(status.getIn(['account', 'id']), status.get('id')),\n });\n }\n }\n }\n\n const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (\n
\n );\n\n let reblogIcon = 'retweet';\n //if (status.get('visibility') === 'direct') reblogIcon = 'envelope';\n // else if (status.get('visibility') === 'private') reblogIcon = 'lock';\n\n let reblog_disabled = (status.get('visibility') === 'direct' || (status.get('visibility') === 'private' && me !== status.getIn(['account', 'id'])));\n let reblog_message = status.get('visibility') === 'private' ? messages.reblog_private : messages.reblog;\n\n return (\n \n
\n
\n
\n {shareButton}\n
\n\n
\n \n
\n
\n );\n }\n\n}\n","import Immutable from 'immutable';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { fetchStatus } from 'flavours/glitch/actions/statuses';\nimport MissingIndicator from 'flavours/glitch/components/missing_indicator';\nimport DetailedStatus from './components/detailed_status';\nimport ActionBar from './components/action_bar';\nimport Column from 'flavours/glitch/features/ui/components/column';\nimport {\n favourite,\n unfavourite,\n bookmark,\n unbookmark,\n reblog,\n unreblog,\n pin,\n unpin,\n} from 'flavours/glitch/actions/interactions';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from 'flavours/glitch/actions/compose';\nimport { changeLocalSetting } from 'flavours/glitch/actions/local_settings';\nimport { blockAccount } from 'flavours/glitch/actions/accounts';\nimport { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { initReport } from 'flavours/glitch/actions/reports';\nimport { makeGetStatus } from 'flavours/glitch/selectors';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport ColumnBackButton from 'flavours/glitch/components/column_back_button';\nimport ColumnHeader from '../../components/column_header';\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\nimport { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/util/initial_state';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from 'flavours/glitch/util/fullscreen';\nimport { autoUnfoldCW } from 'flavours/glitch/util/content_warning';\nimport { textForScreenReader } from 'flavours/glitch/components/status';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },\n redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' },\n hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' },\n detailedStatus: { id: 'status.detailed_status', defaultMessage: 'Detailed conversation view' },\n replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },\n replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => {\n const status = getStatus(state, { id: props.params.statusId });\n let ancestorsIds = Immutable.List();\n let descendantsIds = Immutable.List();\n\n if (status) {\n ancestorsIds = ancestorsIds.withMutations(mutable => {\n let id = status.get('in_reply_to_id');\n\n while (id) {\n mutable.unshift(id);\n id = state.getIn(['contexts', 'inReplyTos', id]);\n }\n });\n\n descendantsIds = descendantsIds.withMutations(mutable => {\n const ids = [status.get('id')];\n\n while (ids.length > 0) {\n let id = ids.shift();\n const replies = state.getIn(['contexts', 'replies', id]);\n\n if (status.get('id') !== id) {\n mutable.push(id);\n }\n\n if (replies) {\n replies.reverse().forEach(reply => {\n ids.unshift(reply);\n });\n }\n }\n });\n }\n\n return {\n status,\n ancestorsIds,\n descendantsIds,\n settings: state.get('local_settings'),\n askReplyConfirmation: state.getIn(['local_settings', 'confirm_before_clearing_draft']) && state.getIn(['compose', 'text']).trim().length !== 0,\n domain: state.getIn(['meta', 'domain']),\n };\n };\n\n return mapStateToProps;\n};\n\n@injectIntl\n@connect(makeMapStateToProps)\nexport default class Status extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n params: PropTypes.object.isRequired,\n dispatch: PropTypes.func.isRequired,\n status: ImmutablePropTypes.map,\n settings: ImmutablePropTypes.map.isRequired,\n ancestorsIds: ImmutablePropTypes.list,\n descendantsIds: ImmutablePropTypes.list,\n intl: PropTypes.object.isRequired,\n askReplyConfirmation: PropTypes.bool,\n domain: PropTypes.string.isRequired,\n };\n\n state = {\n fullscreen: false,\n isExpanded: undefined,\n threadExpanded: undefined,\n statusId: undefined,\n };\n\n componentDidMount () {\n attachFullscreenListener(this.onFullScreenChange);\n this.props.dispatch(fetchStatus(this.props.params.statusId));\n\n const { status, ancestorsIds } = this.props;\n\n if (status && ancestorsIds && ancestorsIds.size > 0) {\n const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1];\n\n window.requestAnimationFrame(() => {\n element.scrollIntoView(true);\n });\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n if (state.statusId === props.params.statusId || !props.params.statusId) {\n return null;\n }\n\n props.dispatch(fetchStatus(props.params.statusId));\n\n return {\n threadExpanded: undefined,\n isExpanded: autoUnfoldCW(props.settings, props.status),\n statusId: props.params.statusId,\n };\n }\n\n handleExpandedToggle = () => {\n if (this.props.status.get('spoiler_text')) {\n this.setExpansion(!this.state.isExpanded);\n }\n };\n\n handleModalFavourite = (status) => {\n this.props.dispatch(favourite(status));\n }\n\n handleFavouriteClick = (status, e) => {\n if (status.get('favourited')) {\n this.props.dispatch(unfavourite(status));\n } else {\n if ((e && e.shiftKey) || !favouriteModal) {\n this.handleModalFavourite(status);\n } else {\n this.props.dispatch(openModal('FAVOURITE', { status, onFavourite: this.handleModalFavourite }));\n }\n }\n }\n\n handlePin = (status) => {\n if (status.get('pinned')) {\n this.props.dispatch(unpin(status));\n } else {\n this.props.dispatch(pin(status));\n }\n }\n\n handleReplyClick = (status) => {\n let { askReplyConfirmation, dispatch, intl } = this.props;\n if (askReplyConfirmation) {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.replyMessage),\n confirm: intl.formatMessage(messages.replyConfirm),\n onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)),\n onConfirm: () => dispatch(replyCompose(status, this.context.router.history)),\n }));\n } else {\n dispatch(replyCompose(status, this.context.router.history));\n }\n }\n\n handleModalReblog = (status) => {\n this.props.dispatch(reblog(status));\n }\n\n handleReblogClick = (status, e) => {\n if (status.get('reblogged')) {\n this.props.dispatch(unreblog(status));\n } else {\n if ((e && e.shiftKey) || !boostModal) {\n this.handleModalReblog(status);\n } else {\n this.props.dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog }));\n }\n }\n }\n\n handleBookmarkClick = (status) => {\n if (status.get('bookmarked')) {\n this.props.dispatch(unbookmark(status));\n } else {\n this.props.dispatch(bookmark(status));\n }\n }\n\n handleDeleteClick = (status, history, withRedraft = false) => {\n const { dispatch, intl } = this.props;\n\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), history, withRedraft));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),\n }));\n }\n }\n\n handleDirectClick = (account, router) => {\n this.props.dispatch(directCompose(account, router));\n }\n\n handleMentionClick = (account, router) => {\n this.props.dispatch(mentionCompose(account, router));\n }\n\n handleOpenMedia = (media, index) => {\n this.props.dispatch(openModal('MEDIA', { media, index }));\n }\n\n handleOpenVideo = (media, time) => {\n this.props.dispatch(openModal('VIDEO', { media, time }));\n }\n\n handleMuteClick = (account) => {\n this.props.dispatch(initMuteModal(account));\n }\n\n handleConversationMuteClick = (status) => {\n if (status.get('muted')) {\n this.props.dispatch(unmuteStatus(status.get('id')));\n } else {\n this.props.dispatch(muteStatus(status.get('id')));\n }\n }\n\n handleToggleAll = () => {\n const { isExpanded } = this.state;\n this.setState({ isExpanded: !isExpanded, threadExpanded: !isExpanded });\n }\n\n handleBlockClick = (account) => {\n const { dispatch, intl } = this.props;\n\n dispatch(openModal('CONFIRM', {\n message: @{account.get('acct')} }} />,\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: () => dispatch(blockAccount(account.get('id'))),\n }));\n }\n\n handleReport = (status) => {\n this.props.dispatch(initReport(status.get('account'), status));\n }\n\n handleEmbed = (status) => {\n this.props.dispatch(openModal('EMBED', { url: status.get('url') }));\n }\n\n handleHotkeyMoveUp = () => {\n this.handleMoveUp(this.props.status.get('id'));\n }\n\n handleHotkeyMoveDown = () => {\n this.handleMoveDown(this.props.status.get('id'));\n }\n\n handleHotkeyReply = e => {\n e.preventDefault();\n this.handleReplyClick(this.props.status);\n }\n\n handleHotkeyFavourite = () => {\n this.handleFavouriteClick(this.props.status);\n }\n\n handleHotkeyBoost = () => {\n this.handleReblogClick(this.props.status);\n }\n\n handleHotkeyMention = e => {\n e.preventDefault();\n this.handleMentionClick(this.props.status);\n }\n\n handleHotkeyOpenProfile = () => {\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n\n handleMoveUp = id => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n\n if (id === status.get('id')) {\n this._selectChild(ancestorsIds.size - 1);\n } else {\n let index = ancestorsIds.indexOf(id);\n\n if (index === -1) {\n index = descendantsIds.indexOf(id);\n this._selectChild(ancestorsIds.size + index);\n } else {\n this._selectChild(index - 1);\n }\n }\n }\n\n handleMoveDown = id => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n\n if (id === status.get('id')) {\n this._selectChild(ancestorsIds.size + 1);\n } else {\n let index = ancestorsIds.indexOf(id);\n\n if (index === -1) {\n index = descendantsIds.indexOf(id);\n this._selectChild(ancestorsIds.size + index + 2);\n } else {\n this._selectChild(index + 1);\n }\n }\n }\n\n _selectChild (index) {\n const element = this.node.querySelectorAll('.focusable')[index];\n\n if (element) {\n element.focus();\n }\n }\n\n renderChildren (list) {\n return list.map(id => (\n \n ));\n }\n\n setExpansion = value => {\n this.setState({ isExpanded: value });\n }\n\n setRef = c => {\n this.node = c;\n }\n\n componentDidUpdate (prevProps) {\n if (this.props.params.statusId && (this.props.params.statusId !== prevProps.params.statusId || prevProps.ancestorsIds.size < this.props.ancestorsIds.size)) {\n const { status, ancestorsIds } = this.props;\n\n if (status && ancestorsIds && ancestorsIds.size > 0) {\n const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1];\n\n window.requestAnimationFrame(() => {\n element.scrollIntoView(true);\n });\n }\n }\n }\n\n componentWillUnmount () {\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n shouldUpdateScroll = (prevRouterProps, { location }) => {\n if ((((prevRouterProps || {}).location || {}).state || {}).mastodonModalOpen) return false;\n return !(location.state && location.state.mastodonModalOpen);\n }\n\n render () {\n let ancestors, descendants;\n const { setExpansion } = this;\n const { status, settings, ancestorsIds, descendantsIds, intl, domain } = this.props;\n const { fullscreen, isExpanded } = this.state;\n\n if (status === null) {\n return (\n \n \n \n \n );\n }\n\n if (ancestorsIds && ancestorsIds.size > 0) {\n ancestors = {this.renderChildren(ancestorsIds)}
;\n }\n\n if (descendantsIds && descendantsIds.size > 0) {\n descendants = {this.renderChildren(descendantsIds)}
;\n }\n\n const handlers = {\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n reply: this.handleHotkeyReply,\n favourite: this.handleHotkeyFavourite,\n boost: this.handleHotkeyBoost,\n mention: this.handleHotkeyMention,\n openProfile: this.handleHotkeyOpenProfile,\n toggleSpoiler: this.handleExpandedToggle,\n };\n\n return (\n \n \n )}\n />\n\n \n \n {ancestors}\n\n
\n \n \n\n {descendants}\n
\n \n \n );\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/detailed_status.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/status/index.js"],"names":["DetailedStatus","height","e","button","ctrlKey","altKey","metaKey","context","router","preventDefault","state","history","location","mastodonBackSteps","push","props","status","getIn","stopPropagation","destination","media","startTime","onOpenVideo","c","node","_measureHeight","href","target","nodeName","parentNode","window","open","heightJustChanged","this","measureHeight","scheduleIdleTask","setState","Math","ceil","scrollHeight","onHeightChange","componentDidUpdate","prevProps","prevState","render","get","expanded","onToggleHidden","settings","outerStyle","boxSizing","compact","mediaIcon","applicationLink","reblogLink","reblogIcon","favouriteLink","pollId","size","some","item","attachment","src","alt","duration","preload","preview","blurhash","inline","sensitive","letterbox","fullwidth","preventPlayback","handleOpenVideo","autoplay","visible","showMedia","onToggleVisibility","onToggleMediaVisibility","standalone","hidden","onOpenMedia","card","className","rel","includes","to","id","value","onClick","handleModalLink","style","ref","setRef","classNames","data-status-by","handleAccountClick","account","localDomain","domain","collapsed","onExpandedToggle","parseClick","onUpdate","handleChildUpdate","tagLinks","rewriteMentions","disabled","Date","hour12","year","month","day","hour","minute","visibility","ImmutablePureComponent","PropTypes","object","ImmutablePropTypes","map","isRequired","func","bool","string","messages","defineMessages","delete","redraft","direct","mention","reply","reblog","reblog_private","cannot_reblog","favourite","bookmark","more","mute","muteConversation","unmuteConversation","block","report","share","pin","unpin","embed","admin_account","admin_status","copy","ActionBar","injectIntl","onReply","onReblog","onFavourite","onBookmark","onDelete","onDirect","onMention","onMute","onMuteConversation","onBlock","onReport","onPin","navigator","text","url","onEmbed","textarea","document","createElement","textContent","position","body","appendChild","select","execCommand","removeChild","intl","publicStatus","mutingConversation","menu","formatMessage","action","handleCopy","handleEmbed","me","handlePinClick","handleConversationMuteClick","handleDeleteClick","name","handleMentionClick","handleDirectClick","handleMuteClick","handleBlockClick","handleReport","isStaff","accountAdminLink","statusAdminLink","undefined","shareButton","title","icon","handleShare","reblog_disabled","reblog_message","handleReplyClick","active","handleReblogClick","animate","handleFavouriteClick","handleBookmarkClick","items","direction","React","PureComponent","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","revealAll","hideAll","detailedStatus","replyConfirm","replyMessage","tootHeading","Status","connect","getStatus","makeGetStatus","getAncestorsIds","createSelector","_","statusId","inReplyTos","ancestorsIds","Immutable","List","withMutations","mutable","unshift","getDescendantsIds","contextReplies","statuses","descendantsIds","ids","length","shift","replies","reverse","forEach","insertAt","findIndex","idx","splice","params","askReplyConfirmation","trim","fullscreen","isExpanded","threadExpanded","loadedStatusId","revealBehindCW","setExpansion","dispatch","unfavourite","shiftKey","favouriteModal","handleModalFavourite","openModal","message","confirm","onDoNotAsk","changeLocalSetting","onConfirm","replyCompose","unreblog","handleModalReblog","missingMediaDescription","boostModal","unbookmark","withRedraft","deleteModal","deleteStatus","directCompose","mentionCompose","index","time","handleOpenMedia","initMuteModal","unmuteStatus","muteStatus","initBlockModal","initReport","handleToggleMediaVisibility","handleMoveUp","handleMoveDown","_selectChild","indexOf","column","scrollTop","isFullscreen","prevRouterProps","mastodonModalOpen","componentDidMount","attachFullscreenListener","onFullScreenChange","fetchStatus","element","querySelectorAll","requestAnimationFrame","scrollIntoView","getDerivedStateFromProps","update","updated","defaultMediaVisibility","autoUnfoldCW","align_top","container","offsetTop","clientHeight","offsetHeight","focus","renderChildren","list","onMoveUp","onMoveDown","contextType","componentWillUnmount","detachFullscreenListener","ancestors","descendants","multiColumn","handlers","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyBookmark","handleHotkeyMention","openProfile","handleHotkeyOpenProfile","toggleSpoiler","handleExpandedToggle","toggleSensitive","handleHotkeyToggleSensitive","openMedia","handleHotkeyOpenMedia","bindToDocument","setColumnRef","label","handleHeaderClick","showBackButton","extraButton","aria-label","handleToggleAll","aria-pressed","scrollKey","shouldUpdateScroll","tabIndex","textForScreenReader","handlePin"],"mappings":"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","file":"flavours/glitch/async/status.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport DisplayName from 'flavours/glitch/components/display_name';\nimport StatusContent from 'flavours/glitch/components/status_content';\nimport MediaGallery from 'flavours/glitch/components/media_gallery';\nimport AttachmentList from 'flavours/glitch/components/attachment_list';\nimport { Link } from 'react-router-dom';\nimport { FormattedDate } from 'react-intl';\nimport Card from './card';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Video from 'flavours/glitch/features/video';\nimport Audio from 'flavours/glitch/features/audio';\nimport VisibilityIcon from 'flavours/glitch/components/status_visibility_icon';\nimport scheduleIdleTask from 'flavours/glitch/util/schedule_idle_task';\nimport classNames from 'classnames';\nimport PollContainer from 'flavours/glitch/containers/poll_container';\nimport Icon from 'flavours/glitch/components/icon';\nimport AnimatedNumber from 'flavours/glitch/components/animated_number';\n\nexport default class DetailedStatus extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map,\n settings: ImmutablePropTypes.map.isRequired,\n onOpenMedia: PropTypes.func.isRequired,\n onOpenVideo: PropTypes.func.isRequired,\n onToggleHidden: PropTypes.func,\n expanded: PropTypes.bool,\n measureHeight: PropTypes.bool,\n onHeightChange: PropTypes.func,\n domain: PropTypes.string.isRequired,\n compact: PropTypes.bool,\n showMedia: PropTypes.bool,\n onToggleMediaVisibility: PropTypes.func,\n };\n\n state = {\n height: null,\n };\n\n handleAccountClick = (e) => {\n if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {\n e.preventDefault();\n let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);\n }\n\n e.stopPropagation();\n }\n\n parseClick = (e, destination) => {\n if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey) && this.context.router) {\n e.preventDefault();\n let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(destination, state);\n }\n\n e.stopPropagation();\n }\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n _measureHeight (heightJustChanged) {\n if (this.props.measureHeight && this.node) {\n scheduleIdleTask(() => this.node && this.setState({ height: Math.ceil(this.node.scrollHeight) + 1 }));\n\n if (this.props.onHeightChange && heightJustChanged) {\n this.props.onHeightChange();\n }\n }\n }\n\n setRef = c => {\n this.node = c;\n this._measureHeight();\n }\n\n componentDidUpdate (prevProps, prevState) {\n this._measureHeight(prevState.height !== this.state.height);\n }\n\n handleChildUpdate = () => {\n this._measureHeight();\n }\n\n handleModalLink = e => {\n e.preventDefault();\n\n let href;\n\n if (e.target.nodeName !== 'A') {\n href = e.target.parentNode.href;\n } else {\n href = e.target.href;\n }\n\n window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');\n }\n\n render () {\n const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;\n const { expanded, onToggleHidden, settings } = this.props;\n const outerStyle = { boxSizing: 'border-box' };\n const { compact } = this.props;\n\n if (!status) {\n return null;\n }\n\n let media = null;\n let mediaIcon = null;\n let applicationLink = '';\n let reblogLink = '';\n let reblogIcon = 'retweet';\n let favouriteLink = '';\n\n if (this.props.measureHeight) {\n outerStyle.height = `${this.state.height}px`;\n }\n\n if (status.get('poll')) {\n media = ;\n mediaIcon = 'tasks';\n } else if (status.get('media_attachments').size > 0) {\n if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {\n media = ;\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n \n );\n mediaIcon = 'music';\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n const attachment = status.getIn(['media_attachments', 0]);\n media = (\n \n );\n mediaIcon = 'video-camera';\n } else {\n media = (\n \n );\n mediaIcon = 'picture-o';\n }\n } else if (status.get('card')) {\n media = ;\n mediaIcon = 'link';\n }\n\n if (status.get('application')) {\n applicationLink = · {status.getIn(['application', 'name'])};\n }\n\n if (status.get('visibility') === 'direct') {\n reblogIcon = 'envelope';\n } else if (status.get('visibility') === 'private') {\n reblogIcon = 'lock';\n }\n\n if (!['unlisted', 'public'].includes(status.get('visibility'))) {\n reblogLink = null;\n } else if (this.context.router) {\n reblogLink = (\n \n \n \n \n \n \n );\n } else {\n reblogLink = (\n \n \n \n \n \n \n );\n }\n\n if (this.context.router) {\n favouriteLink = (\n \n \n \n \n \n \n );\n } else {\n favouriteLink = (\n \n \n \n \n \n \n );\n }\n\n return (\n \n
\n
\n \n \n \n\n
\n\n
\n
\n \n {applicationLink} {!!reblogLink && ['·', reblogLink]} · {favouriteLink} ·
\n
\n
\n
\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { me, isStaff } from 'flavours/glitch/util/initial_state';\nimport { accountAdminLink, statusAdminLink } from 'flavours/glitch/util/backend_links';\n\nconst messages = defineMessages({\n delete: { id: 'status.delete', defaultMessage: 'Delete' },\n redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },\n direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },\n mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },\n reply: { id: 'status.reply', defaultMessage: 'Reply' },\n reblog: { id: 'status.reblog', defaultMessage: 'Boost' },\n reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost to original audience' },\n cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },\n favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },\n bookmark: { id: 'status.bookmark', defaultMessage: 'Bookmark' },\n more: { id: 'status.more', defaultMessage: 'More' },\n mute: { id: 'status.mute', defaultMessage: 'Mute @{name}' },\n muteConversation: { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' },\n unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' },\n block: { id: 'status.block', defaultMessage: 'Block @{name}' },\n report: { id: 'status.report', defaultMessage: 'Report @{name}' },\n share: { id: 'status.share', defaultMessage: 'Share' },\n pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },\n unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },\n embed: { id: 'status.embed', defaultMessage: 'Embed' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' },\n copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },\n});\n\nexport default @injectIntl\nclass ActionBar extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n onReply: PropTypes.func.isRequired,\n onReblog: PropTypes.func.isRequired,\n onFavourite: PropTypes.func.isRequired,\n onBookmark: PropTypes.func.isRequired,\n onMute: PropTypes.func,\n onMuteConversation: PropTypes.func,\n onBlock: PropTypes.func,\n onDelete: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onReport: PropTypes.func,\n onPin: PropTypes.func,\n onEmbed: PropTypes.func,\n intl: PropTypes.object.isRequired,\n };\n\n handleReplyClick = () => {\n this.props.onReply(this.props.status);\n }\n\n handleReblogClick = (e) => {\n this.props.onReblog(this.props.status, e);\n }\n\n handleFavouriteClick = (e) => {\n this.props.onFavourite(this.props.status, e);\n }\n\n handleBookmarkClick = (e) => {\n this.props.onBookmark(this.props.status, e);\n }\n\n handleDeleteClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history);\n }\n\n handleRedraftClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history, true);\n }\n\n handleDirectClick = () => {\n this.props.onDirect(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMentionClick = () => {\n this.props.onMention(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMuteClick = () => {\n this.props.onMute(this.props.status.get('account'));\n }\n\n handleConversationMuteClick = () => {\n this.props.onMuteConversation(this.props.status);\n }\n\n handleBlockClick = () => {\n this.props.onBlock(this.props.status);\n }\n\n handleReport = () => {\n this.props.onReport(this.props.status);\n }\n\n handlePinClick = () => {\n this.props.onPin(this.props.status);\n }\n\n handleShare = () => {\n navigator.share({\n text: this.props.status.get('search_index'),\n url: this.props.status.get('url'),\n });\n }\n\n handleEmbed = () => {\n this.props.onEmbed(this.props.status);\n }\n\n handleCopy = () => {\n const url = this.props.status.get('url');\n const textarea = document.createElement('textarea');\n\n textarea.textContent = url;\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n }\n\n render () {\n const { status, intl } = this.props;\n\n const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n const mutingConversation = status.get('muted');\n\n let menu = [];\n\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });\n menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });\n menu.push(null);\n }\n\n if (me === status.getIn(['account', 'id'])) {\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });\n }\n\n menu.push(null);\n menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });\n menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });\n menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });\n menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });\n if (isStaff && (accountAdminLink || statusAdminLink)) {\n menu.push(null);\n if (accountAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }),\n href: accountAdminLink(status.getIn(['account', 'id'])),\n });\n }\n if (statusAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_status),\n href: statusAdminLink(status.getIn(['account', 'id']), status.get('id')),\n });\n }\n }\n }\n\n const shareButton = ('share' in navigator) && publicStatus && (\n
\n );\n\n let reblogIcon = 'retweet';\n //if (status.get('visibility') === 'direct') reblogIcon = 'envelope';\n // else if (status.get('visibility') === 'private') reblogIcon = 'lock';\n\n let reblog_disabled = (status.get('visibility') === 'direct' || (status.get('visibility') === 'private' && me !== status.getIn(['account', 'id'])));\n let reblog_message = status.get('visibility') === 'private' ? messages.reblog_private : messages.reblog;\n\n return (\n \n
\n
\n
\n {shareButton}\n
\n\n
\n \n
\n
\n );\n }\n\n}\n","import Immutable from 'immutable';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { createSelector } from 'reselect';\nimport { fetchStatus } from 'flavours/glitch/actions/statuses';\nimport MissingIndicator from 'flavours/glitch/components/missing_indicator';\nimport DetailedStatus from './components/detailed_status';\nimport ActionBar from './components/action_bar';\nimport Column from 'flavours/glitch/features/ui/components/column';\nimport {\n favourite,\n unfavourite,\n bookmark,\n unbookmark,\n reblog,\n unreblog,\n pin,\n unpin,\n} from 'flavours/glitch/actions/interactions';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from 'flavours/glitch/actions/compose';\nimport { changeLocalSetting } from 'flavours/glitch/actions/local_settings';\nimport { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { initBlockModal } from 'flavours/glitch/actions/blocks';\nimport { initReport } from 'flavours/glitch/actions/reports';\nimport { makeGetStatus } from 'flavours/glitch/selectors';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport ColumnBackButton from 'flavours/glitch/components/column_back_button';\nimport ColumnHeader from '../../components/column_header';\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\nimport { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/util/initial_state';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from 'flavours/glitch/util/fullscreen';\nimport { autoUnfoldCW } from 'flavours/glitch/util/content_warning';\nimport { textForScreenReader, defaultMediaVisibility } from 'flavours/glitch/components/status';\nimport Icon from 'flavours/glitch/components/icon';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },\n redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },\n revealAll: { id: 'status.show_more_all', defaultMessage: 'Show more for all' },\n hideAll: { id: 'status.show_less_all', defaultMessage: 'Show less for all' },\n detailedStatus: { id: 'status.detailed_status', defaultMessage: 'Detailed conversation view' },\n replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },\n replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },\n tootHeading: { id: 'column.toot', defaultMessage: 'Toots and replies' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const getAncestorsIds = createSelector([\n (_, { id }) => id,\n state => state.getIn(['contexts', 'inReplyTos']),\n ], (statusId, inReplyTos) => {\n let ancestorsIds = Immutable.List();\n ancestorsIds = ancestorsIds.withMutations(mutable => {\n let id = statusId;\n\n while (id) {\n mutable.unshift(id);\n id = inReplyTos.get(id);\n }\n });\n\n return ancestorsIds;\n });\n\n const getDescendantsIds = createSelector([\n (_, { id }) => id,\n state => state.getIn(['contexts', 'replies']),\n state => state.get('statuses'),\n ], (statusId, contextReplies, statuses) => {\n let descendantsIds = [];\n const ids = [statusId];\n\n while (ids.length > 0) {\n let id = ids.shift();\n const replies = contextReplies.get(id);\n\n if (statusId !== id) {\n descendantsIds.push(id);\n }\n\n if (replies) {\n replies.reverse().forEach(reply => {\n ids.unshift(reply);\n });\n }\n }\n\n let insertAt = descendantsIds.findIndex((id) => statuses.get(id).get('in_reply_to_account_id') !== statuses.get(id).get('account'));\n if (insertAt !== -1) {\n descendantsIds.forEach((id, idx) => {\n if (idx > insertAt && statuses.get(id).get('in_reply_to_account_id') === statuses.get(id).get('account')) {\n descendantsIds.splice(idx, 1);\n descendantsIds.splice(insertAt, 0, id);\n insertAt += 1;\n }\n });\n }\n\n return Immutable.List(descendantsIds);\n });\n\n const mapStateToProps = (state, props) => {\n const status = getStatus(state, { id: props.params.statusId });\n let ancestorsIds = Immutable.List();\n let descendantsIds = Immutable.List();\n\n if (status) {\n ancestorsIds = getAncestorsIds(state, { id: status.get('in_reply_to_id') });\n descendantsIds = getDescendantsIds(state, { id: status.get('id') });\n }\n\n return {\n status,\n ancestorsIds,\n descendantsIds,\n settings: state.get('local_settings'),\n askReplyConfirmation: state.getIn(['local_settings', 'confirm_before_clearing_draft']) && state.getIn(['compose', 'text']).trim().length !== 0,\n domain: state.getIn(['meta', 'domain']),\n };\n };\n\n return mapStateToProps;\n};\n\nexport default @injectIntl\n@connect(makeMapStateToProps)\nclass Status extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n params: PropTypes.object.isRequired,\n dispatch: PropTypes.func.isRequired,\n status: ImmutablePropTypes.map,\n settings: ImmutablePropTypes.map.isRequired,\n ancestorsIds: ImmutablePropTypes.list,\n descendantsIds: ImmutablePropTypes.list,\n intl: PropTypes.object.isRequired,\n askReplyConfirmation: PropTypes.bool,\n multiColumn: PropTypes.bool,\n domain: PropTypes.string.isRequired,\n };\n\n state = {\n fullscreen: false,\n isExpanded: undefined,\n threadExpanded: undefined,\n statusId: undefined,\n loadedStatusId: undefined,\n showMedia: undefined,\n revealBehindCW: undefined,\n };\n\n componentDidMount () {\n attachFullscreenListener(this.onFullScreenChange);\n this.props.dispatch(fetchStatus(this.props.params.statusId));\n\n const { status, ancestorsIds } = this.props;\n\n if (status && ancestorsIds && ancestorsIds.size > 0) {\n const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1];\n\n window.requestAnimationFrame(() => {\n element.scrollIntoView(true);\n });\n }\n }\n\n static getDerivedStateFromProps(props, state) {\n let update = {};\n let updated = false;\n\n if (props.params.statusId && state.statusId !== props.params.statusId) {\n props.dispatch(fetchStatus(props.params.statusId));\n update.threadExpanded = undefined;\n update.statusId = props.params.statusId;\n updated = true;\n }\n\n const revealBehindCW = props.settings.getIn(['media', 'reveal_behind_cw']);\n if (revealBehindCW !== state.revealBehindCW) {\n update.revealBehindCW = revealBehindCW;\n if (revealBehindCW) update.showMedia = defaultMediaVisibility(props.status, props.settings);\n updated = true;\n }\n\n if (props.status && state.loadedStatusId !== props.status.get('id')) {\n update.showMedia = defaultMediaVisibility(props.status, props.settings);\n update.loadedStatusId = props.status.get('id');\n update.isExpanded = autoUnfoldCW(props.settings, props.status);\n updated = true;\n }\n\n return updated ? update : null;\n }\n\n handleExpandedToggle = () => {\n if (this.props.status.get('spoiler_text')) {\n this.setExpansion(!this.state.isExpanded);\n }\n };\n\n handleToggleMediaVisibility = () => {\n this.setState({ showMedia: !this.state.showMedia });\n }\n\n handleModalFavourite = (status) => {\n this.props.dispatch(favourite(status));\n }\n\n handleFavouriteClick = (status, e) => {\n if (status.get('favourited')) {\n this.props.dispatch(unfavourite(status));\n } else {\n if ((e && e.shiftKey) || !favouriteModal) {\n this.handleModalFavourite(status);\n } else {\n this.props.dispatch(openModal('FAVOURITE', { status, onFavourite: this.handleModalFavourite }));\n }\n }\n }\n\n handlePin = (status) => {\n if (status.get('pinned')) {\n this.props.dispatch(unpin(status));\n } else {\n this.props.dispatch(pin(status));\n }\n }\n\n handleReplyClick = (status) => {\n let { askReplyConfirmation, dispatch, intl } = this.props;\n if (askReplyConfirmation) {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.replyMessage),\n confirm: intl.formatMessage(messages.replyConfirm),\n onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)),\n onConfirm: () => dispatch(replyCompose(status, this.context.router.history)),\n }));\n } else {\n dispatch(replyCompose(status, this.context.router.history));\n }\n }\n\n handleModalReblog = (status) => {\n const { dispatch } = this.props;\n\n if (status.get('reblogged')) {\n dispatch(unreblog(status));\n } else {\n dispatch(reblog(status));\n }\n }\n\n handleReblogClick = (status, e) => {\n const { settings, dispatch } = this.props;\n\n if (settings.get('confirm_boost_missing_media_description') && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) {\n dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog, missingMediaDescription: true }));\n } else if ((e && e.shiftKey) || !boostModal) {\n this.handleModalReblog(status);\n } else {\n dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog }));\n }\n }\n\n handleBookmarkClick = (status) => {\n if (status.get('bookmarked')) {\n this.props.dispatch(unbookmark(status));\n } else {\n this.props.dispatch(bookmark(status));\n }\n }\n\n handleDeleteClick = (status, history, withRedraft = false) => {\n const { dispatch, intl } = this.props;\n\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), history, withRedraft));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),\n }));\n }\n }\n\n handleDirectClick = (account, router) => {\n this.props.dispatch(directCompose(account, router));\n }\n\n handleMentionClick = (account, router) => {\n this.props.dispatch(mentionCompose(account, router));\n }\n\n handleOpenMedia = (media, index) => {\n this.props.dispatch(openModal('MEDIA', { media, index }));\n }\n\n handleOpenVideo = (media, time) => {\n this.props.dispatch(openModal('VIDEO', { media, time }));\n }\n\n handleHotkeyOpenMedia = e => {\n const { status } = this.props;\n\n e.preventDefault();\n\n if (status.get('media_attachments').size > 0) {\n if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {\n // TODO: toggle play/paused?\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n this.handleOpenVideo(status.getIn(['media_attachments', 0]), 0);\n } else {\n this.handleOpenMedia(status.get('media_attachments'), 0);\n }\n }\n }\n\n handleMuteClick = (account) => {\n this.props.dispatch(initMuteModal(account));\n }\n\n handleConversationMuteClick = (status) => {\n if (status.get('muted')) {\n this.props.dispatch(unmuteStatus(status.get('id')));\n } else {\n this.props.dispatch(muteStatus(status.get('id')));\n }\n }\n\n handleToggleAll = () => {\n const { isExpanded } = this.state;\n this.setState({ isExpanded: !isExpanded, threadExpanded: !isExpanded });\n }\n\n handleBlockClick = (status) => {\n const { dispatch } = this.props;\n const account = status.get('account');\n dispatch(initBlockModal(account));\n }\n\n handleReport = (status) => {\n this.props.dispatch(initReport(status.get('account'), status));\n }\n\n handleEmbed = (status) => {\n this.props.dispatch(openModal('EMBED', { url: status.get('url') }));\n }\n\n handleHotkeyToggleSensitive = () => {\n this.handleToggleMediaVisibility();\n }\n\n handleHotkeyMoveUp = () => {\n this.handleMoveUp(this.props.status.get('id'));\n }\n\n handleHotkeyMoveDown = () => {\n this.handleMoveDown(this.props.status.get('id'));\n }\n\n handleHotkeyReply = e => {\n e.preventDefault();\n this.handleReplyClick(this.props.status);\n }\n\n handleHotkeyFavourite = () => {\n this.handleFavouriteClick(this.props.status);\n }\n\n handleHotkeyBoost = () => {\n this.handleReblogClick(this.props.status);\n }\n\n handleHotkeyBookmark = () => {\n this.handleBookmarkClick(this.props.status);\n }\n\n handleHotkeyMention = e => {\n e.preventDefault();\n this.handleMentionClick(this.props.status);\n }\n\n handleHotkeyOpenProfile = () => {\n let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);\n }\n\n handleMoveUp = id => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n\n if (id === status.get('id')) {\n this._selectChild(ancestorsIds.size - 1, true);\n } else {\n let index = ancestorsIds.indexOf(id);\n\n if (index === -1) {\n index = descendantsIds.indexOf(id);\n this._selectChild(ancestorsIds.size + index, true);\n } else {\n this._selectChild(index - 1, true);\n }\n }\n }\n\n handleMoveDown = id => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n\n if (id === status.get('id')) {\n this._selectChild(ancestorsIds.size + 1, false);\n } else {\n let index = ancestorsIds.indexOf(id);\n\n if (index === -1) {\n index = descendantsIds.indexOf(id);\n this._selectChild(ancestorsIds.size + index + 2, false);\n } else {\n this._selectChild(index + 1, false);\n }\n }\n }\n\n _selectChild (index, align_top) {\n const container = this.node;\n const element = container.querySelectorAll('.focusable')[index];\n\n if (element) {\n if (align_top && container.scrollTop > element.offsetTop) {\n element.scrollIntoView(true);\n } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {\n element.scrollIntoView(false);\n }\n element.focus();\n }\n }\n\n handleHeaderClick = () => {\n this.column.scrollTop();\n }\n\n renderChildren (list) {\n return list.map(id => (\n \n ));\n }\n\n setExpansion = value => {\n this.setState({ isExpanded: value });\n }\n\n setRef = c => {\n this.node = c;\n }\n\n setColumnRef = c => {\n this.column = c;\n }\n\n componentDidUpdate (prevProps) {\n if (this.props.params.statusId && (this.props.params.statusId !== prevProps.params.statusId || prevProps.ancestorsIds.size < this.props.ancestorsIds.size)) {\n const { status, ancestorsIds } = this.props;\n\n if (status && ancestorsIds && ancestorsIds.size > 0) {\n const element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1];\n\n window.requestAnimationFrame(() => {\n element.scrollIntoView(true);\n });\n }\n }\n }\n\n componentWillUnmount () {\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n shouldUpdateScroll = (prevRouterProps, { location }) => {\n if ((((prevRouterProps || {}).location || {}).state || {}).mastodonModalOpen) return false;\n return !(location.state && location.state.mastodonModalOpen);\n }\n\n render () {\n let ancestors, descendants;\n const { setExpansion } = this;\n const { status, settings, ancestorsIds, descendantsIds, intl, domain, multiColumn } = this.props;\n const { fullscreen, isExpanded } = this.state;\n\n if (status === null) {\n return (\n \n \n \n \n );\n }\n\n if (ancestorsIds && ancestorsIds.size > 0) {\n ancestors = {this.renderChildren(ancestorsIds)}
;\n }\n\n if (descendantsIds && descendantsIds.size > 0) {\n descendants = {this.renderChildren(descendantsIds)}
;\n }\n\n const handlers = {\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n reply: this.handleHotkeyReply,\n favourite: this.handleHotkeyFavourite,\n boost: this.handleHotkeyBoost,\n bookmark: this.handleHotkeyBookmark,\n mention: this.handleHotkeyMention,\n openProfile: this.handleHotkeyOpenProfile,\n toggleSpoiler: this.handleExpandedToggle,\n toggleSensitive: this.handleHotkeyToggleSensitive,\n openMedia: this.handleHotkeyOpenMedia,\n };\n\n return (\n \n \n )}\n />\n\n \n \n {ancestors}\n\n
\n \n \n\n {descendants}\n
\n \n \n );\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file