X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=priv%2Fstatic%2Fpacks%2Ffeatures%2Fstatus.js.map;h=f4688ee1749984a0f851e921cf5fa1606f9f1e00;hb=283fb1e05bcd34294ea7bdedab62b0cc6f88d742;hp=561d91f680a29662acea023870cc264b54e3cbfd;hpb=c004b6ea0a172b3c2a27c40a114d7a67f6d63a9c;p=akkoma diff --git a/priv/static/packs/features/status.js.map b/priv/static/packs/features/status.js.map index 561d91f68..f4688ee17 100644 --- a/priv/static/packs/features/status.js.map +++ b/priv/static/packs/features/status.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///features/status.js","webpack:///./app/javascript/mastodon/features/status/components/action_bar.js","webpack:///./app/javascript/mastodon/features/ui/components/column_header.js","webpack:///./app/javascript/mastodon/features/ui/components/column.js","webpack:///./app/javascript/mastodon/components/column_back_button.js","webpack:///./app/javascript/mastodon/containers/status_container.js","webpack:///./app/javascript/mastodon/components/media_gallery.js","webpack:///./app/javascript/mastodon/features/status/index.js","webpack:///./app/javascript/mastodon/components/missing_indicator.js","webpack:///./app/javascript/mastodon/features/status/components/card.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./app/javascript/mastodon/features/status/components/detailed_status.js","webpack:///./app/javascript/mastodon/features/status/containers/card_container.js"],"names":["webpackJsonp","1000","module","__webpack_exports__","__webpack_require__","d","ActionBar","_class","_class2","_temp2","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default","n","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default","__WEBPACK_IMPORTED_MODULE_4_react__","__WEBPACK_IMPORTED_MODULE_4_react___default","__WEBPACK_IMPORTED_MODULE_5_prop_types__","__WEBPACK_IMPORTED_MODULE_5_prop_types___default","__WEBPACK_IMPORTED_MODULE_6__components_icon_button__","__WEBPACK_IMPORTED_MODULE_7__containers_dropdown_menu_container__","__WEBPACK_IMPORTED_MODULE_8_react_intl__","__WEBPACK_IMPORTED_MODULE_9__initial_state__","messages","Object","delete","id","defaultMessage","redraft","direct","mention","reply","reblog","reblog_private","cancel_reblog_private","cannot_reblog","favourite","mute","muteConversation","unmuteConversation","block","report","share","pin","unpin","embed","_React$PureComponent","_temp","_this","_ret","this","_len","arguments","length","args","Array","_key","call","apply","concat","handleReplyClick","props","onReply","status","handleReblogClick","e","onReblog","handleFavouriteClick","onFavourite","handleDeleteClick","onDelete","handleRedraftClick","handleDirectClick","onDirect","get","context","router","history","handleMentionClick","onMention","handleMuteClick","onMute","handleConversationMuteClick","onMuteConversation","handleBlockClick","onBlock","handleReport","onReport","handlePinClick","onPin","handleShare","navigator","text","url","handleEmbed","onEmbed","prototype","render","_props","intl","publicStatus","includes","mutingConversation","menu","push","formatMessage","action","getIn","name","shareButton","className","title","icon","onClick","reblogIcon","reblog_disabled","disabled","active","animate","size","items","direction","a","PureComponent","contextTypes","object","155","ColumnHeader","__WEBPACK_IMPORTED_MODULE_5_classnames__","__WEBPACK_IMPORTED_MODULE_5_classnames___default","handleClick","type","columnHeaderId","iconElement","274","Column","__WEBPACK_IMPORTED_MODULE_4_lodash_debounce__","__WEBPACK_IMPORTED_MODULE_4_lodash_debounce___default","__WEBPACK_IMPORTED_MODULE_5_react__","__WEBPACK_IMPORTED_MODULE_5_react___default","__WEBPACK_IMPORTED_MODULE_6__column_header__","__WEBPACK_IMPORTED_MODULE_7__scroll__","__WEBPACK_IMPORTED_MODULE_8__is_mobile__","handleHeaderClick","scrollable","node","querySelector","_interruptScrollAnimation","handleScroll","setRef","c","scrollTop","heading","children","hideHeadingOnMobile","showHeading","window","innerWidth","replace","header","createElement","ref","role","aria-labelledby","onScroll","276","ColumnBackButton","__WEBPACK_IMPORTED_MODULE_5_react_intl__","__WEBPACK_IMPORTED_MODULE_6_prop_types__","__WEBPACK_IMPORTED_MODULE_6_prop_types___default","goBack","277","__WEBPACK_IMPORTED_MODULE_1_react__","__WEBPACK_IMPORTED_MODULE_2_react_redux__","__WEBPACK_IMPORTED_MODULE_3__components_status__","__WEBPACK_IMPORTED_MODULE_4__selectors__","__WEBPACK_IMPORTED_MODULE_5__actions_compose__","__WEBPACK_IMPORTED_MODULE_6__actions_interactions__","__WEBPACK_IMPORTED_MODULE_7__actions_accounts__","__WEBPACK_IMPORTED_MODULE_8__actions_statuses__","__WEBPACK_IMPORTED_MODULE_9__actions_mutes__","__WEBPACK_IMPORTED_MODULE_10__actions_reports__","__WEBPACK_IMPORTED_MODULE_11__actions_modal__","__WEBPACK_IMPORTED_MODULE_12_react_intl__","__WEBPACK_IMPORTED_MODULE_13__initial_state__","__WEBPACK_IMPORTED_MODULE_14__actions_alerts__","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","blockConfirm","makeMapStateToProps","getStatus","state","mapDispatchToProps","dispatch","_ref","onModalReblog","shiftKey","onError","error","withRedraft","undefined","message","confirm","onConfirm","account","onOpenMedia","media","index","onOpenVideo","time","values","onToggleHidden","805","defineProperty","value","MediaGallery","_class3","_temp4","__WEBPACK_IMPORTED_MODULE_5_immutable__","__WEBPACK_IMPORTED_MODULE_6__icon_button__","__WEBPACK_IMPORTED_MODULE_7_react_intl__","__WEBPACK_IMPORTED_MODULE_9_classnames__","__WEBPACK_IMPORTED_MODULE_9_classnames___default","__WEBPACK_IMPORTED_MODULE_10__initial_state__","toggle_visible","Item","handleMouseEnter","hoverToPlay","target","play","handleMouseLeave","pause","currentTime","_this$props","button","preventDefault","stopPropagation","attachment","standalone","displayWidth","width","height","top","left","bottom","right","thumbnail","previewUrl","previewWidth","originalUrl","originalWidth","hasSize","srcSet","sizes","focusX","focusY","x","y","href","src","alt","style","objectPosition","aria-label","loop","controls","autoPlay","autoplay","onMouseEnter","onMouseLeave","muted","defaultProps","_React$PureComponent2","_temp3","_this2","_ret2","_len2","_key2","visible","sensitive","handleOpen","setState","handleRef","offsetWidth","componentWillReceiveProps","nextProps","isStandaloneEligible","_props2","_this3","_props3","_state","take","map","i","warning","spoiler-button--visible","overlay","818","Status","_dec","__WEBPACK_IMPORTED_MODULE_4_immutable__","__WEBPACK_IMPORTED_MODULE_4_immutable___default","__WEBPACK_IMPORTED_MODULE_6_react_redux__","__WEBPACK_IMPORTED_MODULE_7_prop_types__","__WEBPACK_IMPORTED_MODULE_7_prop_types___default","__WEBPACK_IMPORTED_MODULE_8_classnames__","__WEBPACK_IMPORTED_MODULE_8_classnames___default","__WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_10__actions_statuses__","__WEBPACK_IMPORTED_MODULE_11__components_missing_indicator__","__WEBPACK_IMPORTED_MODULE_12__components_detailed_status__","__WEBPACK_IMPORTED_MODULE_13__components_action_bar__","__WEBPACK_IMPORTED_MODULE_14__ui_components_column__","__WEBPACK_IMPORTED_MODULE_15__actions_interactions__","__WEBPACK_IMPORTED_MODULE_16__actions_compose__","__WEBPACK_IMPORTED_MODULE_17__actions_accounts__","__WEBPACK_IMPORTED_MODULE_18__actions_mutes__","__WEBPACK_IMPORTED_MODULE_19__actions_reports__","__WEBPACK_IMPORTED_MODULE_20__selectors__","__WEBPACK_IMPORTED_MODULE_21_react_router_scroll_4__","__WEBPACK_IMPORTED_MODULE_22__components_column_back_button__","__WEBPACK_IMPORTED_MODULE_23__components_column_header__","__WEBPACK_IMPORTED_MODULE_24__containers_status_container__","__WEBPACK_IMPORTED_MODULE_25__actions_modal__","__WEBPACK_IMPORTED_MODULE_26_react_intl__","__WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_28_react_hotkeys__","__WEBPACK_IMPORTED_MODULE_29__initial_state__","__WEBPACK_IMPORTED_MODULE_30__features_ui_util_fullscreen__","revealAll","hideAll","params","statusId","ancestorsIds","List","descendantsIds","withMutations","mutable","unshift","ids","shift","replies","reverse","forEach","_ImmutablePureCompone","fullscreen","handlePin","handleModalReblog","handleOpenMedia","handleOpenVideo","handleToggleHidden","handleToggleAll","_this$props2","statusIds","toJS","_this$props3","handleHotkeyMoveUp","handleMoveUp","handleHotkeyMoveDown","handleMoveDown","handleHotkeyReply","handleHotkeyFavourite","handleHotkeyBoost","handleHotkeyMention","handleHotkeyOpenProfile","handleHotkeyToggleHidden","_this$props4","_selectChild","indexOf","_this$props5","onFullScreenChange","componentWillMount","componentDidMount","_scrolledIntoView","element","querySelectorAll","focus","renderChildren","list","onMoveUp","onMoveDown","componentDidUpdate","scrollIntoView","componentWillUnmount","ancestors","descendants","handlers","moveUp","moveDown","boost","openProfile","toggleHidden","showBackButton","extraButton","aria-pressed","scrollKey","tabIndex","propTypes","isRequired","func","866","__WEBPACK_IMPORTED_MODULE_2_react_intl__","MissingIndicator","tagName","899","Card","__WEBPACK_IMPORTED_MODULE_5_immutable___default","__WEBPACK_IMPORTED_MODULE_6_punycode__","__WEBPACK_IMPORTED_MODULE_6_punycode___default","__WEBPACK_IMPORTED_MODULE_7_classnames__","__WEBPACK_IMPORTED_MODULE_7_classnames___default","decodeIDNA","domain","split","part","decode","slice","join","getHostname","parser","document","hostname","trim","len","cut","substring","domParser","DOMParser","addAutoPlay","html","parseFromString","documentElement","iframe","innerHTML","embedded","handlePhotoClick","card","fromJS","description","meta","original","handleEmbedClick","renderVideo","content","__html","ratio","dangerouslySetInnerHTML","maxDescription","provider","horizontal","interactive","rel","backgroundImage","iconVariant","900","exports","global","__WEBPACK_AMD_DEFINE_RESULT__","root","RangeError","errors","array","fn","result","mapDomain","string","parts","regexSeparators","ucs2decode","extra","output","counter","charCodeAt","ucs2encode","stringFromCharCode","basicToDigit","codePoint","base","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","k","floor","damp","baseMinusTMin","tMax","skew","input","out","basic","j","oldi","w","t","baseMinusT","inputLength","initialN","bias","initialBias","lastIndexOf","delimiter","maxInt","tMin","splice","encode","handledCPCount","basicLength","m","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","regexPunycode","test","toLowerCase","toASCII","regexNonASCII","freeGlobal","nodeType","punycode","overflow","not-basic","invalid-input","Math","String","fromCharCode","version","ucs2","998","DetailedStatus","__WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_7__components_avatar__","__WEBPACK_IMPORTED_MODULE_8__components_display_name__","__WEBPACK_IMPORTED_MODULE_9__components_status_content__","__WEBPACK_IMPORTED_MODULE_10__components_media_gallery__","__WEBPACK_IMPORTED_MODULE_11__components_attachment_list__","__WEBPACK_IMPORTED_MODULE_12_react_router_dom__","__WEBPACK_IMPORTED_MODULE_13_react_intl__","__WEBPACK_IMPORTED_MODULE_14__containers_card_container__","__WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_16__video__","handleAccountClick","startTime","handleExpandedToggle","applicationLink","reblogLink","some","item","video","preview","inline","to","expanded","onExpandedToggle","Date","hour12","year","month","day","hour","minute","999","__WEBPACK_IMPORTED_MODULE_0_react_redux__","__WEBPACK_IMPORTED_MODULE_1__components_card__","mapStateToProps"],"mappings":"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","file":"features/status.js","sourcesContent":["webpackJsonp([19,33],{\n\n/***/ 1000:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ActionBar; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__containers_dropdown_menu_container__ = __webpack_require__(291);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__initial_state__ = __webpack_require__(13);\n\n\n\n\n\nvar _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_8_react_intl__[\"f\" /* defineMessages */])({\n delete: {\n 'id': 'status.delete',\n 'defaultMessage': 'Delete'\n },\n redraft: {\n 'id': 'status.redraft',\n 'defaultMessage': 'Delete & re-draft'\n },\n direct: {\n 'id': 'status.direct',\n 'defaultMessage': 'Direct message @{name}'\n },\n mention: {\n 'id': 'status.mention',\n 'defaultMessage': 'Mention @{name}'\n },\n reply: {\n 'id': 'status.reply',\n 'defaultMessage': 'Reply'\n },\n reblog: {\n 'id': 'status.reblog',\n 'defaultMessage': 'Boost'\n },\n reblog_private: {\n 'id': 'status.reblog_private',\n 'defaultMessage': 'Boost to original audience'\n },\n cancel_reblog_private: {\n 'id': 'status.cancel_reblog_private',\n 'defaultMessage': 'Unboost'\n },\n cannot_reblog: {\n 'id': 'status.cannot_reblog',\n 'defaultMessage': 'This post cannot be boosted'\n },\n favourite: {\n 'id': 'status.favourite',\n 'defaultMessage': 'Favourite'\n },\n mute: {\n 'id': 'status.mute',\n 'defaultMessage': 'Mute @{name}'\n },\n muteConversation: {\n 'id': 'status.mute_conversation',\n 'defaultMessage': 'Mute conversation'\n },\n unmuteConversation: {\n 'id': 'status.unmute_conversation',\n 'defaultMessage': 'Unmute conversation'\n },\n block: {\n 'id': 'status.block',\n 'defaultMessage': 'Block @{name}'\n },\n report: {\n 'id': 'status.report',\n 'defaultMessage': 'Report @{name}'\n },\n share: {\n 'id': 'status.share',\n 'defaultMessage': 'Share'\n },\n pin: {\n 'id': 'status.pin',\n 'defaultMessage': 'Pin on profile'\n },\n unpin: {\n 'id': 'status.unpin',\n 'defaultMessage': 'Unpin from profile'\n },\n embed: {\n 'id': 'status.embed',\n 'defaultMessage': 'Embed'\n }\n});\n\nvar ActionBar = Object(__WEBPACK_IMPORTED_MODULE_8_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ActionBar, _React$PureComponent);\n\n function ActionBar() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ActionBar);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handleReplyClick = function () {\n _this.props.onReply(_this.props.status);\n }, _this.handleReblogClick = function (e) {\n _this.props.onReblog(_this.props.status, e);\n }, _this.handleFavouriteClick = function () {\n _this.props.onFavourite(_this.props.status);\n }, _this.handleDeleteClick = function () {\n _this.props.onDelete(_this.props.status);\n }, _this.handleRedraftClick = function () {\n _this.props.onDelete(_this.props.status, true);\n }, _this.handleDirectClick = function () {\n _this.props.onDirect(_this.props.status.get('account'), _this.context.router.history);\n }, _this.handleMentionClick = function () {\n _this.props.onMention(_this.props.status.get('account'), _this.context.router.history);\n }, _this.handleMuteClick = function () {\n _this.props.onMute(_this.props.status.get('account'));\n }, _this.handleConversationMuteClick = function () {\n _this.props.onMuteConversation(_this.props.status);\n }, _this.handleBlockClick = function () {\n _this.props.onBlock(_this.props.status.get('account'));\n }, _this.handleReport = function () {\n _this.props.onReport(_this.props.status);\n }, _this.handlePinClick = function () {\n _this.props.onPin(_this.props.status);\n }, _this.handleShare = function () {\n navigator.share({\n text: _this.props.status.get('search_index'),\n url: _this.props.status.get('url')\n });\n }, _this.handleEmbed = function () {\n _this.props.onEmbed(_this.props.status);\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ActionBar.prototype.render = function render() {\n var _props = this.props,\n status = _props.status,\n intl = _props.intl;\n\n\n var publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n var mutingConversation = status.get('muted');\n\n var menu = [];\n\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });\n menu.push(null);\n }\n\n if (__WEBPACK_IMPORTED_MODULE_9__initial_state__[\"i\" /* 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 } else {\n if (status.get('visibility') === 'private') {\n menu.push({ text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog_private : messages.reblog_private), action: this.handleReblogClick });\n }\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 }\n\n var shareButton = 'share' in navigator && status.get('visibility') === 'public' && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_icon_button__[\"a\" /* default */], {\n title: intl.formatMessage(messages.share),\n icon: 'share-alt',\n onClick: this.handleShare\n }));\n\n var reblogIcon = 'retweet';\n if (status.get('visibility') === 'direct') reblogIcon = 'envelope';else if (status.get('visibility') === 'private') reblogIcon = 'lock';\n\n var reblog_disabled = status.get('visibility') === 'direct' || status.get('visibility') === 'private';\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__action-bar'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_icon_button__[\"a\" /* default */], {\n title: intl.formatMessage(messages.reply),\n icon: status.get('in_reply_to_id', null) === null ? 'reply' : 'reply-all',\n onClick: this.handleReplyClick\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_icon_button__[\"a\" /* default */], {\n disabled: reblog_disabled,\n active: status.get('reblogged'),\n title: reblog_disabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog),\n icon: reblogIcon,\n onClick: this.handleReblogClick\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_icon_button__[\"a\" /* default */], {\n className: 'star-icon',\n animate: true,\n active: status.get('favourited'),\n title: intl.formatMessage(messages.favourite),\n icon: 'star',\n onClick: this.handleFavouriteClick\n })), shareButton, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__action-bar-dropdown'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__containers_dropdown_menu_container__[\"a\" /* default */], {\n size: 18,\n icon: 'ellipsis-h',\n items: menu,\n direction: 'left',\n title: 'More'\n })));\n };\n\n return ActionBar;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class2.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.object\n}, _temp2)) || _class;\n\n\n\n/***/ }),\n\n/***/ 155:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ColumnHeader; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_classnames__);\n\n\n\n\n\n\n\n\nvar ColumnHeader = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ColumnHeader, _React$PureComponent);\n\n function ColumnHeader() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ColumnHeader);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handleClick = function () {\n _this.props.onClick();\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ColumnHeader.prototype.render = function render() {\n var _props = this.props,\n icon = _props.icon,\n type = _props.type,\n active = _props.active,\n columnHeaderId = _props.columnHeaderId;\n\n var iconElement = '';\n\n if (icon) {\n iconElement = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-fw fa-' + icon + ' column-header__icon'\n });\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('h1', {\n className: __WEBPACK_IMPORTED_MODULE_5_classnames___default()('column-header', { active: active }),\n id: columnHeaderId || null\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick\n }, void 0, iconElement, type));\n };\n\n return ColumnHeader;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 274:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Column; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_debounce__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_lodash_debounce___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_lodash_debounce__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__column_header__ = __webpack_require__(155);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__scroll__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__is_mobile__ = __webpack_require__(43);\n\n\n\n\n\n\n\n\n\n\n\nvar Column = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Column, _React$PureComponent);\n\n function Column() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Column);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handleHeaderClick = function () {\n var scrollable = _this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n _this._interruptScrollAnimation = Object(__WEBPACK_IMPORTED_MODULE_7__scroll__[\"b\" /* scrollTop */])(scrollable);\n }, _this.handleScroll = __WEBPACK_IMPORTED_MODULE_4_lodash_debounce___default()(function () {\n if (typeof _this._interruptScrollAnimation !== 'undefined') {\n _this._interruptScrollAnimation();\n }\n }, 200), _this.setRef = function (c) {\n _this.node = c;\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Column.prototype.scrollTop = function scrollTop() {\n var scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = Object(__WEBPACK_IMPORTED_MODULE_7__scroll__[\"b\" /* scrollTop */])(scrollable);\n };\n\n Column.prototype.render = function render() {\n var _props = this.props,\n heading = _props.heading,\n icon = _props.icon,\n children = _props.children,\n active = _props.active,\n hideHeadingOnMobile = _props.hideHeadingOnMobile;\n\n\n var showHeading = heading && (!hideHeadingOnMobile || hideHeadingOnMobile && !Object(__WEBPACK_IMPORTED_MODULE_8__is_mobile__[\"b\" /* isMobile */])(window.innerWidth));\n\n var columnHeaderId = showHeading && heading.replace(/ /g, '-');\n var header = showHeading && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__column_header__[\"a\" /* default */], {\n icon: icon,\n active: active,\n type: heading,\n onClick: this.handleHeaderClick,\n columnHeaderId: columnHeaderId\n });\n return __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(\n 'div',\n {\n ref: this.setRef,\n role: 'region',\n 'aria-labelledby': columnHeaderId,\n className: 'column',\n onScroll: this.handleScroll\n },\n header,\n children\n );\n };\n\n return Column;\n}(__WEBPACK_IMPORTED_MODULE_5_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 276:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ColumnBackButton; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_prop_types__);\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\nvar ColumnBackButton = (_temp2 = _class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ColumnBackButton, _React$PureComponent);\n\n function ColumnBackButton() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ColumnBackButton);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handleClick = function () {\n if (window.history && window.history.length === 1) {\n _this.context.router.history.push('/');\n } else {\n _this.context.router.history.goBack();\n }\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ColumnBackButton.prototype.render = function render() {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n className: 'column-back-button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-fw fa-chevron-left column-back-button__icon'\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'column_back_button.label',\n defaultMessage: 'Back'\n }));\n };\n\n return ColumnBackButton;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 277:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_status__ = __webpack_require__(158);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__actions_interactions__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__actions_accounts__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_statuses__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__actions_mutes__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_reports__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__actions_modal__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__initial_state__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__actions_alerts__ = __webpack_require__(33);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_12_react_intl__[\"f\" /* defineMessages */])({\n deleteConfirm: {\n 'id': 'confirmations.delete.confirm',\n 'defaultMessage': 'Delete'\n },\n deleteMessage: {\n 'id': 'confirmations.delete.message',\n 'defaultMessage': 'Are you sure you want to delete this status?'\n },\n redraftConfirm: {\n 'id': 'confirmations.redraft.confirm',\n 'defaultMessage': 'Delete & redraft'\n },\n redraftMessage: {\n 'id': 'confirmations.redraft.message',\n '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 },\n blockConfirm: {\n 'id': 'confirmations.block.confirm',\n 'defaultMessage': 'Block'\n }\n});\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getStatus = Object(__WEBPACK_IMPORTED_MODULE_4__selectors__[\"e\" /* makeGetStatus */])();\n\n var mapStateToProps = function mapStateToProps(state, props) {\n return {\n status: getStatus(state, props.id)\n };\n };\n\n return mapStateToProps;\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, _ref) {\n var intl = _ref.intl;\n return {\n onReply: function onReply(status, router) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_compose__[\"T\" /* replyCompose */])(status, router));\n },\n onModalReblog: function onModalReblog(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"o\" /* reblog */])(status));\n },\n onReblog: function onReblog(status, e) {\n if (status.get('reblogged')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"r\" /* unreblog */])(status));\n } else {\n if (e.shiftKey || !__WEBPACK_IMPORTED_MODULE_13__initial_state__[\"b\" /* boostModal */]) {\n this.onModalReblog(status);\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('BOOST', { status: status, onReblog: this.onModalReblog }));\n }\n }\n },\n onFavourite: function onFavourite(status) {\n if (status.get('favourited')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"p\" /* unfavourite */])(status));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"k\" /* favourite */])(status));\n }\n },\n onPin: function onPin(status) {\n if (status.get('pinned')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"q\" /* unpin */])(status));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_interactions__[\"n\" /* pin */])(status));\n }\n },\n onEmbed: function onEmbed(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('EMBED', {\n url: status.get('url'),\n onError: function onError(error) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_14__actions_alerts__[\"e\" /* showAlertForError */])(error));\n }\n }));\n },\n onDelete: function onDelete(status) {\n var withRedraft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!__WEBPACK_IMPORTED_MODULE_13__initial_state__[\"d\" /* deleteModal */]) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"g\" /* deleteStatus */])(status.get('id'), withRedraft));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"g\" /* deleteStatus */])(status.get('id'), withRedraft));\n }\n }));\n }\n },\n onDirect: function onDirect(account, router) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_compose__[\"N\" /* directCompose */])(account, router));\n },\n onMention: function onMention(account, router) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_compose__[\"R\" /* mentionCompose */])(account, router));\n },\n onOpenMedia: function onOpenMedia(media, index) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('MEDIA', { media: media, index: index }));\n },\n onOpenVideo: function onOpenVideo(media, time) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('VIDEO', { media: media, time: time }));\n },\n onBlock: function onBlock(account) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'confirmations.block.message',\n defaultMessage: 'Are you sure you want to block {name}?',\n values: { name: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, '@', account.get('acct')) }\n }),\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_accounts__[\"q\" /* blockAccount */])(account.get('id')));\n }\n }));\n },\n onReport: function onReport(status) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_reports__[\"k\" /* initReport */])(status.get('account'), status));\n },\n onMute: function onMute(account) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_9__actions_mutes__[\"g\" /* initMuteModal */])(account));\n },\n onMuteConversation: function onMuteConversation(status) {\n if (status.get('muted')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"l\" /* unmuteStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"j\" /* muteStatus */])(status.get('id')));\n }\n },\n onToggleHidden: function onToggleHidden(status) {\n if (status.get('hidden')) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"k\" /* revealStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"i\" /* hideStatus */])(status.get('id')));\n }\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_12_react_intl__[\"g\" /* injectIntl */])(Object(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_3__components_status__[\"a\" /* default */])));\n\n/***/ }),\n\n/***/ 805:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MediaGallery; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_immutable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__is_mobile__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__initial_state__ = __webpack_require__(13);\n\n\n\n\n\nvar _class, _temp2, _class2, _class3, _temp4;\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"f\" /* defineMessages */])({\n toggle_visible: {\n 'id': 'media_gallery.toggle_visible',\n 'defaultMessage': 'Toggle visibility'\n }\n});\n\nvar Item = (_temp2 = _class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Item, _React$PureComponent);\n\n function Item() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Item);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.handleMouseEnter = function (e) {\n if (_this.hoverToPlay()) {\n e.target.play();\n }\n }, _this.handleMouseLeave = function (e) {\n if (_this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n }, _this.handleClick = function (e) {\n var _this$props = _this.props,\n index = _this$props.index,\n onClick = _this$props.onClick;\n\n\n if (e.button === 0) {\n e.preventDefault();\n onClick(index);\n }\n\n e.stopPropagation();\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Item.prototype.hoverToPlay = function hoverToPlay() {\n var attachment = this.props.attachment;\n\n return !__WEBPACK_IMPORTED_MODULE_10__initial_state__[\"a\" /* autoPlayGif */] && attachment.get('type') === 'gifv';\n };\n\n Item.prototype.render = function render() {\n var _props = this.props,\n attachment = _props.attachment,\n index = _props.index,\n size = _props.size,\n standalone = _props.standalone,\n displayWidth = _props.displayWidth;\n\n\n var width = 50;\n var height = 100;\n var top = 'auto';\n var left = 'auto';\n var bottom = 'auto';\n var right = 'auto';\n\n if (size === 1) {\n width = 100;\n }\n\n if (size === 4 || size === 3 && index > 0) {\n height = 50;\n }\n\n if (size === 2) {\n if (index === 0) {\n right = '2px';\n } else {\n left = '2px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '2px';\n } else if (index > 0) {\n left = '2px';\n }\n\n if (index === 1) {\n bottom = '2px';\n } else if (index > 1) {\n top = '2px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '2px';\n }\n\n if (index === 1 || index === 3) {\n left = '2px';\n }\n\n if (index < 2) {\n bottom = '2px';\n } else {\n top = '2px';\n }\n }\n\n var thumbnail = '';\n\n if (attachment.get('type') === 'image') {\n var previewUrl = attachment.get('preview_url');\n var previewWidth = attachment.getIn(['meta', 'small', 'width']);\n\n var originalUrl = attachment.get('url');\n var originalWidth = attachment.getIn(['meta', 'original', 'width']);\n\n var hasSize = typeof originalWidth === 'number' && typeof previewWidth === 'number';\n\n var srcSet = hasSize ? originalUrl + ' ' + originalWidth + 'w, ' + previewUrl + ' ' + previewWidth + 'w' : null;\n var sizes = hasSize ? displayWidth * (width / 100) + 'px' : null;\n\n var focusX = attachment.getIn(['meta', 'focus', 'x']) || 0;\n var focusY = attachment.getIn(['meta', 'focus', 'y']) || 0;\n var x = (focusX / 2 + .5) * 100;\n var y = (focusY / -2 + .5) * 100;\n\n thumbnail = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n className: 'media-gallery__item-thumbnail',\n href: attachment.get('remote_url') || originalUrl,\n onClick: this.handleClick,\n target: '_blank'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('img', {\n src: previewUrl,\n srcSet: srcSet,\n sizes: sizes,\n alt: attachment.get('description'),\n title: attachment.get('description'),\n style: { objectPosition: x + '% ' + y + '%' }\n }));\n } else if (attachment.get('type') === 'audio') {\n thumbnail = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'media-gallery__audio'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('audio', {\n className: 'media-gallery__item-audio-thumbnail',\n 'aria-label': attachment.get('description'),\n role: 'application',\n src: attachment.get('url'),\n loop: true,\n controls: true\n }));\n } else if (attachment.get('type') === 'gifv') {\n var autoPlay = !Object(__WEBPACK_IMPORTED_MODULE_8__is_mobile__[\"a\" /* isIOS */])() && __WEBPACK_IMPORTED_MODULE_10__initial_state__[\"a\" /* autoPlayGif */];\n\n thumbnail = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_9_classnames___default()('media-gallery__gifv', { autoplay: autoPlay })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('video', {\n className: 'media-gallery__item-gifv-thumbnail',\n 'aria-label': attachment.get('description'),\n role: 'application',\n src: attachment.get('url'),\n onClick: this.handleClick,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n autoPlay: autoPlay,\n loop: true,\n muted: true\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'media-gallery__gifv__label'\n }, void 0, 'GIF'));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_9_classnames___default()('media-gallery__item', { standalone: standalone }),\n style: { left: left, top: top, right: right, bottom: bottom, width: width + '%', height: height + '%' }\n }, attachment.get('id'), thumbnail);\n };\n\n return Item;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class.defaultProps = {\n standalone: false,\n index: 0,\n size: 1\n}, _temp2);\n\nvar MediaGallery = Object(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"g\" /* injectIntl */])(_class2 = (_temp4 = _class3 = function (_React$PureComponent2) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(MediaGallery, _React$PureComponent2);\n\n function MediaGallery() {\n var _temp3, _this2, _ret2;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, MediaGallery);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp3 = (_this2 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent2.call.apply(_React$PureComponent2, [this].concat(args))), _this2), _this2.state = {\n visible: !_this2.props.sensitive || __WEBPACK_IMPORTED_MODULE_10__initial_state__[\"f\" /* displaySensitiveMedia */]\n }, _this2.handleOpen = function () {\n _this2.setState({ visible: !_this2.state.visible });\n }, _this2.handleClick = function (index) {\n _this2.props.onOpenMedia(_this2.props.media, index);\n }, _this2.handleRef = function (node) {\n if (node /*&& this.isStandaloneEligible()*/) {\n // offsetWidth triggers a layout, so only calculate when we need to\n _this2.setState({\n width: node.offsetWidth\n });\n }\n }, _temp3), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this2, _ret2);\n }\n\n MediaGallery.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_5_immutable__[\"is\"])(nextProps.media, this.props.media)) {\n this.setState({ visible: !nextProps.sensitive });\n }\n };\n\n MediaGallery.prototype.isStandaloneEligible = function isStandaloneEligible() {\n var _props2 = this.props,\n media = _props2.media,\n standalone = _props2.standalone;\n\n return standalone && media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']);\n };\n\n MediaGallery.prototype.render = function render() {\n var _this3 = this;\n\n var _props3 = this.props,\n media = _props3.media,\n intl = _props3.intl,\n sensitive = _props3.sensitive,\n height = _props3.height;\n var _state = this.state,\n width = _state.width,\n visible = _state.visible;\n\n\n var children = void 0;\n\n var style = {};\n\n if (this.isStandaloneEligible()) {\n if (width) {\n style.height = width / this.props.media.getIn([0, 'meta', 'small', 'aspect']);\n }\n } else if (width) {\n style.height = width / (16 / 9);\n } else {\n style.height = height;\n }\n\n if (!visible) {\n var warning = void 0;\n\n if (sensitive) {\n warning = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'status.sensitive_warning',\n defaultMessage: 'Sensitive content'\n });\n } else {\n warning = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'status.media_hidden',\n defaultMessage: 'Media hidden'\n });\n }\n\n children = __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'button',\n { type: 'button', className: 'media-spoiler', onClick: this.handleOpen, style: style, ref: this.handleRef },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'media-spoiler__warning'\n }, void 0, warning),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'media-spoiler__trigger'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'status.sensitive_toggle',\n defaultMessage: 'Click to view'\n }))\n );\n } else {\n var size = media.take(4).size;\n\n if (this.isStandaloneEligible()) {\n children = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Item, {\n standalone: true,\n onClick: this.handleClick,\n attachment: media.get(0),\n displayWidth: width\n });\n } else {\n children = media.take(4).map(function (attachment, i) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Item, {\n onClick: _this3.handleClick,\n attachment: attachment,\n index: i,\n size: size,\n displayWidth: width\n }, attachment.get('id'));\n });\n }\n }\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { className: 'media-gallery', style: style, ref: this.handleRef },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_9_classnames___default()('spoiler-button', { 'spoiler-button--visible': visible })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__icon_button__[\"a\" /* default */], {\n title: intl.formatMessage(messages.toggle_visible),\n icon: visible ? 'eye' : 'eye-slash',\n overlay: true,\n onClick: this.handleOpen\n })),\n children\n );\n };\n\n return MediaGallery;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class3.defaultProps = {\n standalone: false\n}, _temp4)) || _class2;\n\n\n\n/***/ }),\n\n/***/ 818:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Status; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_immutable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_statuses__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__components_missing_indicator__ = __webpack_require__(866);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__components_detailed_status__ = __webpack_require__(998);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__components_action_bar__ = __webpack_require__(1000);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__ui_components_column__ = __webpack_require__(274);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__actions_interactions__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__actions_accounts__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__actions_mutes__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__actions_reports__ = __webpack_require__(157);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__selectors__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_react_router_scroll_4__ = __webpack_require__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__components_column_back_button__ = __webpack_require__(276);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__components_column_header__ = __webpack_require__(70);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__containers_status_container__ = __webpack_require__(277);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__actions_modal__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28_react_hotkeys__ = __webpack_require__(162);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28_react_hotkeys___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_28_react_hotkeys__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__initial_state__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__features_ui_util_fullscreen__ = __webpack_require__(159);\n\n\n\n\n\nvar _dec, _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_26_react_intl__[\"f\" /* defineMessages */])({\n deleteConfirm: {\n 'id': 'confirmations.delete.confirm',\n 'defaultMessage': 'Delete'\n },\n deleteMessage: {\n 'id': 'confirmations.delete.message',\n 'defaultMessage': 'Are you sure you want to delete this status?'\n },\n redraftConfirm: {\n 'id': 'confirmations.redraft.confirm',\n 'defaultMessage': 'Delete & redraft'\n },\n redraftMessage: {\n 'id': 'confirmations.redraft.message',\n '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 },\n blockConfirm: {\n 'id': 'confirmations.block.confirm',\n 'defaultMessage': 'Block'\n },\n revealAll: {\n 'id': 'status.show_more_all',\n 'defaultMessage': 'Show more for all'\n },\n hideAll: {\n 'id': 'status.show_less_all',\n 'defaultMessage': 'Show less for all'\n }\n});\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getStatus = Object(__WEBPACK_IMPORTED_MODULE_20__selectors__[\"e\" /* makeGetStatus */])();\n\n var mapStateToProps = function mapStateToProps(state, props) {\n var status = getStatus(state, props.params.statusId);\n var ancestorsIds = __WEBPACK_IMPORTED_MODULE_4_immutable___default.a.List();\n var descendantsIds = __WEBPACK_IMPORTED_MODULE_4_immutable___default.a.List();\n\n if (status) {\n ancestorsIds = ancestorsIds.withMutations(function (mutable) {\n var 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(function (mutable) {\n var ids = [status.get('id')];\n\n while (ids.length > 0) {\n var id = ids.shift();\n var 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(function (reply) {\n ids.unshift(reply);\n });\n }\n }\n });\n }\n\n return {\n status: status,\n ancestorsIds: ancestorsIds,\n descendantsIds: descendantsIds\n };\n };\n\n return mapStateToProps;\n};\n\nvar Status = (_dec = Object(__WEBPACK_IMPORTED_MODULE_6_react_redux__[\"connect\"])(makeMapStateToProps), Object(__WEBPACK_IMPORTED_MODULE_26_react_intl__[\"g\" /* injectIntl */])(_class = _dec(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Status, _ImmutablePureCompone);\n\n function Status() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Status);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.call.apply(_ImmutablePureCompone, [this].concat(args))), _this), _this.state = {\n fullscreen: false\n }, _this.handleFavouriteClick = function (status) {\n if (status.get('favourited')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"p\" /* unfavourite */])(status));\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"k\" /* favourite */])(status));\n }\n }, _this.handlePin = function (status) {\n if (status.get('pinned')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"q\" /* unpin */])(status));\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"n\" /* pin */])(status));\n }\n }, _this.handleReplyClick = function (status) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_compose__[\"T\" /* replyCompose */])(status, _this.context.router.history));\n }, _this.handleModalReblog = function (status) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"o\" /* reblog */])(status));\n }, _this.handleReblogClick = function (status, e) {\n if (status.get('reblogged')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_15__actions_interactions__[\"r\" /* unreblog */])(status));\n } else {\n if (e.shiftKey || !__WEBPACK_IMPORTED_MODULE_29__initial_state__[\"b\" /* boostModal */]) {\n _this.handleModalReblog(status);\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('BOOST', { status: status, onReblog: _this.handleModalReblog }));\n }\n }\n }, _this.handleDeleteClick = function (status) {\n var withRedraft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n dispatch = _this$props.dispatch,\n intl = _this$props.intl;\n\n\n if (!__WEBPACK_IMPORTED_MODULE_29__initial_state__[\"d\" /* deleteModal */]) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"g\" /* deleteStatus */])(status.get('id'), withRedraft));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"g\" /* deleteStatus */])(status.get('id'), withRedraft));\n }\n }));\n }\n }, _this.handleDirectClick = function (account, router) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_compose__[\"N\" /* directCompose */])(account, router));\n }, _this.handleMentionClick = function (account, router) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_16__actions_compose__[\"R\" /* mentionCompose */])(account, router));\n }, _this.handleOpenMedia = function (media, index) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('MEDIA', { media: media, index: index }));\n }, _this.handleOpenVideo = function (media, time) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('VIDEO', { media: media, time: time }));\n }, _this.handleMuteClick = function (account) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_18__actions_mutes__[\"g\" /* initMuteModal */])(account));\n }, _this.handleConversationMuteClick = function (status) {\n if (status.get('muted')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"l\" /* unmuteStatus */])(status.get('id')));\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"j\" /* muteStatus */])(status.get('id')));\n }\n }, _this.handleToggleHidden = function (status) {\n if (status.get('hidden')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"k\" /* revealStatus */])(status.get('id')));\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"i\" /* hideStatus */])(status.get('id')));\n }\n }, _this.handleToggleAll = function () {\n var _this$props2 = _this.props,\n status = _this$props2.status,\n ancestorsIds = _this$props2.ancestorsIds,\n descendantsIds = _this$props2.descendantsIds;\n\n var statusIds = [status.get('id')].concat(ancestorsIds.toJS(), descendantsIds.toJS());\n\n if (status.get('hidden')) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"k\" /* revealStatus */])(statusIds));\n } else {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"i\" /* hideStatus */])(statusIds));\n }\n }, _this.handleBlockClick = function (account) {\n var _this$props3 = _this.props,\n dispatch = _this$props3.dispatch,\n intl = _this$props3.intl;\n\n\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_26_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'confirmations.block.message',\n defaultMessage: 'Are you sure you want to block {name}?',\n values: { name: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, '@', account.get('acct')) }\n }),\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_17__actions_accounts__[\"q\" /* blockAccount */])(account.get('id')));\n }\n }));\n }, _this.handleReport = function (status) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_19__actions_reports__[\"k\" /* initReport */])(status.get('account'), status));\n }, _this.handleEmbed = function (status) {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_25__actions_modal__[\"d\" /* openModal */])('EMBED', { url: status.get('url') }));\n }, _this.handleHotkeyMoveUp = function () {\n _this.handleMoveUp(_this.props.status.get('id'));\n }, _this.handleHotkeyMoveDown = function () {\n _this.handleMoveDown(_this.props.status.get('id'));\n }, _this.handleHotkeyReply = function (e) {\n e.preventDefault();\n _this.handleReplyClick(_this.props.status);\n }, _this.handleHotkeyFavourite = function () {\n _this.handleFavouriteClick(_this.props.status);\n }, _this.handleHotkeyBoost = function () {\n _this.handleReblogClick(_this.props.status);\n }, _this.handleHotkeyMention = function (e) {\n e.preventDefault();\n _this.handleMentionClick(_this.props.status);\n }, _this.handleHotkeyOpenProfile = function () {\n _this.context.router.history.push('/accounts/' + _this.props.status.getIn(['account', 'id']));\n }, _this.handleHotkeyToggleHidden = function () {\n _this.handleToggleHidden(_this.props.status);\n }, _this.handleMoveUp = function (id) {\n var _this$props4 = _this.props,\n status = _this$props4.status,\n ancestorsIds = _this$props4.ancestorsIds,\n descendantsIds = _this$props4.descendantsIds;\n\n\n if (id === status.get('id')) {\n _this._selectChild(ancestorsIds.size - 1);\n } else {\n var 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 }, _this.handleMoveDown = function (id) {\n var _this$props5 = _this.props,\n status = _this$props5.status,\n ancestorsIds = _this$props5.ancestorsIds,\n descendantsIds = _this$props5.descendantsIds;\n\n\n if (id === status.get('id')) {\n _this._selectChild(ancestorsIds.size + 1);\n } else {\n var 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 }, _this.setRef = function (c) {\n _this.node = c;\n }, _this.onFullScreenChange = function () {\n _this.setState({ fullscreen: Object(__WEBPACK_IMPORTED_MODULE_30__features_ui_util_fullscreen__[\"d\" /* isFullscreen */])() });\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Status.prototype.componentWillMount = function componentWillMount() {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"h\" /* fetchStatus */])(this.props.params.statusId));\n };\n\n Status.prototype.componentDidMount = function componentDidMount() {\n Object(__WEBPACK_IMPORTED_MODULE_30__features_ui_util_fullscreen__[\"a\" /* attachFullscreenListener */])(this.onFullScreenChange);\n };\n\n Status.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {\n this._scrolledIntoView = false;\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_10__actions_statuses__[\"h\" /* fetchStatus */])(nextProps.params.statusId));\n }\n };\n\n Status.prototype._selectChild = function _selectChild(index) {\n var element = this.node.querySelectorAll('.focusable')[index];\n\n if (element) {\n element.focus();\n }\n };\n\n Status.prototype.renderChildren = function renderChildren(list) {\n var _this2 = this;\n\n return list.map(function (id) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_24__containers_status_container__[\"a\" /* default */], {\n id: id,\n onMoveUp: _this2.handleMoveUp,\n onMoveDown: _this2.handleMoveDown\n }, id);\n });\n };\n\n Status.prototype.componentDidUpdate = function componentDidUpdate() {\n if (this._scrolledIntoView) {\n return;\n }\n\n var _props = this.props,\n status = _props.status,\n ancestorsIds = _props.ancestorsIds;\n\n\n if (status && ancestorsIds && ancestorsIds.size > 0) {\n var element = this.node.querySelectorAll('.focusable')[ancestorsIds.size - 1];\n\n element.scrollIntoView(true);\n this._scrolledIntoView = true;\n }\n };\n\n Status.prototype.componentWillUnmount = function componentWillUnmount() {\n Object(__WEBPACK_IMPORTED_MODULE_30__features_ui_util_fullscreen__[\"b\" /* detachFullscreenListener */])(this.onFullScreenChange);\n };\n\n Status.prototype.render = function render() {\n var ancestors = void 0,\n descendants = void 0;\n var _props2 = this.props,\n status = _props2.status,\n ancestorsIds = _props2.ancestorsIds,\n descendantsIds = _props2.descendantsIds,\n intl = _props2.intl;\n var fullscreen = this.state.fullscreen;\n\n\n if (status === null) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_14__ui_components_column__[\"a\" /* default */], {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_22__components_column_back_button__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11__components_missing_indicator__[\"a\" /* default */], {}));\n }\n\n if (ancestorsIds && ancestorsIds.size > 0) {\n ancestors = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {}, void 0, this.renderChildren(ancestorsIds));\n }\n\n if (descendantsIds && descendantsIds.size > 0) {\n descendants = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {}, void 0, this.renderChildren(descendantsIds));\n }\n\n var 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 toggleHidden: this.handleHotkeyToggleHidden\n };\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_14__ui_components_column__[\"a\" /* default */], {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_23__components_column_header__[\"a\" /* default */], {\n showBackButton: true,\n extraButton: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n className: 'column-header__button',\n title: intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll),\n 'aria-label': intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll),\n onClick: this.handleToggleAll,\n 'aria-pressed': status.get('hidden') ? 'false' : 'true'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-' + (status.get('hidden') ? 'eye-slash' : 'eye')\n }))\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_21_react_router_scroll_4__[\"a\" /* ScrollContainer */], {\n scrollKey: 'thread'\n }, void 0, __WEBPACK_IMPORTED_MODULE_5_react___default.a.createElement(\n 'div',\n { className: __WEBPACK_IMPORTED_MODULE_8_classnames___default()('scrollable', 'detailed-status__wrapper', { fullscreen: fullscreen }), ref: this.setRef },\n ancestors,\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_28_react_hotkeys__[\"HotKeys\"], {\n handlers: handlers\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'focusable',\n tabIndex: '0'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12__components_detailed_status__[\"a\" /* default */], {\n status: status,\n onOpenVideo: this.handleOpenVideo,\n onOpenMedia: this.handleOpenMedia,\n onToggleHidden: this.handleToggleHidden\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_13__components_action_bar__[\"a\" /* default */], {\n status: status,\n onReply: this.handleReplyClick,\n onFavourite: this.handleFavouriteClick,\n onReblog: this.handleReblogClick,\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 descendants\n )));\n };\n\n return Status;\n}(__WEBPACK_IMPORTED_MODULE_27_react_immutable_pure_component___default.a), _class2.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object\n}, _class2.propTypes = {\n params: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object.isRequired,\n dispatch: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.func.isRequired,\n status: __WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes___default.a.map,\n ancestorsIds: __WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes___default.a.list,\n descendantsIds: __WEBPACK_IMPORTED_MODULE_9_react_immutable_proptypes___default.a.list,\n intl: __WEBPACK_IMPORTED_MODULE_7_prop_types___default.a.object.isRequired\n}, _temp2)) || _class) || _class);\n\n\n/***/ }),\n\n/***/ 866:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_react_intl__ = __webpack_require__(7);\n\n\n\n\nvar MissingIndicator = function MissingIndicator() {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'regeneration-indicator missing-indicator'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'regeneration-indicator__figure'\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'regeneration-indicator__label'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_2_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'missing_indicator.label',\n tagName: 'strong',\n defaultMessage: 'Not found'\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_2_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'missing_indicator.sublabel',\n defaultMessage: 'This resource could not be found'\n }))));\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (MissingIndicator);\n\n/***/ }),\n\n/***/ 899:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Card; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_immutable__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_immutable___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_immutable__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_punycode__ = __webpack_require__(900);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_punycode___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_punycode__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_classnames__);\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\n\n\n\nvar IDNA_PREFIX = 'xn--';\n\nvar decodeIDNA = function decodeIDNA(domain) {\n return domain.split('.').map(function (part) {\n return part.indexOf(IDNA_PREFIX) === 0 ? __WEBPACK_IMPORTED_MODULE_6_punycode___default.a.decode(part.slice(IDNA_PREFIX.length)) : part;\n }).join('.');\n};\n\nvar getHostname = function getHostname(url) {\n var parser = document.createElement('a');\n parser.href = url;\n return parser.hostname;\n};\n\nvar trim = function trim(text, len) {\n var cut = text.indexOf(' ', len);\n\n if (cut === -1) {\n return text;\n }\n\n return text.substring(0, cut) + (text.length > len ? '…' : '');\n};\n\nvar domParser = new DOMParser();\n\nvar addAutoPlay = function addAutoPlay(html) {\n var document = domParser.parseFromString(html, 'text/html').documentElement;\n var iframe = document.querySelector('iframe');\n\n if (iframe) {\n if (iframe.src.indexOf('?') !== -1) {\n iframe.src += '&';\n } else {\n iframe.src += '?';\n }\n\n iframe.src += 'autoplay=1&auto_play=1';\n\n // DOM parser creates html/body elements around original HTML fragment,\n // so we need to get innerHTML out of the body and not the entire document\n return document.querySelector('body').innerHTML;\n }\n\n return html;\n};\n\nvar Card = (_temp2 = _class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Card, _React$PureComponent);\n\n function Card() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Card);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args))), _this), _this.state = {\n width: 280,\n embedded: false\n }, _this.handlePhotoClick = function () {\n var _this$props = _this.props,\n card = _this$props.card,\n onOpenMedia = _this$props.onOpenMedia;\n\n\n onOpenMedia(__WEBPACK_IMPORTED_MODULE_5_immutable___default.a.fromJS([{\n type: 'image',\n url: card.get('embed_url'),\n description: card.get('title'),\n meta: {\n original: {\n width: card.get('width'),\n height: card.get('height')\n }\n }\n }]), 0);\n }, _this.handleEmbedClick = function () {\n var card = _this.props.card;\n\n\n if (card.get('type') === 'photo') {\n _this.handlePhotoClick();\n } else {\n _this.setState({ embedded: true });\n }\n }, _this.setRef = function (c) {\n if (c) {\n _this.setState({ width: c.offsetWidth });\n }\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Card.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.card !== nextProps.card) {\n this.setState({ embedded: false });\n }\n };\n\n Card.prototype.renderVideo = function renderVideo() {\n var card = this.props.card;\n\n var content = { __html: addAutoPlay(card.get('html')) };\n var width = this.state.width;\n\n var ratio = card.get('width') / card.get('height');\n var height = card.get('width') > card.get('height') ? width / ratio : width * ratio;\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement('div', {\n ref: this.setRef,\n className: 'status-card__image status-card-video',\n dangerouslySetInnerHTML: content,\n style: { height: height }\n });\n };\n\n Card.prototype.render = function render() {\n var _props = this.props,\n card = _props.card,\n maxDescription = _props.maxDescription;\n var _state = this.state,\n width = _state.width,\n embedded = _state.embedded;\n\n\n if (card === null) {\n return null;\n }\n\n var provider = card.get('provider_name').length === 0 ? decodeIDNA(getHostname(card.get('url'))) : card.get('provider_name');\n var horizontal = card.get('width') > card.get('height') && card.get('width') + 100 >= width || card.get('type') !== 'link';\n var className = __WEBPACK_IMPORTED_MODULE_7_classnames___default()('status-card', { horizontal: horizontal });\n var interactive = card.get('type') !== 'link';\n var title = interactive ? __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n className: 'status-card__title',\n href: card.get('url'),\n title: card.get('title'),\n rel: 'noopener',\n target: '_blank'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, card.get('title'))) : __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {\n className: 'status-card__title',\n title: card.get('title')\n }, void 0, card.get('title'));\n var ratio = card.get('width') / card.get('height');\n var height = card.get('width') > card.get('height') ? width / ratio : width * ratio;\n\n var description = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'status-card__content'\n }, void 0, title, !horizontal && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('p', {\n className: 'status-card__description'\n }, void 0, trim(card.get('description') || '', maxDescription)), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'status-card__host'\n }, void 0, provider));\n\n var embed = '';\n var thumbnail = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n style: { backgroundImage: 'url(' + card.get('image') + ')', width: horizontal ? width : null, height: horizontal ? height : null },\n className: 'status-card__image-image'\n });\n\n if (interactive) {\n if (embedded) {\n embed = this.renderVideo();\n } else {\n var iconVariant = 'play';\n\n if (card.get('type') === 'photo') {\n iconVariant = 'search-plus';\n }\n\n embed = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'status-card__image'\n }, void 0, thumbnail, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'status-card__actions'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleEmbedClick\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-' + iconVariant\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: card.get('url'),\n target: '_blank',\n rel: 'noopener'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-external-link'\n })))));\n }\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { className: className, ref: this.setRef },\n embed,\n description\n );\n } else if (card.get('image')) {\n embed = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'status-card__image'\n }, void 0, thumbnail);\n }\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'a',\n { href: card.get('url'), className: className, target: '_blank', rel: 'noopener', ref: this.setRef },\n embed,\n description\n );\n };\n\n return Card;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class.defaultProps = {\n maxDescription: 50\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 900:\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function (root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module && !module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\tvar punycode,\n\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647,\n\t // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\t tMin = 1,\n\t tMax = 26,\n\t skew = 38,\n\t damp = 700,\n\t initialBias = 72,\n\t initialN = 128,\n\t // 0x80\n\tdelimiter = '-',\n\t // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\t regexNonASCII = /[^\\x20-\\x7E]/,\n\t // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n\t // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\t floor = Math.floor,\n\t stringFromCharCode = String.fromCharCode,\n\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function (value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\n\t\t/** Cached calculation results */\n\t\tbaseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\n\t\t/** `inputLength` will hold the number of code points in `input`. */\n\t\tinputLength,\n\n\t\t/** Cached calculation results */\n\t\thandledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base;; /* no condition */k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function (string) {\n\t\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t\t});\n\t}\n\n\t/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function (string) {\n\t\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n\t\t'version': '1.4.1',\n\t\t/**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see \n * @memberOf punycode\n * @type Object\n */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn punycode;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n})(this);\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(101)(module), __webpack_require__(57)))\n\n/***/ }),\n\n/***/ 998:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return DetailedStatus; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_avatar__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_display_name__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__components_status_content__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__components_media_gallery__ = __webpack_require__(805);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__components_attachment_list__ = __webpack_require__(326);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_router_dom__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__containers_card_container__ = __webpack_require__(999);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__video__ = __webpack_require__(74);\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar DetailedStatus = (_temp2 = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(DetailedStatus, _ImmutablePureCompone);\n\n function DetailedStatus() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, DetailedStatus);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.call.apply(_ImmutablePureCompone, [this].concat(args))), _this), _this.handleAccountClick = function (e) {\n if (e.button === 0) {\n e.preventDefault();\n _this.context.router.history.push('/accounts/' + _this.props.status.getIn(['account', 'id']));\n }\n\n e.stopPropagation();\n }, _this.handleOpenVideo = function (media, startTime) {\n _this.props.onOpenVideo(media, startTime);\n }, _this.handleExpandedToggle = function () {\n _this.props.onToggleHidden(_this.props.status);\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n DetailedStatus.prototype.render = function render() {\n var status = this.props.status.get('reblog') ? this.props.status.get('reblog') : this.props.status;\n\n var media = '';\n var applicationLink = '';\n var reblogLink = '';\n var reblogIcon = 'retweet';\n\n if (status.get('media_attachments').size > 0) {\n if (status.get('media_attachments').some(function (item) {\n return item.get('type') === 'unknown';\n })) {\n media = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11__components_attachment_list__[\"a\" /* default */], {\n media: status.get('media_attachments')\n });\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n var video = status.getIn(['media_attachments', 0]);\n\n media = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_16__video__[\"default\"], {\n preview: video.get('preview_url'),\n src: video.get('url'),\n width: 300,\n height: 150,\n inline: true,\n onOpenVideo: this.handleOpenVideo,\n sensitive: status.get('sensitive')\n });\n } else {\n media = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__components_media_gallery__[\"default\"], {\n standalone: true,\n sensitive: status.get('sensitive'),\n media: status.get('media_attachments'),\n height: 300,\n onOpenMedia: this.props.onOpenMedia\n });\n }\n } else if (status.get('spoiler_text').length === 0) {\n media = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_14__containers_card_container__[\"a\" /* default */], {\n onOpenMedia: this.props.onOpenMedia,\n statusId: status.get('id')\n });\n }\n\n if (status.get('application')) {\n applicationLink = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {}, void 0, ' \\xB7 ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n className: 'detailed-status__application',\n href: status.getIn(['application', 'website']),\n target: '_blank',\n rel: 'noopener'\n }, void 0, 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 = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-' + reblogIcon\n });\n } else {\n reblogLink = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12_react_router_dom__[\"b\" /* Link */], {\n to: '/statuses/' + status.get('id') + '/reblogs',\n className: 'detailed-status__link'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-' + reblogIcon\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'detailed-status__reblogs'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_13_react_intl__[\"c\" /* FormattedNumber */], {\n value: status.get('reblogs_count')\n })));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: status.getIn(['account', 'url']),\n onClick: this.handleAccountClick,\n className: 'detailed-status__display-name'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__display-avatar'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__components_avatar__[\"a\" /* default */], {\n account: status.get('account'),\n size: 48\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__components_display_name__[\"a\" /* default */], {\n account: status.get('account')\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__components_status_content__[\"a\" /* default */], {\n status: status,\n expanded: !status.get('hidden'),\n onExpandedToggle: this.handleExpandedToggle\n }), media, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'detailed-status__meta'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n className: 'detailed-status__datetime',\n href: status.get('url'),\n target: '_blank',\n rel: 'noopener'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_13_react_intl__[\"a\" /* FormattedDate */], {\n value: new Date(status.get('created_at')),\n hour12: false,\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit'\n })), applicationLink, ' \\xB7 ', reblogLink, ' \\xB7 ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12_react_router_dom__[\"b\" /* Link */], {\n to: '/statuses/' + status.get('id') + '/favourites',\n className: 'detailed-status__link'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-star'\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'detailed-status__favorites'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_13_react_intl__[\"c\" /* FormattedNumber */], {\n value: status.get('favourites_count')\n })))));\n };\n\n return DetailedStatus;\n}(__WEBPACK_IMPORTED_MODULE_15_react_immutable_pure_component___default.a), _class.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.object\n}, _class.propTypes = {\n status: __WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes___default.a.map.isRequired,\n onOpenMedia: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.func.isRequired,\n onOpenVideo: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.func.isRequired,\n onToggleHidden: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.func.isRequired\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 999:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_card__ = __webpack_require__(899);\n\n\n\nvar mapStateToProps = function mapStateToProps(state, _ref) {\n var statusId = _ref.statusId;\n return {\n card: state.getIn(['cards', statusId], null)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_card__[\"a\" /* default */]));\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// features/status.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport IconButton from '../../../components/icon_button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport DropdownMenuContainer from '../../../containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { me } from '../../../initial_state';\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 cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' },\n cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },\n favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },\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});\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 onDelete: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onMute: PropTypes.func,\n onMuteConversation: PropTypes.func,\n onBlock: PropTypes.func,\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 = () => {\n this.props.onFavourite(this.props.status);\n }\n\n handleDeleteClick = () => {\n this.props.onDelete(this.props.status);\n }\n\n handleRedraftClick = () => {\n this.props.onDelete(this.props.status, 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 } else {\n if (status.get('visibility') === 'private') {\n menu.push({ text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog_private : messages.reblog_private), action: this.handleReblogClick });\n }\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 }\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');\n\n return (\n
\n
\n
\n
\n {shareButton}\n\n
\n \n
\n
\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/status/components/action_bar.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nexport default class ColumnHeader extends React.PureComponent {\n\n static propTypes = {\n icon: PropTypes.string,\n type: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func,\n columnHeaderId: PropTypes.string,\n };\n\n handleClick = () => {\n this.props.onClick();\n }\n\n render () {\n const { icon, type, active, columnHeaderId } = this.props;\n let iconElement = '';\n\n if (icon) {\n iconElement = ;\n }\n\n return (\n

\n \n

\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/components/column_header.js","import React from 'react';\nimport ColumnHeader from './column_header';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport { scrollTop } from '../../../scroll';\nimport { isMobile } from '../../../is_mobile';\n\nexport default class Column extends React.PureComponent {\n\n static propTypes = {\n heading: PropTypes.string,\n icon: PropTypes.string,\n children: PropTypes.node,\n active: PropTypes.bool,\n hideHeadingOnMobile: PropTypes.bool,\n };\n\n handleHeaderClick = () => {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n scrollTop () {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n\n handleScroll = debounce(() => {\n if (typeof this._interruptScrollAnimation !== 'undefined') {\n this._interruptScrollAnimation();\n }\n }, 200)\n\n setRef = (c) => {\n this.node = c;\n }\n\n render () {\n const { heading, icon, children, active, hideHeadingOnMobile } = this.props;\n\n const showHeading = heading && (!hideHeadingOnMobile || (hideHeadingOnMobile && !isMobile(window.innerWidth)));\n\n const columnHeaderId = showHeading && heading.replace(/ /g, '-');\n const header = showHeading && (\n \n );\n return (\n \n {header}\n {children}\n \n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/ui/components/column.js","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class ColumnBackButton extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n handleClick = () => {\n if (window.history && window.history.length === 1) {\n this.context.router.history.push('/');\n } else {\n this.context.router.history.goBack();\n }\n }\n\n render () {\n return (\n \n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/column_back_button.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport Status from '../components/status';\nimport { makeGetStatus } from '../selectors';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from '../actions/compose';\nimport {\n reblog,\n favourite,\n unreblog,\n unfavourite,\n pin,\n unpin,\n} from '../actions/interactions';\nimport { blockAccount } from '../actions/accounts';\nimport {\n muteStatus,\n unmuteStatus,\n deleteStatus,\n hideStatus,\n revealStatus,\n} from '../actions/statuses';\nimport { initMuteModal } from '../actions/mutes';\nimport { initReport } from '../actions/reports';\nimport { openModal } from '../actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { boostModal, deleteModal } from '../initial_state';\nimport { showAlertForError } from '../actions/alerts';\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});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => ({\n status: getStatus(state, props.id),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onReply (status, router) {\n dispatch(replyCompose(status, router));\n },\n\n onModalReblog (status) {\n dispatch(reblog(status));\n },\n\n onReblog (status, e) {\n if (status.get('reblogged')) {\n dispatch(unreblog(status));\n } else {\n if (e.shiftKey || !boostModal) {\n this.onModalReblog(status);\n } else {\n dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }));\n }\n }\n },\n\n onFavourite (status) {\n if (status.get('favourited')) {\n dispatch(unfavourite(status));\n } else {\n dispatch(favourite(status));\n }\n },\n\n onPin (status) {\n if (status.get('pinned')) {\n dispatch(unpin(status));\n } else {\n dispatch(pin(status));\n }\n },\n\n onEmbed (status) {\n dispatch(openModal('EMBED', {\n url: status.get('url'),\n onError: error => dispatch(showAlertForError(error)),\n }));\n },\n\n onDelete (status, withRedraft = false) {\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), 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'), withRedraft)),\n }));\n }\n },\n\n onDirect (account, router) {\n dispatch(directCompose(account, router));\n },\n\n onMention (account, router) {\n dispatch(mentionCompose(account, router));\n },\n\n onOpenMedia (media, index) {\n dispatch(openModal('MEDIA', { media, index }));\n },\n\n onOpenVideo (media, time) {\n dispatch(openModal('VIDEO', { media, time }));\n },\n\n onBlock (account) {\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 onReport (status) {\n dispatch(initReport(status.get('account'), status));\n },\n\n onMute (account) {\n dispatch(initMuteModal(account));\n },\n\n onMuteConversation (status) {\n if (status.get('muted')) {\n dispatch(unmuteStatus(status.get('id')));\n } else {\n dispatch(muteStatus(status.get('id')));\n }\n },\n\n onToggleHidden (status) {\n if (status.get('hidden')) {\n dispatch(revealStatus(status.get('id')));\n } else {\n dispatch(hideStatus(status.get('id')));\n }\n },\n\n});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status));\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/containers/status_container.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { is } from 'immutable';\nimport IconButton from './icon_button';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { isIOS } from '../is_mobile';\nimport classNames from 'classnames';\nimport { autoPlayGif, displaySensitiveMedia } from '../initial_state';\n\nconst messages = defineMessages({\n toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' },\n});\n\nclass Item extends React.PureComponent {\n\n static propTypes = {\n attachment: ImmutablePropTypes.map.isRequired,\n standalone: PropTypes.bool,\n index: PropTypes.number.isRequired,\n size: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n displayWidth: PropTypes.number,\n };\n\n static defaultProps = {\n standalone: false,\n index: 0,\n size: 1,\n };\n\n handleMouseEnter = (e) => {\n if (this.hoverToPlay()) {\n e.target.play();\n }\n }\n\n handleMouseLeave = (e) => {\n if (this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n }\n\n hoverToPlay () {\n const { attachment } = this.props;\n return !autoPlayGif && attachment.get('type') === 'gifv';\n }\n\n handleClick = (e) => {\n const { index, onClick } = this.props;\n\n if (e.button === 0) {\n e.preventDefault();\n onClick(index);\n }\n\n e.stopPropagation();\n }\n\n render () {\n const { attachment, index, size, standalone, displayWidth } = this.props;\n\n let width = 50;\n let height = 100;\n let top = 'auto';\n let left = 'auto';\n let bottom = 'auto';\n let right = 'auto';\n\n if (size === 1) {\n width = 100;\n }\n\n if (size === 4 || (size === 3 && index > 0)) {\n height = 50;\n }\n\n if (size === 2) {\n if (index === 0) {\n right = '2px';\n } else {\n left = '2px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '2px';\n } else if (index > 0) {\n left = '2px';\n }\n\n if (index === 1) {\n bottom = '2px';\n } else if (index > 1) {\n top = '2px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '2px';\n }\n\n if (index === 1 || index === 3) {\n left = '2px';\n }\n\n if (index < 2) {\n bottom = '2px';\n } else {\n top = '2px';\n }\n }\n\n let thumbnail = '';\n\n if (attachment.get('type') === 'image') {\n const previewUrl = attachment.get('preview_url');\n const previewWidth = attachment.getIn(['meta', 'small', 'width']);\n\n const originalUrl = attachment.get('url');\n const originalWidth = attachment.getIn(['meta', 'original', 'width']);\n\n const hasSize = typeof originalWidth === 'number' && typeof previewWidth === 'number';\n\n const srcSet = hasSize ? `${originalUrl} ${originalWidth}w, ${previewUrl} ${previewWidth}w` : null;\n const sizes = hasSize ? `${displayWidth * (width / 100)}px` : null;\n\n const focusX = attachment.getIn(['meta', 'focus', 'x']) || 0;\n const focusY = attachment.getIn(['meta', 'focus', 'y']) || 0;\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n thumbnail = (\n \n \n \n );\n } else if (attachment.get('type') === 'audio') {\n thumbnail = (\n
\n \n
\n );\n } else if (attachment.get('type') === 'gifv') {\n const autoPlay = !isIOS() && autoPlayGif;\n\n thumbnail = (\n
\n \n\n GIF\n
\n );\n }\n\n return (\n
\n {thumbnail}\n
\n );\n }\n\n}\n\n@injectIntl\nexport default class MediaGallery extends React.PureComponent {\n\n static propTypes = {\n sensitive: PropTypes.bool,\n standalone: PropTypes.bool,\n media: ImmutablePropTypes.list.isRequired,\n size: PropTypes.object,\n height: PropTypes.number.isRequired,\n onOpenMedia: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n static defaultProps = {\n standalone: false,\n };\n\n state = {\n visible: !this.props.sensitive || displaySensitiveMedia,\n };\n\n componentWillReceiveProps (nextProps) {\n if (!is(nextProps.media, this.props.media)) {\n this.setState({ visible: !nextProps.sensitive });\n }\n }\n\n handleOpen = () => {\n this.setState({ visible: !this.state.visible });\n }\n\n handleClick = (index) => {\n this.props.onOpenMedia(this.props.media, index);\n }\n\n handleRef = (node) => {\n if (node /*&& this.isStandaloneEligible()*/) {\n // offsetWidth triggers a layout, so only calculate when we need to\n this.setState({\n width: node.offsetWidth,\n });\n }\n }\n\n isStandaloneEligible() {\n const { media, standalone } = this.props;\n return standalone && media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']);\n }\n\n render () {\n const { media, intl, sensitive, height } = this.props;\n const { width, visible } = this.state;\n\n let children;\n\n const style = {};\n\n if (this.isStandaloneEligible()) {\n if (width) {\n style.height = width / this.props.media.getIn([0, 'meta', 'small', 'aspect']);\n }\n } else if (width) {\n style.height = width / (16/9);\n } else {\n style.height = height;\n }\n\n if (!visible) {\n let warning;\n\n if (sensitive) {\n warning = ;\n } else {\n warning = ;\n }\n\n children = (\n \n );\n } else {\n const size = media.take(4).size;\n\n if (this.isStandaloneEligible()) {\n children = ;\n } else {\n children = media.take(4).map((attachment, i) => );\n }\n }\n\n return (\n
\n
\n \n
\n\n {children}\n
\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/media_gallery.js","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 '../../actions/statuses';\nimport MissingIndicator from '../../components/missing_indicator';\nimport DetailedStatus from './components/detailed_status';\nimport ActionBar from './components/action_bar';\nimport Column from '../ui/components/column';\nimport {\n favourite,\n unfavourite,\n reblog,\n unreblog,\n pin,\n unpin,\n} from '../../actions/interactions';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from '../../actions/compose';\nimport { blockAccount } from '../../actions/accounts';\nimport {\n muteStatus,\n unmuteStatus,\n deleteStatus,\n hideStatus,\n revealStatus,\n} from '../../actions/statuses';\nimport { initMuteModal } from '../../actions/mutes';\nimport { initReport } from '../../actions/reports';\nimport { makeGetStatus } from '../../selectors';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport ColumnBackButton from '../../components/column_back_button';\nimport ColumnHeader from '../../components/column_header';\nimport StatusContainer from '../../containers/status_container';\nimport { openModal } from '../../actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\nimport { boostModal, deleteModal } from '../../initial_state';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../../features/ui/util/fullscreen';\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});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => {\n const status = getStatus(state, 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 };\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 ancestorsIds: ImmutablePropTypes.list,\n descendantsIds: ImmutablePropTypes.list,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n fullscreen: false,\n };\n\n componentWillMount () {\n this.props.dispatch(fetchStatus(this.props.params.statusId));\n }\n\n componentDidMount () {\n attachFullscreenListener(this.onFullScreenChange);\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {\n this._scrolledIntoView = false;\n this.props.dispatch(fetchStatus(nextProps.params.statusId));\n }\n }\n\n handleFavouriteClick = (status) => {\n if (status.get('favourited')) {\n this.props.dispatch(unfavourite(status));\n } else {\n this.props.dispatch(favourite(status));\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 this.props.dispatch(replyCompose(status, this.context.router.history));\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.shiftKey || !boostModal) {\n this.handleModalReblog(status);\n } else {\n this.props.dispatch(openModal('BOOST', { status, onReblog: this.handleModalReblog }));\n }\n }\n }\n\n handleDeleteClick = (status, withRedraft = false) => {\n const { dispatch, intl } = this.props;\n\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), 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'), 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 handleToggleHidden = (status) => {\n if (status.get('hidden')) {\n this.props.dispatch(revealStatus(status.get('id')));\n } else {\n this.props.dispatch(hideStatus(status.get('id')));\n }\n }\n\n handleToggleAll = () => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n const statusIds = [status.get('id')].concat(ancestorsIds.toJS(), descendantsIds.toJS());\n\n if (status.get('hidden')) {\n this.props.dispatch(revealStatus(statusIds));\n } else {\n this.props.dispatch(hideStatus(statusIds));\n }\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 handleHotkeyToggleHidden = () => {\n this.handleToggleHidden(this.props.status);\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 setRef = c => {\n this.node = c;\n }\n\n componentDidUpdate () {\n if (this._scrolledIntoView) {\n return;\n }\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 element.scrollIntoView(true);\n this._scrolledIntoView = true;\n }\n }\n\n componentWillUnmount () {\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n render () {\n let ancestors, descendants;\n const { status, ancestorsIds, descendantsIds, intl } = this.props;\n const { fullscreen } = 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 toggleHidden: this.handleHotkeyToggleHidden,\n };\n\n return (\n \n \n )}\n />\n\n \n
\n {ancestors}\n\n \n
\n \n\n \n
\n
\n\n {descendants}\n
\n
\n
\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/status/index.js","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nconst MissingIndicator = () => (\n
\n
\n
\n\n
\n \n \n
\n
\n
\n);\n\nexport default MissingIndicator;\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/missing_indicator.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Immutable from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport punycode from 'punycode';\nimport classnames from 'classnames';\n\nconst IDNA_PREFIX = 'xn--';\n\nconst decodeIDNA = domain => {\n return domain\n .split('.')\n .map(part => part.indexOf(IDNA_PREFIX) === 0 ? punycode.decode(part.slice(IDNA_PREFIX.length)) : part)\n .join('.');\n};\n\nconst getHostname = url => {\n const parser = document.createElement('a');\n parser.href = url;\n return parser.hostname;\n};\n\nconst trim = (text, len) => {\n const cut = text.indexOf(' ', len);\n\n if (cut === -1) {\n return text;\n }\n\n return text.substring(0, cut) + (text.length > len ? '…' : '');\n};\n\nconst domParser = new DOMParser();\n\nconst addAutoPlay = html => {\n const document = domParser.parseFromString(html, 'text/html').documentElement;\n const iframe = document.querySelector('iframe');\n\n if (iframe) {\n if (iframe.src.indexOf('?') !== -1) {\n iframe.src += '&';\n } else {\n iframe.src += '?';\n }\n\n iframe.src += 'autoplay=1&auto_play=1';\n\n // DOM parser creates html/body elements around original HTML fragment,\n // so we need to get innerHTML out of the body and not the entire document\n return document.querySelector('body').innerHTML;\n }\n\n return html;\n};\n\nexport default class Card extends React.PureComponent {\n\n static propTypes = {\n card: ImmutablePropTypes.map,\n maxDescription: PropTypes.number,\n onOpenMedia: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n maxDescription: 50,\n };\n\n state = {\n width: 280,\n embedded: false,\n };\n\n componentWillReceiveProps (nextProps) {\n if (this.props.card !== nextProps.card) {\n this.setState({ embedded: false });\n }\n }\n\n handlePhotoClick = () => {\n const { card, onOpenMedia } = this.props;\n\n onOpenMedia(\n Immutable.fromJS([\n {\n type: 'image',\n url: card.get('embed_url'),\n description: card.get('title'),\n meta: {\n original: {\n width: card.get('width'),\n height: card.get('height'),\n },\n },\n },\n ]),\n 0\n );\n };\n\n handleEmbedClick = () => {\n const { card } = this.props;\n\n if (card.get('type') === 'photo') {\n this.handlePhotoClick();\n } else {\n this.setState({ embedded: true });\n }\n }\n\n setRef = c => {\n if (c) {\n this.setState({ width: c.offsetWidth });\n }\n }\n\n renderVideo () {\n const { card } = this.props;\n const content = { __html: addAutoPlay(card.get('html')) };\n const { width } = this.state;\n const ratio = card.get('width') / card.get('height');\n const height = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio);\n\n return (\n \n );\n }\n\n render () {\n const { card, maxDescription } = this.props;\n const { width, embedded } = this.state;\n\n if (card === null) {\n return null;\n }\n\n const provider = card.get('provider_name').length === 0 ? decodeIDNA(getHostname(card.get('url'))) : card.get('provider_name');\n const horizontal = card.get('width') > card.get('height') && (card.get('width') + 100 >= width) || card.get('type') !== 'link';\n const className = classnames('status-card', { horizontal });\n const interactive = card.get('type') !== 'link';\n const title = interactive ? {card.get('title')} : {card.get('title')};\n const ratio = card.get('width') / card.get('height');\n const height = card.get('width') > card.get('height') ? (width / ratio) : (width * ratio);\n\n const description = (\n
\n {title}\n {!horizontal &&

{trim(card.get('description') || '', maxDescription)}

}\n {provider}\n
\n );\n\n let embed = '';\n let thumbnail =
;\n\n if (interactive) {\n if (embedded) {\n embed = this.renderVideo();\n } else {\n let iconVariant = 'play';\n\n if (card.get('type') === 'photo') {\n iconVariant = 'search-plus';\n }\n\n embed = (\n
\n {thumbnail}\n\n
\n
\n \n \n
\n
\n
\n );\n }\n\n return (\n
\n {embed}\n {description}\n
\n );\n } else if (card.get('image')) {\n embed = (\n
\n {thumbnail}\n
\n );\n }\n\n return (\n \n {embed}\n {description}\n \n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/status/components/card.js","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/node-libs-browser/node_modules/punycode/punycode.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport StatusContent from '../../../components/status_content';\nimport MediaGallery from '../../../components/media_gallery';\nimport AttachmentList from '../../../components/attachment_list';\nimport { Link } from 'react-router-dom';\nimport { FormattedDate, FormattedNumber } from 'react-intl';\nimport CardContainer from '../containers/card_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Video from '../../video';\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 onOpenMedia: PropTypes.func.isRequired,\n onOpenVideo: PropTypes.func.isRequired,\n onToggleHidden: PropTypes.func.isRequired,\n };\n\n handleAccountClick = (e) => {\n if (e.button === 0) {\n e.preventDefault();\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n\n e.stopPropagation();\n }\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n handleExpandedToggle = () => {\n this.props.onToggleHidden(this.props.status);\n }\n\n render () {\n const status = this.props.status.get('reblog') ? this.props.status.get('reblog') : this.props.status;\n\n let media = '';\n let applicationLink = '';\n let reblogLink = '';\n let reblogIcon = 'retweet';\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\n media = (\n \n );\n } else {\n media = (\n \n );\n }\n } else if (status.get('spoiler_text').length === 0) {\n media = ;\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 (status.get('visibility') === 'private') {\n reblogLink = ;\n } else {\n reblogLink = (\n \n \n \n \n );\n }\n\n return (\n
\n \n
\n \n
\n\n \n\n {media}\n\n
\n \n \n {applicationLink} · {reblogLink} · \n \n \n \n \n \n
\n
\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/status/components/detailed_status.js","import { connect } from 'react-redux';\nimport Card from '../components/card';\n\nconst mapStateToProps = (state, { statusId }) => ({\n card: state.getIn(['cards', statusId], null),\n});\n\nexport default connect(mapStateToProps)(Card);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/status/containers/card_container.js"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/status/components/detailed_status.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/status/components/action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/status/index.js"],"names":["DetailedStatus","height","e","button","ctrlKey","metaKey","context","router","preventDefault","history","push","props","status","getIn","stopPropagation","media","startTime","onOpenVideo","onToggleHidden","c","node","_measureHeight","href","target","nodeName","parentNode","window","open","heightJustChanged","this","measureHeight","scheduleIdleTask","setState","Math","ceil","scrollHeight","onHeightChange","componentDidUpdate","prevProps","prevState","state","render","get","outerStyle","boxSizing","compact","applicationLink","reblogLink","reblogIcon","favouriteLink","size","attachment","src","alt","duration","preload","preview","blurhash","width","inline","handleOpenVideo","sensitive","visible","showMedia","onToggleVisibility","onToggleMediaVisibility","standalone","onOpenMedia","length","card","className","rel","includes","id","to","value","onClick","handleModalLink","style","ref","setRef","classNames","handleAccountClick","account","localDomain","domain","expanded","onExpandedToggle","handleExpandedToggle","Date","hour12","year","month","day","hour","minute","ImmutablePureComponent","PropTypes","object","ImmutablePropTypes","map","func","isRequired","bool","string","messages","defineMessages","delete","redraft","direct","mention","reply","reblog","reblog_private","cancel_reblog_private","cannot_reblog","favourite","bookmark","more","mute","muteConversation","unmuteConversation","block","report","share","pin","unpin","embed","admin_account","admin_status","copy","blockDomain","unblockDomain","unmute","unblock","ActionBar","connect","relationship","injectIntl","onReply","onReblog","onFavourite","onBookmark","onDelete","onDirect","onMention","onMute","onUnmute","onBlock","onUnblock","onBlockDomain","split","onUnblockDomain","onMuteConversation","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","handleReblogClick","handleConversationMuteClick","handleDeleteClick","handleRedraftClick","name","handleMentionClick","handleDirectClick","handleMuteClick","handleBlockClick","handleReport","handleUnblockDomain","handleBlockDomain","isStaff","replyIcon","shareButton","title","icon","handleShare","handleReplyClick","disabled","active","animate","handleFavouriteClick","handleBookmarkClick","items","direction","React","PureComponent","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","revealAll","hideAll","detailedStatus","replyConfirm","replyMessage","blockDomainConfirm","Status","getStatus","makeGetStatus","getAncestorsIds","createSelector","_","statusId","inReplyTos","ancestorsIds","Immutable","List","withMutations","mutable","unshift","getDescendantsIds","contextReplies","statuses","descendantsIds","ids","shift","replies","reverse","forEach","insertAt","findIndex","idx","splice","params","askReplyConfirmation","trim","fullscreen","defaultMediaVisibility","loadedStatusId","undefined","dispatch","unfavourite","openModal","message","confirm","onConfirm","replyCompose","unreblog","shiftKey","boostModal","handleModalReblog","unbookmark","withRedraft","deleteModal","deleteStatus","directCompose","mentionCompose","index","time","_properStatus","handleOpenMedia","initMuteModal","unmuteStatus","muteStatus","revealStatus","hideStatus","statusIds","concat","toJS","initBlockModal","initReport","unmuteAccount","unblockAccount","defaultMessage","values","handleMoveUp","handleMoveDown","handleToggleHidden","handleToggleMediaVisibility","_selectChild","indexOf","isFullscreen","componentWillMount","fetchStatus","componentDidMount","attachFullscreenListener","onFullScreenChange","componentWillReceiveProps","nextProps","_scrolledIntoView","align_top","container","element","querySelectorAll","scrollTop","offsetTop","scrollIntoView","clientHeight","offsetHeight","focus","renderChildren","list","onMoveUp","onMoveDown","contextType","requestAnimationFrame","componentWillUnmount","detachFullscreenListener","ancestors","descendants","shouldUpdateScroll","multiColumn","handlers","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyMention","openProfile","handleHotkeyOpenProfile","toggleHidden","handleHotkeyToggleHidden","toggleSensitive","handleHotkeyToggleSensitive","openMedia","handleHotkeyOpenMedia","bindToDocument","label","showBackButton","extraButton","aria-label","handleToggleAll","aria-pressed","scrollKey","tabIndex","textForScreenReader","handleUnmuteClick","handleUnblockClick","handleBlockDomainClick","handleUnblockDomainClick","handlePin"],"mappings":"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","file":"features/status.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport StatusContent from '../../../components/status_content';\nimport MediaGallery from '../../../components/media_gallery';\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 '../../video';\nimport Audio from '../../audio';\nimport scheduleIdleTask from '../../ui/util/schedule_idle_task';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\nimport AnimatedNumber from 'mastodon/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 onOpenMedia: PropTypes.func.isRequired,\n onOpenVideo: PropTypes.func.isRequired,\n onToggleHidden: PropTypes.func.isRequired,\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.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 handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n handleExpandedToggle = () => {\n this.props.onToggleHidden(this.props.status);\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 && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;\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 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.getIn(['media_attachments', 0, 'type']) === 'audio') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n \n );\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n \n );\n } else {\n media = (\n \n );\n }\n } else if (status.get('spoiler_text').length === 0) {\n media = ;\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 (['private', 'direct'].includes(status.get('visibility'))) {\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 {media}\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 { connect } from 'react-redux';\nimport IconButton from '../../../components/icon_button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport DropdownMenuContainer from '../../../containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { me, isStaff } from '../../../initial_state';\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 cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' },\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 blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' },\n unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n});\n\nconst mapStateToProps = (state, { status }) => ({\n relationship: state.getIn(['relationships', status.getIn(['account', 'id'])]),\n});\n\nexport default @connect(mapStateToProps)\n@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 relationship: ImmutablePropTypes.map,\n onReply: PropTypes.func.isRequired,\n onReblog: PropTypes.func.isRequired,\n onFavourite: PropTypes.func.isRequired,\n onBookmark: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onMute: PropTypes.func,\n onUnmute: PropTypes.func,\n onBlock: PropTypes.func,\n onUnblock: PropTypes.func,\n onBlockDomain: PropTypes.func,\n onUnblockDomain: PropTypes.func,\n onMuteConversation: PropTypes.func,\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 = () => {\n this.props.onFavourite(this.props.status);\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 const { status, relationship, onMute, onUnmute } = this.props;\n const account = status.get('account');\n\n if (relationship && relationship.get('muting')) {\n onUnmute(account);\n } else {\n onMute(account);\n }\n }\n\n handleBlockClick = () => {\n const { status, relationship, onBlock, onUnblock } = this.props;\n const account = status.get('account');\n\n if (relationship && relationship.get('blocking')) {\n onUnblock(account);\n } else {\n onBlock(status);\n }\n }\n\n handleBlockDomain = () => {\n const { status, onBlockDomain } = this.props;\n const account = status.get('account');\n\n onBlockDomain(account.get('acct').split('@')[1]);\n }\n\n handleUnblockDomain = () => {\n const { status, onUnblockDomain } = this.props;\n const account = status.get('account');\n\n onUnblockDomain(account.get('acct').split('@')[1]);\n }\n\n handleConversationMuteClick = () => {\n this.props.onMuteConversation(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, relationship, intl } = this.props;\n\n const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n const mutingConversation = status.get('muted');\n const account = status.get('account');\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 } else {\n if (status.get('visibility') === 'private') {\n menu.push({ text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog_private : messages.reblog_private), action: this.handleReblogClick });\n }\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\n if (relationship && relationship.get('muting')) {\n menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.handleMuteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.handleMuteClick });\n }\n\n if (relationship && relationship.get('blocking')) {\n menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.handleBlockClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick });\n }\n\n menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });\n\n if (account.get('acct') !== account.get('username')) {\n const domain = account.get('acct').split('@')[1];\n\n menu.push(null);\n\n if (relationship && relationship.get('domain_blocking')) {\n menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.handleUnblockDomain });\n } else {\n menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.handleBlockDomain });\n }\n }\n\n if (isStaff) {\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` });\n menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` });\n }\n }\n\n const shareButton = ('share' in navigator) && publicStatus && (\n
\n );\n\n let replyIcon;\n if (status.get('in_reply_to_id', null) === null) {\n replyIcon = 'reply';\n } else {\n replyIcon = 'reply-all';\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 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 '../../actions/statuses';\nimport MissingIndicator from '../../components/missing_indicator';\nimport DetailedStatus from './components/detailed_status';\nimport ActionBar from './components/action_bar';\nimport Column from '../ui/components/column';\nimport {\n favourite,\n unfavourite,\n bookmark,\n unbookmark,\n reblog,\n unreblog,\n pin,\n unpin,\n} from '../../actions/interactions';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from '../../actions/compose';\nimport {\n muteStatus,\n unmuteStatus,\n deleteStatus,\n hideStatus,\n revealStatus,\n} from '../../actions/statuses';\nimport {\n unblockAccount,\n unmuteAccount,\n} from '../../actions/accounts';\nimport {\n blockDomain,\n unblockDomain,\n} from '../../actions/domain_blocks';\nimport { initMuteModal } from '../../actions/mutes';\nimport { initBlockModal } from '../../actions/blocks';\nimport { initReport } from '../../actions/reports';\nimport { makeGetStatus } from '../../selectors';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport ColumnBackButton from '../../components/column_back_button';\nimport ColumnHeader from '../../components/column_header';\nimport StatusContainer from '../../containers/status_container';\nimport { openModal } from '../../actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { HotKeys } from 'react-hotkeys';\nimport { boostModal, deleteModal } from '../../initial_state';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../ui/util/fullscreen';\nimport { textForScreenReader, defaultMediaVisibility } from '../../components/status';\nimport Icon from 'mastodon/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? Favourites and boosts will be lost, and replies to the original post will be orphaned.' },\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 blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },\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 askReplyConfirmation: 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 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 showMedia: defaultMediaVisibility(this.props.status),\n loadedStatusId: undefined,\n };\n\n componentWillMount () {\n this.props.dispatch(fetchStatus(this.props.params.statusId));\n }\n\n componentDidMount () {\n attachFullscreenListener(this.onFullScreenChange);\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {\n this._scrolledIntoView = false;\n this.props.dispatch(fetchStatus(nextProps.params.statusId));\n }\n\n if (nextProps.status && nextProps.status.get('id') !== this.state.loadedStatusId) {\n this.setState({ showMedia: defaultMediaVisibility(nextProps.status), loadedStatusId: nextProps.status.get('id') });\n }\n }\n\n handleToggleMediaVisibility = () => {\n this.setState({ showMedia: !this.state.showMedia });\n }\n\n handleFavouriteClick = (status) => {\n if (status.get('favourited')) {\n this.props.dispatch(unfavourite(status));\n } else {\n this.props.dispatch(favourite(status));\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 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 handleHotkeyOpenMedia = e => {\n const status = this._properStatus();\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 handleToggleHidden = (status) => {\n if (status.get('hidden')) {\n this.props.dispatch(revealStatus(status.get('id')));\n } else {\n this.props.dispatch(hideStatus(status.get('id')));\n }\n }\n\n handleToggleAll = () => {\n const { status, ancestorsIds, descendantsIds } = this.props;\n const statusIds = [status.get('id')].concat(ancestorsIds.toJS(), descendantsIds.toJS());\n\n if (status.get('hidden')) {\n this.props.dispatch(revealStatus(statusIds));\n } else {\n this.props.dispatch(hideStatus(statusIds));\n }\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 handleUnmuteClick = account => {\n this.props.dispatch(unmuteAccount(account.get('id')));\n }\n\n handleUnblockClick = account => {\n this.props.dispatch(unblockAccount(account.get('id')));\n }\n\n handleBlockDomainClick = domain => {\n this.props.dispatch(openModal('CONFIRM', {\n message: {domain} }} />,\n confirm: this.props.intl.formatMessage(messages.blockDomainConfirm),\n onConfirm: () => this.props.dispatch(blockDomain(domain)),\n }));\n }\n\n handleUnblockDomainClick = domain => {\n this.props.dispatch(unblockDomain(domain));\n }\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.get('account'));\n }\n\n handleHotkeyOpenProfile = () => {\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n\n handleHotkeyToggleHidden = () => {\n this.handleToggleHidden(this.props.status);\n }\n\n handleHotkeyToggleSensitive = () => {\n this.handleToggleMediaVisibility();\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 renderChildren (list) {\n return list.map(id => (\n \n ));\n }\n\n setRef = c => {\n this.node = c;\n }\n\n componentDidUpdate () {\n if (this._scrolledIntoView) {\n return;\n }\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 this._scrolledIntoView = true;\n }\n }\n\n componentWillUnmount () {\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n render () {\n let ancestors, descendants;\n const { shouldUpdateScroll, status, ancestorsIds, descendantsIds, intl, domain, multiColumn } = this.props;\n const { fullscreen } = 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 toggleHidden: this.handleHotkeyToggleHidden,\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 \n
\n
\n\n {descendants}\n
\n
\n
\n );\n }\n\n}\n"],"sourceRoot":""} \ No newline at end of file