Merging with develop
[akkoma] / priv / static / packs / flavours / glitch / async / status.js.map
index 06c8880f4235318ae88c0734598ac5f434abea0e..e392f9ee212ba2a487dbe644c1ce455bbda86395 100644 (file)
@@ -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","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","ActionBar","injectIntl","onReply","onReblog","onFavourite","onBookmark","onDelete","onDirect","onMention","onMute","onMuteConversation","onBlock","onReport","onPin","navigator","text","url","onEmbed","intl","publicStatus","includes","mutingConversation","menu","formatMessage","action","handleEmbed","me","handlePinClick","handleConversationMuteClick","handleDeleteClick","handleRedraftClick","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.isRequired,\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  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.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 = <AttachmentList media={status.get('media_attachments')} />;\n      } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n        const video = status.getIn(['media_attachments', 0]);\n        media = (\n          <Video\n            preview={video.get('preview_url')}\n            src={video.get('url')}\n            alt={video.get('description')}\n            inline\n            sensitive={status.get('sensitive')}\n            letterbox={settings.getIn(['media', 'letterbox'])}\n            fullwidth={settings.getIn(['media', 'fullwidth'])}\n            preventPlayback={!expanded}\n            onOpenVideo={this.handleOpenVideo}\n            autoplay\n          />\n        );\n        mediaIcon = 'video-camera';\n      } else {\n        media = (\n          <MediaGallery\n            standalone\n            sensitive={status.get('sensitive')}\n            media={status.get('media_attachments')}\n            letterbox={settings.getIn(['media', 'letterbox'])}\n            fullwidth={settings.getIn(['media', 'fullwidth'])}\n            hidden={!expanded}\n            onOpenMedia={this.props.onOpenMedia}\n          />\n        );\n        mediaIcon = 'picture-o';\n      }\n    } else media = <Card onOpenMedia={this.props.onOpenMedia} card={status.get('card', null)} />;\n\n    if (status.get('application')) {\n      applicationLink = <span> · <a className='detailed-status__application' href={status.getIn(['application', 'website'])} target='_blank' rel='noopener'>{status.getIn(['application', 'name'])}</a></span>;\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 = <i className={`fa fa-${reblogIcon}`} />;\n    } else if (this.context.router) {\n      reblogLink = (\n        <Link to={`/statuses/${status.get('id')}/reblogs`} className='detailed-status__link'>\n          <i className={`fa fa-${reblogIcon}`} />\n          <span className='detailed-status__reblogs'>\n            <FormattedNumber value={status.get('reblogs_count')} />\n          </span>\n        </Link>\n      );\n    } else {\n      reblogLink = (\n        <a href={`/interact/${status.get('id')}?type=reblog`} className='detailed-status__link' onClick={this.handleModalLink}>\n          <i className={`fa fa-${reblogIcon}`} />\n          <span className='detailed-status__reblogs'>\n            <FormattedNumber value={status.get('reblogs_count')} />\n          </span>\n        </a>\n      );\n    }\n\n    if (this.context.router) {\n      favouriteLink = (\n        <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>\n          <i className='fa fa-star' />\n          <span className='detailed-status__favorites'>\n            <FormattedNumber value={status.get('favourites_count')} />\n          </span>\n        </Link>\n      );\n    } else {\n      favouriteLink = (\n        <a href={`/interact/${status.get('id')}?type=favourite`} className='detailed-status__link' onClick={this.handleModalLink}>\n          <i className='fa fa-star' />\n          <span className='detailed-status__favorites'>\n            <FormattedNumber value={status.get('favourites_count')} />\n          </span>\n        </a>\n      );\n    }\n\n    return (\n      <div style={outerStyle}>\n        <div ref={this.setRef} className={classNames('detailed-status', { compact })} data-status-by={status.getIn(['account', 'acct'])}>\n          <a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='detailed-status__display-name'>\n            <div className='detailed-status__display-avatar'><Avatar account={status.get('account')} size={48} /></div>\n            <DisplayName account={status.get('account')} localDomain={this.props.domain} />\n          </a>\n\n          <StatusContent\n            status={status}\n            media={media}\n            mediaIcon={mediaIcon}\n            expanded={expanded}\n            collapsed={false}\n            onExpandedToggle={onToggleHidden}\n            parseClick={this.parseClick}\n          />\n\n          <div className='detailed-status__meta'>\n            <a className='detailed-status__datetime' href={status.get('url')} target='_blank' rel='noopener'>\n              <FormattedDate value={new Date(status.get('created_at'))} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' />\n            </a>{applicationLink} · {reblogLink} · {favouriteLink} · <VisibilityIcon visibility={status.get('visibility')} />\n          </div>\n        </div>\n      </div>\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});\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  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.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      menu.push({ text: intl.formatMessage(messages.redraft), action: this.handleRedraftClick });\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      <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div>\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      <div className='detailed-status__action-bar'>\n        <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>\n        <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblog_message)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>\n        <div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>\n        {shareButton}\n        <div className='detailed-status__button'><IconButton className='bookmark-icon' active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div>\n\n        <div className='detailed-status__action-bar-dropdown'>\n          <DropdownMenuContainer size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />\n        </div>\n      </div>\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: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\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      <StatusContainer\n        key={id}\n        id={id}\n        expanded={this.state.threadExpanded}\n        onMoveUp={this.handleMoveUp}\n        onMoveDown={this.handleMoveDown}\n        contextType='thread'\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        <Column>\n          <ColumnBackButton />\n          <MissingIndicator />\n        </Column>\n      );\n    }\n\n    if (ancestorsIds && ancestorsIds.size > 0) {\n      ancestors = <div>{this.renderChildren(ancestorsIds)}</div>;\n    }\n\n    if (descendantsIds && descendantsIds.size > 0) {\n      descendants = <div>{this.renderChildren(descendantsIds)}</div>;\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      <Column label={intl.formatMessage(messages.detailedStatus)}>\n        <ColumnHeader\n          showBackButton\n          extraButton={(\n            <button className='column-header__button' title={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll} aria-pressed={!isExpanded ? 'false' : 'true'}><i className={`fa fa-${!isExpanded ? 'eye-slash' : 'eye'}`} /></button>\n          )}\n        />\n\n        <ScrollContainer scrollKey='thread' shouldUpdateScroll={this.shouldUpdateScroll}>\n          <div className={classNames('scrollable', 'detailed-status__wrapper', { fullscreen })} ref={this.setRef}>\n            {ancestors}\n\n            <HotKeys handlers={handlers}>\n              <div className='focusable' tabIndex='0' aria-label={textForScreenReader(intl, status, false, !status.get('hidden'))}>\n                <DetailedStatus\n                  status={status}\n                  settings={settings}\n                  onOpenVideo={this.handleOpenVideo}\n                  onOpenMedia={this.handleOpenMedia}\n                  expanded={isExpanded}\n                  onToggleHidden={this.handleExpandedToggle}\n                  domain={domain}\n                />\n\n                <ActionBar\n                  status={status}\n                  onReply={this.handleReplyClick}\n                  onFavourite={this.handleFavouriteClick}\n                  onReblog={this.handleReblogClick}\n                  onBookmark={this.handleBookmarkClick}\n                  onDelete={this.handleDeleteClick}\n                  onDirect={this.handleDirectClick}\n                  onMention={this.handleMentionClick}\n                  onMute={this.handleMuteClick}\n                  onMuteConversation={this.handleConversationMuteClick}\n                  onBlock={this.handleBlockClick}\n                  onReport={this.handleReport}\n                  onPin={this.handlePin}\n                  onEmbed={this.handleEmbed}\n                />\n              </div>\n            </HotKeys>\n\n            {descendants}\n          </div>\n        </ScrollContainer>\n      </Column>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file
+{"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","Object","_babel_runtime_helpers_esm_jsx__WEBPACK_IMPORTED_MODULE_0__","flavours_glitch_containers_poll_container__WEBPACK_IMPORTED_MODULE_20__","pollId","size","some","item","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","revealed","undefined","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","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","blockAndReport","tootHeading","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","secondary","onSecondary","initReport","handleMoveUp","handleMoveDown","_this$props4","_selectChild","indexOf","_this$props5","column","scrollTop","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_back_button","missing_indicator","handlers","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyMention","openProfile","handleHotkeyOpenProfile","toggleSpoiler","handleExpandedToggle","react_default","setColumnRef","label","column_header","handleHeaderClick","showBackButton","extraButton","aria-label","handleToggleAll","aria-pressed","react_router_scroll_4_es","scrollKey","shouldUpdateScroll","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';\nimport PollContainer from 'flavours/glitch/containers/poll_container';\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  };\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('poll')) {\n      media = <PollContainer pollId={status.get('poll')} />;\n    } else if (status.get('media_attachments').size > 0) {\n      if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {\n        media = <AttachmentList media={status.get('media_attachments')} />;\n      } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n        const video = status.getIn(['media_attachments', 0]);\n        media = (\n          <Video\n            preview={video.get('preview_url')}\n            src={video.get('url')}\n            alt={video.get('description')}\n            inline\n            sensitive={status.get('sensitive')}\n            letterbox={settings.getIn(['media', 'letterbox'])}\n            fullwidth={settings.getIn(['media', 'fullwidth'])}\n            preventPlayback={!expanded}\n            onOpenVideo={this.handleOpenVideo}\n            autoplay\n            revealed={settings.getIn(['media', 'reveal_behind_cw']) && !!status.get('spoiler_text') ? true : undefined}\n          />\n        );\n        mediaIcon = 'video-camera';\n      } else {\n        media = (\n          <MediaGallery\n            standalone\n            sensitive={status.get('sensitive')}\n            media={status.get('media_attachments')}\n            letterbox={settings.getIn(['media', 'letterbox'])}\n            fullwidth={settings.getIn(['media', 'fullwidth'])}\n            hidden={!expanded}\n            onOpenMedia={this.props.onOpenMedia}\n            revealed={settings.getIn(['media', 'reveal_behind_cw']) && !!status.get('spoiler_text') ? true : undefined}\n          />\n        );\n        mediaIcon = 'picture-o';\n      }\n    } else media = <Card onOpenMedia={this.props.onOpenMedia} card={status.get('card', null)} />;\n\n    if (status.get('application')) {\n      applicationLink = <span> · <a className='detailed-status__application' href={status.getIn(['application', 'website'])} target='_blank' rel='noopener'>{status.getIn(['application', 'name'])}</a></span>;\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 = <i className={`fa fa-${reblogIcon}`} />;\n    } else if (this.context.router) {\n      reblogLink = (\n        <Link to={`/statuses/${status.get('id')}/reblogs`} className='detailed-status__link'>\n          <i className={`fa fa-${reblogIcon}`} />\n          <span className='detailed-status__reblogs'>\n            <FormattedNumber value={status.get('reblogs_count')} />\n          </span>\n        </Link>\n      );\n    } else {\n      reblogLink = (\n        <a href={`/interact/${status.get('id')}?type=reblog`} className='detailed-status__link' onClick={this.handleModalLink}>\n          <i className={`fa fa-${reblogIcon}`} />\n          <span className='detailed-status__reblogs'>\n            <FormattedNumber value={status.get('reblogs_count')} />\n          </span>\n        </a>\n      );\n    }\n\n    if (this.context.router) {\n      favouriteLink = (\n        <Link to={`/statuses/${status.get('id')}/favourites`} className='detailed-status__link'>\n          <i className='fa fa-star' />\n          <span className='detailed-status__favorites'>\n            <FormattedNumber value={status.get('favourites_count')} />\n          </span>\n        </Link>\n      );\n    } else {\n      favouriteLink = (\n        <a href={`/interact/${status.get('id')}?type=favourite`} className='detailed-status__link' onClick={this.handleModalLink}>\n          <i className='fa fa-star' />\n          <span className='detailed-status__favorites'>\n            <FormattedNumber value={status.get('favourites_count')} />\n          </span>\n        </a>\n      );\n    }\n\n    return (\n      <div style={outerStyle}>\n        <div ref={this.setRef} className={classNames('detailed-status', { compact })} data-status-by={status.getIn(['account', 'acct'])}>\n          <a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='detailed-status__display-name'>\n            <div className='detailed-status__display-avatar'><Avatar account={status.get('account')} size={48} /></div>\n            <DisplayName account={status.get('account')} localDomain={this.props.domain} />\n          </a>\n\n          <StatusContent\n            status={status}\n            media={media}\n            mediaIcon={mediaIcon}\n            expanded={expanded}\n            collapsed={false}\n            onExpandedToggle={onToggleHidden}\n            parseClick={this.parseClick}\n            onUpdate={this.handleChildUpdate}\n          />\n\n          <div className='detailed-status__meta'>\n            <a className='detailed-status__datetime' href={status.get('url')} target='_blank' rel='noopener'>\n              <FormattedDate value={new Date(status.get('created_at'))} hour12={false} year='numeric' month='short' day='2-digit' hour='2-digit' minute='2-digit' />\n            </a>{applicationLink} · {reblogLink} · {favouriteLink} · <VisibilityIcon visibility={status.get('visibility')} />\n          </div>\n        </div>\n      </div>\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);\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      <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShare} /></div>\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      <div className='detailed-status__action-bar'>\n        <div className='detailed-status__button'><IconButton title={intl.formatMessage(messages.reply)} icon={status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all'} onClick={this.handleReplyClick} /></div>\n        <div className='detailed-status__button'><IconButton disabled={reblog_disabled} active={status.get('reblogged')} title={reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblog_message)} icon={reblogIcon} onClick={this.handleReblogClick} /></div>\n        <div className='detailed-status__button'><IconButton className='star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} /></div>\n        {shareButton}\n        <div className='detailed-status__button'><IconButton className='bookmark-icon' active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} /></div>\n\n        <div className='detailed-status__action-bar-dropdown'>\n          <DropdownMenuContainer size={18} icon='ellipsis-h' items={menu} direction='left' ariaLabel='More' />\n        </div>\n      </div>\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  blockAndReport: { id: 'confirmations.block.block_and_report', defaultMessage: 'Block & Report' },\n  tootHeading: { id: 'column.toot', defaultMessage: 'Toots and replies' },\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 = (status) => {\n    const { dispatch, intl } = this.props;\n    const account = status.get('account');\n\n    dispatch(openModal('CONFIRM', {\n      message: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\n      confirm: intl.formatMessage(messages.blockConfirm),\n      onConfirm: () => dispatch(blockAccount(account.get('id'))),\n      secondary: intl.formatMessage(messages.blockAndReport),\n      onSecondary: () => {\n        dispatch(blockAccount(account.get('id')));\n        dispatch(initReport(account, status));\n      },\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  handleHeaderClick = () => {\n    this.column.scrollTop();\n  }\n\n  renderChildren (list) {\n    return list.map(id => (\n      <StatusContainer\n        key={id}\n        id={id}\n        expanded={this.state.threadExpanded}\n        onMoveUp={this.handleMoveUp}\n        onMoveDown={this.handleMoveDown}\n        contextType='thread'\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 } = this.props;\n    const { fullscreen, isExpanded } = this.state;\n\n    if (status === null) {\n      return (\n        <Column>\n          <ColumnBackButton />\n          <MissingIndicator />\n        </Column>\n      );\n    }\n\n    if (ancestorsIds && ancestorsIds.size > 0) {\n      ancestors = <div>{this.renderChildren(ancestorsIds)}</div>;\n    }\n\n    if (descendantsIds && descendantsIds.size > 0) {\n      descendants = <div>{this.renderChildren(descendantsIds)}</div>;\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      <Column ref={this.setColumnRef} label={intl.formatMessage(messages.detailedStatus)}>\n        <ColumnHeader\n          icon='comment'\n          title={intl.formatMessage(messages.tootHeading)}\n          onClick={this.handleHeaderClick}\n          showBackButton\n          extraButton={(\n            <button className='column-header__button' title={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll} aria-pressed={!isExpanded ? 'false' : 'true'}><i className={`fa fa-${!isExpanded ? 'eye-slash' : 'eye'}`} /></button>\n          )}\n        />\n\n        <ScrollContainer scrollKey='thread' shouldUpdateScroll={this.shouldUpdateScroll}>\n          <div className={classNames('scrollable', 'detailed-status__wrapper', { fullscreen })} ref={this.setRef}>\n            {ancestors}\n\n            <HotKeys handlers={handlers}>\n              <div className='focusable' tabIndex='0' aria-label={textForScreenReader(intl, status, false, !status.get('hidden'))}>\n                <DetailedStatus\n                  status={status}\n                  settings={settings}\n                  onOpenVideo={this.handleOpenVideo}\n                  onOpenMedia={this.handleOpenMedia}\n                  expanded={isExpanded}\n                  onToggleHidden={this.handleExpandedToggle}\n                  domain={domain}\n                />\n\n                <ActionBar\n                  status={status}\n                  onReply={this.handleReplyClick}\n                  onFavourite={this.handleFavouriteClick}\n                  onReblog={this.handleReblogClick}\n                  onBookmark={this.handleBookmarkClick}\n                  onDelete={this.handleDeleteClick}\n                  onDirect={this.handleDirectClick}\n                  onMention={this.handleMentionClick}\n                  onMute={this.handleMuteClick}\n                  onMuteConversation={this.handleConversationMuteClick}\n                  onBlock={this.handleBlockClick}\n                  onReport={this.handleReport}\n                  onPin={this.handlePin}\n                  onEmbed={this.handleEmbed}\n                />\n              </div>\n            </HotKeys>\n\n            {descendants}\n          </div>\n        </ScrollContainer>\n      </Column>\n    );\n  }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file