-{"version":3,"sources":["webpack:///features/compose.js","webpack:///./app/javascript/mastodon/containers/status_container.js","webpack:///./app/javascript/mastodon/features/compose/components/compose_form.js","webpack:///./app/javascript/mastodon/features/compose/components/character_counter.js","webpack:///./app/javascript/mastodon/features/compose/containers/reply_indicator_container.js","webpack:///./app/javascript/mastodon/features/compose/components/reply_indicator.js","webpack:///./app/javascript/mastodon/components/autosuggest_textarea.js","webpack:///./app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js","webpack:///./app/javascript/mastodon/features/compose/components/autosuggest_account.js","webpack:///./app/javascript/mastodon/components/autosuggest_emoji.js","webpack:///./node_modules/react-textarea-autosize/es/index.js","webpack:///./app/javascript/mastodon/features/compose/containers/upload_button_container.js","webpack:///./app/javascript/mastodon/features/compose/components/upload_button.js","webpack:///./app/javascript/mastodon/components/collapsable.js","webpack:///./app/javascript/mastodon/features/compose/containers/spoiler_button_container.js","webpack:///./app/javascript/mastodon/features/compose/components/text_icon_button.js","webpack:///./app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js","webpack:///./app/javascript/mastodon/features/compose/components/privacy_dropdown.js","webpack:///./app/javascript/mastodon/features/compose/containers/sensitive_button_container.js","webpack:///./app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js","webpack:///./app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js","webpack:///./app/javascript/mastodon/features/compose/containers/upload_form_container.js","webpack:///./app/javascript/mastodon/features/compose/components/upload_form.js","webpack:///./app/javascript/mastodon/features/compose/containers/upload_progress_container.js","webpack:///./app/javascript/mastodon/features/compose/components/upload_progress.js","webpack:///./app/javascript/mastodon/features/compose/containers/upload_container.js","webpack:///./app/javascript/mastodon/features/compose/components/upload.js","webpack:///./app/javascript/mastodon/features/compose/containers/warning_container.js","webpack:///./app/javascript/mastodon/features/compose/components/warning.js","webpack:///./app/javascript/mastodon/features/compose/util/counter.js","webpack:///./app/javascript/mastodon/features/compose/util/url_regex.js","webpack:///./app/javascript/mastodon/features/compose/containers/compose_form_container.js","webpack:///./app/javascript/mastodon/features/compose/index.js","webpack:///./app/javascript/mastodon/containers/account_container.js","webpack:///./app/javascript/mastodon/components/account.js","webpack:///./app/javascript/mastodon/features/compose/components/navigation_bar.js","webpack:///./app/javascript/mastodon/features/compose/components/search.js","webpack:///./app/javascript/mastodon/features/compose/containers/navigation_container.js","webpack:///./app/javascript/mastodon/features/compose/containers/search_container.js","webpack:///./app/javascript/mastodon/features/compose/containers/search_results_container.js","webpack:///./app/javascript/mastodon/features/compose/components/search_results.js"],"names":["webpackJsonp","286","module","__webpack_exports__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx__","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default","n","__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__","messages","Object","deleteConfirm","id","defaultMessage","deleteMessage","blockConfirm","makeMapStateToProps","getStatus","state","props","status","mapDispatchToProps","dispatch","_ref","intl","onReply","router","onModalReblog","onReblog","e","get","shiftKey","this","onFavourite","onPin","onEmbed","url","onError","error","onDelete","message","formatMessage","confirm","onConfirm","onDirect","account","onMention","onOpenMedia","media","index","onOpenVideo","time","onBlock","values","name","onReport","onMute","onMuteConversation","onToggleHidden","302","d","ComposeForm","_class","_class2","_temp2","__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__character_counter__","__WEBPACK_IMPORTED_MODULE_6__components_button__","__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_8_prop_types__","__WEBPACK_IMPORTED_MODULE_8_prop_types___default","__WEBPACK_IMPORTED_MODULE_9__containers_reply_indicator_container__","__WEBPACK_IMPORTED_MODULE_10__components_autosuggest_textarea__","__WEBPACK_IMPORTED_MODULE_11__containers_upload_button_container__","__WEBPACK_IMPORTED_MODULE_13__components_collapsable__","__WEBPACK_IMPORTED_MODULE_14__containers_spoiler_button_container__","__WEBPACK_IMPORTED_MODULE_15__containers_privacy_dropdown_container__","__WEBPACK_IMPORTED_MODULE_16__containers_sensitive_button_container__","__WEBPACK_IMPORTED_MODULE_17__containers_emoji_picker_dropdown_container__","__WEBPACK_IMPORTED_MODULE_18__containers_upload_form_container__","__WEBPACK_IMPORTED_MODULE_19__containers_warning_container__","__WEBPACK_IMPORTED_MODULE_20__is_mobile__","__WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_22_stringz__","__WEBPACK_IMPORTED_MODULE_23__util_counter__","__WEBPACK_IMPORTED_MODULE_24__initial_state__","allowedAroundShortCode","placeholder","spoiler_placeholder","publish","publishLoud","_ImmutablePureCompone","_temp","_this","_ret","_len","arguments","length","args","Array","_key","call","apply","concat","handleChange","onChange","target","value","handleKeyDown","keyCode","ctrlKey","metaKey","handleSubmit","text","autosuggestTextarea","textarea","_this$props","is_submitting","is_uploading","anyMedia","fulltext","spoiler_text","join","trim","onSubmit","onSuggestionsClearRequested","onClearSuggestions","onSuggestionsFetchRequested","token","onFetchSuggestions","onSuggestionSelected","tokenStart","handleChangeSpoilerText","onChangeSpoilerText","setAutosuggestTextarea","c","handleEmojiPick","data","position","selectionStart","needsSpace","custom","includes","onPickEmoji","prototype","componentDidUpdate","prevProps","focusDate","selectionEnd","preselectDate","search","caretPosition","setSelectionRange","focus","render","_props","onPaste","showSearch","disabled","disabledButton","publishText","privacy","className","isVisible","spoiler","fullHeight","style","display","onKeyDown","type","a","createElement","ref","suggestions","autoFocus","window","innerWidth","max","onClick","block","propTypes","object","isRequired","string","suggestion_token","list","bool","instanceOf","Date","number","func","defaultProps","303","CharacterCounter","__WEBPACK_IMPORTED_MODULE_5_stringz__","_React$PureComponent","checkRemainingText","diff","PureComponent","304","__WEBPACK_IMPORTED_MODULE_0_react_redux__","__WEBPACK_IMPORTED_MODULE_1__actions_compose__","__WEBPACK_IMPORTED_MODULE_2__selectors__","__WEBPACK_IMPORTED_MODULE_3__components_reply_indicator__","getIn","onCancel","305","ReplyIndicator","__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_6_prop_types__","__WEBPACK_IMPORTED_MODULE_6_prop_types___default","__WEBPACK_IMPORTED_MODULE_7__components_avatar__","__WEBPACK_IMPORTED_MODULE_8__components_icon_button__","__WEBPACK_IMPORTED_MODULE_9__components_display_name__","__WEBPACK_IMPORTED_MODULE_10_react_intl__","__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_12__rtl__","cancel","handleClick","handleAccountClick","button","preventDefault","context","history","push","content","__html","direction","title","icon","inverted","href","size","dangerouslySetInnerHTML","contextTypes","map","306","AutosuggestTextarea","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof__","__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__","__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default","__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__","__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default","__WEBPACK_IMPORTED_MODULE_5_react__","__WEBPACK_IMPORTED_MODULE_6__features_compose_containers_autosuggest_account_container__","__WEBPACK_IMPORTED_MODULE_7__autosuggest_emoji__","__WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_9_prop_types__","__WEBPACK_IMPORTED_MODULE_9_prop_types___default","__WEBPACK_IMPORTED_MODULE_10__rtl__","__WEBPACK_IMPORTED_MODULE_12_react_textarea_autosize__","__WEBPACK_IMPORTED_MODULE_13_classnames__","__WEBPACK_IMPORTED_MODULE_13_classnames___default","textAtCursorMatchesToken","str","word","left","slice","right","indexOf","toLowerCase","suggestionsHidden","selectedSuggestion","lastToken","_textAtCursorMatchesT","setState","_this$state","which","isComposing","key","document","querySelector","parentElement","Math","min","stopPropagation","defaultPrevented","onBlur","onSuggestionClick","suggestion","currentTarget","getAttribute","setTextarea","clipboardData","files","renderSuggestion","i","inner","emoji","role","tabIndex","data-index","selected","onMouseDown","componentWillReceiveProps","nextProps","onKeyUp","inputRef","aria-autocomplete","isEmpty","307","__WEBPACK_IMPORTED_MODULE_1__components_autosuggest_account__","getAccount","308","AutosuggestAccount","__WEBPACK_IMPORTED_MODULE_5__components_avatar__","__WEBPACK_IMPORTED_MODULE_6__components_display_name__","__WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component___default","309","process","AutosuggestEmoji","__WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light__","__WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light___default","assetHost","env","CDN_HOST","imageUrl","mapping","native","replace","filename","src","alt","colons","310","_extends","assign","source","hasOwnProperty","_inheritsLoose","subClass","superClass","create","constructor","__proto__","_objectWithoutProperties","excluded","sourceKeys","keys","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","calculateNodeHeight","uiTextNode","uid","useCache","minRows","maxRows","hiddenTextarea","parentNode","body","appendChild","nodeStyling","calculateNodeStyling","paddingSize","borderSize","boxSizing","sizingStyle","forEach","HIDDEN_TEXTAREA_STYLE","setProperty","minHeight","Infinity","maxHeight","height","scrollHeight","singleRowHeight","rowCount","floor","node","computedStyleCache","getComputedStyle","SIZING_STYLE","reduce","obj","getPropertyValue","isIE","width","parseFloat","nodeInfo","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_prop_types__","isBrowser","documentElement","currentStyle","min-height","max-height","visibility","overflow","z-index","top","purgeCache","seed","noop","requestAnimationFrame","cancelAnimationFrame","setTimeout","clearTimeout","onNextFrame","clearNextFrameAction","TextareaAutosize","_React$Component","_resizeLock","_onRootDOMNode","_rootDOMNode","_onChange","event","_controlled","_resizeComponent","callback","nodeHeight","_uid","useCacheForDOMMeasurements","_proto","onHeightChange","componentDidMount","_this2","_resizeListener","addEventListener","_this3","_clearNextFrame","_onNextFrameActionId","prevState","componentWillUnmount","removeEventListener","Component","311","__WEBPACK_IMPORTED_MODULE_1__components_upload_button__","__WEBPACK_IMPORTED_MODULE_2__actions_compose__","mapStateToProps","some","m","resetFileKey","onSelectFile","312","UploadButton","_dec","__WEBPACK_IMPORTED_MODULE_5__components_icon_button__","__WEBPACK_IMPORTED_MODULE_7_react_intl__","__WEBPACK_IMPORTED_MODULE_8_react_redux__","__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes___default","upload","acceptContentTypes","iconStyle","lineHeight","fileElement","click","setRef","multiple","accept","toArray","listOf","313","__WEBPACK_IMPORTED_MODULE_2__features_ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring___default","Collapsable","children","defaultStyle","opacity","_ref2","314","__WEBPACK_IMPORTED_MODULE_1__components_text_icon_button__","__WEBPACK_IMPORTED_MODULE_3_react_intl__","marked","unmarked","label","active","ariaControls","315","TextIconButton","aria-label","aria-expanded","aria-controls","316","__WEBPACK_IMPORTED_MODULE_1__components_privacy_dropdown__","__WEBPACK_IMPORTED_MODULE_3__actions_modal__","__WEBPACK_IMPORTED_MODULE_4__is_mobile__","isModalOpen","modalType","isUserTouching","onModalOpen","onModalClose","317","PrivacyDropdown","__WEBPACK_IMPORTED_MODULE_5_react_intl__","__WEBPACK_IMPORTED_MODULE_6__components_icon_button__","__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay__","__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay___default","__WEBPACK_IMPORTED_MODULE_8__ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring___default","__WEBPACK_IMPORTED_MODULE_10_detect_passive_events__","__WEBPACK_IMPORTED_MODULE_10_detect_passive_events___default","__WEBPACK_IMPORTED_MODULE_11_classnames__","__WEBPACK_IMPORTED_MODULE_11_classnames___default","public_short","public_long","unlisted_short","unlisted_long","private_short","private_long","direct_short","direct_long","change_privacy","listenerOptions","hasSupport","passive","PrivacyDropdownMenu","mounted","handleDocumentClick","contains","onClose","items","findIndex","item","element","childNodes","firstChild","lastChild","setFocusRef","focusedItem","scaleX","scaleY","damping","stiffness","transform","aria-selected","meta","_React$PureComponent2","_ret2","_len2","_key2","open","placement","handleToggle","actions","options","option","handleModalActionClick","_target$getBoundingCl","getBoundingClientRect","innerHeight","handleClose","componentWillMount","_props2","_state","valueOption","find","expanded","show","318","__WEBPACK_IMPORTED_MODULE_5_react_redux__","__WEBPACK_IMPORTED_MODULE_6_classnames__","__WEBPACK_IMPORTED_MODULE_6_classnames___default","__WEBPACK_IMPORTED_MODULE_7__components_icon_button__","__WEBPACK_IMPORTED_MODULE_8__actions_compose__","__WEBPACK_IMPORTED_MODULE_9__ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring___default","__WEBPACK_IMPORTED_MODULE_11_react_intl__","visible","SensitiveButton","scale","compose-form__sensitive-button--visible","319","__WEBPACK_IMPORTED_MODULE_1__components_emoji_picker_dropdown__","__WEBPACK_IMPORTED_MODULE_2__actions_settings__","__WEBPACK_IMPORTED_MODULE_3_reselect__","__WEBPACK_IMPORTED_MODULE_4_immutable__","__WEBPACK_IMPORTED_MODULE_5__actions_emojis__","DEFAULTS","getFrequentlyUsedEmojis","emojiCounters","emojis","keySeq","sort","b","reverse","perLine","uniqueDefaults","filter","getCustomEmojis","aShort","bShort","custom_emojis","skinTone","frequentlyUsedEmojis","onSkinTone","320","EmojiPickerDropdown","_class3","_class4","_temp4","_class5","__WEBPACK_IMPORTED_MODULE_6__ui_util_async_components__","__WEBPACK_IMPORTED_MODULE_8_classnames__","__WEBPACK_IMPORTED_MODULE_8_classnames___default","__WEBPACK_IMPORTED_MODULE_9_detect_passive_events__","__WEBPACK_IMPORTED_MODULE_9_detect_passive_events___default","__WEBPACK_IMPORTED_MODULE_10__emoji_emoji__","emoji_search","emoji_not_found","recent","search_results","people","nature","food","activity","travel","objects","symbols","flags","EmojiPicker","Emoji","backgroundImageFn","categoriesSort","ModifierPickerMenu","onSelect","attachListeners","removeListeners","set","sheetSize","skin","ModifierPicker","onOpen","handleSelect","modifier","EmojiPickerMenu","_React$PureComponent3","_temp3","_ret3","_len3","_key3","modifierOpen","getI18n","notfound","categories","foods","places","onPick","handleModifierOpen","handleModifierClose","handleModifierChange","loading","selecting","emojiSize","color","i18n","include","showPreview","emojiTooltip","_React$PureComponent4","_temp5","_this4","_ret4","_len4","_key4","dropdown","onShowDropdown","then","EmojiMart","Picker","catch","onHideDropdown","onToggle","setTargetRef","findTarget","_props3","pulse-loading","321","__WEBPACK_IMPORTED_MODULE_1__components_upload_form__","mediaIds","322","UploadForm","__WEBPACK_IMPORTED_MODULE_6__containers_upload_progress_container__","__WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component___default","__WEBPACK_IMPORTED_MODULE_8__containers_upload_container__","323","__WEBPACK_IMPORTED_MODULE_1__components_upload_progress__","progress","324","UploadProgress","__WEBPACK_IMPORTED_MODULE_5__ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default","325","__WEBPACK_IMPORTED_MODULE_1__components_upload__","onUndo","onDescriptionChange","description","onOpenFocalPoint","326","Upload","__WEBPACK_IMPORTED_MODULE_7__ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default","hovered","focused","dirtyDescription","handleUndoClick","handleFocalPointClick","handleInputChange","handleMouseEnter","handleMouseLeave","handleInputFocus","handleInputBlur","focusX","focusY","x","y","onMouseEnter","onMouseLeave","backgroundImage","backgroundPosition","maxLength","onFocus","327","__WEBPACK_IMPORTED_MODULE_3__components_warning__","__WEBPACK_IMPORTED_MODULE_4_react_intl__","__WEBPACK_IMPORTED_MODULE_5__initial_state__","APPROX_HASHTAG_RE","needsLockWarning","hashtagWarning","test","directMessageWarning","WarningWrapper","locked","328","Warning","329","countableText","inputText","330","regexen","regexSupplant","regex","global","ignoreCase","multiline","RegExp","match","newRegex","stringSupplant","spaces_group","invalid_chars_group","punct","validUrlPrecedingChars","invalidDomainChars","validDomainChars","validSubdomain","validDomainName","validGTLD","validCCTLD","validPunycode","validSpecialCCTLD","validDomain","validPortNumber","pd","validGeneralUrlPathChars","validUrlBalancedParens","validUrlPathEndingChars","validUrlPath","validUrlQueryChars","validUrlQueryEndingChars","validUrl","331","__WEBPACK_IMPORTED_MODULE_1__components_compose_form__","accountId","checked","824","defineProperty","Compose","__WEBPACK_IMPORTED_MODULE_5__containers_compose_form_container__","__WEBPACK_IMPORTED_MODULE_6__containers_navigation_container__","__WEBPACK_IMPORTED_MODULE_7_react_redux__","__WEBPACK_IMPORTED_MODULE_9_react_router_dom__","__WEBPACK_IMPORTED_MODULE_11__containers_search_container__","__WEBPACK_IMPORTED_MODULE_12__ui_util_optional_motion__","__WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring__","__WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring___default","__WEBPACK_IMPORTED_MODULE_14__containers_search_results_container__","start","home_timeline","notifications","public","community","preferences","logout","ownProps","columns","multiColumn","isSearchPage","header","to","column","data-method","879","__WEBPACK_IMPORTED_MODULE_5__components_account__","__WEBPACK_IMPORTED_MODULE_6__actions_accounts__","__WEBPACK_IMPORTED_MODULE_7__actions_modal__","__WEBPACK_IMPORTED_MODULE_8__actions_mutes__","__WEBPACK_IMPORTED_MODULE_9__initial_state__","unfollowConfirm","onFollow","onMuteNotifications","880","Account","__WEBPACK_IMPORTED_MODULE_7__avatar__","__WEBPACK_IMPORTED_MODULE_8__display_name__","__WEBPACK_IMPORTED_MODULE_9__permalink__","__WEBPACK_IMPORTED_MODULE_10__icon_button__","__WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component___default","follow","unfollow","requested","unblock","unmute","mute_notifications","unmute_notifications","handleFollow","handleBlock","handleMute","handleMuteNotifications","handleUnmuteNotifications","hidden","buttons","following","blocking","muting","hidingNotificationsButton","906","NavigationBar","__WEBPACK_IMPORTED_MODULE_5_prop_types__","__WEBPACK_IMPORTED_MODULE_5_prop_types___default","__WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes__","__WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes___default","__WEBPACK_IMPORTED_MODULE_9__components_permalink__","907","Search","__WEBPACK_IMPORTED_MODULE_6_react_overlays_lib_Overlay__","__WEBPACK_IMPORTED_MODULE_6_react_overlays_lib_Overlay___default","SearchPopout","extraInformation","handleClear","submitted","onClear","handleFocus","onShow","handleBlur","hasValue","992","__WEBPACK_IMPORTED_MODULE_1__components_navigation_bar__","__WEBPACK_IMPORTED_MODULE_2__initial_state__","993","__WEBPACK_IMPORTED_MODULE_1__actions_search__","__WEBPACK_IMPORTED_MODULE_2__components_search__","994","__WEBPACK_IMPORTED_MODULE_1__components_search_results__","results","995","SearchResults","__WEBPACK_IMPORTED_MODULE_6_react_intl__","__WEBPACK_IMPORTED_MODULE_7__containers_account_container__","__WEBPACK_IMPORTED_MODULE_8__containers_status_container__","__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__","__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default","accounts","statuses","hashtags","count","statusId","hashtag"],"mappings":"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","file":"features/compose.js","sourcesContent":["webpackJsonp([2],{\n\n/***/ 286:\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__(156);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors__ = __webpack_require__(68);\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__(69);\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__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__actions_mutes__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__actions_reports__ = __webpack_require__(155);\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 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 if (!__WEBPACK_IMPORTED_MODULE_13__initial_state__[\"e\" /* deleteModal */]) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"f\" /* deleteStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_11__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: intl.formatMessage(messages.deleteMessage),\n confirm: intl.formatMessage(messages.deleteConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"f\" /* deleteStatus */])(status.get('id')));\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__[\"k\" /* unmuteStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"i\" /* 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__[\"j\" /* revealStatus */])(status.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_statuses__[\"h\" /* 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/***/ 302:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ComposeForm; });\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__character_counter__ = __webpack_require__(303);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_button__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__containers_reply_indicator_container__ = __webpack_require__(304);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__components_autosuggest_textarea__ = __webpack_require__(306);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__containers_upload_button_container__ = __webpack_require__(311);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__components_collapsable__ = __webpack_require__(313);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__containers_spoiler_button_container__ = __webpack_require__(314);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__containers_privacy_dropdown_container__ = __webpack_require__(316);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__containers_sensitive_button_container__ = __webpack_require__(318);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__containers_emoji_picker_dropdown_container__ = __webpack_require__(319);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__containers_upload_form_container__ = __webpack_require__(321);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__containers_warning_container__ = __webpack_require__(327);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__is_mobile__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22_stringz__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22_stringz___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_22_stringz__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__util_counter__ = __webpack_require__(329);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__initial_state__ = __webpack_require__(13);\n\n\n\n\n\nvar _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\nvar allowedAroundShortCode = '><\\x85 \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\t\\n\\x0B\\f\\r';\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_12_react_intl__[\"f\" /* defineMessages */])({\n placeholder: {\n 'id': 'compose_form.placeholder',\n 'defaultMessage': 'What is on your mind?'\n },\n spoiler_placeholder: {\n 'id': 'compose_form.spoiler_placeholder',\n 'defaultMessage': 'Write your warning here'\n },\n publish: {\n 'id': 'compose_form.publish',\n 'defaultMessage': 'Toot'\n },\n publishLoud: {\n 'id': 'compose_form.publish_loud',\n 'defaultMessage': '{publish}!'\n }\n});\n\nvar ComposeForm = Object(__WEBPACK_IMPORTED_MODULE_12_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ComposeForm, _ImmutablePureCompone);\n\n function ComposeForm() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ComposeForm);\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.handleChange = function (e) {\n _this.props.onChange(e.target.value);\n }, _this.handleKeyDown = function (e) {\n if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {\n _this.handleSubmit();\n }\n }, _this.handleSubmit = function () {\n if (_this.props.text !== _this.autosuggestTextarea.textarea.value) {\n // Something changed the text inside the textarea (e.g. browser extensions like Grammarly)\n // Update the state to match the current text\n _this.props.onChange(_this.autosuggestTextarea.textarea.value);\n }\n\n // Submit disabled:\n var _this$props = _this.props,\n is_submitting = _this$props.is_submitting,\n is_uploading = _this$props.is_uploading,\n anyMedia = _this$props.anyMedia;\n\n var fulltext = [_this.props.spoiler_text, Object(__WEBPACK_IMPORTED_MODULE_23__util_counter__[\"a\" /* countableText */])(_this.props.text)].join('');\n\n if (is_submitting || is_uploading || Object(__WEBPACK_IMPORTED_MODULE_22_stringz__[\"length\"])(fulltext) > __WEBPACK_IMPORTED_MODULE_24__initial_state__[\"c\" /* charLimit */] || fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia) {\n return;\n }\n\n _this.props.onSubmit();\n }, _this.onSuggestionsClearRequested = function () {\n _this.props.onClearSuggestions();\n }, _this.onSuggestionsFetchRequested = function (token) {\n _this.props.onFetchSuggestions(token);\n }, _this.onSuggestionSelected = function (tokenStart, token, value) {\n _this.props.onSuggestionSelected(tokenStart, token, value);\n }, _this.handleChangeSpoilerText = function (e) {\n _this.props.onChangeSpoilerText(e.target.value);\n }, _this.setAutosuggestTextarea = function (c) {\n _this.autosuggestTextarea = c;\n }, _this.handleEmojiPick = function (data) {\n var text = _this.props.text;\n\n var position = _this.autosuggestTextarea.textarea.selectionStart;\n var needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]);\n\n _this.props.onPickEmoji(position, data, needsSpace);\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ComposeForm.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n // This statement does several things:\n // - If we're beginning a reply, and,\n // - Replying to zero or one users, places the cursor at the end of the textbox.\n // - Replying to more than one user, selects any usernames past the first;\n // this provides a convenient shortcut to drop everyone else from the conversation.\n if (this.props.focusDate !== prevProps.focusDate) {\n var selectionEnd = void 0,\n selectionStart = void 0;\n\n if (this.props.preselectDate !== prevProps.preselectDate) {\n selectionEnd = this.props.text.length;\n selectionStart = this.props.text.search(/\\s/) + 1;\n } else if (typeof this.props.caretPosition === 'number') {\n selectionStart = this.props.caretPosition;\n selectionEnd = this.props.caretPosition;\n } else {\n selectionEnd = this.props.text.length;\n selectionStart = selectionEnd;\n }\n\n this.autosuggestTextarea.textarea.setSelectionRange(selectionStart, selectionEnd);\n this.autosuggestTextarea.textarea.focus();\n } else if (prevProps.is_submitting && !this.props.is_submitting) {\n this.autosuggestTextarea.textarea.focus();\n }\n };\n\n ComposeForm.prototype.render = function render() {\n var _props = this.props,\n intl = _props.intl,\n onPaste = _props.onPaste,\n showSearch = _props.showSearch,\n anyMedia = _props.anyMedia;\n\n var disabled = this.props.is_submitting;\n var text = [this.props.spoiler_text, Object(__WEBPACK_IMPORTED_MODULE_23__util_counter__[\"a\" /* countableText */])(this.props.text)].join('');\n var disabledButton = disabled || this.props.is_uploading || Object(__WEBPACK_IMPORTED_MODULE_22_stringz__[\"length\"])(text) > __WEBPACK_IMPORTED_MODULE_24__initial_state__[\"c\" /* charLimit */] || text.length !== 0 && text.trim().length === 0 && !anyMedia;\n var publishText = '';\n\n if (this.props.privacy === 'private' || this.props.privacy === 'direct') {\n publishText = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'compose-form__publish-private'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-lock'\n }), ' ', intl.formatMessage(messages.publish));\n } else {\n publishText = this.props.privacy !== 'unlisted' ? intl.formatMessage(messages.publishLoud, { publish: intl.formatMessage(messages.publish) }) : intl.formatMessage(messages.publish);\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_19__containers_warning_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_13__components_collapsable__[\"a\" /* default */], {\n isVisible: this.props.spoiler,\n fullHeight: 50\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'spoiler-input'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('label', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, intl.formatMessage(messages.spoiler_placeholder)), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('input', {\n placeholder: intl.formatMessage(messages.spoiler_placeholder),\n value: this.props.spoiler_text,\n onChange: this.handleChangeSpoilerText,\n onKeyDown: this.handleKeyDown,\n type: 'text',\n className: 'spoiler-input__input',\n id: 'cw-spoiler-input'\n })))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__containers_reply_indicator_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__autosuggest-wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_10__components_autosuggest_textarea__[\"a\" /* default */], {\n ref: this.setAutosuggestTextarea,\n placeholder: intl.formatMessage(messages.placeholder),\n disabled: disabled,\n value: this.props.text,\n onChange: this.handleChange,\n suggestions: this.props.suggestions,\n onKeyDown: this.handleKeyDown,\n onSuggestionsFetchRequested: this.onSuggestionsFetchRequested,\n onSuggestionsClearRequested: this.onSuggestionsClearRequested,\n onSuggestionSelected: this.onSuggestionSelected,\n onPaste: onPaste,\n autoFocus: !showSearch && !Object(__WEBPACK_IMPORTED_MODULE_20__is_mobile__[\"b\" /* isMobile */])(window.innerWidth)\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_17__containers_emoji_picker_dropdown_container__[\"a\" /* default */], {\n onPickEmoji: this.handleEmojiPick\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__modifiers'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_18__containers_upload_form_container__[\"a\" /* default */], {})), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__buttons-wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__buttons'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11__containers_upload_button_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_15__containers_privacy_dropdown_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_16__containers_sensitive_button_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_14__containers_spoiler_button_container__[\"a\" /* default */], {})), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'character-counter__wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__character_counter__[\"a\" /* default */], {\n max: __WEBPACK_IMPORTED_MODULE_24__initial_state__[\"c\" /* charLimit */],\n text: text\n }))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__publish'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__publish-button-wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_button__[\"a\" /* default */], {\n text: publishText,\n onClick: this.handleSubmit,\n disabled: disabledButton,\n block: true\n }))));\n };\n\n return ComposeForm;\n}(__WEBPACK_IMPORTED_MODULE_21_react_immutable_pure_component___default.a), _class2.propTypes = {\n intl: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.object.isRequired,\n text: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.string.isRequired,\n suggestion_token: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.string,\n suggestions: __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default.a.list,\n spoiler: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n privacy: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.string,\n spoiler_text: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.string,\n focusDate: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.instanceOf(Date),\n caretPosition: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.number,\n preselectDate: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.instanceOf(Date),\n is_submitting: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n is_uploading: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n onChange: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onSubmit: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onClearSuggestions: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onFetchSuggestions: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onSuggestionSelected: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onChangeSpoilerText: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onPaste: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n onPickEmoji: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.func.isRequired,\n showSearch: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool,\n anyMedia: __WEBPACK_IMPORTED_MODULE_8_prop_types___default.a.bool\n}, _class2.defaultProps = {\n showSearch: false\n}, _temp2)) || _class;\n\n\n\n/***/ }),\n\n/***/ 303:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return CharacterCounter; });\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_stringz__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_stringz___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_stringz__);\n\n\n\n\n\n\n\n\nvar CharacterCounter = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(CharacterCounter, _React$PureComponent);\n\n function CharacterCounter() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, CharacterCounter);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n CharacterCounter.prototype.checkRemainingText = function checkRemainingText(diff) {\n if (diff < 0) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'character-counter character-counter--over'\n }, void 0, diff);\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n className: 'character-counter'\n }, void 0, diff);\n };\n\n CharacterCounter.prototype.render = function render() {\n var diff = this.props.max - Object(__WEBPACK_IMPORTED_MODULE_5_stringz__[\"length\"])(this.props.text);\n return this.checkRemainingText(diff);\n };\n\n return CharacterCounter;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 304:\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__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__selectors__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__components_reply_indicator__ = __webpack_require__(305);\n\n\n\n\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getStatus = Object(__WEBPACK_IMPORTED_MODULE_2__selectors__[\"e\" /* makeGetStatus */])();\n\n var mapStateToProps = function mapStateToProps(state) {\n return {\n status: getStatus(state, state.getIn(['compose', 'in_reply_to']))\n };\n };\n\n return mapStateToProps;\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onCancel: function onCancel() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__actions_compose__[\"E\" /* cancelReplyCompose */])());\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_3__components_reply_indicator__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 305:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ReplyIndicator; });\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_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__);\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/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_avatar__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__components_icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__components_display_name__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__rtl__ = __webpack_require__(98);\n\n\n\n\n\nvar _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"f\" /* defineMessages */])({\n cancel: {\n 'id': 'reply_indicator.cancel',\n 'defaultMessage': 'Cancel'\n }\n});\n\nvar ReplyIndicator = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ReplyIndicator, _ImmutablePureCompone);\n\n function ReplyIndicator() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ReplyIndicator);\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.handleClick = function () {\n _this.props.onCancel();\n }, _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 }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ReplyIndicator.prototype.render = function render() {\n var _props = this.props,\n status = _props.status,\n intl = _props.intl;\n\n\n if (!status) {\n return null;\n }\n\n var content = { __html: status.get('contentHtml') };\n var style = {\n direction: Object(__WEBPACK_IMPORTED_MODULE_12__rtl__[\"a\" /* isRtl */])(status.get('search_index')) ? 'rtl' : 'ltr'\n };\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'reply-indicator'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'reply-indicator__header'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'reply-indicator__cancel'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__components_icon_button__[\"a\" /* default */], {\n title: intl.formatMessage(messages.cancel),\n icon: 'times',\n onClick: this.handleClick,\n inverted: true\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: status.getIn(['account', 'url']),\n onClick: this.handleAccountClick,\n className: 'reply-indicator__display-name'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'reply-indicator__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: 24\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__components_display_name__[\"a\" /* default */], {\n account: status.get('account')\n }))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'reply-indicator__content',\n style: style,\n dangerouslySetInnerHTML: content\n }));\n };\n\n return ReplyIndicator;\n}(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default.a), _class2.contextTypes = {\n router: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object\n}, _class2.propTypes = {\n status: __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default.a.map,\n onCancel: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n intl: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object.isRequired\n}, _temp2)) || _class;\n\n\n\n/***/ }),\n\n/***/ 306:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AutosuggestTextarea; });\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_typeof__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits__);\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__features_compose_containers_autosuggest_account_container__ = __webpack_require__(307);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__autosuggest_emoji__ = __webpack_require__(309);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_prop_types__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__rtl__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_textarea_autosize__ = __webpack_require__(310);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13_classnames__);\n\n\n\n\n\n\nvar _class, _temp2;\n\n\n\n\n\n\n\n\n\n\n\nvar textAtCursorMatchesToken = function textAtCursorMatchesToken(str, caretPosition) {\n var word = void 0;\n\n var left = str.slice(0, caretPosition).search(/\\S+$/);\n var right = str.slice(caretPosition).search(/\\s/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || ['@', ':', '#'].indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left + 1, word];\n } else {\n return [null, null];\n }\n};\n\nvar AutosuggestTextarea = (_temp2 = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_4_babel_runtime_helpers_inherits___default()(AutosuggestTextarea, _ImmutablePureCompone);\n\n function AutosuggestTextarea() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_classCallCheck___default()(this, AutosuggestTextarea);\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_3_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.call.apply(_ImmutablePureCompone, [this].concat(args))), _this), _this.state = {\n suggestionsHidden: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0\n }, _this.onChange = function (e) {\n var _textAtCursorMatchesT = textAtCursorMatchesToken(e.target.value, e.target.selectionStart),\n tokenStart = _textAtCursorMatchesT[0],\n token = _textAtCursorMatchesT[1];\n\n if (token !== null && _this.state.lastToken !== token) {\n _this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart: tokenStart });\n _this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n _this.setState({ lastToken: null });\n _this.props.onSuggestionsClearRequested();\n }\n\n _this.props.onChange(e);\n }, _this.onKeyDown = function (e) {\n var _this$props = _this.props,\n suggestions = _this$props.suggestions,\n disabled = _this$props.disabled;\n var _this$state = _this.state,\n selectedSuggestion = _this$state.selectedSuggestion,\n suggestionsHidden = _this$state.suggestionsHidden;\n\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch (e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n _this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n _this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n _this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (_this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n _this.props.onSuggestionSelected(_this.state.tokenStart, _this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !_this.props.onKeyDown) {\n return;\n }\n\n _this.props.onKeyDown(e);\n }, _this.onBlur = function () {\n _this.setState({ suggestionsHidden: true });\n }, _this.onSuggestionClick = function (e) {\n var suggestion = _this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n _this.props.onSuggestionSelected(_this.state.tokenStart, _this.state.lastToken, suggestion);\n _this.textarea.focus();\n }, _this.setTextarea = function (c) {\n _this.textarea = c;\n }, _this.onPaste = function (e) {\n if (e.clipboardData && e.clipboardData.files.length === 1) {\n _this.props.onPaste(e.clipboardData.files);\n e.preventDefault();\n }\n }, _this.renderSuggestion = function (suggestion, i) {\n var selectedSuggestion = _this.state.selectedSuggestion;\n\n var inner = void 0,\n key = void 0;\n\n if ((typeof suggestion === 'undefined' ? 'undefined' : __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_typeof___default()(suggestion)) === 'object') {\n inner = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__autosuggest_emoji__[\"a\" /* default */], {\n emoji: suggestion\n });\n key = suggestion.id;\n } else if (suggestion[0] === '#') {\n inner = suggestion;\n key = suggestion;\n } else {\n inner = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__features_compose_containers_autosuggest_account_container__[\"a\" /* default */], {\n id: suggestion\n });\n key = suggestion;\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n role: 'button',\n tabIndex: '0',\n 'data-index': i,\n className: __WEBPACK_IMPORTED_MODULE_13_classnames___default()('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion }),\n onMouseDown: _this.onSuggestionClick\n }, key, inner);\n }, _temp), __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n AutosuggestTextarea.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden) {\n this.setState({ suggestionsHidden: false });\n }\n };\n\n AutosuggestTextarea.prototype.render = function render() {\n var _props = this.props,\n value = _props.value,\n suggestions = _props.suggestions,\n disabled = _props.disabled,\n placeholder = _props.placeholder,\n onKeyUp = _props.onKeyUp,\n autoFocus = _props.autoFocus;\n var suggestionsHidden = this.state.suggestionsHidden;\n\n var style = { direction: 'ltr' };\n\n if (Object(__WEBPACK_IMPORTED_MODULE_10__rtl__[\"a\" /* isRtl */])(value)) {\n style.direction = 'rtl';\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'autosuggest-textarea'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('label', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, placeholder), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12_react_textarea_autosize__[\"a\" /* default */], {\n inputRef: this.setTextarea,\n className: 'autosuggest-textarea__textarea',\n disabled: disabled,\n placeholder: placeholder,\n autoFocus: autoFocus,\n value: value,\n onChange: this.onChange,\n onKeyDown: this.onKeyDown,\n onKeyUp: onKeyUp,\n onBlur: this.onBlur,\n onPaste: this.onPaste,\n style: style,\n 'aria-autocomplete': 'list'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'autosuggest-textarea__suggestions ' + (suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible')\n }, void 0, suggestions.map(this.renderSuggestion)));\n };\n\n return AutosuggestTextarea;\n}(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default.a), _class.propTypes = {\n value: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.string,\n suggestions: __WEBPACK_IMPORTED_MODULE_8_react_immutable_proptypes___default.a.list,\n disabled: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.bool,\n placeholder: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.string,\n onSuggestionSelected: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func.isRequired,\n onSuggestionsClearRequested: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func.isRequired,\n onSuggestionsFetchRequested: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func.isRequired,\n onChange: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func.isRequired,\n onKeyUp: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func,\n onKeyDown: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func,\n onPaste: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.func.isRequired,\n autoFocus: __WEBPACK_IMPORTED_MODULE_9_prop_types___default.a.bool\n}, _class.defaultProps = {\n autoFocus: true\n}, _temp2);\n\n\n/***/ }),\n\n/***/ 307:\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_autosuggest_account__ = __webpack_require__(308);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__selectors__ = __webpack_require__(68);\n\n\n\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getAccount = Object(__WEBPACK_IMPORTED_MODULE_2__selectors__[\"c\" /* makeGetAccount */])();\n\n var mapStateToProps = function mapStateToProps(state, _ref) {\n var id = _ref.id;\n return {\n account: getAccount(state, id)\n };\n };\n\n return mapStateToProps;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(makeMapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_autosuggest_account__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 308:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AutosuggestAccount; });\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__components_avatar__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__components_display_name__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component__);\n\n\n\n\n\nvar _class, _temp;\n\n\n\n\n\n\n\nvar AutosuggestAccount = (_temp = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(AutosuggestAccount, _ImmutablePureCompone);\n\n function AutosuggestAccount() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, AutosuggestAccount);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.apply(this, arguments));\n }\n\n AutosuggestAccount.prototype.render = function render() {\n var account = this.props.account;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'autosuggest-account'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'autosuggest-account-icon'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__components_avatar__[\"a\" /* default */], {\n account: account,\n size: 18\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_display_name__[\"a\" /* default */], {\n account: account\n }));\n };\n\n return AutosuggestAccount;\n}(__WEBPACK_IMPORTED_MODULE_8_react_immutable_pure_component___default.a), _class.propTypes = {\n account: __WEBPACK_IMPORTED_MODULE_7_react_immutable_proptypes___default.a.map.isRequired\n}, _temp);\n\n\n/***/ }),\n\n/***/ 309:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return AutosuggestEmoji; });\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__features_emoji_emoji_unicode_mapping_light__ = __webpack_require__(159);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light__);\n\n\n\n\n\n\n\n\nvar assetHost = process.env.CDN_HOST || '';\n\nvar AutosuggestEmoji = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(AutosuggestEmoji, _React$PureComponent);\n\n function AutosuggestEmoji() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, AutosuggestEmoji);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n AutosuggestEmoji.prototype.render = function render() {\n var emoji = this.props.emoji;\n\n var url = void 0;\n\n if (emoji.custom) {\n url = emoji.imageUrl;\n } else {\n var mapping = __WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light___default.a[emoji.native] || __WEBPACK_IMPORTED_MODULE_5__features_emoji_emoji_unicode_mapping_light___default.a[emoji.native.replace(/\\uFE0F$/, '')];\n\n if (!mapping) {\n return null;\n }\n\n url = assetHost + '/emoji/' + mapping.filename + '.svg';\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'autosuggest-emoji'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('img', {\n className: 'emojione',\n src: url,\n alt: emoji.native || emoji.colons\n }), emoji.colons);\n };\n\n return AutosuggestEmoji;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(35)))\n\n/***/ }),\n\n/***/ 310:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_prop_types___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_prop_types__);\n\n\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar isIE = isBrowser ? !!document.documentElement.currentStyle : false;\nvar hiddenTextarea = isBrowser && document.createElement('textarea');\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0'\n};\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'font-family', 'font-weight', 'font-size', 'font-style', 'tab-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width', 'box-sizing'];\nvar computedStyleCache = {};\nfunction calculateNodeHeight(uiTextNode, uid, useCache, minRows, maxRows) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (minRows === void 0) {\n minRows = null;\n }\n\n if (maxRows === void 0) {\n maxRows = null;\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n } // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n\n\n var nodeStyling = calculateNodeStyling(uiTextNode, uid, useCache);\n\n if (nodeStyling === null) {\n return null;\n }\n\n var paddingSize = nodeStyling.paddingSize,\n borderSize = nodeStyling.borderSize,\n boxSizing = nodeStyling.boxSizing,\n sizingStyle = nodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n\n Object.keys(sizingStyle).forEach(function (key) {\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n hiddenTextarea.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || 'x';\n var minHeight = -Infinity;\n var maxHeight = Infinity;\n var height = hiddenTextarea.scrollHeight;\n\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height = height - paddingSize;\n } // measure height of a textarea with a single row\n\n\n hiddenTextarea.value = 'x';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null || maxRows !== null) {\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n\n height = Math.max(minHeight, height);\n }\n\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n\n height = Math.min(maxHeight, height);\n }\n }\n\n var rowCount = Math.floor(height / singleRowHeight);\n return {\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight,\n rowCount: rowCount\n };\n}\n\nfunction calculateNodeStyling(node, uid, useCache) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (useCache && computedStyleCache[uid]) {\n return computedStyleCache[uid];\n }\n\n var style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n var sizingStyle = SIZING_STYLE.reduce(function (obj, name) {\n obj[name] = style.getPropertyValue(name);\n return obj;\n }, {});\n var boxSizing = sizingStyle['box-sizing']; // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(style['border-right-width']) + parseFloat(style['border-left-width']) + parseFloat(style['padding-right']) + parseFloat(style['padding-left']) + 'px';\n }\n\n var paddingSize = parseFloat(sizingStyle['padding-bottom']) + parseFloat(sizingStyle['padding-top']);\n var borderSize = parseFloat(sizingStyle['border-bottom-width']) + parseFloat(sizingStyle['border-top-width']);\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n\n if (useCache) {\n computedStyleCache[uid] = nodeInfo;\n }\n\n return nodeInfo;\n}\n\nvar purgeCache = function purgeCache(uid) {\n return delete computedStyleCache[uid];\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\n/**\n * <TextareaAutosize />\n */\nvar noop = function noop() {}; // IE11 has a problem with eval source maps, can be reproduced with:\n// eval('\"use strict\"; var onNextFrame = window.cancelAnimationFrame; onNextFrame(4);')\n// so we bind window as context in dev modes\n\n\nvar _ref = isBrowser && window.requestAnimationFrame ? true ? [window.requestAnimationFrame, window.cancelAnimationFrame] : [window.requestAnimationFrame.bind(window), window.cancelAnimationFrame.bind(window)] : [setTimeout, clearTimeout];\nvar onNextFrame = _ref[0];\nvar clearNextFrameAction = _ref[1];\n\nvar TextareaAutosize =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TextareaAutosize, _React$Component);\n\n function TextareaAutosize(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._resizeLock = false;\n\n _this._onRootDOMNode = function (node) {\n _this._rootDOMNode = node;\n\n if (_this.props.inputRef) {\n _this.props.inputRef(node);\n }\n };\n\n _this._onChange = function (event) {\n if (!_this._controlled) {\n _this._resizeComponent();\n }\n\n _this.props.onChange(event);\n };\n\n _this._resizeComponent = function (callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n if (typeof _this._rootDOMNode === 'undefined') {\n callback();\n return;\n }\n\n var nodeHeight = calculateNodeHeight(_this._rootDOMNode, _this._uid, _this.props.useCacheForDOMMeasurements, _this.props.minRows, _this.props.maxRows);\n\n if (nodeHeight === null) {\n callback();\n return;\n }\n\n var height = nodeHeight.height,\n minHeight = nodeHeight.minHeight,\n maxHeight = nodeHeight.maxHeight,\n rowCount = nodeHeight.rowCount;\n _this.rowCount = rowCount;\n\n if (_this.state.height !== height || _this.state.minHeight !== minHeight || _this.state.maxHeight !== maxHeight) {\n _this.setState({\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight\n }, callback);\n\n return;\n }\n\n callback();\n };\n\n _this.state = {\n height: props.style && props.style.height || 0,\n minHeight: -Infinity,\n maxHeight: Infinity\n };\n _this._uid = uid();\n _this._controlled = typeof props.value === 'string';\n return _this;\n }\n\n var _proto = TextareaAutosize.prototype;\n\n _proto.render = function render() {\n var _props = this.props,\n _minRows = _props.minRows,\n _maxRows = _props.maxRows,\n _onHeightChange = _props.onHeightChange,\n _useCacheForDOMMeasurements = _props.useCacheForDOMMeasurements,\n _inputRef = _props.inputRef,\n props = _objectWithoutProperties(_props, [\"minRows\", \"maxRows\", \"onHeightChange\", \"useCacheForDOMMeasurements\", \"inputRef\"]);\n props.style = _extends({}, props.style, {\n height: this.state.height\n });\n var maxHeight = Math.max(props.style.maxHeight || Infinity, this.state.maxHeight);\n\n if (maxHeight < this.state.height) {\n props.style.overflow = 'hidden';\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(\"textarea\", _extends({}, props, {\n onChange: this._onChange,\n ref: this._onRootDOMNode\n }));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this._resizeComponent(); // Working around Firefox bug which runs resize listeners even when other JS is running at the same moment\n // causing competing rerenders (due to setState in the listener) in React.\n // More can be found here - facebook/react#6324\n\n\n this._resizeListener = function () {\n if (_this2._resizeLock) {\n return;\n }\n\n _this2._resizeLock = true;\n\n _this2._resizeComponent(function () {\n return _this2._resizeLock = false;\n });\n };\n\n window.addEventListener('resize', this._resizeListener);\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps() {\n var _this3 = this;\n\n this._clearNextFrame();\n\n this._onNextFrameActionId = onNextFrame(function () {\n return _this3._resizeComponent();\n });\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.state.height !== prevState.height) {\n this.props.onHeightChange(this.state.height, this);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._clearNextFrame();\n\n window.removeEventListener('resize', this._resizeListener);\n purgeCache(this._uid);\n };\n\n _proto._clearNextFrame = function _clearNextFrame() {\n clearNextFrameAction(this._onNextFrameActionId);\n };\n\n return TextareaAutosize;\n}(__WEBPACK_IMPORTED_MODULE_0_react___default.a.Component);\n\nTextareaAutosize.defaultProps = {\n onChange: noop,\n onHeightChange: noop,\n useCacheForDOMMeasurements: false\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (TextareaAutosize);\n\n/***/ }),\n\n/***/ 311:\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_upload_button__ = __webpack_require__(312);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_compose__ = __webpack_require__(17);\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n disabled: state.getIn(['compose', 'is_uploading']) || state.getIn(['compose', 'media_attachments']).size > 3 || state.getIn(['compose', 'media_attachments']).some(function (m) {\n return m.get('type') === 'video';\n }),\n resetFileKey: state.getIn(['compose', 'resetFileKey'])\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onSelectFile: function onSelectFile(files) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"Z\" /* uploadCompose */])(files));\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_upload_button__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 312:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return UploadButton; });\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__components_icon_button__ = __webpack_require__(23);\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/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes__);\n\n\n\n\n\nvar _dec, _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"f\" /* defineMessages */])({\n upload: {\n 'id': 'upload_button.label',\n 'defaultMessage': 'Add media'\n }\n});\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var mapStateToProps = function mapStateToProps(state) {\n return {\n acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types'])\n };\n };\n\n return mapStateToProps;\n};\n\nvar iconStyle = {\n height: null,\n lineHeight: '27px'\n};\n\nvar UploadButton = (_dec = Object(__WEBPACK_IMPORTED_MODULE_8_react_redux__[\"connect\"])(makeMapStateToProps), _dec(_class = Object(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(UploadButton, _ImmutablePureCompone);\n\n function UploadButton() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, UploadButton);\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.handleChange = function (e) {\n if (e.target.files.length > 0) {\n _this.props.onSelectFile(e.target.files);\n }\n }, _this.handleClick = function () {\n _this.fileElement.click();\n }, _this.setRef = function (c) {\n _this.fileElement = c;\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n UploadButton.prototype.render = function render() {\n var _props = this.props,\n intl = _props.intl,\n resetFileKey = _props.resetFileKey,\n disabled = _props.disabled,\n acceptContentTypes = _props.acceptContentTypes;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__upload-button'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__components_icon_button__[\"a\" /* default */], {\n icon: 'camera',\n title: intl.formatMessage(messages.upload),\n disabled: disabled,\n onClick: this.handleClick,\n className: 'compose-form__upload-button-icon',\n size: 18,\n inverted: true,\n style: iconStyle\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('label', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, intl.formatMessage(messages.upload)), __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement('input', {\n key: resetFileKey,\n ref: this.setRef,\n type: 'file',\n multiple: false,\n accept: acceptContentTypes.toArray().join(','),\n onChange: this.handleChange,\n disabled: disabled,\n style: { display: 'none' }\n })));\n };\n\n return UploadButton;\n}(__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component___default.a), _class2.propTypes = {\n disabled: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.bool,\n onSelectFile: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n style: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object,\n resetFileKey: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.number,\n acceptContentTypes: __WEBPACK_IMPORTED_MODULE_10_react_immutable_proptypes___default.a.listOf(__WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.string).isRequired,\n intl: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object.isRequired\n}, _temp2)) || _class) || _class);\n\n\n/***/ }),\n\n/***/ 313:\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__features_ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring__);\n\n\n\n\n\n\nvar Collapsable = function Collapsable(_ref) {\n var fullHeight = _ref.fullHeight,\n isVisible = _ref.isVisible,\n children = _ref.children;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_2__features_ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { opacity: !isVisible ? 0 : 100, height: isVisible ? fullHeight : 0 },\n style: { opacity: __WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring___default()(!isVisible ? 0 : 100), height: __WEBPACK_IMPORTED_MODULE_3_react_motion_lib_spring___default()(!isVisible ? 0 : fullHeight) }\n }, void 0, function (_ref2) {\n var opacity = _ref2.opacity,\n height = _ref2.height;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n style: { height: height + 'px', overflow: 'hidden', opacity: opacity / 100, display: Math.floor(opacity) === 0 ? 'none' : 'block' }\n }, void 0, children);\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Collapsable);\n\n/***/ }),\n\n/***/ 314:\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_text_icon_button__ = __webpack_require__(315);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_react_intl__ = __webpack_require__(7);\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_3_react_intl__[\"f\" /* defineMessages */])({\n marked: {\n 'id': 'compose_form.spoiler.marked',\n 'defaultMessage': 'Text is hidden behind warning'\n },\n unmarked: {\n 'id': 'compose_form.spoiler.unmarked',\n 'defaultMessage': 'Text is not hidden'\n }\n});\n\nvar mapStateToProps = function mapStateToProps(state, _ref) {\n var intl = _ref.intl;\n return {\n label: 'CW',\n title: intl.formatMessage(state.getIn(['compose', 'spoiler']) ? messages.marked : messages.unmarked),\n active: state.getIn(['compose', 'spoiler']),\n ariaControls: 'cw-spoiler-input'\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onClick: function onClick() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"I\" /* changeComposeSpoilerness */])());\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_3_react_intl__[\"g\" /* injectIntl */])(Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_text_icon_button__[\"a\" /* default */])));\n\n/***/ }),\n\n/***/ 315:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TextIconButton; });\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\n\n\n\n\n\nvar TextIconButton = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(TextIconButton, _React$PureComponent);\n\n function TextIconButton() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, TextIconButton);\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 (e) {\n e.preventDefault();\n _this.props.onClick();\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n TextIconButton.prototype.render = function render() {\n var _props = this.props,\n label = _props.label,\n title = _props.title,\n active = _props.active,\n ariaControls = _props.ariaControls;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n title: title,\n 'aria-label': title,\n className: 'text-icon-button ' + (active ? 'active' : ''),\n 'aria-expanded': active,\n onClick: this.handleClick,\n 'aria-controls': ariaControls\n }, void 0, label);\n };\n\n return TextIconButton;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 316:\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_privacy_dropdown__ = __webpack_require__(317);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__actions_modal__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__is_mobile__ = __webpack_require__(43);\n\n\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n isModalOpen: state.get('modal').modalType === 'ACTIONS',\n value: state.getIn(['compose', 'privacy'])\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onChange: function onChange(value) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"J\" /* changeComposeVisibility */])(value));\n },\n\n\n isUserTouching: __WEBPACK_IMPORTED_MODULE_4__is_mobile__[\"c\" /* isUserTouching */],\n onModalOpen: function onModalOpen(props) {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_modal__[\"d\" /* openModal */])('ACTIONS', props));\n },\n onModalClose: function onModalClose() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_modal__[\"c\" /* closeModal */])());\n }\n\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_privacy_dropdown__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 317:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return PrivacyDropdown; });\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__components_icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_detect_passive_events__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_detect_passive_events___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_detect_passive_events__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_classnames__);\n\n\n\n\n\nvar _class2;\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"f\" /* defineMessages */])({\n public_short: {\n 'id': 'privacy.public.short',\n 'defaultMessage': 'Public'\n },\n public_long: {\n 'id': 'privacy.public.long',\n 'defaultMessage': 'Post to public timelines'\n },\n unlisted_short: {\n 'id': 'privacy.unlisted.short',\n 'defaultMessage': 'Unlisted'\n },\n unlisted_long: {\n 'id': 'privacy.unlisted.long',\n 'defaultMessage': 'Do not show in public timelines'\n },\n private_short: {\n 'id': 'privacy.private.short',\n 'defaultMessage': 'Followers-only'\n },\n private_long: {\n 'id': 'privacy.private.long',\n 'defaultMessage': 'Post to followers only'\n },\n direct_short: {\n 'id': 'privacy.direct.short',\n 'defaultMessage': 'Direct'\n },\n direct_long: {\n 'id': 'privacy.direct.long',\n 'defaultMessage': 'Post to mentioned users only'\n },\n change_privacy: {\n 'id': 'privacy.change',\n 'defaultMessage': 'Adjust status privacy'\n }\n});\n\nvar listenerOptions = __WEBPACK_IMPORTED_MODULE_10_detect_passive_events___default.a.hasSupport ? { passive: true } : false;\n\nvar PrivacyDropdownMenu = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(PrivacyDropdownMenu, _React$PureComponent);\n\n function PrivacyDropdownMenu() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, PrivacyDropdownMenu);\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 mounted: false\n }, _this.handleDocumentClick = function (e) {\n if (_this.node && !_this.node.contains(e.target)) {\n _this.props.onClose();\n }\n }, _this.handleKeyDown = function (e) {\n var items = _this.props.items;\n\n var value = e.currentTarget.getAttribute('data-index');\n var index = items.findIndex(function (item) {\n return item.value === value;\n });\n var element = void 0;\n\n switch (e.key) {\n case 'Escape':\n _this.props.onClose();\n break;\n case 'Enter':\n _this.handleClick(e);\n break;\n case 'ArrowDown':\n element = _this.node.childNodes[index + 1];\n if (element) {\n element.focus();\n _this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'ArrowUp':\n element = _this.node.childNodes[index - 1];\n if (element) {\n element.focus();\n _this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'Home':\n element = _this.node.firstChild;\n if (element) {\n element.focus();\n _this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'End':\n element = _this.node.lastChild;\n if (element) {\n element.focus();\n _this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n }\n }, _this.handleClick = function (e) {\n var value = e.currentTarget.getAttribute('data-index');\n\n e.preventDefault();\n\n _this.props.onClose();\n _this.props.onChange(value);\n }, _this.setRef = function (c) {\n _this.node = c;\n }, _this.setFocusRef = function (c) {\n _this.focusedItem = c;\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n PrivacyDropdownMenu.prototype.componentDidMount = function componentDidMount() {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n if (this.focusedItem) this.focusedItem.focus();\n this.setState({ mounted: true });\n };\n\n PrivacyDropdownMenu.prototype.componentWillUnmount = function componentWillUnmount() {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n };\n\n PrivacyDropdownMenu.prototype.render = function render() {\n var _this2 = this;\n\n var mounted = this.state.mounted;\n var _props = this.props,\n style = _props.style,\n items = _props.items,\n value = _props.value;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { opacity: 0, scaleX: 0.85, scaleY: 0.75 },\n style: { opacity: __WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleX: __WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleY: __WEBPACK_IMPORTED_MODULE_9_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }) }\n }, void 0, function (_ref) {\n var opacity = _ref.opacity,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY;\n return (\n // It should not be transformed when mounting because the resulting\n // size will be used to determine the coordinate of the menu by\n // react-overlays\n __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { className: 'privacy-dropdown__dropdown', style: Object.assign({}, style, { opacity: opacity, transform: mounted ? 'scale(' + scaleX + ', ' + scaleY + ')' : null }), role: 'listbox', ref: _this2.setRef },\n items.map(function (item) {\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { role: 'option', tabIndex: '0', key: item.value, 'data-index': item.value, onKeyDown: _this2.handleKeyDown, onClick: _this2.handleClick, className: __WEBPACK_IMPORTED_MODULE_11_classnames___default()('privacy-dropdown__option', { active: item.value === value }), 'aria-selected': item.value === value, ref: item.value === value ? _this2.setFocusRef : null },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'privacy-dropdown__option__icon'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-fw fa-' + item.icon\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'privacy-dropdown__option__content'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {}, void 0, item.text), item.meta)\n );\n })\n )\n );\n });\n };\n\n return PrivacyDropdownMenu;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\nvar PrivacyDropdown = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"g\" /* injectIntl */])(_class2 = function (_React$PureComponent2) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(PrivacyDropdown, _React$PureComponent2);\n\n function PrivacyDropdown() {\n var _temp2, _this3, _ret2;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, PrivacyDropdown);\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 = (_temp2 = (_this3 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent2.call.apply(_React$PureComponent2, [this].concat(args))), _this3), _this3.state = {\n open: false,\n placement: null\n }, _this3.handleToggle = function (_ref2) {\n var target = _ref2.target;\n\n if (_this3.props.isUserTouching()) {\n if (_this3.state.open) {\n _this3.props.onModalClose();\n } else {\n _this3.props.onModalOpen({\n actions: _this3.options.map(function (option) {\n return Object.assign({}, option, { active: option.value === _this3.props.value });\n }),\n onClick: _this3.handleModalActionClick\n });\n }\n } else {\n var _target$getBoundingCl = target.getBoundingClientRect(),\n top = _target$getBoundingCl.top;\n\n _this3.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n _this3.setState({ open: !_this3.state.open });\n }\n }, _this3.handleModalActionClick = function (e) {\n e.preventDefault();\n\n var value = _this3.options[e.currentTarget.getAttribute('data-index')].value;\n\n _this3.props.onModalClose();\n _this3.props.onChange(value);\n }, _this3.handleKeyDown = function (e) {\n switch (e.key) {\n case 'Escape':\n _this3.handleClose();\n break;\n }\n }, _this3.handleClose = function () {\n _this3.setState({ open: false });\n }, _this3.handleChange = function (value) {\n _this3.props.onChange(value);\n }, _temp2), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this3, _ret2);\n }\n\n PrivacyDropdown.prototype.componentWillMount = function componentWillMount() {\n var formatMessage = this.props.intl.formatMessage;\n\n\n this.options = [{ icon: 'globe', value: 'public', text: formatMessage(messages.public_short), meta: formatMessage(messages.public_long) }, { icon: 'unlock-alt', value: 'unlisted', text: formatMessage(messages.unlisted_short), meta: formatMessage(messages.unlisted_long) }, { icon: 'lock', value: 'private', text: formatMessage(messages.private_short), meta: formatMessage(messages.private_long) }, { icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) }];\n };\n\n PrivacyDropdown.prototype.render = function render() {\n var _props2 = this.props,\n value = _props2.value,\n intl = _props2.intl;\n var _state = this.state,\n open = _state.open,\n placement = _state.placement;\n\n\n var valueOption = this.options.find(function (item) {\n return item.value === value;\n });\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_11_classnames___default()('privacy-dropdown', { active: open }),\n onKeyDown: this.handleKeyDown\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_11_classnames___default()('privacy-dropdown__value', { active: this.options.indexOf(valueOption) === 0 })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__components_icon_button__[\"a\" /* default */], {\n className: 'privacy-dropdown__value-icon',\n icon: valueOption.icon,\n title: intl.formatMessage(messages.change_privacy),\n size: 18,\n expanded: open,\n active: open,\n inverted: true,\n onClick: this.handleToggle,\n style: { height: null, lineHeight: '27px' }\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay___default.a, {\n show: open,\n placement: placement,\n target: this\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(PrivacyDropdownMenu, {\n items: this.options,\n value: value,\n onClose: this.handleClose,\n onChange: this.handleChange\n })));\n };\n\n return PrivacyDropdown;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent)) || _class2;\n\n\n\n/***/ }),\n\n/***/ 318:\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_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_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_classnames__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__components_icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_intl__ = __webpack_require__(7);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"f\" /* defineMessages */])({\n marked: {\n 'id': 'compose_form.sensitive.marked',\n 'defaultMessage': 'Media is marked as sensitive'\n },\n unmarked: {\n 'id': 'compose_form.sensitive.unmarked',\n 'defaultMessage': 'Media is not marked as sensitive'\n }\n});\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n visible: state.getIn(['compose', 'media_attachments']).size > 0,\n active: state.getIn(['compose', 'sensitive']),\n disabled: state.getIn(['compose', 'spoiler'])\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onClick: function onClick() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_compose__[\"G\" /* changeComposeSensitivity */])());\n }\n };\n};\n\nvar SensitiveButton = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(SensitiveButton, _React$PureComponent);\n\n function SensitiveButton() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, SensitiveButton);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n SensitiveButton.prototype.render = function render() {\n var _props = this.props,\n visible = _props.visible,\n active = _props.active,\n disabled = _props.disabled,\n onClick = _props.onClick,\n intl = _props.intl;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { scale: 0.87 },\n style: { scale: __WEBPACK_IMPORTED_MODULE_10_react_motion_lib_spring___default()(visible ? 1 : 0.87, { stiffness: 200, damping: 3 }) }\n }, void 0, function (_ref) {\n var scale = _ref.scale;\n\n var icon = active ? 'eye-slash' : 'eye';\n var className = __WEBPACK_IMPORTED_MODULE_6_classnames___default()('compose-form__sensitive-button', {\n 'compose-form__sensitive-button--visible': visible\n });\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: className,\n style: { transform: 'scale(' + scale + ')' }\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__components_icon_button__[\"a\" /* default */], {\n className: 'compose-form__sensitive-button__icon',\n title: intl.formatMessage(active ? messages.marked : messages.unmarked),\n icon: icon,\n onClick: onClick,\n size: 18,\n active: active,\n disabled: disabled,\n style: { lineHeight: null, height: null },\n inverted: true\n }));\n });\n };\n\n return SensitiveButton;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_5_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"g\" /* injectIntl */])(SensitiveButton)));\n\n/***/ }),\n\n/***/ 319:\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_emoji_picker_dropdown__ = __webpack_require__(320);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_settings__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_reselect__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_reselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_reselect__);\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__actions_emojis__ = __webpack_require__(102);\n\n\n\n\n\n\n\nvar perLine = 8;\nvar lines = 2;\n\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'yum', 'disappointed', 'thinking_face', 'weary', 'sob', 'sunglasses', 'heart', 'ok_hand'];\n\nvar getFrequentlyUsedEmojis = Object(__WEBPACK_IMPORTED_MODULE_3_reselect__[\"createSelector\"])([function (state) {\n return state.getIn(['settings', 'frequentlyUsedEmojis'], Object(__WEBPACK_IMPORTED_MODULE_4_immutable__[\"Map\"])());\n}], function (emojiCounters) {\n var emojis = emojiCounters.keySeq().sort(function (a, b) {\n return emojiCounters.get(a) - emojiCounters.get(b);\n }).reverse().slice(0, perLine * lines).toArray();\n\n if (emojis.length < DEFAULTS.length) {\n var uniqueDefaults = DEFAULTS.filter(function (emoji) {\n return !emojis.includes(emoji);\n });\n emojis = emojis.concat(uniqueDefaults.slice(0, DEFAULTS.length - emojis.length));\n }\n\n return emojis;\n});\n\nvar getCustomEmojis = Object(__WEBPACK_IMPORTED_MODULE_3_reselect__[\"createSelector\"])([function (state) {\n return state.get('custom_emojis');\n}], function (emojis) {\n return emojis.filter(function (e) {\n return e.get('visible_in_picker');\n }).sort(function (a, b) {\n var aShort = a.get('shortcode').toLowerCase();\n var bShort = b.get('shortcode').toLowerCase();\n\n if (aShort < bShort) {\n return -1;\n } else if (aShort > bShort) {\n return 1;\n } else {\n return 0;\n }\n });\n});\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n custom_emojis: getCustomEmojis(state),\n skinTone: state.getIn(['settings', 'skinTone']),\n frequentlyUsedEmojis: getFrequentlyUsedEmojis(state)\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, _ref) {\n var _onPickEmoji = _ref.onPickEmoji;\n return {\n onSkinTone: function onSkinTone(skinTone) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_settings__[\"c\" /* changeSetting */])(['skinTone'], skinTone));\n },\n\n onPickEmoji: function onPickEmoji(emoji) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_5__actions_emojis__[\"b\" /* useEmoji */])(emoji));\n\n if (_onPickEmoji) {\n _onPickEmoji(emoji);\n }\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_emoji_picker_dropdown__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 320:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return EmojiPickerDropdown; });\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__ui_util_async_components__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay__);\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_detect_passive_events__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_detect_passive_events___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_detect_passive_events__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__emoji_emoji__ = __webpack_require__(73);\n\n\n\n\n\nvar _class3, _class4, _temp4, _class5;\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"f\" /* defineMessages */])({\n emoji: {\n 'id': 'emoji_button.label',\n 'defaultMessage': 'Insert emoji'\n },\n emoji_search: {\n 'id': 'emoji_button.search',\n 'defaultMessage': 'Search...'\n },\n emoji_not_found: {\n 'id': 'emoji_button.not_found',\n 'defaultMessage': 'No emojos!! (\\u256F\\xB0\\u25A1\\xB0\\uFF09\\u256F\\uFE35 \\u253B\\u2501\\u253B'\n },\n custom: {\n 'id': 'emoji_button.custom',\n 'defaultMessage': 'Custom'\n },\n recent: {\n 'id': 'emoji_button.recent',\n 'defaultMessage': 'Frequently used'\n },\n search_results: {\n 'id': 'emoji_button.search_results',\n 'defaultMessage': 'Search results'\n },\n people: {\n 'id': 'emoji_button.people',\n 'defaultMessage': 'People'\n },\n nature: {\n 'id': 'emoji_button.nature',\n 'defaultMessage': 'Nature'\n },\n food: {\n 'id': 'emoji_button.food',\n 'defaultMessage': 'Food & Drink'\n },\n activity: {\n 'id': 'emoji_button.activity',\n 'defaultMessage': 'Activity'\n },\n travel: {\n 'id': 'emoji_button.travel',\n 'defaultMessage': 'Travel & Places'\n },\n objects: {\n 'id': 'emoji_button.objects',\n 'defaultMessage': 'Objects'\n },\n symbols: {\n 'id': 'emoji_button.symbols',\n 'defaultMessage': 'Symbols'\n },\n flags: {\n 'id': 'emoji_button.flags',\n 'defaultMessage': 'Flags'\n }\n});\n\nvar assetHost = process.env.CDN_HOST || '';\nvar EmojiPicker = void 0,\n Emoji = void 0; // load asynchronously\n\nvar backgroundImageFn = function backgroundImageFn() {\n return assetHost + '/emoji/sheet.png';\n};\nvar listenerOptions = __WEBPACK_IMPORTED_MODULE_9_detect_passive_events___default.a.hasSupport ? { passive: true } : false;\n\nvar categoriesSort = ['recent', 'custom', 'people', 'nature', 'foods', 'activity', 'places', 'objects', 'symbols', 'flags'];\n\nvar ModifierPickerMenu = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ModifierPickerMenu, _React$PureComponent);\n\n function ModifierPickerMenu() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ModifierPickerMenu);\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 (e) {\n _this.props.onSelect(e.currentTarget.getAttribute('data-index') * 1);\n }, _this.handleDocumentClick = function (e) {\n if (_this.node && !_this.node.contains(e.target)) {\n _this.props.onClose();\n }\n }, _this.setRef = function (c) {\n _this.node = c;\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n ModifierPickerMenu.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (nextProps.active) {\n this.attachListeners();\n } else {\n this.removeListeners();\n }\n };\n\n ModifierPickerMenu.prototype.componentWillUnmount = function componentWillUnmount() {\n this.removeListeners();\n };\n\n ModifierPickerMenu.prototype.attachListeners = function attachListeners() {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n };\n\n ModifierPickerMenu.prototype.removeListeners = function removeListeners() {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n };\n\n ModifierPickerMenu.prototype.render = function render() {\n var active = this.props.active;\n\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { className: 'emoji-picker-dropdown__modifiers__menu', style: { display: active ? 'block' : 'none' }, ref: this.setRef },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 1\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 1,\n backgroundImageFn: backgroundImageFn\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 2\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 2,\n backgroundImageFn: backgroundImageFn\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 3\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 3,\n backgroundImageFn: backgroundImageFn\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 4\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 4,\n backgroundImageFn: backgroundImageFn\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 5\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 5,\n backgroundImageFn: backgroundImageFn\n })),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n onClick: this.handleClick,\n 'data-index': 6\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: 6,\n backgroundImageFn: backgroundImageFn\n }))\n );\n };\n\n return ModifierPickerMenu;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\nvar ModifierPicker = function (_React$PureComponent2) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(ModifierPicker, _React$PureComponent2);\n\n function ModifierPicker() {\n var _temp2, _this2, _ret2;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, ModifierPicker);\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 = (_temp2 = (_this2 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent2.call.apply(_React$PureComponent2, [this].concat(args))), _this2), _this2.handleClick = function () {\n if (_this2.props.active) {\n _this2.props.onClose();\n } else {\n _this2.props.onOpen();\n }\n }, _this2.handleSelect = function (modifier) {\n _this2.props.onChange(modifier);\n _this2.props.onClose();\n }, _temp2), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this2, _ret2);\n }\n\n ModifierPicker.prototype.render = function render() {\n var _props = this.props,\n active = _props.active,\n modifier = _props.modifier;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'emoji-picker-dropdown__modifiers'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(Emoji, {\n emoji: 'fist',\n set: 'twitter',\n size: 22,\n sheetSize: 32,\n skin: modifier,\n onClick: this.handleClick,\n backgroundImageFn: backgroundImageFn\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(ModifierPickerMenu, {\n active: active,\n onSelect: this.handleSelect,\n onClose: this.props.onClose\n }));\n };\n\n return ModifierPicker;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\nvar EmojiPickerMenu = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"g\" /* injectIntl */])(_class3 = (_temp4 = _class4 = function (_React$PureComponent3) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(EmojiPickerMenu, _React$PureComponent3);\n\n function EmojiPickerMenu() {\n var _temp3, _this3, _ret3;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, EmojiPickerMenu);\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _ret3 = (_temp3 = (_this3 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent3.call.apply(_React$PureComponent3, [this].concat(args))), _this3), _this3.state = {\n modifierOpen: false,\n placement: null\n }, _this3.handleDocumentClick = function (e) {\n if (_this3.node && !_this3.node.contains(e.target)) {\n _this3.props.onClose();\n }\n }, _this3.setRef = function (c) {\n _this3.node = c;\n }, _this3.getI18n = function () {\n var intl = _this3.props.intl;\n\n\n return {\n search: intl.formatMessage(messages.emoji_search),\n notfound: intl.formatMessage(messages.emoji_not_found),\n categories: {\n search: intl.formatMessage(messages.search_results),\n recent: intl.formatMessage(messages.recent),\n people: intl.formatMessage(messages.people),\n nature: intl.formatMessage(messages.nature),\n foods: intl.formatMessage(messages.food),\n activity: intl.formatMessage(messages.activity),\n places: intl.formatMessage(messages.travel),\n objects: intl.formatMessage(messages.objects),\n symbols: intl.formatMessage(messages.symbols),\n flags: intl.formatMessage(messages.flags),\n custom: intl.formatMessage(messages.custom)\n }\n };\n }, _this3.handleClick = function (emoji) {\n if (!emoji.native) {\n emoji.native = emoji.colons;\n }\n\n _this3.props.onClose();\n _this3.props.onPick(emoji);\n }, _this3.handleModifierOpen = function () {\n _this3.setState({ modifierOpen: true });\n }, _this3.handleModifierClose = function () {\n _this3.setState({ modifierOpen: false });\n }, _this3.handleModifierChange = function (modifier) {\n _this3.props.onSkinTone(modifier);\n }, _temp3), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this3, _ret3);\n }\n\n EmojiPickerMenu.prototype.componentDidMount = function componentDidMount() {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n };\n\n EmojiPickerMenu.prototype.componentWillUnmount = function componentWillUnmount() {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n };\n\n EmojiPickerMenu.prototype.render = function render() {\n var _props2 = this.props,\n loading = _props2.loading,\n style = _props2.style,\n intl = _props2.intl,\n custom_emojis = _props2.custom_emojis,\n skinTone = _props2.skinTone,\n frequentlyUsedEmojis = _props2.frequentlyUsedEmojis;\n\n\n if (loading) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n style: { width: 299 }\n });\n }\n\n var title = intl.formatMessage(messages.emoji);\n var modifierOpen = this.state.modifierOpen;\n\n\n return __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { className: __WEBPACK_IMPORTED_MODULE_8_classnames___default()('emoji-picker-dropdown__menu', { selecting: modifierOpen }), style: style, ref: this.setRef },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(EmojiPicker, {\n perLine: 8,\n emojiSize: 22,\n sheetSize: 32,\n custom: Object(__WEBPACK_IMPORTED_MODULE_10__emoji_emoji__[\"buildCustomEmojis\"])(custom_emojis),\n color: '',\n emoji: '',\n set: 'twitter',\n title: title,\n i18n: this.getI18n(),\n onClick: this.handleClick,\n include: categoriesSort,\n recent: frequentlyUsedEmojis,\n skin: skinTone,\n showPreview: false,\n backgroundImageFn: backgroundImageFn,\n emojiTooltip: true\n }),\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(ModifierPicker, {\n active: modifierOpen,\n modifier: skinTone,\n onOpen: this.handleModifierOpen,\n onClose: this.handleModifierClose,\n onChange: this.handleModifierChange\n })\n );\n };\n\n return EmojiPickerMenu;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent), _class4.defaultProps = {\n style: {},\n loading: true,\n frequentlyUsedEmojis: []\n}, _temp4)) || _class3;\n\nvar EmojiPickerDropdown = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"g\" /* injectIntl */])(_class5 = function (_React$PureComponent4) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(EmojiPickerDropdown, _React$PureComponent4);\n\n function EmojiPickerDropdown() {\n var _temp5, _this4, _ret4;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, EmojiPickerDropdown);\n\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _ret4 = (_temp5 = (_this4 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent4.call.apply(_React$PureComponent4, [this].concat(args))), _this4), _this4.state = {\n active: false,\n loading: false\n }, _this4.setRef = function (c) {\n _this4.dropdown = c;\n }, _this4.onShowDropdown = function (_ref) {\n var target = _ref.target;\n\n _this4.setState({ active: true });\n\n if (!EmojiPicker) {\n _this4.setState({ loading: true });\n\n Object(__WEBPACK_IMPORTED_MODULE_6__ui_util_async_components__[\"i\" /* EmojiPicker */])().then(function (EmojiMart) {\n EmojiPicker = EmojiMart.Picker;\n Emoji = EmojiMart.Emoji;\n\n _this4.setState({ loading: false });\n }).catch(function () {\n _this4.setState({ loading: false });\n });\n }\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n top = _target$getBoundingCl.top;\n\n _this4.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n }, _this4.onHideDropdown = function () {\n _this4.setState({ active: false });\n }, _this4.onToggle = function (e) {\n if (!_this4.state.loading && (!e.key || e.key === 'Enter')) {\n if (_this4.state.active) {\n _this4.onHideDropdown();\n } else {\n _this4.onShowDropdown(e);\n }\n }\n }, _this4.handleKeyDown = function (e) {\n if (e.key === 'Escape') {\n _this4.onHideDropdown();\n }\n }, _this4.setTargetRef = function (c) {\n _this4.target = c;\n }, _this4.findTarget = function () {\n return _this4.target;\n }, _temp5), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this4, _ret4);\n }\n\n EmojiPickerDropdown.prototype.render = function render() {\n var _props3 = this.props,\n intl = _props3.intl,\n onPickEmoji = _props3.onPickEmoji,\n onSkinTone = _props3.onSkinTone,\n skinTone = _props3.skinTone,\n frequentlyUsedEmojis = _props3.frequentlyUsedEmojis;\n\n var title = intl.formatMessage(messages.emoji);\n var _state = this.state,\n active = _state.active,\n loading = _state.loading,\n placement = _state.placement;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'emoji-picker-dropdown',\n onKeyDown: this.handleKeyDown\n }, void 0, __WEBPACK_IMPORTED_MODULE_4_react___default.a.createElement(\n 'div',\n { ref: this.setTargetRef, className: 'emoji-button', title: title, 'aria-label': title, 'aria-expanded': active, role: 'button', onClick: this.onToggle, onKeyDown: this.onToggle, tabIndex: 0 },\n __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('img', {\n className: __WEBPACK_IMPORTED_MODULE_8_classnames___default()('emojione', { 'pulse-loading': active && loading }),\n alt: '\\uD83D\\uDE42',\n src: assetHost + '/emoji/1f602.svg'\n })\n ), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_overlays_lib_Overlay___default.a, {\n show: active,\n placement: placement,\n target: this.findTarget\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(EmojiPickerMenu, {\n custom_emojis: this.props.custom_emojis,\n loading: loading,\n onClose: this.onHideDropdown,\n onPick: onPickEmoji,\n onSkinTone: onSkinTone,\n skinTone: skinTone,\n frequentlyUsedEmojis: frequentlyUsedEmojis\n })));\n };\n\n return EmojiPickerDropdown;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent)) || _class5;\n\n\n/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(35)))\n\n/***/ }),\n\n/***/ 321:\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_upload_form__ = __webpack_require__(322);\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n mediaIds: state.getIn(['compose', 'media_attachments']).map(function (item) {\n return item.get('id');\n })\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_upload_form__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 322:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return UploadForm; });\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_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__containers_upload_progress_container__ = __webpack_require__(323);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__containers_upload_container__ = __webpack_require__(325);\n\n\n\n\n\nvar _class, _temp;\n\n\n\n\n\n\n\nvar UploadForm = (_temp = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(UploadForm, _ImmutablePureCompone);\n\n function UploadForm() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, UploadForm);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.apply(this, arguments));\n }\n\n UploadForm.prototype.render = function render() {\n var mediaIds = this.props.mediaIds;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__upload-wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__containers_upload_progress_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__uploads-wrapper'\n }, void 0, mediaIds.map(function (id) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__containers_upload_container__[\"a\" /* default */], {\n id: id\n }, id);\n })));\n };\n\n return UploadForm;\n}(__WEBPACK_IMPORTED_MODULE_7_react_immutable_pure_component___default.a), _class.propTypes = {\n mediaIds: __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default.a.list.isRequired\n}, _temp);\n\n\n/***/ }),\n\n/***/ 323:\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_upload_progress__ = __webpack_require__(324);\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n active: state.getIn(['compose', 'is_uploading']),\n progress: state.getIn(['compose', 'progress'])\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_upload_progress__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 324:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return UploadProgress; });\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__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_intl__ = __webpack_require__(7);\n\n\n\n\n\n\n\n\n\n\nvar UploadProgress = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(UploadProgress, _React$PureComponent);\n\n function UploadProgress() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, UploadProgress);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n UploadProgress.prototype.render = function render() {\n var _props = this.props,\n active = _props.active,\n progress = _props.progress;\n\n\n if (!active) {\n return null;\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'upload-progress'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'upload-progress__icon'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-upload'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'upload-progress__message'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'upload_progress.label',\n defaultMessage: 'Uploading...'\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'upload-progress__backdrop'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { width: 0 },\n style: { width: __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default()(progress) }\n }, void 0, function (_ref) {\n var width = _ref.width;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'upload-progress__tracker',\n style: { width: width + '%' }\n });\n }))));\n };\n\n return UploadProgress;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 325:\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_upload__ = __webpack_require__(326);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__actions_modal__ = __webpack_require__(26);\n\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state, _ref) {\n var id = _ref.id;\n return {\n media: state.getIn(['compose', 'media_attachments']).find(function (item) {\n return item.get('id') === id;\n })\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n\n onUndo: function onUndo(id) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"X\" /* undoUploadCompose */])(id));\n },\n\n onDescriptionChange: function onDescriptionChange(id, description) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"L\" /* changeUploadCompose */])(id, { description: description }));\n },\n\n onOpenFocalPoint: function onOpenFocalPoint(id) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_3__actions_modal__[\"d\" /* openModal */])('FOCAL_POINT', { id: id }));\n }\n\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_upload__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 326:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Upload; });\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_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__);\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/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_classnames__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_classnames___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_classnames__);\n\n\n\n\n\nvar _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"f\" /* defineMessages */])({\n description: {\n 'id': 'upload_form.description',\n 'defaultMessage': 'Describe for the visually impaired'\n }\n});\n\nvar Upload = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Upload, _ImmutablePureCompone);\n\n function Upload() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Upload);\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 hovered: false,\n focused: false,\n dirtyDescription: null\n }, _this.handleUndoClick = function () {\n _this.props.onUndo(_this.props.media.get('id'));\n }, _this.handleFocalPointClick = function () {\n _this.props.onOpenFocalPoint(_this.props.media.get('id'));\n }, _this.handleInputChange = function (e) {\n _this.setState({ dirtyDescription: e.target.value });\n }, _this.handleMouseEnter = function () {\n _this.setState({ hovered: true });\n }, _this.handleMouseLeave = function () {\n _this.setState({ hovered: false });\n }, _this.handleInputFocus = function () {\n _this.setState({ focused: true });\n }, _this.handleInputBlur = function () {\n var dirtyDescription = _this.state.dirtyDescription;\n\n\n _this.setState({ focused: false, dirtyDescription: null });\n\n if (dirtyDescription !== null) {\n _this.props.onDescriptionChange(_this.props.media.get('id'), dirtyDescription);\n }\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Upload.prototype.render = function render() {\n var _this2 = this;\n\n var _props = this.props,\n intl = _props.intl,\n media = _props.media;\n\n var active = this.state.hovered || this.state.focused;\n var description = this.state.dirtyDescription || this.state.dirtyDescription !== '' && media.get('description') || '';\n var focusX = media.getIn(['meta', 'focus', 'x']);\n var focusY = media.getIn(['meta', 'focus', 'y']);\n var x = (focusX / 2 + .5) * 100;\n var y = (focusY / -2 + .5) * 100;\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__upload',\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { scale: 0.8 },\n style: { scale: __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default()(1, { stiffness: 180, damping: 12 }) }\n }, void 0, function (_ref) {\n var scale = _ref.scale;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__upload-thumbnail',\n style: { transform: 'scale(' + scale + ')', backgroundImage: 'url(' + media.get('preview_url') + ')', backgroundPosition: x + '% ' + y + '%' }\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_11_classnames___default()('compose-form__upload__actions', { active: active })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n className: 'icon-button',\n onClick: _this2.handleUndoClick\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-times'\n }), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'upload_form.undo',\n defaultMessage: 'Delete'\n })), media.get('type') === 'image' && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('button', {\n className: 'icon-button',\n onClick: _this2.handleFocalPointClick\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-crosshairs'\n }), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'upload_form.focus',\n defaultMessage: 'Crop'\n }))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: __WEBPACK_IMPORTED_MODULE_11_classnames___default()('compose-form__upload-description', { active: active })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('label', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, intl.formatMessage(messages.description)), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('input', {\n placeholder: intl.formatMessage(messages.description),\n type: 'text',\n value: description,\n maxLength: 420,\n onFocus: _this2.handleInputFocus,\n onChange: _this2.handleInputChange,\n onBlur: _this2.handleInputBlur\n }))));\n }));\n };\n\n return Upload;\n}(__WEBPACK_IMPORTED_MODULE_9_react_immutable_pure_component___default.a), _class2.propTypes = {\n media: __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default.a.map.isRequired,\n intl: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object.isRequired,\n onUndo: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n onDescriptionChange: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n onOpenFocalPoint: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired\n}, _temp2)) || _class;\n\n\n\n/***/ }),\n\n/***/ 327:\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_warning__ = __webpack_require__(328);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__initial_state__ = __webpack_require__(13);\n\n\n\n\n\n\n\n\nvar APPROX_HASHTAG_RE = /(?:^|[^\\/\\)\\w])#(\\w*[a-zA-Z·]\\w*)/i;\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', __WEBPACK_IMPORTED_MODULE_5__initial_state__[\"g\" /* me */], 'locked']),\n hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),\n directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct'\n };\n};\n\nvar WarningWrapper = function WarningWrapper(_ref) {\n var needsLockWarning = _ref.needsLockWarning,\n hashtagWarning = _ref.hashtagWarning,\n directMessageWarning = _ref.directMessageWarning;\n\n if (needsLockWarning) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_3__components_warning__[\"a\" /* default */], {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'compose_form.lock_disclaimer',\n defaultMessage: 'Your account is not {locked}. Anyone can follow you to view your follower-only posts.',\n values: { locked: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: '/user-settings'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'compose_form.lock_disclaimer.lock',\n defaultMessage: 'locked'\n })) }\n })\n });\n }\n\n if (hashtagWarning) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_3__components_warning__[\"a\" /* default */], {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'compose_form.hashtag_warning',\n defaultMessage: 'This toot won\\'t be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.'\n })\n });\n }\n\n if (directMessageWarning) {\n var message = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'compose_form.direct_message_warning',\n defaultMessage: 'This toot will only be sent to all the mentioned users.'\n }), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: '/terms',\n target: '_blank'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'compose_form.direct_message_warning_learn_more',\n defaultMessage: 'Learn more'\n })));\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_3__components_warning__[\"a\" /* default */], {\n message: message\n });\n }\n\n return null;\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"connect\"])(mapStateToProps)(WarningWrapper));\n\n/***/ }),\n\n/***/ 328:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Warning; });\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__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring__);\n\n\n\n\n\n\n\n\n\nvar Warning = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Warning, _React$PureComponent);\n\n function Warning() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Warning);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n Warning.prototype.render = function render() {\n var message = this.props.message;\n\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { opacity: 0, scaleX: 0.85, scaleY: 0.75 },\n style: { opacity: __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleX: __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleY: __WEBPACK_IMPORTED_MODULE_6_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }) }\n }, void 0, function (_ref) {\n var opacity = _ref.opacity,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'compose-form__warning',\n style: { opacity: opacity, transform: 'scale(' + scaleX + ', ' + scaleY + ')' }\n }, void 0, message);\n });\n };\n\n return Warning;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\n\n\n/***/ }),\n\n/***/ 329:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = countableText;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__url_regex__ = __webpack_require__(330);\n\n\nvar urlPlaceholder = 'xxxxxxxxxxxxxxxxxxxxxxx';\n\nfunction countableText(inputText) {\n return inputText;\n};\n\n/***/ }),\n\n/***/ 330:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export urlRegex */\nvar regexen = {};\n\nvar regexSupplant = function regexSupplant(regex, flags) {\n flags = flags || '';\n if (typeof regex !== 'string') {\n if (regex.global && flags.indexOf('g') < 0) {\n flags += 'g';\n }\n if (regex.ignoreCase && flags.indexOf('i') < 0) {\n flags += 'i';\n }\n if (regex.multiline && flags.indexOf('m') < 0) {\n flags += 'm';\n }\n\n regex = regex.source;\n }\n return new RegExp(regex.replace(/#\\{(\\w+)\\}/g, function (match, name) {\n var newRegex = regexen[name] || '';\n if (typeof newRegex !== 'string') {\n newRegex = newRegex.source;\n }\n return newRegex;\n }), flags);\n};\n\nvar stringSupplant = function stringSupplant(str, values) {\n return str.replace(/#\\{(\\w+)\\}/g, function (match, name) {\n return values[name] || '';\n });\n};\n\nvar urlRegex = function () {\n regexen.spaces_group = /\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000/;\n regexen.invalid_chars_group = /\\uFFFE\\uFEFF\\uFFFF\\u202A-\\u202E/;\n regexen.punct = /\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$/;\n regexen.validUrlPrecedingChars = regexSupplant(/(?:[^A-Za-z0-9@@$###{invalid_chars_group}]|^)/);\n regexen.invalidDomainChars = stringSupplant('#{punct}#{spaces_group}#{invalid_chars_group}', regexen);\n regexen.validDomainChars = regexSupplant(/[^#{invalidDomainChars}]/);\n regexen.validSubdomain = regexSupplant(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\\.)/);\n regexen.validDomainName = regexSupplant(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\\.)/);\n regexen.validGTLD = regexSupplant(RegExp('(?:(?:' + '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|政府|' + '政务|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|中文网|中信|世界|' + 'ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|كاثوليك|عرب|شبكة|' + 'بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|католик|дети|' + 'zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|yandex|yamaxun|' + 'yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|works|work|woodside|' + 'wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|weir|weibo|wedding|wed|' + 'website|weber|webcam|weatherchannel|weather|watches|watch|warman|wanggou|wang|walter|walmart|' + 'wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|vlaanderen|vivo|viva|vistaprint|' + 'vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|viajes|vet|versicherung|' + 'vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|vana|vacations|ups|uol|uno|' + 'university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|trust|travelersinsurance|' + 'travelers|travelchannel|travel|training|trading|trade|toys|toyota|town|tours|total|toshiba|' + 'toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|tiffany|tienda|tickets|' + 'tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|technology|tech|team|tdk|' + 'tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|systems|symantec|sydney|' + 'swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|sucks|style|study|studio|' + 'stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|statebank|starhub|star|staples|' + 'stada|srt|srl|spreadbetting|spot|spiegel|space|soy|sony|song|solutions|solar|sohu|software|' + 'softbank|social|soccer|sncf|smile|smart|sling|skype|sky|skin|ski|site|singles|sina|silk|shriram|' + 'showtime|show|shouji|shopping|shop|shoes|shiksha|shia|shell|shaw|sharp|shangrila|sfr|sexy|sex|' + 'sew|seven|ses|services|sener|select|seek|security|secure|seat|search|scot|scor|scjohnson|' + 'science|schwarz|schule|school|scholarships|schmidt|schaeffler|scb|sca|sbs|sbi|saxo|save|sas|' + 'sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|samsclub|salon|sale|sakura|safety|safe|' + 'saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|rodeo|rocks|rocher|rmit|rip|rio|ril|' + 'rightathome|ricoh|richardli|rich|rexroth|reviews|review|restaurant|rest|republican|report|' + 'repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|redumbrella|redstone|red|recipes|' + 'realty|realtor|realestate|read|raid|radio|racing|qvc|quest|quebec|qpon|pwc|pub|prudential|pru|' + 'protection|property|properties|promo|progressive|prof|productions|prod|pro|prime|press|praxi|' + 'pramerica|post|porn|politie|poker|pohl|pnc|plus|plumbing|playstation|play|place|pizza|pioneer|' + 'pink|ping|pin|pid|pictures|pictet|pics|piaget|physio|photos|photography|photo|phone|philips|phd|' + 'pharmacy|pfizer|pet|pccw|pay|passagens|party|parts|partners|pars|paris|panerai|panasonic|' + 'pamperedchef|page|ovh|ott|otsuka|osaka|origins|orientexpress|organic|org|orange|oracle|open|ooo|' + 'onyourside|online|onl|ong|one|omega|ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|' + 'obi|nyc|ntt|nrw|nra|nowtv|nowruz|now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|' + 'nike|nico|nhk|ngo|nfl|nexus|nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|' + 'net|nec|nba|navy|natura|nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|' + 'msd|movistar|movie|mov|motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|' + 'monash|mom|moi|moe|moda|mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|' + 'miami|metlife|merckmsd|meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|' + 'mcd|mba|mattel|maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|' + 'makeup|maison|maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|' + 'lotte|london|lol|loft|locus|locker|loans|loan|lixil|living|live|lipsy|link|linde|lincoln|limo|' + 'limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|legal|' + 'lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|lancome|' + 'lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|kpmg|kosher|' + 'komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|kerrylogistics|kerryhotels|' + 'kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|jmp|jll|jlc|jio|jewelry|jetzt|' + 'jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|ismaili|iselect|irish|ipiranga|' + 'investments|intuit|international|intel|int|insure|insurance|institute|ink|ing|info|infiniti|' + 'industries|immobilien|immo|imdb|imamat|ikano|iinet|ifm|ieee|icu|ice|icbc|ibm|hyundai|hyatt|' + 'hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|hosting|host|hospital|horse|honeywell|' + 'honda|homesense|homes|homegoods|homedepot|holiday|holdings|hockey|hkt|hiv|hitachi|hisamitsu|' + 'hiphop|hgtv|hermes|here|helsinki|help|healthcare|health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|' + 'hair|guru|guitars|guide|guge|gucci|guardian|group|grocery|gripe|green|gratis|graphics|grainger|' + 'gov|got|gop|google|goog|goodyear|goodhands|goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|' + 'globo|global|gle|glass|glade|giving|gives|gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|' + 'garden|gap|games|game|gallup|gallo|gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|' + 'ftr|frontier|frontdoor|frogans|frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|' + 'football|foodnetwork|food|foo|fly|flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|' + 'fishing|fish|firmdale|firestone|fire|financial|finance|final|film|fido|fidelity|fiat|ferrero|' + 'ferrari|feedback|fedex|fast|fashion|farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|' + 'extraspace|express|exposed|expert|exchange|everbank|events|eus|eurovision|etisalat|esurance|' + 'estate|esq|erni|ericsson|equipment|epson|epost|enterprises|engineering|engineer|energy|emerck|' + 'email|education|edu|edeka|eco|eat|earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|' + 'download|dot|doosan|domains|doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|' + 'direct|digital|diet|diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|' + 'delivery|degree|deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|' + 'cymru|cuisinella|csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|courses|' + 'coupons|coupon|country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|' + 'construction|condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|' + 'college|coffee|codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|' + 'cityeats|city|citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|' + 'chintai|cheap|chat|chase|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' + 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' + 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|cab|' + 'bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' + 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|bofa|' + 'boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|blackfriday|' + 'black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|beer|beauty|' + 'beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|barclays|' + 'barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|avianca|' + 'autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|asda|arte|' + 'art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|android|analytics|' + 'amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|ally|allstate|allfinanz|' + 'alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|agakhan|africa|afl|' + 'afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|accountant|accenture|' + 'academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|onion' + ')(?=[^0-9a-zA-Z@]|$))'));\n regexen.validCCTLD = regexSupplant(RegExp('(?:(?:' + '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|ભારત|ਭਾਰਤ|' + 'ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|مليسيا|مصر|قطر|فلسطين|عمان|عراق|سورية|سودان|تونس|' + 'بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|الاردن|հայ|қаз|укр|срб|рф|мон|мкд|ею|бел|бг|ελ|' + 'zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|' + 'tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|' + 're|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|' + 'mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|' + 'ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|' + 'gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|' + 'do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|' + 'bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' + ')(?=[^0-9a-zA-Z@]|$))'));\n regexen.validPunycode = /(?:xn--[0-9a-z]+)/;\n regexen.validSpecialCCTLD = /(?:(?:co|tv)(?=[^0-9a-zA-Z@]|$))/;\n regexen.validDomain = regexSupplant(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/);\n regexen.validPortNumber = /[0-9]+/;\n regexen.pd = /\\u002d\\u058a\\u05be\\u1400\\u1806\\u2010-\\u2015\\u2e17\\u2e1a\\u2e3a\\u2e40\\u301c\\u3030\\u30a0\\ufe31\\ufe58\\ufe63\\uff0d/;\n regexen.validGeneralUrlPathChars = regexSupplant(/[^#{spaces_group}\\(\\)\\?]/i);\n // Allow URL paths to contain up to two nested levels of balanced parens\n // 1. Used in Wikipedia URLs like /Primer_(film)\n // 2. Used in IIS sessions like /S(dfd346)/\n // 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/\n regexen.validUrlBalancedParens = regexSupplant('\\\\(' + '(?:' + '#{validGeneralUrlPathChars}+' + '|' +\n // allow one nested level of balanced parentheses\n '(?:' + '#{validGeneralUrlPathChars}*' + '\\\\(' + '#{validGeneralUrlPathChars}+' + '\\\\)' + '#{validGeneralUrlPathChars}*' + ')' + ')' + '\\\\)', 'i');\n // Valid end-of-path chracters (so /foo. does not gobble the period).\n // 1. Allow =&# for empty URL parameters and other URL-join artifacts\n regexen.validUrlPathEndingChars = regexSupplant(/[^#{spaces_group}\\(\\)\\?!\\*';:=\\,\\.\\$%\\[\\]#{pd}~&\\|@]|(?:#{validUrlBalancedParens})/i);\n // Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/\n regexen.validUrlPath = regexSupplant('(?:' + '(?:' + '#{validGeneralUrlPathChars}*' + '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' + '#{validUrlPathEndingChars}' + ')|(?:@#{validGeneralUrlPathChars}+\\/)' + ')', 'i');\n regexen.validUrlQueryChars = /[a-z0-9!?\\*'@\\(\\);:&=\\+\\$\\/%#\\[\\]\\-_\\.,~|]/i;\n regexen.validUrlQueryEndingChars = /[a-z0-9_&=#\\/]/i;\n regexen.validUrl = regexSupplant('(' + // $1 URL\n '(https?:\\\\/\\\\/)' + // $2 Protocol\n '(#{validDomain})' + // $3 Domain(s)\n '(?::(#{validPortNumber}))?' + // $4 Port number (optional)\n '(\\\\/#{validUrlPath}*)?' + // $5 URL Path\n '(\\\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $6 Query String\n ')', 'gi');\n return regexen.validUrl;\n}();\n\n/***/ }),\n\n/***/ 331:\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_compose_form__ = __webpack_require__(302);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__actions_compose__ = __webpack_require__(17);\n\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n text: state.getIn(['compose', 'text']),\n suggestion_token: state.getIn(['compose', 'suggestion_token']),\n suggestions: state.getIn(['compose', 'suggestions']),\n spoiler: state.getIn(['compose', 'spoiler']),\n spoiler_text: state.getIn(['compose', 'spoiler_text']),\n privacy: state.getIn(['compose', 'privacy']),\n focusDate: state.getIn(['compose', 'focusDate']),\n caretPosition: state.getIn(['compose', 'caretPosition']),\n preselectDate: state.getIn(['compose', 'preselectDate']),\n is_submitting: state.getIn(['compose', 'is_submitting']),\n is_uploading: state.getIn(['compose', 'is_uploading']),\n showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),\n anyMedia: state.getIn(['compose', 'media_attachments']).size > 0\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onChange: function onChange(text) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"F\" /* changeCompose */])(text));\n },\n onSubmit: function onSubmit() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"W\" /* submitCompose */])());\n },\n onClearSuggestions: function onClearSuggestions() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"M\" /* clearComposeSuggestions */])());\n },\n onFetchSuggestions: function onFetchSuggestions(token) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"O\" /* fetchComposeSuggestions */])(token));\n },\n onSuggestionSelected: function onSuggestionSelected(position, token, accountId) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"V\" /* selectComposeSuggestion */])(position, token, accountId));\n },\n onChangeSpoilerText: function onChangeSpoilerText(checked) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"H\" /* changeComposeSpoilerText */])(checked));\n },\n onPaste: function onPaste(files) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"Z\" /* uploadCompose */])(files));\n },\n onPickEmoji: function onPickEmoji(position, data, needsSpace) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_2__actions_compose__[\"Q\" /* insertEmojiCompose */])(position, data, needsSpace));\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_1__components_compose_form__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 824:\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 Compose; });\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__containers_compose_form_container__ = __webpack_require__(331);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__containers_navigation_container__ = __webpack_require__(992);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_react_redux__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_compose__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_router_dom__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__containers_search_container__ = __webpack_require__(993);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__containers_search_results_container__ = __webpack_require__(994);\n\n\n\n\n\nvar _dec, _class;\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"f\" /* defineMessages */])({\n start: {\n 'id': 'getting_started.heading',\n 'defaultMessage': 'Getting started'\n },\n home_timeline: {\n 'id': 'tabs_bar.home',\n 'defaultMessage': 'Home'\n },\n notifications: {\n 'id': 'tabs_bar.notifications',\n 'defaultMessage': 'Notifications'\n },\n public: {\n 'id': 'navigation_bar.public_timeline',\n 'defaultMessage': 'Federated timeline'\n },\n community: {\n 'id': 'navigation_bar.community_timeline',\n 'defaultMessage': 'Local timeline'\n },\n preferences: {\n 'id': 'navigation_bar.preferences',\n 'defaultMessage': 'Preferences'\n },\n logout: {\n 'id': 'navigation_bar.logout',\n 'defaultMessage': 'Logout'\n }\n});\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n return {\n columns: state.getIn(['settings', 'columns']),\n showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage\n };\n};\n\nvar Compose = (_dec = Object(__WEBPACK_IMPORTED_MODULE_7_react_redux__[\"connect\"])(mapStateToProps), _dec(_class = Object(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"g\" /* injectIntl */])(_class = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Compose, _React$PureComponent);\n\n function Compose() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Compose);\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.onFocus = function () {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_compose__[\"K\" /* changeComposing */])(true));\n }, _this.onBlur = function () {\n _this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_compose__[\"K\" /* changeComposing */])(false));\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Compose.prototype.componentDidMount = function componentDidMount() {\n var isSearchPage = this.props.isSearchPage;\n\n\n if (!isSearchPage) {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_compose__[\"S\" /* mountCompose */])());\n }\n };\n\n Compose.prototype.componentWillUnmount = function componentWillUnmount() {\n var isSearchPage = this.props.isSearchPage;\n\n\n if (!isSearchPage) {\n this.props.dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_compose__[\"Y\" /* unmountCompose */])());\n }\n };\n\n Compose.prototype.render = function render() {\n var _props = this.props,\n multiColumn = _props.multiColumn,\n showSearch = _props.showSearch,\n isSearchPage = _props.isSearchPage,\n intl = _props.intl;\n\n\n var header = '';\n\n if (multiColumn) {\n var columns = this.props.columns;\n\n header = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('nav', {\n className: 'drawer__header'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n to: '/getting-started',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.start),\n 'aria-label': intl.formatMessage(messages.start)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-asterisk'\n })), !columns.some(function (column) {\n return column.get('id') === 'HOME';\n }) && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n to: '/timelines/home',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.home_timeline),\n 'aria-label': intl.formatMessage(messages.home_timeline)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-home'\n })), !columns.some(function (column) {\n return column.get('id') === 'NOTIFICATIONS';\n }) && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n to: '/notifications',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.notifications),\n 'aria-label': intl.formatMessage(messages.notifications)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-bell'\n })), !columns.some(function (column) {\n return column.get('id') === 'COMMUNITY';\n }) && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n to: '/timelines/public/local',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.community),\n 'aria-label': intl.formatMessage(messages.community)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-users'\n })), !columns.some(function (column) {\n return column.get('id') === 'PUBLIC';\n }) && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n to: '/timelines/public',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.public),\n 'aria-label': intl.formatMessage(messages.public)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-globe'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: '/user-settings',\n className: 'drawer__tab',\n title: intl.formatMessage(messages.preferences),\n 'aria-label': intl.formatMessage(messages.preferences)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-cog'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: '/auth/sign_out',\n className: 'drawer__tab',\n 'data-method': 'delete',\n title: intl.formatMessage(messages.logout),\n 'aria-label': intl.formatMessage(messages.logout)\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n role: 'img',\n className: 'fa fa-fw fa-sign-out'\n })));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'drawer'\n }, void 0, header, (multiColumn || isSearchPage) && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_11__containers_search_container__[\"a\" /* default */], {}), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'drawer__pager'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'drawer__inner',\n onFocus: this.onFocus\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6__containers_navigation_container__[\"a\" /* default */], {\n onClose: this.onBlur\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5__containers_compose_form_container__[\"a\" /* default */], {}), multiColumn && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'drawer__inner__mastodon'\n }, void 0)), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_12__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { x: isSearchPage ? 0 : -100 },\n style: { x: __WEBPACK_IMPORTED_MODULE_13_react_motion_lib_spring___default()(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }\n }, void 0, function (_ref) {\n var x = _ref.x;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'drawer__inner darker',\n style: { transform: 'translateX(' + x + '%)', visibility: x === -100 ? 'hidden' : 'visible' }\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_14__containers_search_results_container__[\"a\" /* default */], {}));\n })));\n };\n\n return Compose;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent)) || _class) || _class);\n\n\n/***/ }),\n\n/***/ 879:\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_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectors__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__components_account__ = __webpack_require__(880);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__actions_accounts__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__actions_modal__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__actions_mutes__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__initial_state__ = __webpack_require__(13);\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_3_react_intl__[\"f\" /* defineMessages */])({\n unfollowConfirm: {\n 'id': 'confirmations.unfollow.confirm',\n 'defaultMessage': 'Unfollow'\n }\n});\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var getAccount = Object(__WEBPACK_IMPORTED_MODULE_4__selectors__[\"c\" /* makeGetAccount */])();\n\n var mapStateToProps = function mapStateToProps(state, props) {\n return {\n account: getAccount(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 onFollow: function onFollow(account) {\n if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) {\n if (__WEBPACK_IMPORTED_MODULE_9__initial_state__[\"j\" /* unfollowModal */]) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_7__actions_modal__[\"d\" /* openModal */])('CONFIRM', {\n message: __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_3_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'confirmations.unfollow.message',\n defaultMessage: 'Are you sure you want to unfollow {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.unfollowConfirm),\n onConfirm: function onConfirm() {\n return dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"D\" /* unfollowAccount */])(account.get('id')));\n }\n }));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"D\" /* unfollowAccount */])(account.get('id')));\n }\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"z\" /* followAccount */])(account.get('id')));\n }\n },\n onBlock: function onBlock(account) {\n if (account.getIn(['relationship', 'blocking'])) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"C\" /* unblockAccount */])(account.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"q\" /* blockAccount */])(account.get('id')));\n }\n },\n onMute: function onMute(account) {\n if (account.getIn(['relationship', 'muting'])) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"E\" /* unmuteAccount */])(account.get('id')));\n } else {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_8__actions_mutes__[\"g\" /* initMuteModal */])(account));\n }\n },\n onMuteNotifications: function onMuteNotifications(account, notifications) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_6__actions_accounts__[\"A\" /* muteAccount */])(account.get('id'), notifications));\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_3_react_intl__[\"g\" /* injectIntl */])(Object(__WEBPACK_IMPORTED_MODULE_2_react_redux__[\"connect\"])(makeMapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_5__components_account__[\"a\" /* default */])));\n\n/***/ }),\n\n/***/ 880:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Account; });\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_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__);\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/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__avatar__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__display_name__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__permalink__ = __webpack_require__(296);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__initial_state__ = __webpack_require__(13);\n\n\n\n\n\nvar _class, _class2, _temp2;\n\n\n\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"f\" /* defineMessages */])({\n follow: {\n 'id': 'account.follow',\n 'defaultMessage': 'Follow'\n },\n unfollow: {\n 'id': 'account.unfollow',\n 'defaultMessage': 'Unfollow'\n },\n requested: {\n 'id': 'account.requested',\n 'defaultMessage': 'Awaiting approval'\n },\n unblock: {\n 'id': 'account.unblock',\n 'defaultMessage': 'Unblock @{name}'\n },\n unmute: {\n 'id': 'account.unmute',\n 'defaultMessage': 'Unmute @{name}'\n },\n mute_notifications: {\n 'id': 'account.mute_notifications',\n 'defaultMessage': 'Mute notifications from @{name}'\n },\n unmute_notifications: {\n 'id': 'account.unmute_notifications',\n 'defaultMessage': 'Unmute notifications from @{name}'\n }\n});\n\nvar Account = Object(__WEBPACK_IMPORTED_MODULE_11_react_intl__[\"g\" /* injectIntl */])(_class = (_temp2 = _class2 = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Account, _ImmutablePureCompone);\n\n function Account() {\n var _temp, _this, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Account);\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.handleFollow = function () {\n _this.props.onFollow(_this.props.account);\n }, _this.handleBlock = function () {\n _this.props.onBlock(_this.props.account);\n }, _this.handleMute = function () {\n _this.props.onMute(_this.props.account);\n }, _this.handleMuteNotifications = function () {\n _this.props.onMuteNotifications(_this.props.account, true);\n }, _this.handleUnmuteNotifications = function () {\n _this.props.onMuteNotifications(_this.props.account, false);\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this, _ret);\n }\n\n Account.prototype.render = function render() {\n var _props = this.props,\n account = _props.account,\n intl = _props.intl,\n hidden = _props.hidden;\n\n\n if (!account) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {});\n }\n\n if (hidden) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {}, void 0, account.get('display_name'), account.get('username'));\n }\n\n var buttons = void 0;\n\n if (account.get('id') !== __WEBPACK_IMPORTED_MODULE_13__initial_state__[\"g\" /* me */] && account.get('relationship', null) !== null) {\n var following = account.getIn(['relationship', 'following']);\n var requested = account.getIn(['relationship', 'requested']);\n var blocking = account.getIn(['relationship', 'blocking']);\n var muting = account.getIn(['relationship', 'muting']);\n\n if (requested) {\n buttons = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n disabled: true,\n icon: 'hourglass',\n title: intl.formatMessage(messages.requested)\n });\n } else if (blocking) {\n buttons = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n active: true,\n icon: 'unlock-alt',\n title: intl.formatMessage(messages.unblock, { name: account.get('username') }),\n onClick: this.handleBlock\n });\n } else if (muting) {\n var hidingNotificationsButton = void 0;\n if (account.getIn(['relationship', 'muting_notifications'])) {\n hidingNotificationsButton = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n active: true,\n icon: 'bell',\n title: intl.formatMessage(messages.unmute_notifications, { name: account.get('username') }),\n onClick: this.handleUnmuteNotifications\n });\n } else {\n hidingNotificationsButton = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n active: true,\n icon: 'bell-slash',\n title: intl.formatMessage(messages.mute_notifications, { name: account.get('username') }),\n onClick: this.handleMuteNotifications\n });\n }\n buttons = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_4_react__[\"Fragment\"], {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n active: true,\n icon: 'volume-up',\n title: intl.formatMessage(messages.unmute, { name: account.get('username') }),\n onClick: this.handleMute\n }), hidingNotificationsButton);\n } else if (!account.get('moved') || following) {\n buttons = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10__icon_button__[\"a\" /* default */], {\n icon: following ? 'user-times' : 'user-plus',\n title: intl.formatMessage(following ? messages.unfollow : messages.follow),\n onClick: this.handleFollow,\n active: following\n });\n }\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'account'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'account__wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__permalink__[\"a\" /* default */], {\n className: 'account__display-name',\n href: account.get('url'),\n to: '/accounts/' + account.get('id')\n }, account.get('id'), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'account__avatar-wrapper'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__avatar__[\"a\" /* default */], {\n account: account,\n size: 36\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__display_name__[\"a\" /* default */], {\n account: account\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'account__relationship'\n }, void 0, buttons)));\n };\n\n return Account;\n}(__WEBPACK_IMPORTED_MODULE_12_react_immutable_pure_component___default.a), _class2.propTypes = {\n account: __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default.a.map.isRequired,\n onFollow: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n onBlock: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n onMute: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n onMuteNotifications: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.func.isRequired,\n intl: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.object.isRequired,\n hidden: __WEBPACK_IMPORTED_MODULE_6_prop_types___default.a.bool\n}, _temp2)) || _class;\n\n\n\n/***/ }),\n\n/***/ 906:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return NavigationBar; });\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_icon_button__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__components_permalink__ = __webpack_require__(296);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component__);\n\n\n\n\n\nvar _class, _temp;\n\n\n\n\n\n\n\n\n\n\nvar NavigationBar = (_temp = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(NavigationBar, _ImmutablePureCompone);\n\n function NavigationBar() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, NavigationBar);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.apply(this, arguments));\n }\n\n NavigationBar.prototype.render = function render() {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'navigation-bar'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__components_permalink__[\"a\" /* default */], {\n href: this.props.account.get('url'),\n to: '/accounts/' + this.props.account.get('id')\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, this.props.account.get('acct')), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__components_avatar__[\"a\" /* default */], {\n account: this.props.account,\n size: 40\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'navigation-bar__profile'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9__components_permalink__[\"a\" /* default */], {\n href: this.props.account.get('url'),\n to: '/accounts/' + this.props.account.get('id')\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('strong', {\n className: 'navigation-bar__profile-account'\n }, void 0, '@', this.props.account.get('acct'))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('a', {\n href: '/user-settings',\n className: 'navigation-bar__profile-edit'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_10_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'navigation_bar.edit_profile',\n defaultMessage: 'Edit profile'\n }))), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__components_icon_button__[\"a\" /* default */], {\n title: '',\n icon: 'close',\n onClick: this.props.onClose\n }));\n };\n\n return NavigationBar;\n}(__WEBPACK_IMPORTED_MODULE_11_react_immutable_pure_component___default.a), _class.propTypes = {\n account: __WEBPACK_IMPORTED_MODULE_6_react_immutable_proptypes___default.a.map.isRequired,\n onClose: __WEBPACK_IMPORTED_MODULE_5_prop_types___default.a.func\n}, _temp);\n\n\n/***/ }),\n\n/***/ 907:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return Search; });\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_react_overlays_lib_Overlay__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_overlays_lib_Overlay___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_react_overlays_lib_Overlay__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__ui_util_optional_motion__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__initial_state__ = __webpack_require__(13);\n\n\n\n\n\nvar _class;\n\n\n\n\n\n\n\n\n\nvar messages = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"f\" /* defineMessages */])({\n placeholder: {\n 'id': 'search.placeholder',\n 'defaultMessage': 'Search'\n }\n});\n\nvar SearchPopout = function (_React$PureComponent) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(SearchPopout, _React$PureComponent);\n\n function SearchPopout() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, SearchPopout);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent.apply(this, arguments));\n }\n\n SearchPopout.prototype.render = function render() {\n var style = this.props.style;\n\n var extraInformation = __WEBPACK_IMPORTED_MODULE_9__initial_state__[\"i\" /* searchEnabled */] ? __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.full_text',\n defaultMessage: 'Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.'\n }) : __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.text',\n defaultMessage: 'Simple text returns matching display names, usernames and hashtags'\n });\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n style: Object.assign({}, style, { position: 'absolute', width: 285 })\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__ui_util_optional_motion__[\"a\" /* default */], {\n defaultStyle: { opacity: 0, scaleX: 0.85, scaleY: 0.75 },\n style: { opacity: __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleX: __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }), scaleY: __WEBPACK_IMPORTED_MODULE_8_react_motion_lib_spring___default()(1, { damping: 35, stiffness: 400 }) }\n }, void 0, function (_ref) {\n var opacity = _ref.opacity,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY;\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-popout',\n style: { opacity: opacity, transform: 'scale(' + scaleX + ', ' + scaleY + ')' }\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('h4', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.search_format',\n defaultMessage: 'Advanced search format'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('ul', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('li', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('em', {}, void 0, '#example'), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.hashtag',\n defaultMessage: 'hashtag'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('li', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('em', {}, void 0, '@username@domain'), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.user',\n defaultMessage: 'user'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('li', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('em', {}, void 0, 'URL'), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.user',\n defaultMessage: 'user'\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('li', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('em', {}, void 0, 'URL'), ' ', __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_popout.tips.status',\n defaultMessage: 'status'\n }))), extraInformation);\n }));\n };\n\n return SearchPopout;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent);\n\nvar Search = Object(__WEBPACK_IMPORTED_MODULE_5_react_intl__[\"g\" /* injectIntl */])(_class = function (_React$PureComponent2) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(Search, _React$PureComponent2);\n\n function Search() {\n var _temp, _this2, _ret;\n\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, Search);\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 = (_this2 = __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _React$PureComponent2.call.apply(_React$PureComponent2, [this].concat(args))), _this2), _this2.state = {\n expanded: false\n }, _this2.handleChange = function (e) {\n _this2.props.onChange(e.target.value);\n }, _this2.handleClear = function (e) {\n e.preventDefault();\n\n if (_this2.props.value.length > 0 || _this2.props.submitted) {\n _this2.props.onClear();\n }\n }, _this2.handleKeyDown = function (e) {\n if (e.key === 'Enter') {\n e.preventDefault();\n _this2.props.onSubmit();\n } else if (e.key === 'Escape') {\n document.querySelector('.ui').parentElement.focus();\n }\n }, _this2.handleFocus = function () {\n _this2.setState({ expanded: true });\n _this2.props.onShow();\n }, _this2.handleBlur = function () {\n _this2.setState({ expanded: false });\n }, _temp), __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(_this2, _ret);\n }\n\n Search.prototype.noop = function noop() {};\n\n Search.prototype.render = function render() {\n var _props = this.props,\n intl = _props.intl,\n value = _props.value,\n submitted = _props.submitted;\n var expanded = this.state.expanded;\n\n var hasValue = value.length > 0 || submitted;\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('label', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('span', {\n style: { display: 'none' }\n }, void 0, intl.formatMessage(messages.placeholder)), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('input', {\n className: 'search__input',\n type: 'text',\n placeholder: intl.formatMessage(messages.placeholder),\n value: value,\n onChange: this.handleChange,\n onKeyUp: this.handleKeyDown,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n role: 'button',\n tabIndex: '0',\n className: 'search__icon',\n onClick: this.handleClear\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n className: 'fa fa-search ' + (hasValue ? '' : 'active')\n }), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('i', {\n 'aria-label': intl.formatMessage(messages.placeholder),\n className: 'fa fa-times-circle ' + (hasValue ? 'active' : '')\n })), __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_overlays_lib_Overlay___default.a, {\n show: expanded && !hasValue,\n placement: 'bottom',\n target: this\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(SearchPopout, {})));\n };\n\n return Search;\n}(__WEBPACK_IMPORTED_MODULE_4_react___default.a.PureComponent)) || _class;\n\n\n\n/***/ }),\n\n/***/ 992:\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_navigation_bar__ = __webpack_require__(906);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__initial_state__ = __webpack_require__(13);\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n account: state.getIn(['accounts', __WEBPACK_IMPORTED_MODULE_2__initial_state__[\"g\" /* me */]])\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_navigation_bar__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 993:\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__actions_search__ = __webpack_require__(336);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__components_search__ = __webpack_require__(907);\n\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n value: state.getIn(['search', 'value']),\n submitted: state.getIn(['search', 'submitted'])\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onChange: function onChange(value) {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__actions_search__[\"e\" /* changeSearch */])(value));\n },\n onClear: function onClear() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__actions_search__[\"f\" /* clearSearch */])());\n },\n onSubmit: function onSubmit() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__actions_search__[\"h\" /* submitSearch */])());\n },\n onShow: function onShow() {\n dispatch(Object(__WEBPACK_IMPORTED_MODULE_1__actions_search__[\"g\" /* showSearch */])());\n }\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps, mapDispatchToProps)(__WEBPACK_IMPORTED_MODULE_2__components_search__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 994:\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_search_results__ = __webpack_require__(995);\n\n\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n results: state.getIn(['search', 'results'])\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0_react_redux__[\"connect\"])(mapStateToProps)(__WEBPACK_IMPORTED_MODULE_1__components_search_results__[\"a\" /* default */]));\n\n/***/ }),\n\n/***/ 995:\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return SearchResults; });\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_immutable_proptypes__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_react_intl__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__containers_account_container__ = __webpack_require__(879);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__containers_status_container__ = __webpack_require__(286);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_react_router_dom__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component__);\n\n\n\n\n\nvar _class, _temp;\n\n\n\n\n\n\n\n\n\nvar SearchResults = (_temp = _class = function (_ImmutablePureCompone) {\n __WEBPACK_IMPORTED_MODULE_3_babel_runtime_helpers_inherits___default()(SearchResults, _ImmutablePureCompone);\n\n function SearchResults() {\n __WEBPACK_IMPORTED_MODULE_1_babel_runtime_helpers_classCallCheck___default()(this, SearchResults);\n\n return __WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_possibleConstructorReturn___default()(this, _ImmutablePureCompone.apply(this, arguments));\n }\n\n SearchResults.prototype.render = function render() {\n var results = this.props.results;\n\n\n var accounts = void 0,\n statuses = void 0,\n hashtags = void 0;\n var count = 0;\n\n if (results.get('accounts') && results.get('accounts').size > 0) {\n count += results.get('accounts').size;\n accounts = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-results__section'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('h5', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_results.accounts',\n defaultMessage: 'People'\n })), results.get('accounts').map(function (accountId) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_7__containers_account_container__[\"a\" /* default */], {\n id: accountId\n }, accountId);\n }));\n }\n\n if (results.get('statuses') && results.get('statuses').size > 0) {\n count += results.get('statuses').size;\n statuses = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-results__section'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('h5', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_results.statuses',\n defaultMessage: 'Toots'\n })), results.get('statuses').map(function (statusId) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_8__containers_status_container__[\"a\" /* default */], {\n id: statusId\n }, statusId);\n }));\n }\n\n if (results.get('hashtags') && results.get('hashtags').size > 0) {\n count += results.get('hashtags').size;\n hashtags = __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-results__section'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('h5', {}, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_results.hashtags',\n defaultMessage: 'Hashtags'\n })), results.get('hashtags').map(function (hashtag) {\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_9_react_router_dom__[\"b\" /* Link */], {\n className: 'search-results__hashtag',\n to: '/timelines/tag/' + hashtag\n }, hashtag, '#', hashtag);\n }));\n }\n\n return __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-results'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()('div', {\n className: 'search-results__header'\n }, void 0, __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_jsx___default()(__WEBPACK_IMPORTED_MODULE_6_react_intl__[\"b\" /* FormattedMessage */], {\n id: 'search_results.total',\n defaultMessage: '{count, number} {count, plural, one {result} other {results}}',\n values: { count: count }\n })), accounts, statuses, hashtags);\n };\n\n return SearchResults;\n}(__WEBPACK_IMPORTED_MODULE_10_react_immutable_pure_component___default.a), _class.propTypes = {\n results: __WEBPACK_IMPORTED_MODULE_5_react_immutable_proptypes___default.a.map.isRequired\n}, _temp);\n\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// features/compose.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 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) {\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id')));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.deleteMessage),\n confirm: intl.formatMessage(messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'))),\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: <FormattedMessage id='confirmations.block.message' defaultMessage='Are you sure you want to block {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\n confirm: intl.formatMessage(messages.blockConfirm),\n onConfirm: () => dispatch(blockAccount(account.get('id'))),\n }));\n },\n\n 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 CharacterCounter from './character_counter';\nimport Button from '../../../components/button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport ReplyIndicatorContainer from '../containers/reply_indicator_container';\nimport AutosuggestTextarea from '../../../components/autosuggest_textarea';\nimport UploadButtonContainer from '../containers/upload_button_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport Collapsable from '../../../components/collapsable';\nimport SpoilerButtonContainer from '../containers/spoiler_button_container';\nimport PrivacyDropdownContainer from '../containers/privacy_dropdown_container';\nimport SensitiveButtonContainer from '../containers/sensitive_button_container';\nimport EmojiPickerDropdown from '../containers/emoji_picker_dropdown_container';\nimport UploadFormContainer from '../containers/upload_form_container';\nimport WarningContainer from '../containers/warning_container';\nimport { isMobile } from '../../../is_mobile';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { length } from 'stringz';\nimport { countableText } from '../util/counter';\nimport { charLimit } from \"../../../initial_state\"\n\nconst allowedAroundShortCode = '><\\u0085\\u0020\\u00a0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029\\u0009\\u000a\\u000b\\u000c\\u000d';\n\nconst messages = defineMessages({\n placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },\n spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' },\n publish: { id: 'compose_form.publish', defaultMessage: 'Toot' },\n publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' },\n});\n\n@injectIntl\nexport default class ComposeForm extends ImmutablePureComponent {\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n text: PropTypes.string.isRequired,\n suggestion_token: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n spoiler: PropTypes.bool,\n privacy: PropTypes.string,\n spoiler_text: PropTypes.string,\n focusDate: PropTypes.instanceOf(Date),\n caretPosition: PropTypes.number,\n preselectDate: PropTypes.instanceOf(Date),\n is_submitting: PropTypes.bool,\n is_uploading: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n onChangeSpoilerText: PropTypes.func.isRequired,\n onPaste: PropTypes.func.isRequired,\n onPickEmoji: PropTypes.func.isRequired,\n showSearch: PropTypes.bool,\n anyMedia: PropTypes.bool,\n };\n\n static defaultProps = {\n showSearch: false,\n };\n\n handleChange = (e) => {\n this.props.onChange(e.target.value);\n }\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {\n this.handleSubmit();\n }\n }\n\n handleSubmit = () => {\n if (this.props.text !== this.autosuggestTextarea.textarea.value) {\n // Something changed the text inside the textarea (e.g. browser extensions like Grammarly)\n // Update the state to match the current text\n this.props.onChange(this.autosuggestTextarea.textarea.value);\n }\n\n // Submit disabled:\n const { is_submitting, is_uploading, anyMedia } = this.props;\n const fulltext = [this.props.spoiler_text, countableText(this.props.text)].join('');\n\n if (is_submitting || is_uploading || length(fulltext) > charLimit || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) {\n return;\n }\n\n this.props.onSubmit();\n }\n\n onSuggestionsClearRequested = () => {\n this.props.onClearSuggestions();\n }\n\n onSuggestionsFetchRequested = (token) => {\n this.props.onFetchSuggestions(token);\n }\n\n onSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value);\n }\n\n handleChangeSpoilerText = (e) => {\n this.props.onChangeSpoilerText(e.target.value);\n }\n\n componentDidUpdate (prevProps) {\n // This statement does several things:\n // - If we're beginning a reply, and,\n // - Replying to zero or one users, places the cursor at the end of the textbox.\n // - Replying to more than one user, selects any usernames past the first;\n // this provides a convenient shortcut to drop everyone else from the conversation.\n if (this.props.focusDate !== prevProps.focusDate) {\n let selectionEnd, selectionStart;\n\n if (this.props.preselectDate !== prevProps.preselectDate) {\n selectionEnd = this.props.text.length;\n selectionStart = this.props.text.search(/\\s/) + 1;\n } else if (typeof this.props.caretPosition === 'number') {\n selectionStart = this.props.caretPosition;\n selectionEnd = this.props.caretPosition;\n } else {\n selectionEnd = this.props.text.length;\n selectionStart = selectionEnd;\n }\n\n this.autosuggestTextarea.textarea.setSelectionRange(selectionStart, selectionEnd);\n this.autosuggestTextarea.textarea.focus();\n } else if(prevProps.is_submitting && !this.props.is_submitting) {\n this.autosuggestTextarea.textarea.focus();\n }\n }\n\n setAutosuggestTextarea = (c) => {\n this.autosuggestTextarea = c;\n }\n\n handleEmojiPick = (data) => {\n const { text } = this.props;\n const position = this.autosuggestTextarea.textarea.selectionStart;\n const needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]);\n\n this.props.onPickEmoji(position, data, needsSpace);\n }\n\n render () {\n const { intl, onPaste, showSearch, anyMedia } = this.props;\n const disabled = this.props.is_submitting;\n const text = [this.props.spoiler_text, countableText(this.props.text)].join('');\n const disabledButton = disabled || this.props.is_uploading || length(text) > charLimit || (text.length !== 0 && text.trim().length === 0 && !anyMedia);\n let publishText = '';\n\n if (this.props.privacy === 'private' || this.props.privacy === 'direct') {\n publishText = <span className='compose-form__publish-private'><i className='fa fa-lock' /> {intl.formatMessage(messages.publish)}</span>;\n } else {\n publishText = this.props.privacy !== 'unlisted' ? intl.formatMessage(messages.publishLoud, { publish: intl.formatMessage(messages.publish) }) : intl.formatMessage(messages.publish);\n }\n\n return (\n <div className='compose-form'>\n <WarningContainer />\n\n <Collapsable isVisible={this.props.spoiler} fullHeight={50}>\n <div className='spoiler-input'>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.spoiler_placeholder)}</span>\n <input placeholder={intl.formatMessage(messages.spoiler_placeholder)} value={this.props.spoiler_text} onChange={this.handleChangeSpoilerText} onKeyDown={this.handleKeyDown} type='text' className='spoiler-input__input' id='cw-spoiler-input' />\n </label>\n </div>\n </Collapsable>\n\n <ReplyIndicatorContainer />\n\n <div className='compose-form__autosuggest-wrapper'>\n <AutosuggestTextarea\n ref={this.setAutosuggestTextarea}\n placeholder={intl.formatMessage(messages.placeholder)}\n disabled={disabled}\n value={this.props.text}\n onChange={this.handleChange}\n suggestions={this.props.suggestions}\n onKeyDown={this.handleKeyDown}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSuggestionSelected}\n onPaste={onPaste}\n autoFocus={!showSearch && !isMobile(window.innerWidth)}\n />\n\n <EmojiPickerDropdown onPickEmoji={this.handleEmojiPick} />\n </div>\n\n <div className='compose-form__modifiers'>\n <UploadFormContainer />\n </div>\n\n <div className='compose-form__buttons-wrapper'>\n <div className='compose-form__buttons'>\n <UploadButtonContainer />\n <PrivacyDropdownContainer />\n <SensitiveButtonContainer />\n <SpoilerButtonContainer />\n </div>\n <div className='character-counter__wrapper'><CharacterCounter max={charLimit} text={text} /></div>\n </div>\n\n <div className='compose-form__publish'>\n <div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabledButton} block /></div>\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/compose_form.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { length } from 'stringz';\n\nexport default class CharacterCounter extends React.PureComponent {\n\n static propTypes = {\n text: PropTypes.string.isRequired,\n max: PropTypes.number.isRequired,\n };\n\n checkRemainingText (diff) {\n if (diff < 0) {\n return <span className='character-counter character-counter--over'>{diff}</span>;\n }\n\n return <span className='character-counter'>{diff}</span>;\n }\n\n render () {\n const diff = this.props.max - length(this.props.text);\n return this.checkRemainingText(diff);\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/character_counter.js","import { connect } from 'react-redux';\nimport { cancelReplyCompose } from '../../../actions/compose';\nimport { makeGetStatus } from '../../../selectors';\nimport ReplyIndicator from '../components/reply_indicator';\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = state => ({\n status: getStatus(state, state.getIn(['compose', 'in_reply_to'])),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = dispatch => ({\n\n onCancel () {\n dispatch(cancelReplyCompose());\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(ReplyIndicator);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/reply_indicator_container.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Avatar from '../../../components/avatar';\nimport IconButton from '../../../components/icon_button';\nimport DisplayName from '../../../components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { isRtl } from '../../../rtl';\n\nconst messages = defineMessages({\n cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' },\n});\n\n@injectIntl\nexport default class ReplyIndicator extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map,\n onCancel: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.onCancel();\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\n render () {\n const { status, intl } = this.props;\n\n if (!status) {\n return null;\n }\n\n const content = { __html: status.get('contentHtml') };\n const style = {\n direction: isRtl(status.get('search_index')) ? 'rtl' : 'ltr',\n };\n\n return (\n <div className='reply-indicator'>\n <div className='reply-indicator__header'>\n <div className='reply-indicator__cancel'><IconButton title={intl.formatMessage(messages.cancel)} icon='times' onClick={this.handleClick} inverted /></div>\n\n <a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='reply-indicator__display-name'>\n <div className='reply-indicator__display-avatar'><Avatar account={status.get('account')} size={24} /></div>\n <DisplayName account={status.get('account')} />\n </a>\n </div>\n\n <div className='reply-indicator__content' style={style} dangerouslySetInnerHTML={content} />\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/reply_indicator.js","import React from 'react';\nimport AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';\nimport AutosuggestEmoji from './autosuggest_emoji';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { isRtl } from '../rtl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Textarea from 'react-textarea-autosize';\nimport classNames from 'classnames';\n\nconst textAtCursorMatchesToken = (str, caretPosition) => {\n let word;\n\n let left = str.slice(0, caretPosition).search(/\\S+$/);\n let right = str.slice(caretPosition).search(/\\s/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || ['@', ':', '#'].indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left + 1, word];\n } else {\n return [null, null];\n }\n};\n\nexport default class AutosuggestTextarea extends ImmutablePureComponent {\n\n static propTypes = {\n value: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsClearRequested: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n onKeyDown: PropTypes.func,\n onPaste: PropTypes.func.isRequired,\n autoFocus: PropTypes.bool,\n };\n\n static defaultProps = {\n autoFocus: true,\n };\n\n state = {\n suggestionsHidden: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n onChange = (e) => {\n const [ tokenStart, token ] = textAtCursorMatchesToken(e.target.value, e.target.selectionStart);\n\n if (token !== null && this.state.lastToken !== token) {\n this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });\n this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n this.setState({ lastToken: null });\n this.props.onSuggestionsClearRequested();\n }\n\n this.props.onChange(e);\n }\n\n onKeyDown = (e) => {\n const { suggestions, disabled } = this.props;\n const { selectedSuggestion, suggestionsHidden } = this.state;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch(e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !this.props.onKeyDown) {\n return;\n }\n\n this.props.onKeyDown(e);\n }\n\n onBlur = () => {\n this.setState({ suggestionsHidden: true });\n }\n\n onSuggestionClick = (e) => {\n const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);\n this.textarea.focus();\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n setTextarea = (c) => {\n this.textarea = c;\n }\n\n onPaste = (e) => {\n if (e.clipboardData && e.clipboardData.files.length === 1) {\n this.props.onPaste(e.clipboardData.files);\n e.preventDefault();\n }\n }\n\n renderSuggestion = (suggestion, i) => {\n const { selectedSuggestion } = this.state;\n let inner, key;\n\n if (typeof suggestion === 'object') {\n inner = <AutosuggestEmoji emoji={suggestion} />;\n key = suggestion.id;\n } else if (suggestion[0] === '#') {\n inner = suggestion;\n key = suggestion;\n } else {\n inner = <AutosuggestAccountContainer id={suggestion} />;\n key = suggestion;\n }\n\n return (\n <div role='button' tabIndex='0' key={key} data-index={i} className={classNames('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion })} onMouseDown={this.onSuggestionClick}>\n {inner}\n </div>\n );\n }\n\n render () {\n const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus } = this.props;\n const { suggestionsHidden } = this.state;\n const style = { direction: 'ltr' };\n\n if (isRtl(value)) {\n style.direction = 'rtl';\n }\n\n return (\n <div className='autosuggest-textarea'>\n <label>\n <span style={{ display: 'none' }}>{placeholder}</span>\n\n <Textarea\n inputRef={this.setTextarea}\n className='autosuggest-textarea__textarea'\n disabled={disabled}\n placeholder={placeholder}\n autoFocus={autoFocus}\n value={value}\n onChange={this.onChange}\n onKeyDown={this.onKeyDown}\n onKeyUp={onKeyUp}\n onBlur={this.onBlur}\n onPaste={this.onPaste}\n style={style}\n aria-autocomplete='list'\n />\n </label>\n\n <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>\n {suggestions.map(this.renderSuggestion)}\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/autosuggest_textarea.js","import { connect } from 'react-redux';\nimport AutosuggestAccount from '../components/autosuggest_account';\nimport { makeGetAccount } from '../../../selectors';\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { id }) => ({\n account: getAccount(state, id),\n });\n\n return mapStateToProps;\n};\n\nexport default connect(makeMapStateToProps)(AutosuggestAccount);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js","import React from 'react';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class AutosuggestAccount extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { account } = this.props;\n\n return (\n <div className='autosuggest-account'>\n <div className='autosuggest-account-icon'><Avatar account={account} size={18} /></div>\n <DisplayName account={account} />\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/autosuggest_account.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport unicodeMapping from '../features/emoji/emoji_unicode_mapping_light';\n\nconst assetHost = process.env.CDN_HOST || '';\n\nexport default class AutosuggestEmoji extends React.PureComponent {\n\n static propTypes = {\n emoji: PropTypes.object.isRequired,\n };\n\n render () {\n const { emoji } = this.props;\n let url;\n\n if (emoji.custom) {\n url = emoji.imageUrl;\n } else {\n const mapping = unicodeMapping[emoji.native] || unicodeMapping[emoji.native.replace(/\\uFE0F$/, '')];\n\n if (!mapping) {\n return null;\n }\n\n url = `${assetHost}/emoji/${mapping.filename}.svg`;\n }\n\n return (\n <div className='autosuggest-emoji'>\n <img\n className='emojione'\n src={url}\n alt={emoji.native || emoji.colons}\n />\n\n {emoji.colons}\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/autosuggest_emoji.js","import React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar isIE = isBrowser ? !!document.documentElement.currentStyle : false;\nvar hiddenTextarea = isBrowser && document.createElement('textarea');\nvar HIDDEN_TEXTAREA_STYLE = {\n 'min-height': '0',\n 'max-height': 'none',\n height: '0',\n visibility: 'hidden',\n overflow: 'hidden',\n position: 'absolute',\n 'z-index': '-1000',\n top: '0',\n right: '0'\n};\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'font-family', 'font-weight', 'font-size', 'font-style', 'tab-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-top', 'padding-right', 'padding-bottom', 'padding-left', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width', 'box-sizing'];\nvar computedStyleCache = {};\nfunction calculateNodeHeight(uiTextNode, uid, useCache, minRows, maxRows) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (minRows === void 0) {\n minRows = null;\n }\n\n if (maxRows === void 0) {\n maxRows = null;\n }\n\n if (hiddenTextarea.parentNode === null) {\n document.body.appendChild(hiddenTextarea);\n } // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n\n\n var nodeStyling = calculateNodeStyling(uiTextNode, uid, useCache);\n\n if (nodeStyling === null) {\n return null;\n }\n\n var paddingSize = nodeStyling.paddingSize,\n borderSize = nodeStyling.borderSize,\n boxSizing = nodeStyling.boxSizing,\n sizingStyle = nodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n\n Object.keys(sizingStyle).forEach(function (key) {\n hiddenTextarea.style[key] = sizingStyle[key];\n });\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n hiddenTextarea.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || 'x';\n var minHeight = -Infinity;\n var maxHeight = Infinity;\n var height = hiddenTextarea.scrollHeight;\n\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height = height + borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height = height - paddingSize;\n } // measure height of a textarea with a single row\n\n\n hiddenTextarea.value = 'x';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n\n if (minRows !== null || maxRows !== null) {\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n\n height = Math.max(minHeight, height);\n }\n\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n\n height = Math.min(maxHeight, height);\n }\n }\n\n var rowCount = Math.floor(height / singleRowHeight);\n return {\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight,\n rowCount: rowCount\n };\n}\n\nfunction calculateNodeStyling(node, uid, useCache) {\n if (useCache === void 0) {\n useCache = false;\n }\n\n if (useCache && computedStyleCache[uid]) {\n return computedStyleCache[uid];\n }\n\n var style = window.getComputedStyle(node);\n\n if (style === null) {\n return null;\n }\n\n var sizingStyle = SIZING_STYLE.reduce(function (obj, name) {\n obj[name] = style.getPropertyValue(name);\n return obj;\n }, {});\n var boxSizing = sizingStyle['box-sizing']; // IE (Edge has already correct behaviour) returns content width as computed width\n // so we need to add manually padding and border widths\n\n if (isIE && boxSizing === 'border-box') {\n sizingStyle.width = parseFloat(sizingStyle.width) + parseFloat(style['border-right-width']) + parseFloat(style['border-left-width']) + parseFloat(style['padding-right']) + parseFloat(style['padding-left']) + 'px';\n }\n\n var paddingSize = parseFloat(sizingStyle['padding-bottom']) + parseFloat(sizingStyle['padding-top']);\n var borderSize = parseFloat(sizingStyle['border-bottom-width']) + parseFloat(sizingStyle['border-top-width']);\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n\n if (useCache) {\n computedStyleCache[uid] = nodeInfo;\n }\n\n return nodeInfo;\n}\n\nvar purgeCache = function purgeCache(uid) {\n return delete computedStyleCache[uid];\n};\n\nfunction autoInc(seed) {\n if (seed === void 0) {\n seed = 0;\n }\n\n return function () {\n return ++seed;\n };\n}\n\nvar uid = autoInc();\n\n/**\n * <TextareaAutosize />\n */\nvar noop = function noop() {}; // IE11 has a problem with eval source maps, can be reproduced with:\n// eval('\"use strict\"; var onNextFrame = window.cancelAnimationFrame; onNextFrame(4);')\n// so we bind window as context in dev modes\n\n\nvar _ref = isBrowser && window.requestAnimationFrame ? process.env.NODE_ENV !== 'development' ? [window.requestAnimationFrame, window.cancelAnimationFrame] : [window.requestAnimationFrame.bind(window), window.cancelAnimationFrame.bind(window)] : [setTimeout, clearTimeout];\nvar onNextFrame = _ref[0];\nvar clearNextFrameAction = _ref[1];\n\nvar TextareaAutosize =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TextareaAutosize, _React$Component);\n\n function TextareaAutosize(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this._resizeLock = false;\n\n _this._onRootDOMNode = function (node) {\n _this._rootDOMNode = node;\n\n if (_this.props.inputRef) {\n _this.props.inputRef(node);\n }\n };\n\n _this._onChange = function (event) {\n if (!_this._controlled) {\n _this._resizeComponent();\n }\n\n _this.props.onChange(event);\n };\n\n _this._resizeComponent = function (callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n if (typeof _this._rootDOMNode === 'undefined') {\n callback();\n return;\n }\n\n var nodeHeight = calculateNodeHeight(_this._rootDOMNode, _this._uid, _this.props.useCacheForDOMMeasurements, _this.props.minRows, _this.props.maxRows);\n\n if (nodeHeight === null) {\n callback();\n return;\n }\n\n var height = nodeHeight.height,\n minHeight = nodeHeight.minHeight,\n maxHeight = nodeHeight.maxHeight,\n rowCount = nodeHeight.rowCount;\n _this.rowCount = rowCount;\n\n if (_this.state.height !== height || _this.state.minHeight !== minHeight || _this.state.maxHeight !== maxHeight) {\n _this.setState({\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight\n }, callback);\n\n return;\n }\n\n callback();\n };\n\n _this.state = {\n height: props.style && props.style.height || 0,\n minHeight: -Infinity,\n maxHeight: Infinity\n };\n _this._uid = uid();\n _this._controlled = typeof props.value === 'string';\n return _this;\n }\n\n var _proto = TextareaAutosize.prototype;\n\n _proto.render = function render() {\n var _props = this.props,\n _minRows = _props.minRows,\n _maxRows = _props.maxRows,\n _onHeightChange = _props.onHeightChange,\n _useCacheForDOMMeasurements = _props.useCacheForDOMMeasurements,\n _inputRef = _props.inputRef,\n props = _objectWithoutProperties(_props, [\"minRows\", \"maxRows\", \"onHeightChange\", \"useCacheForDOMMeasurements\", \"inputRef\"]);\n props.style = _extends({}, props.style, {\n height: this.state.height\n });\n var maxHeight = Math.max(props.style.maxHeight || Infinity, this.state.maxHeight);\n\n if (maxHeight < this.state.height) {\n props.style.overflow = 'hidden';\n }\n\n return React.createElement(\"textarea\", _extends({}, props, {\n onChange: this._onChange,\n ref: this._onRootDOMNode\n }));\n };\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n this._resizeComponent(); // Working around Firefox bug which runs resize listeners even when other JS is running at the same moment\n // causing competing rerenders (due to setState in the listener) in React.\n // More can be found here - facebook/react#6324\n\n\n this._resizeListener = function () {\n if (_this2._resizeLock) {\n return;\n }\n\n _this2._resizeLock = true;\n\n _this2._resizeComponent(function () {\n return _this2._resizeLock = false;\n });\n };\n\n window.addEventListener('resize', this._resizeListener);\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps() {\n var _this3 = this;\n\n this._clearNextFrame();\n\n this._onNextFrameActionId = onNextFrame(function () {\n return _this3._resizeComponent();\n });\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (this.state.height !== prevState.height) {\n this.props.onHeightChange(this.state.height, this);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this._clearNextFrame();\n\n window.removeEventListener('resize', this._resizeListener);\n purgeCache(this._uid);\n };\n\n _proto._clearNextFrame = function _clearNextFrame() {\n clearNextFrameAction(this._onNextFrameActionId);\n };\n\n return TextareaAutosize;\n}(React.Component);\n\nTextareaAutosize.propTypes = {\n value: PropTypes.string,\n onChange: PropTypes.func,\n onHeightChange: PropTypes.func,\n useCacheForDOMMeasurements: PropTypes.bool,\n minRows: PropTypes.number,\n maxRows: PropTypes.number,\n inputRef: PropTypes.func\n};\nTextareaAutosize.defaultProps = {\n onChange: noop,\n onHeightChange: noop,\n useCacheForDOMMeasurements: false\n};\n\nexport default TextareaAutosize;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/react-textarea-autosize/es/index.js","import { connect } from 'react-redux';\nimport UploadButton from '../components/upload_button';\nimport { uploadCompose } from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 3 || state.getIn(['compose', 'media_attachments']).some(m => m.get('type') === 'video')),\n resetFileKey: state.getIn(['compose', 'resetFileKey']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onSelectFile (files) {\n dispatch(uploadCompose(files));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UploadButton);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/upload_button_container.js","import React from 'react';\nimport IconButton from '../../../components/icon_button';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nconst messages = defineMessages({\n upload: { id: 'upload_button.label', defaultMessage: 'Add media' },\n});\n\nconst makeMapStateToProps = () => {\n const mapStateToProps = state => ({\n acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']),\n });\n\n return mapStateToProps;\n};\n\nconst iconStyle = {\n height: null,\n lineHeight: '27px',\n};\n\n@connect(makeMapStateToProps)\n@injectIntl\nexport default class UploadButton extends ImmutablePureComponent {\n\n static propTypes = {\n disabled: PropTypes.bool,\n onSelectFile: PropTypes.func.isRequired,\n style: PropTypes.object,\n resetFileKey: PropTypes.number,\n acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleChange = (e) => {\n if (e.target.files.length > 0) {\n this.props.onSelectFile(e.target.files);\n }\n }\n\n handleClick = () => {\n this.fileElement.click();\n }\n\n setRef = (c) => {\n this.fileElement = c;\n }\n\n render () {\n\n const { intl, resetFileKey, disabled, acceptContentTypes } = this.props;\n\n return (\n <div className='compose-form__upload-button'>\n <IconButton icon='camera' title={intl.formatMessage(messages.upload)} disabled={disabled} onClick={this.handleClick} className='compose-form__upload-button-icon' size={18} inverted style={iconStyle} />\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.upload)}</span>\n <input\n key={resetFileKey}\n ref={this.setRef}\n type='file'\n multiple={false}\n accept={acceptContentTypes.toArray().join(',')}\n onChange={this.handleChange}\n disabled={disabled}\n style={{ display: 'none' }}\n />\n </label>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/upload_button.js","import React from 'react';\nimport Motion from '../features/ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport PropTypes from 'prop-types';\n\nconst Collapsable = ({ fullHeight, isVisible, children }) => (\n <Motion defaultStyle={{ opacity: !isVisible ? 0 : 100, height: isVisible ? fullHeight : 0 }} style={{ opacity: spring(!isVisible ? 0 : 100), height: spring(!isVisible ? 0 : fullHeight) }}>\n {({ opacity, height }) => (\n <div style={{ height: `${height}px`, overflow: 'hidden', opacity: opacity / 100, display: Math.floor(opacity) === 0 ? 'none' : 'block' }}>\n {children}\n </div>\n )}\n </Motion>\n);\n\nCollapsable.propTypes = {\n fullHeight: PropTypes.number.isRequired,\n isVisible: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n};\n\nexport default Collapsable;\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/collapsable.js","import { connect } from 'react-redux';\nimport TextIconButton from '../components/text_icon_button';\nimport { changeComposeSpoilerness } from '../../../actions/compose';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' },\n unmarked: { id: 'compose_form.spoiler.unmarked', defaultMessage: 'Text is not hidden' },\n});\n\nconst mapStateToProps = (state, { intl }) => ({\n label: 'CW',\n title: intl.formatMessage(state.getIn(['compose', 'spoiler']) ? messages.marked : messages.unmarked),\n active: state.getIn(['compose', 'spoiler']),\n ariaControls: 'cw-spoiler-input',\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch(changeComposeSpoilerness());\n },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(TextIconButton));\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/spoiler_button_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class TextIconButton extends React.PureComponent {\n\n static propTypes = {\n label: PropTypes.string.isRequired,\n title: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n ariaControls: PropTypes.string,\n };\n\n handleClick = (e) => {\n e.preventDefault();\n this.props.onClick();\n }\n\n render () {\n const { label, title, active, ariaControls } = this.props;\n\n return (\n <button title={title} aria-label={title} className={`text-icon-button ${active ? 'active' : ''}`} aria-expanded={active} onClick={this.handleClick} aria-controls={ariaControls}>\n {label}\n </button>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/text_icon_button.js","import { connect } from 'react-redux';\nimport PrivacyDropdown from '../components/privacy_dropdown';\nimport { changeComposeVisibility } from '../../../actions/compose';\nimport { openModal, closeModal } from '../../../actions/modal';\nimport { isUserTouching } from '../../../is_mobile';\n\nconst mapStateToProps = state => ({\n isModalOpen: state.get('modal').modalType === 'ACTIONS',\n value: state.getIn(['compose', 'privacy']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onChange (value) {\n dispatch(changeComposeVisibility(value));\n },\n\n isUserTouching,\n onModalOpen: props => dispatch(openModal('ACTIONS', props)),\n onModalClose: () => dispatch(closeModal()),\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PrivacyDropdown);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport IconButton from '../../../components/icon_button';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport detectPassiveEvents from 'detect-passive-events';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },\n public_long: { id: 'privacy.public.long', defaultMessage: 'Post to public timelines' },\n unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },\n unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Do not show in public timelines' },\n private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },\n private_long: { id: 'privacy.private.long', defaultMessage: 'Post to followers only' },\n direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' },\n direct_long: { id: 'privacy.direct.long', defaultMessage: 'Post to mentioned users only' },\n change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' },\n});\n\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\n\nclass PrivacyDropdownMenu extends React.PureComponent {\n\n static propTypes = {\n style: PropTypes.object,\n items: PropTypes.array.isRequired,\n value: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n mounted: false,\n };\n\n handleDocumentClick = e => {\n if (this.node && !this.node.contains(e.target)) {\n this.props.onClose();\n }\n }\n\n handleKeyDown = e => {\n const { items } = this.props;\n const value = e.currentTarget.getAttribute('data-index');\n const index = items.findIndex(item => {\n return (item.value === value);\n });\n let element;\n\n switch(e.key) {\n case 'Escape':\n this.props.onClose();\n break;\n case 'Enter':\n this.handleClick(e);\n break;\n case 'ArrowDown':\n element = this.node.childNodes[index + 1];\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'ArrowUp':\n element = this.node.childNodes[index - 1];\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'Home':\n element = this.node.firstChild;\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'End':\n element = this.node.lastChild;\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n }\n }\n\n handleClick = e => {\n const value = e.currentTarget.getAttribute('data-index');\n\n e.preventDefault();\n\n this.props.onClose();\n this.props.onChange(value);\n }\n\n componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n if (this.focusedItem) this.focusedItem.focus();\n this.setState({ mounted: true });\n }\n\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n setFocusRef = c => {\n this.focusedItem = c;\n }\n\n render () {\n const { mounted } = this.state;\n const { style, items, value } = this.props;\n\n return (\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n // It should not be transformed when mounting because the resulting\n // size will be used to determine the coordinate of the menu by\n // react-overlays\n <div className='privacy-dropdown__dropdown' style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} role='listbox' ref={this.setRef}>\n {items.map(item => (\n <div role='option' tabIndex='0' key={item.value} data-index={item.value} onKeyDown={this.handleKeyDown} onClick={this.handleClick} className={classNames('privacy-dropdown__option', { active: item.value === value })} aria-selected={item.value === value} ref={item.value === value ? this.setFocusRef : null}>\n <div className='privacy-dropdown__option__icon'>\n <i className={`fa fa-fw fa-${item.icon}`} />\n </div>\n\n <div className='privacy-dropdown__option__content'>\n <strong>{item.text}</strong>\n {item.meta}\n </div>\n </div>\n ))}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\n@injectIntl\nexport default class PrivacyDropdown extends React.PureComponent {\n\n static propTypes = {\n isUserTouching: PropTypes.func,\n isModalOpen: PropTypes.bool.isRequired,\n onModalOpen: PropTypes.func,\n onModalClose: PropTypes.func,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n open: false,\n placement: null,\n };\n\n handleToggle = ({ target }) => {\n if (this.props.isUserTouching()) {\n if (this.state.open) {\n this.props.onModalClose();\n } else {\n this.props.onModalOpen({\n actions: this.options.map(option => ({ ...option, active: option.value === this.props.value })),\n onClick: this.handleModalActionClick,\n });\n }\n } else {\n const { top } = target.getBoundingClientRect();\n this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n this.setState({ open: !this.state.open });\n }\n }\n\n handleModalActionClick = (e) => {\n e.preventDefault();\n\n const { value } = this.options[e.currentTarget.getAttribute('data-index')];\n\n this.props.onModalClose();\n this.props.onChange(value);\n }\n\n handleKeyDown = e => {\n switch(e.key) {\n case 'Escape':\n this.handleClose();\n break;\n }\n }\n\n handleClose = () => {\n this.setState({ open: false });\n }\n\n handleChange = value => {\n this.props.onChange(value);\n }\n\n componentWillMount () {\n const { intl: { formatMessage } } = this.props;\n\n this.options = [\n { icon: 'globe', value: 'public', text: formatMessage(messages.public_short), meta: formatMessage(messages.public_long) },\n { icon: 'unlock-alt', value: 'unlisted', text: formatMessage(messages.unlisted_short), meta: formatMessage(messages.unlisted_long) },\n { icon: 'lock', value: 'private', text: formatMessage(messages.private_short), meta: formatMessage(messages.private_long) },\n { icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) },\n ];\n }\n\n render () {\n const { value, intl } = this.props;\n const { open, placement } = this.state;\n\n const valueOption = this.options.find(item => item.value === value);\n\n return (\n <div className={classNames('privacy-dropdown', { active: open })} onKeyDown={this.handleKeyDown}>\n <div className={classNames('privacy-dropdown__value', { active: this.options.indexOf(valueOption) === 0 })}>\n <IconButton\n className='privacy-dropdown__value-icon'\n icon={valueOption.icon}\n title={intl.formatMessage(messages.change_privacy)}\n size={18}\n expanded={open}\n active={open}\n inverted\n onClick={this.handleToggle}\n style={{ height: null, lineHeight: '27px' }}\n />\n </div>\n\n <Overlay show={open} placement={placement} target={this}>\n <PrivacyDropdownMenu\n items={this.options}\n value={value}\n onClose={this.handleClose}\n onChange={this.handleChange}\n />\n </Overlay>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/privacy_dropdown.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport IconButton from '../../../components/icon_button';\nimport { changeComposeSensitivity } from '../../../actions/compose';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n marked: { id: 'compose_form.sensitive.marked', defaultMessage: 'Media is marked as sensitive' },\n unmarked: { id: 'compose_form.sensitive.unmarked', defaultMessage: 'Media is not marked as sensitive' },\n});\n\nconst mapStateToProps = state => ({\n visible: state.getIn(['compose', 'media_attachments']).size > 0,\n active: state.getIn(['compose', 'sensitive']),\n disabled: state.getIn(['compose', 'spoiler']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch(changeComposeSensitivity());\n },\n\n});\n\nclass SensitiveButton extends React.PureComponent {\n\n static propTypes = {\n visible: PropTypes.bool,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { visible, active, disabled, onClick, intl } = this.props;\n\n return (\n <Motion defaultStyle={{ scale: 0.87 }} style={{ scale: spring(visible ? 1 : 0.87, { stiffness: 200, damping: 3 }) }}>\n {({ scale }) => {\n const icon = active ? 'eye-slash' : 'eye';\n const className = classNames('compose-form__sensitive-button', {\n 'compose-form__sensitive-button--visible': visible,\n });\n return (\n <div className={className} style={{ transform: `scale(${scale})` }}>\n <IconButton\n className='compose-form__sensitive-button__icon'\n title={intl.formatMessage(active ? messages.marked : messages.unmarked)}\n icon={icon}\n onClick={onClick}\n size={18}\n active={active}\n disabled={disabled}\n style={{ lineHeight: null, height: null }}\n inverted\n />\n </div>\n );\n }}\n </Motion>\n );\n }\n\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(injectIntl(SensitiveButton));\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/sensitive_button_container.js","import { connect } from 'react-redux';\nimport EmojiPickerDropdown from '../components/emoji_picker_dropdown';\nimport { changeSetting } from '../../../actions/settings';\nimport { createSelector } from 'reselect';\nimport { Map as ImmutableMap } from 'immutable';\nimport { useEmoji } from '../../../actions/emojis';\n\nconst perLine = 8;\nconst lines = 2;\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'yum',\n 'disappointed',\n 'thinking_face',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'ok_hand',\n];\n\nconst getFrequentlyUsedEmojis = createSelector([\n state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()),\n], emojiCounters => {\n let emojis = emojiCounters\n .keySeq()\n .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b))\n .reverse()\n .slice(0, perLine * lines)\n .toArray();\n\n if (emojis.length < DEFAULTS.length) {\n let uniqueDefaults = DEFAULTS.filter(emoji => !emojis.includes(emoji));\n emojis = emojis.concat(uniqueDefaults.slice(0, DEFAULTS.length - emojis.length));\n }\n\n return emojis;\n});\n\nconst getCustomEmojis = createSelector([\n state => state.get('custom_emojis'),\n], emojis => emojis.filter(e => e.get('visible_in_picker')).sort((a, b) => {\n const aShort = a.get('shortcode').toLowerCase();\n const bShort = b.get('shortcode').toLowerCase();\n\n if (aShort < bShort) {\n return -1;\n } else if (aShort > bShort ) {\n return 1;\n } else {\n return 0;\n }\n}));\n\nconst mapStateToProps = state => ({\n custom_emojis: getCustomEmojis(state),\n skinTone: state.getIn(['settings', 'skinTone']),\n frequentlyUsedEmojis: getFrequentlyUsedEmojis(state),\n});\n\nconst mapDispatchToProps = (dispatch, { onPickEmoji }) => ({\n onSkinTone: skinTone => {\n dispatch(changeSetting(['skinTone'], skinTone));\n },\n\n onPickEmoji: emoji => {\n dispatch(useEmoji(emoji));\n\n if (onPickEmoji) {\n onPickEmoji(emoji);\n }\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EmojiPickerDropdown);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport classNames from 'classnames';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport detectPassiveEvents from 'detect-passive-events';\nimport { buildCustomEmojis } from '../../emoji/emoji';\n\nconst messages = defineMessages({\n emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },\n emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' },\n emoji_not_found: { id: 'emoji_button.not_found', defaultMessage: 'No emojos!! (╯°□°)╯︵ ┻━┻' },\n custom: { id: 'emoji_button.custom', defaultMessage: 'Custom' },\n recent: { id: 'emoji_button.recent', defaultMessage: 'Frequently used' },\n search_results: { id: 'emoji_button.search_results', defaultMessage: 'Search results' },\n people: { id: 'emoji_button.people', defaultMessage: 'People' },\n nature: { id: 'emoji_button.nature', defaultMessage: 'Nature' },\n food: { id: 'emoji_button.food', defaultMessage: 'Food & Drink' },\n activity: { id: 'emoji_button.activity', defaultMessage: 'Activity' },\n travel: { id: 'emoji_button.travel', defaultMessage: 'Travel & Places' },\n objects: { id: 'emoji_button.objects', defaultMessage: 'Objects' },\n symbols: { id: 'emoji_button.symbols', defaultMessage: 'Symbols' },\n flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' },\n});\n\nconst assetHost = process.env.CDN_HOST || '';\nlet EmojiPicker, Emoji; // load asynchronously\n\nconst backgroundImageFn = () => `${assetHost}/emoji/sheet.png`;\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\n\nconst categoriesSort = [\n 'recent',\n 'custom',\n 'people',\n 'nature',\n 'foods',\n 'activity',\n 'places',\n 'objects',\n 'symbols',\n 'flags',\n];\n\nclass ModifierPickerMenu extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n onSelect: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n };\n\n handleClick = e => {\n this.props.onSelect(e.currentTarget.getAttribute('data-index') * 1);\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.active) {\n this.attachListeners();\n } else {\n this.removeListeners();\n }\n }\n\n componentWillUnmount () {\n this.removeListeners();\n }\n\n handleDocumentClick = e => {\n if (this.node && !this.node.contains(e.target)) {\n this.props.onClose();\n }\n }\n\n attachListeners () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n removeListeners () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n render () {\n const { active } = this.props;\n\n return (\n <div className='emoji-picker-dropdown__modifiers__menu' style={{ display: active ? 'block' : 'none' }} ref={this.setRef}>\n <button onClick={this.handleClick} data-index={1}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={1} backgroundImageFn={backgroundImageFn} /></button>\n <button onClick={this.handleClick} data-index={2}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} /></button>\n <button onClick={this.handleClick} data-index={3}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} /></button>\n <button onClick={this.handleClick} data-index={4}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} /></button>\n <button onClick={this.handleClick} data-index={5}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} /></button>\n <button onClick={this.handleClick} data-index={6}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} /></button>\n </div>\n );\n }\n\n}\n\nclass ModifierPicker extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n modifier: PropTypes.number,\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n onOpen: PropTypes.func,\n };\n\n handleClick = () => {\n if (this.props.active) {\n this.props.onClose();\n } else {\n this.props.onOpen();\n }\n }\n\n handleSelect = modifier => {\n this.props.onChange(modifier);\n this.props.onClose();\n }\n\n render () {\n const { active, modifier } = this.props;\n\n return (\n <div className='emoji-picker-dropdown__modifiers'>\n <Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} />\n <ModifierPickerMenu active={active} onSelect={this.handleSelect} onClose={this.props.onClose} />\n </div>\n );\n }\n\n}\n\n@injectIntl\nclass EmojiPickerMenu extends React.PureComponent {\n\n static propTypes = {\n custom_emojis: ImmutablePropTypes.list,\n frequentlyUsedEmojis: PropTypes.arrayOf(PropTypes.string),\n loading: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n onPick: PropTypes.func.isRequired,\n style: PropTypes.object,\n placement: PropTypes.string,\n arrowOffsetLeft: PropTypes.string,\n arrowOffsetTop: PropTypes.string,\n intl: PropTypes.object.isRequired,\n skinTone: PropTypes.number.isRequired,\n onSkinTone: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n style: {},\n loading: true,\n frequentlyUsedEmojis: [],\n };\n\n state = {\n modifierOpen: false,\n placement: null,\n };\n\n handleDocumentClick = e => {\n if (this.node && !this.node.contains(e.target)) {\n this.props.onClose();\n }\n }\n\n componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n getI18n = () => {\n const { intl } = this.props;\n\n return {\n search: intl.formatMessage(messages.emoji_search),\n notfound: intl.formatMessage(messages.emoji_not_found),\n categories: {\n search: intl.formatMessage(messages.search_results),\n recent: intl.formatMessage(messages.recent),\n people: intl.formatMessage(messages.people),\n nature: intl.formatMessage(messages.nature),\n foods: intl.formatMessage(messages.food),\n activity: intl.formatMessage(messages.activity),\n places: intl.formatMessage(messages.travel),\n objects: intl.formatMessage(messages.objects),\n symbols: intl.formatMessage(messages.symbols),\n flags: intl.formatMessage(messages.flags),\n custom: intl.formatMessage(messages.custom),\n },\n };\n }\n\n handleClick = emoji => {\n if (!emoji.native) {\n emoji.native = emoji.colons;\n }\n\n this.props.onClose();\n this.props.onPick(emoji);\n }\n\n handleModifierOpen = () => {\n this.setState({ modifierOpen: true });\n }\n\n handleModifierClose = () => {\n this.setState({ modifierOpen: false });\n }\n\n handleModifierChange = modifier => {\n this.props.onSkinTone(modifier);\n }\n\n render () {\n const { loading, style, intl, custom_emojis, skinTone, frequentlyUsedEmojis } = this.props;\n\n if (loading) {\n return <div style={{ width: 299 }} />;\n }\n\n const title = intl.formatMessage(messages.emoji);\n const { modifierOpen } = this.state;\n\n return (\n <div className={classNames('emoji-picker-dropdown__menu', { selecting: modifierOpen })} style={style} ref={this.setRef}>\n <EmojiPicker\n perLine={8}\n emojiSize={22}\n sheetSize={32}\n custom={buildCustomEmojis(custom_emojis)}\n color=''\n emoji=''\n set='twitter'\n title={title}\n i18n={this.getI18n()}\n onClick={this.handleClick}\n include={categoriesSort}\n recent={frequentlyUsedEmojis}\n skin={skinTone}\n showPreview={false}\n backgroundImageFn={backgroundImageFn}\n emojiTooltip\n />\n\n <ModifierPicker\n active={modifierOpen}\n modifier={skinTone}\n onOpen={this.handleModifierOpen}\n onClose={this.handleModifierClose}\n onChange={this.handleModifierChange}\n />\n </div>\n );\n }\n\n}\n\n@injectIntl\nexport default class EmojiPickerDropdown extends React.PureComponent {\n\n static propTypes = {\n custom_emojis: ImmutablePropTypes.list,\n frequentlyUsedEmojis: PropTypes.arrayOf(PropTypes.string),\n intl: PropTypes.object.isRequired,\n onPickEmoji: PropTypes.func.isRequired,\n onSkinTone: PropTypes.func.isRequired,\n skinTone: PropTypes.number.isRequired,\n };\n\n state = {\n active: false,\n loading: false,\n };\n\n setRef = (c) => {\n this.dropdown = c;\n }\n\n onShowDropdown = ({ target }) => {\n this.setState({ active: true });\n\n if (!EmojiPicker) {\n this.setState({ loading: true });\n\n EmojiPickerAsync().then(EmojiMart => {\n EmojiPicker = EmojiMart.Picker;\n Emoji = EmojiMart.Emoji;\n\n this.setState({ loading: false });\n }).catch(() => {\n this.setState({ loading: false });\n });\n }\n\n const { top } = target.getBoundingClientRect();\n this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n }\n\n onHideDropdown = () => {\n this.setState({ active: false });\n }\n\n onToggle = (e) => {\n if (!this.state.loading && (!e.key || e.key === 'Enter')) {\n if (this.state.active) {\n this.onHideDropdown();\n } else {\n this.onShowDropdown(e);\n }\n }\n }\n\n handleKeyDown = e => {\n if (e.key === 'Escape') {\n this.onHideDropdown();\n }\n }\n\n setTargetRef = c => {\n this.target = c;\n }\n\n findTarget = () => {\n return this.target;\n }\n\n render () {\n const { intl, onPickEmoji, onSkinTone, skinTone, frequentlyUsedEmojis } = this.props;\n const title = intl.formatMessage(messages.emoji);\n const { active, loading, placement } = this.state;\n\n return (\n <div className='emoji-picker-dropdown' onKeyDown={this.handleKeyDown}>\n <div ref={this.setTargetRef} className='emoji-button' title={title} aria-label={title} aria-expanded={active} role='button' onClick={this.onToggle} onKeyDown={this.onToggle} tabIndex={0}>\n <img\n className={classNames('emojione', { 'pulse-loading': active && loading })}\n alt='🙂'\n src={`${assetHost}/emoji/1f602.svg`}\n />\n </div>\n\n <Overlay show={active} placement={placement} target={this.findTarget}>\n <EmojiPickerMenu\n custom_emojis={this.props.custom_emojis}\n loading={loading}\n onClose={this.onHideDropdown}\n onPick={onPickEmoji}\n onSkinTone={onSkinTone}\n skinTone={skinTone}\n frequentlyUsedEmojis={frequentlyUsedEmojis}\n />\n </Overlay>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js","import { connect } from 'react-redux';\nimport UploadForm from '../components/upload_form';\n\nconst mapStateToProps = state => ({\n mediaIds: state.getIn(['compose', 'media_attachments']).map(item => item.get('id')),\n});\n\nexport default connect(mapStateToProps)(UploadForm);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/upload_form_container.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport UploadProgressContainer from '../containers/upload_progress_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport UploadContainer from '../containers/upload_container';\n\nexport default class UploadForm extends ImmutablePureComponent {\n\n static propTypes = {\n mediaIds: ImmutablePropTypes.list.isRequired,\n };\n\n render () {\n const { mediaIds } = this.props;\n\n return (\n <div className='compose-form__upload-wrapper'>\n <UploadProgressContainer />\n\n <div className='compose-form__uploads-wrapper'>\n {mediaIds.map(id => (\n <UploadContainer id={id} key={id} />\n ))}\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/upload_form.js","import { connect } from 'react-redux';\nimport UploadProgress from '../components/upload_progress';\n\nconst mapStateToProps = state => ({\n active: state.getIn(['compose', 'is_uploading']),\n progress: state.getIn(['compose', 'progress']),\n});\n\nexport default connect(mapStateToProps)(UploadProgress);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/upload_progress_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadProgress extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n progress: PropTypes.number,\n };\n\n render () {\n const { active, progress } = this.props;\n\n if (!active) {\n return null;\n }\n\n return (\n <div className='upload-progress'>\n <div className='upload-progress__icon'>\n <i className='fa fa-upload' />\n </div>\n\n <div className='upload-progress__message'>\n <FormattedMessage id='upload_progress.label' defaultMessage='Uploading...' />\n\n <div className='upload-progress__backdrop'>\n <Motion defaultStyle={{ width: 0 }} style={{ width: spring(progress) }}>\n {({ width }) =>\n <div className='upload-progress__tracker' style={{ width: `${width}%` }} />\n }\n </Motion>\n </div>\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/upload_progress.js","import { connect } from 'react-redux';\nimport Upload from '../components/upload';\nimport { undoUploadCompose, changeUploadCompose } from '../../../actions/compose';\nimport { openModal } from '../../../actions/modal';\n\nconst mapStateToProps = (state, { id }) => ({\n media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onUndo: id => {\n dispatch(undoUploadCompose(id));\n },\n\n onDescriptionChange: (id, description) => {\n dispatch(changeUploadCompose(id, { description }));\n },\n\n onOpenFocalPoint: id => {\n dispatch(openModal('FOCAL_POINT', { id }));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Upload);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/upload_container.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n description: { id: 'upload_form.description', defaultMessage: 'Describe for the visually impaired' },\n});\n\n@injectIntl\nexport default class Upload extends ImmutablePureComponent {\n\n static propTypes = {\n media: ImmutablePropTypes.map.isRequired,\n intl: PropTypes.object.isRequired,\n onUndo: PropTypes.func.isRequired,\n onDescriptionChange: PropTypes.func.isRequired,\n onOpenFocalPoint: PropTypes.func.isRequired,\n };\n\n state = {\n hovered: false,\n focused: false,\n dirtyDescription: null,\n };\n\n handleUndoClick = () => {\n this.props.onUndo(this.props.media.get('id'));\n }\n\n handleFocalPointClick = () => {\n this.props.onOpenFocalPoint(this.props.media.get('id'));\n }\n\n handleInputChange = e => {\n this.setState({ dirtyDescription: e.target.value });\n }\n\n handleMouseEnter = () => {\n this.setState({ hovered: true });\n }\n\n handleMouseLeave = () => {\n this.setState({ hovered: false });\n }\n\n handleInputFocus = () => {\n this.setState({ focused: true });\n }\n\n handleInputBlur = () => {\n const { dirtyDescription } = this.state;\n\n this.setState({ focused: false, dirtyDescription: null });\n\n if (dirtyDescription !== null) {\n this.props.onDescriptionChange(this.props.media.get('id'), dirtyDescription);\n }\n }\n\n render () {\n const { intl, media } = this.props;\n const active = this.state.hovered || this.state.focused;\n const description = this.state.dirtyDescription || (this.state.dirtyDescription !== '' && media.get('description')) || '';\n const focusX = media.getIn(['meta', 'focus', 'x']);\n const focusY = media.getIn(['meta', 'focus', 'y']);\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n return (\n <div className='compose-form__upload' onMouseEnter={this.handleMouseEnter} onMouseLeave={this.handleMouseLeave}>\n <Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12 }) }}>\n {({ scale }) => (\n <div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}>\n <div className={classNames('compose-form__upload__actions', { active })}>\n <button className='icon-button' onClick={this.handleUndoClick}><i className='fa fa-times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>\n {media.get('type') === 'image' && <button className='icon-button' onClick={this.handleFocalPointClick}><i className='fa fa-crosshairs' /> <FormattedMessage id='upload_form.focus' defaultMessage='Crop' /></button>}\n </div>\n\n <div className={classNames('compose-form__upload-description', { active })}>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.description)}</span>\n\n <input\n placeholder={intl.formatMessage(messages.description)}\n type='text'\n value={description}\n maxLength={420}\n onFocus={this.handleInputFocus}\n onChange={this.handleInputChange}\n onBlur={this.handleInputBlur}\n />\n </label>\n </div>\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/upload.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport Warning from '../components/warning';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { me } from '../../../initial_state';\n\nconst APPROX_HASHTAG_RE = /(?:^|[^\\/\\)\\w])#(\\w*[a-zA-Z·]\\w*)/i;\n\nconst mapStateToProps = state => ({\n needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),\n hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),\n directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct',\n});\n\nconst WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning }) => {\n if (needsLockWarning) {\n return <Warning message={<FormattedMessage id='compose_form.lock_disclaimer' defaultMessage='Your account is not {locked}. Anyone can follow you to view your follower-only posts.' values={{ locked: <a href='/user-settings'><FormattedMessage id='compose_form.lock_disclaimer.lock' defaultMessage='locked' /></a> }} />} />;\n }\n\n if (hashtagWarning) {\n return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage=\"This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.\" />} />;\n }\n\n if (directMessageWarning) {\n const message = (\n <span>\n <FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be sent to all the mentioned users.' /> <a href='/terms' target='_blank'><FormattedMessage id='compose_form.direct_message_warning_learn_more' defaultMessage='Learn more' /></a>\n </span>\n );\n\n return <Warning message={message} />;\n }\n\n return null;\n};\n\nWarningWrapper.propTypes = {\n needsLockWarning: PropTypes.bool,\n hashtagWarning: PropTypes.bool,\n directMessageWarning: PropTypes.bool,\n};\n\nexport default connect(mapStateToProps)(WarningWrapper);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/warning_container.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\n\nexport default class Warning extends React.PureComponent {\n\n static propTypes = {\n message: PropTypes.node.isRequired,\n };\n\n render () {\n const { message } = this.props;\n\n return (\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='compose-form__warning' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n {message}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/warning.js","import { urlRegex } from './url_regex';\n\nconst urlPlaceholder = 'xxxxxxxxxxxxxxxxxxxxxxx';\n\nexport function countableText(inputText) {\n return inputText;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/util/counter.js","const regexen = {};\n\nconst regexSupplant = function(regex, flags) {\n flags = flags || '';\n if (typeof regex !== 'string') {\n if (regex.global && flags.indexOf('g') < 0) {\n flags += 'g';\n }\n if (regex.ignoreCase && flags.indexOf('i') < 0) {\n flags += 'i';\n }\n if (regex.multiline && flags.indexOf('m') < 0) {\n flags += 'm';\n }\n\n regex = regex.source;\n }\n return new RegExp(regex.replace(/#\\{(\\w+)\\}/g, function(match, name) {\n var newRegex = regexen[name] || '';\n if (typeof newRegex !== 'string') {\n newRegex = newRegex.source;\n }\n return newRegex;\n }), flags);\n};\n\nconst stringSupplant = function(str, values) {\n return str.replace(/#\\{(\\w+)\\}/g, function(match, name) {\n return values[name] || '';\n });\n};\n\nexport const urlRegex = (function() {\n regexen.spaces_group = /\\x09-\\x0D\\x20\\x85\\xA0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000/;\n regexen.invalid_chars_group = /\\uFFFE\\uFEFF\\uFFFF\\u202A-\\u202E/;\n regexen.punct = /\\!'#%&'\\(\\)*\\+,\\\\\\-\\.\\/:;<=>\\?@\\[\\]\\^_{|}~\\$/;\n regexen.validUrlPrecedingChars = regexSupplant(/(?:[^A-Za-z0-9@@$###{invalid_chars_group}]|^)/);\n regexen.invalidDomainChars = stringSupplant('#{punct}#{spaces_group}#{invalid_chars_group}', regexen);\n regexen.validDomainChars = regexSupplant(/[^#{invalidDomainChars}]/);\n regexen.validSubdomain = regexSupplant(/(?:(?:#{validDomainChars}(?:[_-]|#{validDomainChars})*)?#{validDomainChars}\\.)/);\n regexen.validDomainName = regexSupplant(/(?:(?:#{validDomainChars}(?:-|#{validDomainChars})*)?#{validDomainChars}\\.)/);\n regexen.validGTLD = regexSupplant(RegExp(\n '(?:(?:' +\n '삼성|닷컴|닷넷|香格里拉|餐厅|食品|飞利浦|電訊盈科|集团|通販|购物|谷歌|诺基亚|联通|网络|网站|网店|网址|组织机构|移动|珠宝|点看|游戏|淡马锡|机构|書籍|时尚|新闻|政府|' +\n '政务|手表|手机|我爱你|慈善|微博|广东|工行|家電|娱乐|天主教|大拿|大众汽车|在线|嘉里大酒店|嘉里|商标|商店|商城|公益|公司|八卦|健康|信息|佛山|企业|中文网|中信|世界|' +\n 'ポイント|ファッション|セール|ストア|コム|グーグル|クラウド|みんな|คอม|संगठन|नेट|कॉम|همراه|موقع|موبايلي|كوم|كاثوليك|عرب|شبكة|' +\n 'بيتك|بازار|العليان|ارامكو|اتصالات|ابوظبي|קום|сайт|рус|орг|онлайн|москва|ком|католик|дети|' +\n 'zuerich|zone|zippo|zip|zero|zara|zappos|yun|youtube|you|yokohama|yoga|yodobashi|yandex|yamaxun|' +\n 'yahoo|yachts|xyz|xxx|xperia|xin|xihuan|xfinity|xerox|xbox|wtf|wtc|wow|world|works|work|woodside|' +\n 'wolterskluwer|wme|winners|wine|windows|win|williamhill|wiki|wien|whoswho|weir|weibo|wedding|wed|' +\n 'website|weber|webcam|weatherchannel|weather|watches|watch|warman|wanggou|wang|walter|walmart|' +\n 'wales|vuelos|voyage|voto|voting|vote|volvo|volkswagen|vodka|vlaanderen|vivo|viva|vistaprint|' +\n 'vista|vision|visa|virgin|vip|vin|villas|viking|vig|video|viajes|vet|versicherung|' +\n 'vermögensberatung|vermögensberater|verisign|ventures|vegas|vanguard|vana|vacations|ups|uol|uno|' +\n 'university|unicom|uconnect|ubs|ubank|tvs|tushu|tunes|tui|tube|trv|trust|travelersinsurance|' +\n 'travelers|travelchannel|travel|training|trading|trade|toys|toyota|town|tours|total|toshiba|' +\n 'toray|top|tools|tokyo|today|tmall|tkmaxx|tjx|tjmaxx|tirol|tires|tips|tiffany|tienda|tickets|' +\n 'tiaa|theatre|theater|thd|teva|tennis|temasek|telefonica|telecity|tel|technology|tech|team|tdk|' +\n 'tci|taxi|tax|tattoo|tatar|tatamotors|target|taobao|talk|taipei|tab|systems|symantec|sydney|' +\n 'swiss|swiftcover|swatch|suzuki|surgery|surf|support|supply|supplies|sucks|style|study|studio|' +\n 'stream|store|storage|stockholm|stcgroup|stc|statoil|statefarm|statebank|starhub|star|staples|' +\n 'stada|srt|srl|spreadbetting|spot|spiegel|space|soy|sony|song|solutions|solar|sohu|software|' +\n 'softbank|social|soccer|sncf|smile|smart|sling|skype|sky|skin|ski|site|singles|sina|silk|shriram|' +\n 'showtime|show|shouji|shopping|shop|shoes|shiksha|shia|shell|shaw|sharp|shangrila|sfr|sexy|sex|' +\n 'sew|seven|ses|services|sener|select|seek|security|secure|seat|search|scot|scor|scjohnson|' +\n 'science|schwarz|schule|school|scholarships|schmidt|schaeffler|scb|sca|sbs|sbi|saxo|save|sas|' +\n 'sarl|sapo|sap|sanofi|sandvikcoromant|sandvik|samsung|samsclub|salon|sale|sakura|safety|safe|' +\n 'saarland|ryukyu|rwe|run|ruhr|rugby|rsvp|room|rogers|rodeo|rocks|rocher|rmit|rip|rio|ril|' +\n 'rightathome|ricoh|richardli|rich|rexroth|reviews|review|restaurant|rest|republican|report|' +\n 'repair|rentals|rent|ren|reliance|reit|reisen|reise|rehab|redumbrella|redstone|red|recipes|' +\n 'realty|realtor|realestate|read|raid|radio|racing|qvc|quest|quebec|qpon|pwc|pub|prudential|pru|' +\n 'protection|property|properties|promo|progressive|prof|productions|prod|pro|prime|press|praxi|' +\n 'pramerica|post|porn|politie|poker|pohl|pnc|plus|plumbing|playstation|play|place|pizza|pioneer|' +\n 'pink|ping|pin|pid|pictures|pictet|pics|piaget|physio|photos|photography|photo|phone|philips|phd|' +\n 'pharmacy|pfizer|pet|pccw|pay|passagens|party|parts|partners|pars|paris|panerai|panasonic|' +\n 'pamperedchef|page|ovh|ott|otsuka|osaka|origins|orientexpress|organic|org|orange|oracle|open|ooo|' +\n 'onyourside|online|onl|ong|one|omega|ollo|oldnavy|olayangroup|olayan|okinawa|office|off|observer|' +\n 'obi|nyc|ntt|nrw|nra|nowtv|nowruz|now|norton|northwesternmutual|nokia|nissay|nissan|ninja|nikon|' +\n 'nike|nico|nhk|ngo|nfl|nexus|nextdirect|next|news|newholland|new|neustar|network|netflix|netbank|' +\n 'net|nec|nba|navy|natura|nationwide|name|nagoya|nadex|nab|mutuelle|mutual|museum|mtr|mtpc|mtn|' +\n 'msd|movistar|movie|mov|motorcycles|moto|moscow|mortgage|mormon|mopar|montblanc|monster|money|' +\n 'monash|mom|moi|moe|moda|mobily|mobile|mobi|mma|mls|mlb|mitsubishi|mit|mint|mini|mil|microsoft|' +\n 'miami|metlife|merckmsd|meo|menu|men|memorial|meme|melbourne|meet|media|med|mckinsey|mcdonalds|' +\n 'mcd|mba|mattel|maserati|marshalls|marriott|markets|marketing|market|map|mango|management|man|' +\n 'makeup|maison|maif|madrid|macys|luxury|luxe|lupin|lundbeck|ltda|ltd|lplfinancial|lpl|love|lotto|' +\n 'lotte|london|lol|loft|locus|locker|loans|loan|lixil|living|live|lipsy|link|linde|lincoln|limo|' +\n 'limited|lilly|like|lighting|lifestyle|lifeinsurance|life|lidl|liaison|lgbt|lexus|lego|legal|' +\n 'lefrak|leclerc|lease|lds|lawyer|law|latrobe|latino|lat|lasalle|lanxess|landrover|land|lancome|' +\n 'lancia|lancaster|lamer|lamborghini|ladbrokes|lacaixa|kyoto|kuokgroup|kred|krd|kpn|kpmg|kosher|' +\n 'komatsu|koeln|kiwi|kitchen|kindle|kinder|kim|kia|kfh|kerryproperties|kerrylogistics|kerryhotels|' +\n 'kddi|kaufen|juniper|juegos|jprs|jpmorgan|joy|jot|joburg|jobs|jnj|jmp|jll|jlc|jio|jewelry|jetzt|' +\n 'jeep|jcp|jcb|java|jaguar|iwc|iveco|itv|itau|istanbul|ist|ismaili|iselect|irish|ipiranga|' +\n 'investments|intuit|international|intel|int|insure|insurance|institute|ink|ing|info|infiniti|' +\n 'industries|immobilien|immo|imdb|imamat|ikano|iinet|ifm|ieee|icu|ice|icbc|ibm|hyundai|hyatt|' +\n 'hughes|htc|hsbc|how|house|hotmail|hotels|hoteles|hot|hosting|host|hospital|horse|honeywell|' +\n 'honda|homesense|homes|homegoods|homedepot|holiday|holdings|hockey|hkt|hiv|hitachi|hisamitsu|' +\n 'hiphop|hgtv|hermes|here|helsinki|help|healthcare|health|hdfcbank|hdfc|hbo|haus|hangout|hamburg|' +\n 'hair|guru|guitars|guide|guge|gucci|guardian|group|grocery|gripe|green|gratis|graphics|grainger|' +\n 'gov|got|gop|google|goog|goodyear|goodhands|goo|golf|goldpoint|gold|godaddy|gmx|gmo|gmbh|gmail|' +\n 'globo|global|gle|glass|glade|giving|gives|gifts|gift|ggee|george|genting|gent|gea|gdn|gbiz|' +\n 'garden|gap|games|game|gallup|gallo|gallery|gal|fyi|futbol|furniture|fund|fun|fujixerox|fujitsu|' +\n 'ftr|frontier|frontdoor|frogans|frl|fresenius|free|fox|foundation|forum|forsale|forex|ford|' +\n 'football|foodnetwork|food|foo|fly|flsmidth|flowers|florist|flir|flights|flickr|fitness|fit|' +\n 'fishing|fish|firmdale|firestone|fire|financial|finance|final|film|fido|fidelity|fiat|ferrero|' +\n 'ferrari|feedback|fedex|fast|fashion|farmers|farm|fans|fan|family|faith|fairwinds|fail|fage|' +\n 'extraspace|express|exposed|expert|exchange|everbank|events|eus|eurovision|etisalat|esurance|' +\n 'estate|esq|erni|ericsson|equipment|epson|epost|enterprises|engineering|engineer|energy|emerck|' +\n 'email|education|edu|edeka|eco|eat|earth|dvr|dvag|durban|dupont|duns|dunlop|duck|dubai|dtv|drive|' +\n 'download|dot|doosan|domains|doha|dog|dodge|doctor|docs|dnp|diy|dish|discover|discount|directory|' +\n 'direct|digital|diet|diamonds|dhl|dev|design|desi|dentist|dental|democrat|delta|deloitte|dell|' +\n 'delivery|degree|deals|dealer|deal|dds|dclk|day|datsun|dating|date|data|dance|dad|dabur|cyou|' +\n 'cymru|cuisinella|csc|cruises|cruise|crs|crown|cricket|creditunion|creditcard|credit|courses|' +\n 'coupons|coupon|country|corsica|coop|cool|cookingchannel|cooking|contractors|contact|consulting|' +\n 'construction|condos|comsec|computer|compare|company|community|commbank|comcast|com|cologne|' +\n 'college|coffee|codes|coach|clubmed|club|cloud|clothing|clinique|clinic|click|cleaning|claims|' +\n 'cityeats|city|citic|citi|citadel|cisco|circle|cipriani|church|chrysler|chrome|christmas|chloe|' +\n 'chintai|cheap|chat|chase|channel|chanel|cfd|cfa|cern|ceo|center|ceb|cbs|cbre|cbn|cba|catholic|' +\n 'catering|cat|casino|cash|caseih|case|casa|cartier|cars|careers|career|care|cards|caravan|car|' +\n 'capitalone|capital|capetown|canon|cancerresearch|camp|camera|cam|calvinklein|call|cal|cafe|cab|' +\n 'bzh|buzz|buy|business|builders|build|bugatti|budapest|brussels|brother|broker|broadway|' +\n 'bridgestone|bradesco|box|boutique|bot|boston|bostik|bosch|boots|booking|book|boo|bond|bom|bofa|' +\n 'boehringer|boats|bnpparibas|bnl|bmw|bms|blue|bloomberg|blog|blockbuster|blanco|blackfriday|' +\n 'black|biz|bio|bingo|bing|bike|bid|bible|bharti|bet|bestbuy|best|berlin|bentley|beer|beauty|' +\n 'beats|bcn|bcg|bbva|bbt|bbc|bayern|bauhaus|basketball|baseball|bargains|barefoot|barclays|' +\n 'barclaycard|barcelona|bar|bank|band|bananarepublic|banamex|baidu|baby|azure|axa|aws|avianca|' +\n 'autos|auto|author|auspost|audio|audible|audi|auction|attorney|athleta|associates|asia|asda|arte|' +\n 'art|arpa|army|archi|aramco|arab|aquarelle|apple|app|apartments|aol|anz|anquan|android|analytics|' +\n 'amsterdam|amica|amfam|amex|americanfamily|americanexpress|alstom|alsace|ally|allstate|allfinanz|' +\n 'alipay|alibaba|alfaromeo|akdn|airtel|airforce|airbus|aigo|aig|agency|agakhan|africa|afl|' +\n 'afamilycompany|aetna|aero|aeg|adult|ads|adac|actor|active|aco|accountants|accountant|accenture|' +\n 'academy|abudhabi|abogado|able|abc|abbvie|abbott|abb|abarth|aarp|aaa|onion' +\n ')(?=[^0-9a-zA-Z@]|$))'));\n regexen.validCCTLD = regexSupplant(RegExp(\n '(?:(?:' +\n '한국|香港|澳門|新加坡|台灣|台湾|中國|中国|გე|ไทย|ලංකා|ഭാരതം|ಭಾರತ|భారత్|சிங்கப்பூர்|இலங்கை|இந்தியா|ଭାରତ|ભારત|ਭਾਰਤ|' +\n 'ভাৰত|ভারত|বাংলা|भारोत|भारतम्|भारत|ڀارت|پاکستان|مليسيا|مصر|قطر|فلسطين|عمان|عراق|سورية|سودان|تونس|' +\n 'بھارت|بارت|ایران|امارات|المغرب|السعودية|الجزائر|الاردن|հայ|қаз|укр|срб|рф|мон|мкд|ею|бел|бг|ελ|' +\n 'zw|zm|za|yt|ye|ws|wf|vu|vn|vi|vg|ve|vc|va|uz|uy|us|um|uk|ug|ua|tz|tw|tv|tt|tr|tp|to|tn|tm|tl|tk|' +\n 'tj|th|tg|tf|td|tc|sz|sy|sx|sv|su|st|ss|sr|so|sn|sm|sl|sk|sj|si|sh|sg|se|sd|sc|sb|sa|rw|ru|rs|ro|' +\n 're|qa|py|pw|pt|ps|pr|pn|pm|pl|pk|ph|pg|pf|pe|pa|om|nz|nu|nr|np|no|nl|ni|ng|nf|ne|nc|na|mz|my|mx|' +\n 'mw|mv|mu|mt|ms|mr|mq|mp|mo|mn|mm|ml|mk|mh|mg|mf|me|md|mc|ma|ly|lv|lu|lt|ls|lr|lk|li|lc|lb|la|kz|' +\n 'ky|kw|kr|kp|kn|km|ki|kh|kg|ke|jp|jo|jm|je|it|is|ir|iq|io|in|im|il|ie|id|hu|ht|hr|hn|hm|hk|gy|gw|' +\n 'gu|gt|gs|gr|gq|gp|gn|gm|gl|gi|gh|gg|gf|ge|gd|gb|ga|fr|fo|fm|fk|fj|fi|eu|et|es|er|eh|eg|ee|ec|dz|' +\n 'do|dm|dk|dj|de|cz|cy|cx|cw|cv|cu|cr|co|cn|cm|cl|ck|ci|ch|cg|cf|cd|cc|ca|bz|by|bw|bv|bt|bs|br|bq|' +\n 'bo|bn|bm|bl|bj|bi|bh|bg|bf|be|bd|bb|ba|az|ax|aw|au|at|as|ar|aq|ao|an|am|al|ai|ag|af|ae|ad|ac' +\n ')(?=[^0-9a-zA-Z@]|$))'));\n regexen.validPunycode = /(?:xn--[0-9a-z]+)/;\n regexen.validSpecialCCTLD = /(?:(?:co|tv)(?=[^0-9a-zA-Z@]|$))/;\n regexen.validDomain = regexSupplant(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/);\n regexen.validPortNumber = /[0-9]+/;\n regexen.pd = /\\u002d\\u058a\\u05be\\u1400\\u1806\\u2010-\\u2015\\u2e17\\u2e1a\\u2e3a\\u2e40\\u301c\\u3030\\u30a0\\ufe31\\ufe58\\ufe63\\uff0d/;\n regexen.validGeneralUrlPathChars = regexSupplant(/[^#{spaces_group}\\(\\)\\?]/i);\n // Allow URL paths to contain up to two nested levels of balanced parens\n // 1. Used in Wikipedia URLs like /Primer_(film)\n // 2. Used in IIS sessions like /S(dfd346)/\n // 3. Used in Rdio URLs like /track/We_Up_(Album_Version_(Edited))/\n regexen.validUrlBalancedParens = regexSupplant(\n '\\\\(' +\n '(?:' +\n '#{validGeneralUrlPathChars}+' +\n '|' +\n // allow one nested level of balanced parentheses\n '(?:' +\n '#{validGeneralUrlPathChars}*' +\n '\\\\(' +\n '#{validGeneralUrlPathChars}+' +\n '\\\\)' +\n '#{validGeneralUrlPathChars}*' +\n ')' +\n ')' +\n '\\\\)',\n 'i');\n // Valid end-of-path chracters (so /foo. does not gobble the period).\n // 1. Allow =&# for empty URL parameters and other URL-join artifacts\n regexen.validUrlPathEndingChars = regexSupplant(/[^#{spaces_group}\\(\\)\\?!\\*';:=\\,\\.\\$%\\[\\]#{pd}~&\\|@]|(?:#{validUrlBalancedParens})/i);\n // Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/\n regexen.validUrlPath = regexSupplant('(?:' +\n '(?:' +\n '#{validGeneralUrlPathChars}*' +\n '(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' +\n '#{validUrlPathEndingChars}'+\n ')|(?:@#{validGeneralUrlPathChars}+\\/)'+\n ')', 'i');\n regexen.validUrlQueryChars = /[a-z0-9!?\\*'@\\(\\);:&=\\+\\$\\/%#\\[\\]\\-_\\.,~|]/i;\n regexen.validUrlQueryEndingChars = /[a-z0-9_&=#\\/]/i;\n regexen.validUrl = regexSupplant(\n '(' + // $1 URL\n '(https?:\\\\/\\\\/)' + // $2 Protocol\n '(#{validDomain})' + // $3 Domain(s)\n '(?::(#{validPortNumber}))?' + // $4 Port number (optional)\n '(\\\\/#{validUrlPath}*)?' + // $5 URL Path\n '(\\\\?#{validUrlQueryChars}*#{validUrlQueryEndingChars})?' + // $6 Query String\n ')',\n 'gi');\n return regexen.validUrl;\n}());\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/util/url_regex.js","import { connect } from 'react-redux';\nimport ComposeForm from '../components/compose_form';\nimport { uploadCompose } from '../../../actions/compose';\nimport {\n changeCompose,\n submitCompose,\n clearComposeSuggestions,\n fetchComposeSuggestions,\n selectComposeSuggestion,\n changeComposeSpoilerText,\n insertEmojiCompose,\n} from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n text: state.getIn(['compose', 'text']),\n suggestion_token: state.getIn(['compose', 'suggestion_token']),\n suggestions: state.getIn(['compose', 'suggestions']),\n spoiler: state.getIn(['compose', 'spoiler']),\n spoiler_text: state.getIn(['compose', 'spoiler_text']),\n privacy: state.getIn(['compose', 'privacy']),\n focusDate: state.getIn(['compose', 'focusDate']),\n caretPosition: state.getIn(['compose', 'caretPosition']),\n preselectDate: state.getIn(['compose', 'preselectDate']),\n is_submitting: state.getIn(['compose', 'is_submitting']),\n is_uploading: state.getIn(['compose', 'is_uploading']),\n showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),\n anyMedia: state.getIn(['compose', 'media_attachments']).size > 0,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onChange (text) {\n dispatch(changeCompose(text));\n },\n\n onSubmit () {\n dispatch(submitCompose());\n },\n\n onClearSuggestions () {\n dispatch(clearComposeSuggestions());\n },\n\n onFetchSuggestions (token) {\n dispatch(fetchComposeSuggestions(token));\n },\n\n onSuggestionSelected (position, token, accountId) {\n dispatch(selectComposeSuggestion(position, token, accountId));\n },\n\n onChangeSpoilerText (checked) {\n dispatch(changeComposeSpoilerText(checked));\n },\n\n onPaste (files) {\n dispatch(uploadCompose(files));\n },\n\n onPickEmoji (position, data, needsSpace) {\n dispatch(insertEmojiCompose(position, data, needsSpace));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ComposeForm);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/compose_form_container.js","import React from 'react';\nimport ComposeFormContainer from './containers/compose_form_container';\nimport NavigationContainer from './containers/navigation_container';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\nimport { mountCompose, unmountCompose } from '../../actions/compose';\nimport { Link } from 'react-router-dom';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport SearchContainer from './containers/search_container';\nimport Motion from '../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport SearchResultsContainer from './containers/search_results_container';\nimport { changeComposing } from '../../actions/compose';\n\nconst messages = defineMessages({\n start: { id: 'getting_started.heading', defaultMessage: 'Getting started' },\n home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n public: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },\n community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },\n});\n\nconst mapStateToProps = (state, ownProps) => ({\n columns: state.getIn(['settings', 'columns']),\n showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage,\n});\n\n@connect(mapStateToProps)\n@injectIntl\nexport default class Compose extends React.PureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n columns: ImmutablePropTypes.list.isRequired,\n multiColumn: PropTypes.bool,\n showSearch: PropTypes.bool,\n isSearchPage: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { isSearchPage } = this.props;\n\n if (!isSearchPage) {\n this.props.dispatch(mountCompose());\n }\n }\n\n componentWillUnmount () {\n const { isSearchPage } = this.props;\n\n if (!isSearchPage) {\n this.props.dispatch(unmountCompose());\n }\n }\n\n onFocus = () => {\n this.props.dispatch(changeComposing(true));\n }\n\n onBlur = () => {\n this.props.dispatch(changeComposing(false));\n }\n\n render () {\n const { multiColumn, showSearch, isSearchPage, intl } = this.props;\n\n let header = '';\n\n if (multiColumn) {\n const { columns } = this.props;\n header = (\n <nav className='drawer__header'>\n <Link to='/getting-started' className='drawer__tab' title={intl.formatMessage(messages.start)} aria-label={intl.formatMessage(messages.start)}><i role='img' className='fa fa-fw fa-asterisk' /></Link>\n {!columns.some(column => column.get('id') === 'HOME') && (\n <Link to='/timelines/home' className='drawer__tab' title={intl.formatMessage(messages.home_timeline)} aria-label={intl.formatMessage(messages.home_timeline)}><i role='img' className='fa fa-fw fa-home' /></Link>\n )}\n {!columns.some(column => column.get('id') === 'NOTIFICATIONS') && (\n <Link to='/notifications' className='drawer__tab' title={intl.formatMessage(messages.notifications)} aria-label={intl.formatMessage(messages.notifications)}><i role='img' className='fa fa-fw fa-bell' /></Link>\n )}\n {!columns.some(column => column.get('id') === 'COMMUNITY') && (\n <Link to='/timelines/public/local' className='drawer__tab' title={intl.formatMessage(messages.community)} aria-label={intl.formatMessage(messages.community)}><i role='img' className='fa fa-fw fa-users' /></Link>\n )}\n {!columns.some(column => column.get('id') === 'PUBLIC') && (\n <Link to='/timelines/public' className='drawer__tab' title={intl.formatMessage(messages.public)} aria-label={intl.formatMessage(messages.public)}><i role='img' className='fa fa-fw fa-globe' /></Link>\n )}\n <a href='/user-settings' className='drawer__tab' title={intl.formatMessage(messages.preferences)} aria-label={intl.formatMessage(messages.preferences)}><i role='img' className='fa fa-fw fa-cog' /></a>\n <a href='/auth/sign_out' className='drawer__tab' data-method='delete' title={intl.formatMessage(messages.logout)} aria-label={intl.formatMessage(messages.logout)}><i role='img' className='fa fa-fw fa-sign-out' /></a>\n </nav>\n );\n }\n\n return (\n <div className='drawer'>\n {header}\n\n {(multiColumn || isSearchPage) && <SearchContainer /> }\n\n <div className='drawer__pager'>\n <div className='drawer__inner' onFocus={this.onFocus}>\n <NavigationContainer onClose={this.onBlur} />\n <ComposeFormContainer />\n {multiColumn && (\n <div className='drawer__inner__mastodon'>\n </div>\n )}\n </div>\n\n <Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}>\n {({ x }) => (\n <div className='drawer__inner darker' style={{ transform: `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>\n <SearchResultsContainer />\n </div>\n )}\n </Motion>\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/index.js","import React from 'react';\nimport { connect } from 'react-redux';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { makeGetAccount } from '../selectors';\nimport Account from '../components/account';\nimport {\n followAccount,\n unfollowAccount,\n blockAccount,\n unblockAccount,\n muteAccount,\n unmuteAccount,\n} from '../actions/accounts';\nimport { openModal } from '../actions/modal';\nimport { initMuteModal } from '../actions/mutes';\nimport { unfollowModal } from '../initial_state';\n\nconst messages = defineMessages({\n unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },\n});\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, props) => ({\n account: getAccount(state, props.id),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onFollow (account) {\n if (account.getIn(['relationship', 'following']) || account.getIn(['relationship', 'requested'])) {\n if (unfollowModal) {\n dispatch(openModal('CONFIRM', {\n message: <FormattedMessage id='confirmations.unfollow.message' defaultMessage='Are you sure you want to unfollow {name}?' values={{ name: <strong>@{account.get('acct')}</strong> }} />,\n confirm: intl.formatMessage(messages.unfollowConfirm),\n onConfirm: () => dispatch(unfollowAccount(account.get('id'))),\n }));\n } else {\n dispatch(unfollowAccount(account.get('id')));\n }\n } else {\n dispatch(followAccount(account.get('id')));\n }\n },\n\n onBlock (account) {\n if (account.getIn(['relationship', 'blocking'])) {\n dispatch(unblockAccount(account.get('id')));\n } else {\n dispatch(blockAccount(account.get('id')));\n }\n },\n\n onMute (account) {\n if (account.getIn(['relationship', 'muting'])) {\n dispatch(unmuteAccount(account.get('id')));\n } else {\n dispatch(initMuteModal(account));\n }\n },\n\n\n onMuteNotifications (account, notifications) {\n dispatch(muteAccount(account.get('id'), notifications));\n },\n});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Account));\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/containers/account_container.js","import React, { Fragment } from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Avatar from './avatar';\nimport DisplayName from './display_name';\nimport Permalink from './permalink';\nimport IconButton from './icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { me } from '../initial_state';\n\nconst messages = defineMessages({\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n requested: { id: 'account.requested', defaultMessage: 'Awaiting approval' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },\n mute_notifications: { id: 'account.mute_notifications', defaultMessage: 'Mute notifications from @{name}' },\n unmute_notifications: { id: 'account.unmute_notifications', defaultMessage: 'Unmute notifications from @{name}' },\n});\n\n@injectIntl\nexport default class Account extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n onMute: PropTypes.func.isRequired,\n onMuteNotifications: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n hidden: PropTypes.bool,\n };\n\n handleFollow = () => {\n this.props.onFollow(this.props.account);\n }\n\n handleBlock = () => {\n this.props.onBlock(this.props.account);\n }\n\n handleMute = () => {\n this.props.onMute(this.props.account);\n }\n\n handleMuteNotifications = () => {\n this.props.onMuteNotifications(this.props.account, true);\n }\n\n handleUnmuteNotifications = () => {\n this.props.onMuteNotifications(this.props.account, false);\n }\n\n render () {\n const { account, intl, hidden } = this.props;\n\n if (!account) {\n return <div />;\n }\n\n if (hidden) {\n return (\n <div>\n {account.get('display_name')}\n {account.get('username')}\n </div>\n );\n }\n\n let buttons;\n\n if (account.get('id') !== me && account.get('relationship', null) !== null) {\n const following = account.getIn(['relationship', 'following']);\n const requested = account.getIn(['relationship', 'requested']);\n const blocking = account.getIn(['relationship', 'blocking']);\n const muting = account.getIn(['relationship', 'muting']);\n\n if (requested) {\n buttons = <IconButton disabled icon='hourglass' title={intl.formatMessage(messages.requested)} />;\n } else if (blocking) {\n buttons = <IconButton active icon='unlock-alt' title={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.handleBlock} />;\n } else if (muting) {\n let hidingNotificationsButton;\n if (account.getIn(['relationship', 'muting_notifications'])) {\n hidingNotificationsButton = <IconButton active icon='bell' title={intl.formatMessage(messages.unmute_notifications, { name: account.get('username') })} onClick={this.handleUnmuteNotifications} />;\n } else {\n hidingNotificationsButton = <IconButton active icon='bell-slash' title={intl.formatMessage(messages.mute_notifications, { name: account.get('username') })} onClick={this.handleMuteNotifications} />;\n }\n buttons = (\n <Fragment>\n <IconButton active icon='volume-up' title={intl.formatMessage(messages.unmute, { name: account.get('username') })} onClick={this.handleMute} />\n {hidingNotificationsButton}\n </Fragment>\n );\n } else if (!account.get('moved') || following) {\n buttons = <IconButton icon={following ? 'user-times' : 'user-plus'} title={intl.formatMessage(following ? messages.unfollow : messages.follow)} onClick={this.handleFollow} active={following} />;\n }\n }\n\n return (\n <div className='account'>\n <div className='account__wrapper'>\n <Permalink key={account.get('id')} className='account__display-name' href={account.get('url')} to={`/accounts/${account.get('id')}`}>\n <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>\n <DisplayName account={account} />\n </Permalink>\n\n <div className='account__relationship'>\n {buttons}\n </div>\n </div>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/components/account.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from '../../../components/avatar';\nimport IconButton from '../../../components/icon_button';\nimport Permalink from '../../../components/permalink';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class NavigationBar extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n onClose: PropTypes.func,\n };\n\n render () {\n return (\n <div className='navigation-bar'>\n <Permalink href={this.props.account.get('url')} to={`/accounts/${this.props.account.get('id')}`}>\n <span style={{ display: 'none' }}>{this.props.account.get('acct')}</span>\n <Avatar account={this.props.account} size={40} />\n </Permalink>\n\n <div className='navigation-bar__profile'>\n <Permalink href={this.props.account.get('url')} to={`/accounts/${this.props.account.get('id')}`}>\n <strong className='navigation-bar__profile-account'>@{this.props.account.get('acct')}</strong>\n </Permalink>\n\n <a href='/user-settings' className='navigation-bar__profile-edit'><FormattedMessage id='navigation_bar.edit_profile' defaultMessage='Edit profile' /></a>\n </div>\n\n <IconButton title='' icon='close' onClick={this.props.onClose} />\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/navigation_bar.js","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { searchEnabled } from '../../../initial_state';\n\nconst messages = defineMessages({\n placeholder: { id: 'search.placeholder', defaultMessage: 'Search' },\n});\n\nclass SearchPopout extends React.PureComponent {\n\n static propTypes = {\n style: PropTypes.object,\n };\n\n render () {\n const { style } = this.props;\n const extraInformation = searchEnabled ? <FormattedMessage id='search_popout.tips.full_text' defaultMessage='Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.' /> : <FormattedMessage id='search_popout.tips.text' defaultMessage='Simple text returns matching display names, usernames and hashtags' />;\n return (\n <div style={{ ...style, position: 'absolute', width: 285 }}>\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='search-popout' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n <h4><FormattedMessage id='search_popout.search_format' defaultMessage='Advanced search format' /></h4>\n\n <ul>\n <li><em>#example</em> <FormattedMessage id='search_popout.tips.hashtag' defaultMessage='hashtag' /></li>\n <li><em>@username@domain</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.status' defaultMessage='status' /></li>\n </ul>\n\n {extraInformation}\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n\n@injectIntl\nexport default class Search extends React.PureComponent {\n\n static propTypes = {\n value: PropTypes.string.isRequired,\n submitted: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n onShow: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n expanded: false,\n };\n\n handleChange = (e) => {\n this.props.onChange(e.target.value);\n }\n\n handleClear = (e) => {\n e.preventDefault();\n\n if (this.props.value.length > 0 || this.props.submitted) {\n this.props.onClear();\n }\n }\n\n handleKeyDown = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n this.props.onSubmit();\n } else if (e.key === 'Escape') {\n document.querySelector('.ui').parentElement.focus();\n }\n }\n\n noop () {\n\n }\n\n handleFocus = () => {\n this.setState({ expanded: true });\n this.props.onShow();\n }\n\n handleBlur = () => {\n this.setState({ expanded: false });\n }\n\n render () {\n const { intl, value, submitted } = this.props;\n const { expanded } = this.state;\n const hasValue = value.length > 0 || submitted;\n\n return (\n <div className='search'>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.placeholder)}</span>\n <input\n className='search__input'\n type='text'\n placeholder={intl.formatMessage(messages.placeholder)}\n value={value}\n onChange={this.handleChange}\n onKeyUp={this.handleKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n </label>\n\n <div role='button' tabIndex='0' className='search__icon' onClick={this.handleClear}>\n <i className={`fa fa-search ${hasValue ? '' : 'active'}`} />\n <i aria-label={intl.formatMessage(messages.placeholder)} className={`fa fa-times-circle ${hasValue ? 'active' : ''}`} />\n </div>\n\n <Overlay show={expanded && !hasValue} placement='bottom' target={this}>\n <SearchPopout />\n </Overlay>\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/search.js","import { connect } from 'react-redux';\nimport NavigationBar from '../components/navigation_bar';\nimport { me } from '../../../initial_state';\n\nconst mapStateToProps = state => {\n return {\n account: state.getIn(['accounts', me]),\n };\n};\n\nexport default connect(mapStateToProps)(NavigationBar);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/navigation_container.js","import { connect } from 'react-redux';\nimport {\n changeSearch,\n clearSearch,\n submitSearch,\n showSearch,\n} from '../../../actions/search';\nimport Search from '../components/search';\n\nconst mapStateToProps = state => ({\n value: state.getIn(['search', 'value']),\n submitted: state.getIn(['search', 'submitted']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onChange (value) {\n dispatch(changeSearch(value));\n },\n\n onClear () {\n dispatch(clearSearch());\n },\n\n onSubmit () {\n dispatch(submitSearch());\n },\n\n onShow () {\n dispatch(showSearch());\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Search);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/search_container.js","import { connect } from 'react-redux';\nimport SearchResults from '../components/search_results';\n\nconst mapStateToProps = state => ({\n results: state.getIn(['search', 'results']),\n});\n\nexport default connect(mapStateToProps)(SearchResults);\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/containers/search_results_container.js","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\nimport AccountContainer from '../../../containers/account_container';\nimport StatusContainer from '../../../containers/status_container';\nimport { Link } from 'react-router-dom';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class SearchResults extends ImmutablePureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { results } = this.props;\n\n let accounts, statuses, hashtags;\n let count = 0;\n\n if (results.get('accounts') && results.get('accounts').size > 0) {\n count += results.get('accounts').size;\n accounts = (\n <div className='search-results__section'>\n <h5><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>\n\n {results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)}\n </div>\n );\n }\n\n if (results.get('statuses') && results.get('statuses').size > 0) {\n count += results.get('statuses').size;\n statuses = (\n <div className='search-results__section'>\n <h5><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>\n\n {results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}\n </div>\n );\n }\n\n if (results.get('hashtags') && results.get('hashtags').size > 0) {\n count += results.get('hashtags').size;\n hashtags = (\n <div className='search-results__section'>\n <h5><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>\n\n {results.get('hashtags').map(hashtag => (\n <Link key={hashtag} className='search-results__hashtag' to={`/timelines/tag/${hashtag}`}>\n #{hashtag}\n </Link>\n ))}\n </div>\n );\n }\n\n return (\n <div className='search-results'>\n <div className='search-results__header'>\n <FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />\n </div>\n\n {accounts}\n {statuses}\n {hashtags}\n </div>\n );\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./app/javascript/mastodon/features/compose/components/search_results.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/components/autosuggest_emoji.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/reply_indicator.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/reply_indicator_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/autosuggest_account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/autosuggest_account_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/autosuggest_hashtag.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/autosuggest_textarea.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/autosuggest_input.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/poll_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/poll_button_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/upload_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/upload_button_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/text_icon_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/spoiler_button_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/privacy_dropdown.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/privacy_dropdown_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/poll_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/poll_form_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/upload_progress_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/upload.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/upload_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/sensitive_button_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/upload_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/upload_form_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/warning.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/warning_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/compose_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/compose_form_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/navigation_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/index.js"],"names":["assetHost","process","env","CDN_HOST","AutosuggestEmoji","render","url","emoji","this","props","custom","imageUrl","mapping","unicodeMapping","native","replace","filename","className","src","alt","colons","React","PureComponent","messages","defineMessages","cancel","ReplyIndicator","injectIntl","onCancel","e","button","ctrlKey","metaKey","preventDefault","context","router","history","push","status","getIn","intl","content","__html","get","style","direction","isRtl","title","formatMessage","icon","onClick","handleClick","inverted","href","handleAccountClick","account","size","dangerouslySetInnerHTML","compact","media","ImmutablePureComponent","PropTypes","object","ImmutablePropTypes","map","func","isRequired","connect","getStatus","makeGetStatus","state","id","dispatch","cancelReplyCompose","AutosuggestAccount","getAccount","makeGetAccount","AutosuggestHashtag","tag","weeklyUses","shortNumberFormat","reduce","total","day","uses","name","undefined","defaultMessage","values","count","textAtCursorMatchesToken","str","caretPosition","word","left","slice","search","right","trim","length","indexOf","toLowerCase","AutosuggestTextarea","suggestionsHidden","focused","selectedSuggestion","lastToken","tokenStart","target","value","selectionStart","token","setState","onSuggestionsFetchRequested","onSuggestionsClearRequested","onChange","suggestions","disabled","which","isComposing","key","document","querySelector","parentElement","focus","Math","min","max","stopPropagation","onSuggestionSelected","defaultPrevented","onKeyDown","onFocus","suggestion","currentTarget","getAttribute","textarea","c","clipboardData","files","onPaste","i","inner","type","role","tabIndex","data-index","classNames","selected","onMouseDown","onSuggestionClick","componentWillReceiveProps","nextProps","placeholder","onKeyUp","autoFocus","children","display","inputRef","setTextarea","onBlur","aria-autocomplete","isEmpty","renderSuggestion","string","list","bool","searchTokens","AutosuggestInput","input","maxLength","ref","setInput","arrayOf","number","ImmutableList","add_poll","remove_poll","iconStyle","height","lineHeight","PollButton","active","unavailable","_","getState","removePoll","addPoll","upload","UploadButton","acceptContentTypes","onSelectFile","fileElement","click","resetFileKey","formats","setRef","multiple","handleChange","listOf","some","m","includes","uploadCompose","width","TextIconButton","label","ariaControls","aria-label","aria-expanded","aria-controls","marked","unmarked","changeComposeSpoilerness","public_short","public_long","unlisted_short","unlisted_long","private_short","private_long","direct_short","direct_long","change_privacy","listenerOptions","detectPassiveEvents","hasSupport","passive","PrivacyDropdownMenu","mounted","node","contains","onClose","element","items","index","findIndex","item","childNodes","shiftKey","lastChild","firstChild","focusedItem","componentDidMount","addEventListener","handleDocumentClick","componentWillUnmount","removeEventListener","placement","defaultStyle","opacity","scaleX","scaleY","spring","damping","stiffness","transform","zIndex","handleKeyDown","aria-selected","setFocusRef","fixedWidth","text","meta","PrivacyDropdown","open","isUserTouching","onModalClose","onModalOpen","actions","options","option","handleModalActionClick","top","getBoundingClientRect","activeElement","innerHeight","handleClose","handleMouseDown","componentWillMount","valueOption","find","expanded","handleToggle","handleButtonKeyDown","show","isModalOpen","modalType","changeComposeVisibility","openModal","closeModal","option_placeholder","add_option","remove_option","poll_duration","switchToMultiple","switchToSingle","minutes","hours","days","Option","onRemove","onToggleMultiple","handleToggleMultiple","onClearSuggestions","onFetchSuggestions","isPollMultiple","checkbox","onKeyPress","handleCheckboxKeypress","handleOptionTitleChange","handleOptionRemove","PollForm","onAddOption","onChangeSettings","isMultiple","expiresIn","onChangeOption","onRemoveOption","other","handleAddOption","handleSelectDuration","addPollOption","removePollOption","changePollOption","changePollSettings","clearComposeSuggestions","fetchComposeSuggestions","position","accountId","path","selectComposeSuggestion","progress","UploadProgress","Upload","onUndo","onOpenFocalPoint","focusX","focusY","x","y","scale","backgroundImage","backgroundPosition","handleUndoClick","handleFocalPointClick","undoUploadCompose","onSubmit","submitCompose","SensitiveButton","checked","changeComposeSensitivity","UploadForm","mediaIds","message","Warning","APPROX_HASHTAG_RE","needsLockWarning","me","hashtagWarning","test","directMessageWarning","locked","allowedAroundShortCode","spoiler_placeholder","publish","publishLoud","ComposeForm","keyCode","handleSubmit","autosuggestTextarea","isSubmitting","isChangingUpload","isUploading","anyMedia","fulltext","spoilerText","join","maxChars","onChangeSpoilerText","composeForm","singleColumn","window","innerWidth","documentElement","clientWidth","scrollIntoView","data","needsSpace","onPickEmoji","componentDidUpdate","prevProps","selectionEnd","focusDate","preselectDate","setSelectionRange","spoiler","showSearch","disabledButton","publishText","privacy","handleChangeSpoilerText","setSpoilerText","onSpoilerSuggestionSelected","setAutosuggestTextarea","handleFocus","isMobile","handleEmojiPick","block","instanceOf","Date","changeCompose","changeComposeSpoilerText","insertEmojiCompose","logoutMessage","logoutConfirm","onLogout","confirm","onConfirm","logOut","NavigationBar","start","home_timeline","notifications","public","community","preferences","logout","compose","Compose","ownProps","columns","multiColumn","isSearchPage","changeComposing","mountCompose","unmountCompose","header","to","column","handleLogoutClick","draggable","mascot","visibility"],"mappings":"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","file":"features/compose.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport unicodeMapping from '../features/emoji/emoji_unicode_mapping_light';\n\nconst assetHost = process.env.CDN_HOST || '';\n\nexport default class AutosuggestEmoji extends React.PureComponent {\n\n static propTypes = {\n emoji: PropTypes.object.isRequired,\n };\n\n render () {\n const { emoji } = this.props;\n let url;\n\n if (emoji.custom) {\n url = emoji.imageUrl;\n } else {\n const mapping = unicodeMapping[emoji.native] || unicodeMapping[emoji.native.replace(/\\uFE0F$/, '')];\n\n if (!mapping) {\n return null;\n }\n\n url = `${assetHost}/emoji/${mapping.filename}.svg`;\n }\n\n return (\n <div className='autosuggest-emoji'>\n <img\n className='emojione'\n src={url}\n alt={emoji.native || emoji.colons}\n />\n\n {emoji.colons}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Avatar from '../../../components/avatar';\nimport IconButton from '../../../components/icon_button';\nimport DisplayName from '../../../components/display_name';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { isRtl } from '../../../rtl';\nimport AttachmentList from 'mastodon/components/attachment_list';\n\nconst messages = defineMessages({\n cancel: { id: 'reply_indicator.cancel', defaultMessage: 'Cancel' },\n});\n\nexport default @injectIntl\nclass ReplyIndicator extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map,\n onCancel: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.onCancel();\n }\n\n handleAccountClick = (e) => {\n if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n e.preventDefault();\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n }\n\n render () {\n const { status, intl } = this.props;\n\n if (!status) {\n return null;\n }\n\n const content = { __html: status.get('contentHtml') };\n const style = {\n direction: isRtl(status.get('search_index')) ? 'rtl' : 'ltr',\n };\n\n return (\n <div className='reply-indicator'>\n <div className='reply-indicator__header'>\n <div className='reply-indicator__cancel'><IconButton title={intl.formatMessage(messages.cancel)} icon='times' onClick={this.handleClick} inverted /></div>\n\n <a href={status.getIn(['account', 'url'])} onClick={this.handleAccountClick} className='reply-indicator__display-name'>\n <div className='reply-indicator__display-avatar'><Avatar account={status.get('account')} size={24} /></div>\n <DisplayName account={status.get('account')} />\n </a>\n </div>\n\n <div className='reply-indicator__content' style={style} dangerouslySetInnerHTML={content} />\n\n {status.get('media_attachments').size > 0 && (\n <AttachmentList\n compact\n media={status.get('media_attachments')}\n />\n )}\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport { cancelReplyCompose } from '../../../actions/compose';\nimport { makeGetStatus } from '../../../selectors';\nimport ReplyIndicator from '../components/reply_indicator';\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = state => ({\n status: getStatus(state, { id: state.getIn(['compose', 'in_reply_to']) }),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = dispatch => ({\n\n onCancel () {\n dispatch(cancelReplyCompose());\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(ReplyIndicator);\n","import React from 'react';\nimport Avatar from '../../../components/avatar';\nimport DisplayName from '../../../components/display_name';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class AutosuggestAccount extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { account } = this.props;\n\n return (\n <div className='autosuggest-account' title={account.get('acct')}>\n <div className='autosuggest-account-icon'><Avatar account={account} size={18} /></div>\n <DisplayName account={account} />\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport AutosuggestAccount from '../components/autosuggest_account';\nimport { makeGetAccount } from '../../../selectors';\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { id }) => ({\n account: getAccount(state, id),\n });\n\n return mapStateToProps;\n};\n\nexport default connect(makeMapStateToProps)(AutosuggestAccount);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { shortNumberFormat } from 'mastodon/utils/numbers';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class AutosuggestHashtag extends React.PureComponent {\n\n static propTypes = {\n tag: PropTypes.shape({\n name: PropTypes.string.isRequired,\n url: PropTypes.string,\n history: PropTypes.array,\n }).isRequired,\n };\n\n render () {\n const { tag } = this.props;\n const weeklyUses = tag.history && shortNumberFormat(tag.history.reduce((total, day) => total + (day.uses * 1), 0));\n\n return (\n <div className='autosuggest-hashtag'>\n <div className='autosuggest-hashtag__name'>#<strong>{tag.name}</strong></div>\n {tag.history !== undefined && <div className='autosuggest-hashtag__uses'><FormattedMessage id='autosuggest_hashtag.per_week' defaultMessage='{count} per week' values={{ count: weeklyUses }} /></div>}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';\nimport AutosuggestEmoji from './autosuggest_emoji';\nimport AutosuggestHashtag from './autosuggest_hashtag';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { isRtl } from '../rtl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Textarea from 'react-textarea-autosize';\nimport classNames from 'classnames';\n\nconst textAtCursorMatchesToken = (str, caretPosition) => {\n let word;\n\n let left = str.slice(0, caretPosition).search(/\\S+$/);\n let right = str.slice(caretPosition).search(/\\s/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || ['@', ':', '#'].indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left + 1, word];\n } else {\n return [null, null];\n }\n};\n\nexport default class AutosuggestTextarea extends ImmutablePureComponent {\n\n static propTypes = {\n value: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsClearRequested: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n onKeyDown: PropTypes.func,\n onPaste: PropTypes.func.isRequired,\n autoFocus: PropTypes.bool,\n };\n\n static defaultProps = {\n autoFocus: true,\n };\n\n state = {\n suggestionsHidden: true,\n focused: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n onChange = (e) => {\n const [ tokenStart, token ] = textAtCursorMatchesToken(e.target.value, e.target.selectionStart);\n\n if (token !== null && this.state.lastToken !== token) {\n this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });\n this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n this.setState({ lastToken: null });\n this.props.onSuggestionsClearRequested();\n }\n\n this.props.onChange(e);\n }\n\n onKeyDown = (e) => {\n const { suggestions, disabled } = this.props;\n const { selectedSuggestion, suggestionsHidden } = this.state;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch(e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !this.props.onKeyDown) {\n return;\n }\n\n this.props.onKeyDown(e);\n }\n\n onBlur = () => {\n this.setState({ suggestionsHidden: true, focused: false });\n }\n\n onFocus = (e) => {\n this.setState({ focused: true });\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n onSuggestionClick = (e) => {\n const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);\n this.textarea.focus();\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n setTextarea = (c) => {\n this.textarea = c;\n }\n\n onPaste = (e) => {\n if (e.clipboardData && e.clipboardData.files.length === 1) {\n this.props.onPaste(e.clipboardData.files);\n e.preventDefault();\n }\n }\n\n renderSuggestion = (suggestion, i) => {\n const { selectedSuggestion } = this.state;\n let inner, key;\n\n if (suggestion.type === 'emoji') {\n inner = <AutosuggestEmoji emoji={suggestion} />;\n key = suggestion.id;\n } else if (suggestion.type === 'hashtag') {\n inner = <AutosuggestHashtag tag={suggestion} />;\n key = suggestion.name;\n } else if (suggestion.type === 'account') {\n inner = <AutosuggestAccountContainer id={suggestion.id} />;\n key = suggestion.id;\n }\n\n return (\n <div role='button' tabIndex='0' key={key} data-index={i} className={classNames('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion })} onMouseDown={this.onSuggestionClick}>\n {inner}\n </div>\n );\n }\n\n render () {\n const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;\n const { suggestionsHidden } = this.state;\n const style = { direction: 'ltr' };\n\n if (isRtl(value)) {\n style.direction = 'rtl';\n }\n\n return [\n <div className='compose-form__autosuggest-wrapper' key='autosuggest-wrapper'>\n <div className='autosuggest-textarea'>\n <label>\n <span style={{ display: 'none' }}>{placeholder}</span>\n\n <Textarea\n inputRef={this.setTextarea}\n className='autosuggest-textarea__textarea'\n disabled={disabled}\n placeholder={placeholder}\n autoFocus={autoFocus}\n value={value}\n onChange={this.onChange}\n onKeyDown={this.onKeyDown}\n onKeyUp={onKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onPaste={this.onPaste}\n style={style}\n aria-autocomplete='list'\n />\n </label>\n </div>\n {children}\n </div>,\n\n <div className='autosuggest-textarea__suggestions-wrapper' key='suggestions-wrapper'>\n <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>\n {suggestions.map(this.renderSuggestion)}\n </div>\n </div>,\n ];\n }\n\n}\n","import React from 'react';\nimport AutosuggestAccountContainer from '../features/compose/containers/autosuggest_account_container';\nimport AutosuggestEmoji from './autosuggest_emoji';\nimport AutosuggestHashtag from './autosuggest_hashtag';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { isRtl } from '../rtl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport classNames from 'classnames';\nimport { List as ImmutableList } from 'immutable';\n\nconst textAtCursorMatchesToken = (str, caretPosition, searchTokens) => {\n let word;\n\n let left = str.slice(0, caretPosition).search(/\\S+$/);\n let right = str.slice(caretPosition).search(/\\s/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || searchTokens.indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left + 1, word];\n } else {\n return [null, null];\n }\n};\n\nexport default class AutosuggestInput extends ImmutablePureComponent {\n\n static propTypes = {\n value: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsClearRequested: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n onKeyDown: PropTypes.func,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n id: PropTypes.string,\n searchTokens: PropTypes.arrayOf(PropTypes.string),\n maxLength: PropTypes.number,\n };\n\n static defaultProps = {\n autoFocus: true,\n searchTokens: ImmutableList(['@', ':', '#']),\n };\n\n state = {\n suggestionsHidden: true,\n focused: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n onChange = (e) => {\n const [ tokenStart, token ] = textAtCursorMatchesToken(e.target.value, e.target.selectionStart, this.props.searchTokens);\n\n if (token !== null && this.state.lastToken !== token) {\n this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });\n this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n this.setState({ lastToken: null });\n this.props.onSuggestionsClearRequested();\n }\n\n this.props.onChange(e);\n }\n\n onKeyDown = (e) => {\n const { suggestions, disabled } = this.props;\n const { selectedSuggestion, suggestionsHidden } = this.state;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch(e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !this.props.onKeyDown) {\n return;\n }\n\n this.props.onKeyDown(e);\n }\n\n onBlur = () => {\n this.setState({ suggestionsHidden: true, focused: false });\n }\n\n onFocus = () => {\n this.setState({ focused: true });\n }\n\n onSuggestionClick = (e) => {\n const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);\n this.input.focus();\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n setInput = (c) => {\n this.input = c;\n }\n\n renderSuggestion = (suggestion, i) => {\n const { selectedSuggestion } = this.state;\n let inner, key;\n\n if (suggestion.type === 'emoji') {\n inner = <AutosuggestEmoji emoji={suggestion} />;\n key = suggestion.id;\n } else if (suggestion.type ==='hashtag') {\n inner = <AutosuggestHashtag tag={suggestion} />;\n key = suggestion.name;\n } else if (suggestion.type === 'account') {\n inner = <AutosuggestAccountContainer id={suggestion.id} />;\n key = suggestion.id;\n }\n\n return (\n <div role='button' tabIndex='0' key={key} data-index={i} className={classNames('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion })} onMouseDown={this.onSuggestionClick}>\n {inner}\n </div>\n );\n }\n\n render () {\n const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength } = this.props;\n const { suggestionsHidden } = this.state;\n const style = { direction: 'ltr' };\n\n if (isRtl(value)) {\n style.direction = 'rtl';\n }\n\n return (\n <div className='autosuggest-input'>\n <label>\n <span style={{ display: 'none' }}>{placeholder}</span>\n\n <input\n type='text'\n ref={this.setInput}\n disabled={disabled}\n placeholder={placeholder}\n autoFocus={autoFocus}\n value={value}\n onChange={this.onChange}\n onKeyDown={this.onKeyDown}\n onKeyUp={onKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n style={style}\n aria-autocomplete='list'\n id={id}\n className={className}\n maxLength={maxLength}\n />\n </label>\n\n <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>\n {suggestions.map(this.renderSuggestion)}\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport IconButton from '../../../components/icon_button';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n add_poll: { id: 'poll_button.add_poll', defaultMessage: 'Add a poll' },\n remove_poll: { id: 'poll_button.remove_poll', defaultMessage: 'Remove poll' },\n});\n\nconst iconStyle = {\n height: null,\n lineHeight: '27px',\n};\n\nexport default\n@injectIntl\nclass PollButton extends React.PureComponent {\n\n static propTypes = {\n disabled: PropTypes.bool,\n unavailable: PropTypes.bool,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.onClick();\n }\n\n render () {\n const { intl, active, unavailable, disabled } = this.props;\n\n if (unavailable) {\n return null;\n }\n\n return (\n <div className='compose-form__poll-button'>\n <IconButton\n icon='tasks'\n title={intl.formatMessage(active ? messages.remove_poll : messages.add_poll)}\n disabled={disabled}\n onClick={this.handleClick}\n className={`compose-form__poll-button-icon ${active ? 'active' : ''}`}\n size={18}\n inverted\n style={iconStyle}\n />\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport PollButton from '../components/poll_button';\nimport { addPoll, removePoll } from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n unavailable: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size > 0),\n active: state.getIn(['compose', 'poll']) !== null,\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch((_, getState) => {\n if (getState().getIn(['compose', 'poll'])) {\n dispatch(removePoll());\n } else {\n dispatch(addPoll());\n }\n });\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PollButton);\n","import React from 'react';\nimport IconButton from '../../../components/icon_button';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nconst messages = defineMessages({\n upload: { id: 'upload_button.label', defaultMessage: 'Add media ({formats})' },\n});\n\nconst SUPPORTED_FORMATS = 'JPEG, PNG, GIF, WebM, MP4, MOV, OGG, WAV, MP3, FLAC';\n\nconst makeMapStateToProps = () => {\n const mapStateToProps = state => ({\n acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']),\n });\n\n return mapStateToProps;\n};\n\nconst iconStyle = {\n height: null,\n lineHeight: '27px',\n};\n\nexport default @connect(makeMapStateToProps)\n@injectIntl\nclass UploadButton extends ImmutablePureComponent {\n\n static propTypes = {\n disabled: PropTypes.bool,\n unavailable: PropTypes.bool,\n onSelectFile: PropTypes.func.isRequired,\n style: PropTypes.object,\n resetFileKey: PropTypes.number,\n acceptContentTypes: ImmutablePropTypes.listOf(PropTypes.string).isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleChange = (e) => {\n if (e.target.files.length > 0) {\n this.props.onSelectFile(e.target.files);\n }\n }\n\n handleClick = () => {\n this.fileElement.click();\n }\n\n setRef = (c) => {\n this.fileElement = c;\n }\n\n render () {\n const { intl, resetFileKey, unavailable, disabled, acceptContentTypes } = this.props;\n\n if (unavailable) {\n return null;\n }\n\n return (\n <div className='compose-form__upload-button'>\n <IconButton icon='paperclip' title={intl.formatMessage(messages.upload, { formats: SUPPORTED_FORMATS })} disabled={disabled} onClick={this.handleClick} className='compose-form__upload-button-icon' size={18} inverted style={iconStyle} />\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.upload, { formats: SUPPORTED_FORMATS })}</span>\n <input\n key={resetFileKey}\n ref={this.setRef}\n type='file'\n multiple\n onChange={this.handleChange}\n disabled={disabled}\n style={{ display: 'none' }}\n />\n </label>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport UploadButton from '../components/upload_button';\nimport { uploadCompose } from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n disabled: state.getIn(['compose', 'is_uploading']) || (state.getIn(['compose', 'media_attachments']).size + state.getIn(['compose', 'pending_media_attachments']) > 3 || state.getIn(['compose', 'media_attachments']).some(m => ['video', 'audio'].includes(m.get('type')))),\n unavailable: state.getIn(['compose', 'poll']) !== null,\n resetFileKey: state.getIn(['compose', 'resetFileKey']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onSelectFile (files) {\n dispatch(uploadCompose(files));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UploadButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst iconStyle = {\n height: null,\n lineHeight: '27px',\n width: `${18 * 1.28571429}px`,\n};\n\nexport default class TextIconButton extends React.PureComponent {\n\n static propTypes = {\n label: PropTypes.string.isRequired,\n title: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n ariaControls: PropTypes.string,\n };\n\n handleClick = (e) => {\n e.preventDefault();\n this.props.onClick();\n }\n\n render () {\n const { label, title, active, ariaControls } = this.props;\n\n return (\n <button\n title={title}\n aria-label={title}\n className={`text-icon-button ${active ? 'active' : ''}`}\n aria-expanded={active}\n onClick={this.handleClick}\n aria-controls={ariaControls} style={iconStyle}\n >\n {label}\n </button>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport TextIconButton from '../components/text_icon_button';\nimport { changeComposeSpoilerness } from '../../../actions/compose';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' },\n unmarked: { id: 'compose_form.spoiler.unmarked', defaultMessage: 'Text is not hidden' },\n});\n\nconst mapStateToProps = (state, { intl }) => ({\n label: 'CW',\n title: intl.formatMessage(state.getIn(['compose', 'spoiler']) ? messages.marked : messages.unmarked),\n active: state.getIn(['compose', 'spoiler']),\n ariaControls: 'cw-spoiler-input',\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch(changeComposeSpoilerness());\n },\n\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(TextIconButton));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport IconButton from '../../../components/icon_button';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport detectPassiveEvents from 'detect-passive-events';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },\n public_long: { id: 'privacy.public.long', defaultMessage: 'Visible for all, shown in public timelines' },\n unlisted_short: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },\n unlisted_long: { id: 'privacy.unlisted.long', defaultMessage: 'Visible for all, but not in public timelines' },\n private_short: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },\n private_long: { id: 'privacy.private.long', defaultMessage: 'Visible for followers only' },\n direct_short: { id: 'privacy.direct.short', defaultMessage: 'Direct' },\n direct_long: { id: 'privacy.direct.long', defaultMessage: 'Visible for mentioned users only' },\n change_privacy: { id: 'privacy.change', defaultMessage: 'Adjust status privacy' },\n});\n\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\n\nclass PrivacyDropdownMenu extends React.PureComponent {\n\n static propTypes = {\n style: PropTypes.object,\n items: PropTypes.array.isRequired,\n value: PropTypes.string.isRequired,\n placement: PropTypes.string.isRequired,\n onClose: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n state = {\n mounted: false,\n };\n\n handleDocumentClick = e => {\n if (this.node && !this.node.contains(e.target)) {\n this.props.onClose();\n }\n }\n\n handleKeyDown = e => {\n const { items } = this.props;\n const value = e.currentTarget.getAttribute('data-index');\n const index = items.findIndex(item => {\n return (item.value === value);\n });\n let element;\n\n switch(e.key) {\n case 'Escape':\n this.props.onClose();\n break;\n case 'Enter':\n this.handleClick(e);\n break;\n case 'ArrowDown':\n element = this.node.childNodes[index + 1];\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'ArrowUp':\n element = this.node.childNodes[index - 1];\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'Tab':\n if (e.shiftKey) {\n element = this.node.childNodes[index - 1] || this.node.lastChild;\n } else {\n element = this.node.childNodes[index + 1] || this.node.firstChild;\n }\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'Home':\n element = this.node.firstChild;\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n case 'End':\n element = this.node.lastChild;\n if (element) {\n element.focus();\n this.props.onChange(element.getAttribute('data-index'));\n }\n break;\n }\n }\n\n handleClick = e => {\n const value = e.currentTarget.getAttribute('data-index');\n\n e.preventDefault();\n\n this.props.onClose();\n this.props.onChange(value);\n }\n\n componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n if (this.focusedItem) this.focusedItem.focus();\n this.setState({ mounted: true });\n }\n\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);\n }\n\n setRef = c => {\n this.node = c;\n }\n\n setFocusRef = c => {\n this.focusedItem = c;\n }\n\n render () {\n const { mounted } = this.state;\n const { style, items, placement, value } = this.props;\n\n return (\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n // It should not be transformed when mounting because the resulting\n // size will be used to determine the coordinate of the menu by\n // react-overlays\n <div className={`privacy-dropdown__dropdown ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null, zIndex: 2 }} role='listbox' ref={this.setRef}>\n {items.map(item => (\n <div role='option' tabIndex='0' key={item.value} data-index={item.value} onKeyDown={this.handleKeyDown} onClick={this.handleClick} className={classNames('privacy-dropdown__option', { active: item.value === value })} aria-selected={item.value === value} ref={item.value === value ? this.setFocusRef : null}>\n <div className='privacy-dropdown__option__icon'>\n <Icon id={item.icon} fixedWidth />\n </div>\n\n <div className='privacy-dropdown__option__content'>\n <strong>{item.text}</strong>\n {item.meta}\n </div>\n </div>\n ))}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\nexport default @injectIntl\nclass PrivacyDropdown extends React.PureComponent {\n\n static propTypes = {\n isUserTouching: PropTypes.func,\n isModalOpen: PropTypes.bool.isRequired,\n onModalOpen: PropTypes.func,\n onModalClose: PropTypes.func,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n open: false,\n placement: 'bottom',\n };\n\n handleToggle = ({ target }) => {\n if (this.props.isUserTouching()) {\n if (this.state.open) {\n this.props.onModalClose();\n } else {\n this.props.onModalOpen({\n actions: this.options.map(option => ({ ...option, active: option.value === this.props.value })),\n onClick: this.handleModalActionClick,\n });\n }\n } else {\n const { top } = target.getBoundingClientRect();\n if (this.state.open && this.activeElement) {\n this.activeElement.focus();\n }\n this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n this.setState({ open: !this.state.open });\n }\n }\n\n handleModalActionClick = (e) => {\n e.preventDefault();\n\n const { value } = this.options[e.currentTarget.getAttribute('data-index')];\n\n this.props.onModalClose();\n this.props.onChange(value);\n }\n\n handleKeyDown = e => {\n switch(e.key) {\n case 'Escape':\n this.handleClose();\n break;\n }\n }\n\n handleMouseDown = () => {\n if (!this.state.open) {\n this.activeElement = document.activeElement;\n }\n }\n\n handleButtonKeyDown = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleMouseDown();\n break;\n }\n }\n\n handleClose = () => {\n if (this.state.open && this.activeElement) {\n this.activeElement.focus();\n }\n this.setState({ open: false });\n }\n\n handleChange = value => {\n this.props.onChange(value);\n }\n\n componentWillMount () {\n const { intl: { formatMessage } } = this.props;\n\n this.options = [\n { icon: 'globe', value: 'public', text: formatMessage(messages.public_short), meta: formatMessage(messages.public_long) },\n { icon: 'unlock', value: 'unlisted', text: formatMessage(messages.unlisted_short), meta: formatMessage(messages.unlisted_long) },\n { icon: 'lock', value: 'private', text: formatMessage(messages.private_short), meta: formatMessage(messages.private_long) },\n { icon: 'envelope', value: 'direct', text: formatMessage(messages.direct_short), meta: formatMessage(messages.direct_long) },\n ];\n }\n\n render () {\n const { value, intl } = this.props;\n const { open, placement } = this.state;\n\n const valueOption = this.options.find(item => item.value === value);\n\n return (\n <div className={classNames('privacy-dropdown', placement, { active: open })} onKeyDown={this.handleKeyDown}>\n <div className={classNames('privacy-dropdown__value', { active: this.options.indexOf(valueOption) === (placement === 'bottom' ? 0 : (this.options.length - 1)) })}>\n <IconButton\n className='privacy-dropdown__value-icon'\n icon={valueOption.icon}\n title={intl.formatMessage(messages.change_privacy)}\n size={18}\n expanded={open}\n active={open}\n inverted\n onClick={this.handleToggle}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleButtonKeyDown}\n style={{ height: null, lineHeight: '27px' }}\n />\n </div>\n\n <Overlay show={open} placement={placement} target={this}>\n <PrivacyDropdownMenu\n items={this.options}\n value={value}\n onClose={this.handleClose}\n onChange={this.handleChange}\n placement={placement}\n />\n </Overlay>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport PrivacyDropdown from '../components/privacy_dropdown';\nimport { changeComposeVisibility } from '../../../actions/compose';\nimport { openModal, closeModal } from '../../../actions/modal';\nimport { isUserTouching } from '../../../is_mobile';\n\nconst mapStateToProps = state => ({\n isModalOpen: state.get('modal').modalType === 'ACTIONS',\n value: state.getIn(['compose', 'privacy']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onChange (value) {\n dispatch(changeComposeVisibility(value));\n },\n\n isUserTouching,\n onModalOpen: props => dispatch(openModal('ACTIONS', props)),\n onModalClose: () => dispatch(closeModal()),\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PrivacyDropdown);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport IconButton from 'mastodon/components/icon_button';\nimport Icon from 'mastodon/components/icon';\nimport AutosuggestInput from 'mastodon/components/autosuggest_input';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' },\n add_option: { id: 'compose_form.poll.add_option', defaultMessage: 'Add a choice' },\n remove_option: { id: 'compose_form.poll.remove_option', defaultMessage: 'Remove this choice' },\n poll_duration: { id: 'compose_form.poll.duration', defaultMessage: 'Poll duration' },\n switchToMultiple: { id: 'compose_form.poll.switch_to_multiple', defaultMessage: 'Change poll to allow multiple choices' },\n switchToSingle: { id: 'compose_form.poll.switch_to_single', defaultMessage: 'Change poll to allow for a single choice' },\n minutes: { id: 'intervals.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}}' },\n hours: { id: 'intervals.full.hours', defaultMessage: '{number, plural, one {# hour} other {# hours}}' },\n days: { id: 'intervals.full.days', defaultMessage: '{number, plural, one {# day} other {# days}}' },\n});\n\n@injectIntl\nclass Option extends React.PureComponent {\n\n static propTypes = {\n title: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n isPollMultiple: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n onToggleMultiple: PropTypes.func.isRequired,\n suggestions: ImmutablePropTypes.list,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleOptionTitleChange = e => {\n this.props.onChange(this.props.index, e.target.value);\n };\n\n handleOptionRemove = () => {\n this.props.onRemove(this.props.index);\n };\n\n\n handleToggleMultiple = e => {\n this.props.onToggleMultiple();\n e.preventDefault();\n e.stopPropagation();\n };\n\n handleCheckboxKeypress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\n this.handleToggleMultiple(e);\n }\n }\n\n onSuggestionsClearRequested = () => {\n this.props.onClearSuggestions();\n }\n\n onSuggestionsFetchRequested = (token) => {\n this.props.onFetchSuggestions(token);\n }\n\n onSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['poll', 'options', this.props.index]);\n }\n\n render () {\n const { isPollMultiple, title, index, intl } = this.props;\n\n return (\n <li>\n <label className='poll__option editable'>\n <span\n className={classNames('poll__input', { checkbox: isPollMultiple })}\n onClick={this.handleToggleMultiple}\n onKeyPress={this.handleCheckboxKeypress}\n role='button'\n tabIndex='0'\n title={intl.formatMessage(isPollMultiple ? messages.switchToSingle : messages.switchToMultiple)}\n aria-label={intl.formatMessage(isPollMultiple ? messages.switchToSingle : messages.switchToMultiple)}\n />\n\n <AutosuggestInput\n placeholder={intl.formatMessage(messages.option_placeholder, { number: index + 1 })}\n maxLength={100}\n value={title}\n onChange={this.handleOptionTitleChange}\n suggestions={this.props.suggestions}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSuggestionSelected}\n searchTokens={[':']}\n />\n </label>\n\n <div className='poll__cancel'>\n <IconButton disabled={index <= 1} title={intl.formatMessage(messages.remove_option)} icon='times' onClick={this.handleOptionRemove} />\n </div>\n </li>\n );\n }\n\n}\n\nexport default\n@injectIntl\nclass PollForm extends ImmutablePureComponent {\n\n static propTypes = {\n options: ImmutablePropTypes.list,\n expiresIn: PropTypes.number,\n isMultiple: PropTypes.bool,\n onChangeOption: PropTypes.func.isRequired,\n onAddOption: PropTypes.func.isRequired,\n onRemoveOption: PropTypes.func.isRequired,\n onChangeSettings: PropTypes.func.isRequired,\n suggestions: ImmutablePropTypes.list,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleAddOption = () => {\n this.props.onAddOption('');\n };\n\n handleSelectDuration = e => {\n this.props.onChangeSettings(e.target.value, this.props.isMultiple);\n };\n\n handleToggleMultiple = () => {\n this.props.onChangeSettings(this.props.expiresIn, !this.props.isMultiple);\n };\n\n render () {\n const { options, expiresIn, isMultiple, onChangeOption, onRemoveOption, intl, ...other } = this.props;\n\n if (!options) {\n return null;\n }\n\n return (\n <div className='compose-form__poll-wrapper'>\n <ul>\n {options.map((title, i) => <Option title={title} key={i} index={i} onChange={onChangeOption} onRemove={onRemoveOption} isPollMultiple={isMultiple} onToggleMultiple={this.handleToggleMultiple} {...other} />)}\n </ul>\n\n <div className='poll__footer'>\n <button disabled={options.size >= 5} className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button>\n\n {/* eslint-disable-next-line jsx-a11y/no-onchange */}\n <select value={expiresIn} onChange={this.handleSelectDuration}>\n <option value={300}>{intl.formatMessage(messages.minutes, { number: 5 })}</option>\n <option value={1800}>{intl.formatMessage(messages.minutes, { number: 30 })}</option>\n <option value={3600}>{intl.formatMessage(messages.hours, { number: 1 })}</option>\n <option value={21600}>{intl.formatMessage(messages.hours, { number: 6 })}</option>\n <option value={86400}>{intl.formatMessage(messages.days, { number: 1 })}</option>\n <option value={259200}>{intl.formatMessage(messages.days, { number: 3 })}</option>\n <option value={604800}>{intl.formatMessage(messages.days, { number: 7 })}</option>\n </select>\n </div>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport PollForm from '../components/poll_form';\nimport { addPollOption, removePollOption, changePollOption, changePollSettings } from '../../../actions/compose';\nimport {\n clearComposeSuggestions,\n fetchComposeSuggestions,\n selectComposeSuggestion,\n} from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n suggestions: state.getIn(['compose', 'suggestions']),\n options: state.getIn(['compose', 'poll', 'options']),\n expiresIn: state.getIn(['compose', 'poll', 'expires_in']),\n isMultiple: state.getIn(['compose', 'poll', 'multiple']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onAddOption(title) {\n dispatch(addPollOption(title));\n },\n\n onRemoveOption(index) {\n dispatch(removePollOption(index));\n },\n\n onChangeOption(index, title) {\n dispatch(changePollOption(index, title));\n },\n\n onChangeSettings(expiresIn, isMultiple) {\n dispatch(changePollSettings(expiresIn, isMultiple));\n },\n\n onClearSuggestions () {\n dispatch(clearComposeSuggestions());\n },\n\n onFetchSuggestions (token) {\n dispatch(fetchComposeSuggestions(token));\n },\n\n onSuggestionSelected (position, token, accountId, path) {\n dispatch(selectComposeSuggestion(position, token, accountId, path));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PollForm);\n","import { connect } from 'react-redux';\nimport UploadProgress from '../components/upload_progress';\n\nconst mapStateToProps = state => ({\n active: state.getIn(['compose', 'is_uploading']),\n progress: state.getIn(['compose', 'progress']),\n});\n\nexport default connect(mapStateToProps)(UploadProgress);\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nexport default class Upload extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n media: ImmutablePropTypes.map.isRequired,\n onUndo: PropTypes.func.isRequired,\n onOpenFocalPoint: PropTypes.func.isRequired,\n };\n\n handleUndoClick = e => {\n e.stopPropagation();\n this.props.onUndo(this.props.media.get('id'));\n }\n\n handleFocalPointClick = e => {\n e.stopPropagation();\n this.props.onOpenFocalPoint(this.props.media.get('id'));\n }\n\n render () {\n const { media } = this.props;\n const focusX = media.getIn(['meta', 'focus', 'x']);\n const focusY = media.getIn(['meta', 'focus', 'y']);\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n return (\n <div className='compose-form__upload' tabIndex='0' role='button'>\n <Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12 }) }}>\n {({ scale }) => (\n <div className='compose-form__upload-thumbnail' style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}>\n <div className={classNames('compose-form__upload__actions', { active: true })}>\n <button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>\n <button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>\n </div>\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport Upload from '../components/upload';\nimport { undoUploadCompose } from '../../../actions/compose';\nimport { openModal } from '../../../actions/modal';\nimport { submitCompose } from '../../../actions/compose';\n\nconst mapStateToProps = (state, { id }) => ({\n media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onUndo: id => {\n dispatch(undoUploadCompose(id));\n },\n\n onOpenFocalPoint: id => {\n dispatch(openModal('FOCAL_POINT', { id }));\n },\n\n onSubmit (router) {\n dispatch(submitCompose(router));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Upload);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { changeComposeSensitivity } from 'mastodon/actions/compose';\nimport { injectIntl, defineMessages, FormattedMessage } from 'react-intl';\n\nconst messages = defineMessages({\n marked: { id: 'compose_form.sensitive.marked', defaultMessage: 'Media is marked as sensitive' },\n unmarked: { id: 'compose_form.sensitive.unmarked', defaultMessage: 'Media is not marked as sensitive' },\n});\n\nconst mapStateToProps = state => ({\n active: state.getIn(['compose', 'sensitive']),\n disabled: state.getIn(['compose', 'spoiler']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch(changeComposeSensitivity());\n },\n\n});\n\nclass SensitiveButton extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { active, disabled, onClick, intl } = this.props;\n\n return (\n <div className='compose-form__sensitive-button'>\n <label className={classNames('icon-button', { active })} title={intl.formatMessage(active ? messages.marked : messages.unmarked)}>\n <input\n name='mark-sensitive'\n type='checkbox'\n checked={active}\n onChange={onClick}\n disabled={disabled}\n />\n\n <span className={classNames('checkbox', { active })} />\n\n <FormattedMessage id='compose_form.sensitive.hide' defaultMessage='Mark media as sensitive' />\n </label>\n </div>\n );\n }\n\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(injectIntl(SensitiveButton));\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport UploadProgressContainer from '../containers/upload_progress_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport UploadContainer from '../containers/upload_container';\nimport SensitiveButtonContainer from '../containers/sensitive_button_container';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadForm extends ImmutablePureComponent {\n\n static propTypes = {\n mediaIds: ImmutablePropTypes.list.isRequired,\n };\n\n render () {\n const { mediaIds } = this.props;\n\n return (\n <div className='compose-form__upload-wrapper'>\n <UploadProgressContainer icon='upload' message={<FormattedMessage id='upload_progress.label' defaultMessage='Uploading…' />} />\n\n <div className='compose-form__uploads-wrapper'>\n {mediaIds.map(id => (\n <UploadContainer id={id} key={id} />\n ))}\n </div>\n\n {!mediaIds.isEmpty() && <SensitiveButtonContainer />}\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport UploadForm from '../components/upload_form';\n\nconst mapStateToProps = state => ({\n mediaIds: state.getIn(['compose', 'media_attachments']).map(item => item.get('id')),\n});\n\nexport default connect(mapStateToProps)(UploadForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\n\nexport default class Warning extends React.PureComponent {\n\n static propTypes = {\n message: PropTypes.node.isRequired,\n };\n\n render () {\n const { message } = this.props;\n\n return (\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='compose-form__warning' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n {message}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport Warning from '../components/warning';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { me } from '../../../initial_state';\n\nconst APPROX_HASHTAG_RE = /(?:^|[^\\/\\)\\w])#(\\w*[a-zA-Z·]\\w*)/i;\n\nconst mapStateToProps = state => ({\n needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),\n hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),\n directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct',\n});\n\nconst WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning }) => {\n if (needsLockWarning) {\n return <Warning message={<FormattedMessage id='compose_form.lock_disclaimer' defaultMessage='Your account is not {locked}. Anyone can follow you to view your follower-only posts.' values={{ locked: <a href='/user-settings'><FormattedMessage id='compose_form.lock_disclaimer.lock' defaultMessage='locked' /></a> }} />} />;\n }\n\n if (hashtagWarning) {\n return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage=\"This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.\" />} />;\n }\n\n if (directMessageWarning) {\n const message = (\n <span>\n <FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be sent to all the mentioned users.' /> <a href='/terms' target='_blank'><FormattedMessage id='compose_form.direct_message_warning_learn_more' defaultMessage='Learn more' /></a>\n </span>\n );\n\n return <Warning message={message} />;\n }\n\n return null;\n};\n\nWarningWrapper.propTypes = {\n needsLockWarning: PropTypes.bool,\n hashtagWarning: PropTypes.bool,\n directMessageWarning: PropTypes.bool,\n};\n\nexport default connect(mapStateToProps)(WarningWrapper);\n","import React from 'react';\nimport CharacterCounter from './character_counter';\nimport Button from '../../../components/button';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport ReplyIndicatorContainer from '../containers/reply_indicator_container';\nimport AutosuggestTextarea from '../../../components/autosuggest_textarea';\nimport AutosuggestInput from '../../../components/autosuggest_input';\nimport PollButtonContainer from '../containers/poll_button_container';\nimport UploadButtonContainer from '../containers/upload_button_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport SpoilerButtonContainer from '../containers/spoiler_button_container';\nimport PrivacyDropdownContainer from '../containers/privacy_dropdown_container';\nimport EmojiPickerDropdown from '../containers/emoji_picker_dropdown_container';\nimport PollFormContainer from '../containers/poll_form_container';\nimport UploadFormContainer from '../containers/upload_form_container';\nimport WarningContainer from '../containers/warning_container';\nimport { isMobile } from '../../../is_mobile';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { length } from 'stringz';\nimport Icon from 'mastodon/components/icon';\nimport { maxChars } from '../../../initial_state';\n\nconst allowedAroundShortCode = '><\\u0085\\u0020\\u00a0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000\\u2028\\u2029\\u0009\\u000a\\u000b\\u000c\\u000d';\n\nconst messages = defineMessages({\n placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },\n spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' },\n publish: { id: 'compose_form.publish', defaultMessage: 'Toot' },\n publishLoud: { id: 'compose_form.publish_loud', defaultMessage: '{publish}!' },\n});\n\nexport default @injectIntl\nclass ComposeForm extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n text: PropTypes.string.isRequired,\n suggestions: ImmutablePropTypes.list,\n spoiler: PropTypes.bool,\n privacy: PropTypes.string,\n spoilerText: PropTypes.string,\n focusDate: PropTypes.instanceOf(Date),\n caretPosition: PropTypes.number,\n preselectDate: PropTypes.instanceOf(Date),\n isSubmitting: PropTypes.bool,\n isChangingUpload: PropTypes.bool,\n isUploading: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n onChangeSpoilerText: PropTypes.func.isRequired,\n onPaste: PropTypes.func.isRequired,\n onPickEmoji: PropTypes.func.isRequired,\n showSearch: PropTypes.bool,\n anyMedia: PropTypes.bool,\n singleColumn: PropTypes.bool,\n };\n\n static defaultProps = {\n showSearch: false,\n };\n\n handleChange = (e) => {\n this.props.onChange(e.target.value);\n }\n\n handleKeyDown = (e) => {\n if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {\n this.handleSubmit();\n }\n }\n\n handleSubmit = () => {\n if (this.props.text !== this.autosuggestTextarea.textarea.value) {\n // Something changed the text inside the textarea (e.g. browser extensions like Grammarly)\n // Update the state to match the current text\n this.props.onChange(this.autosuggestTextarea.textarea.value);\n }\n\n // Submit disabled:\n const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;\n const fulltext = [this.props.spoilerText, this.props.text].join('');\n\n if (isSubmitting || isUploading || isChangingUpload || length(fulltext) > maxChars || (fulltext.length !== 0 && fulltext.trim().length === 0 && !anyMedia)) {\n return;\n }\n\n this.props.onSubmit(this.context.router ? this.context.router.history : null);\n }\n\n onSuggestionsClearRequested = () => {\n this.props.onClearSuggestions();\n }\n\n onSuggestionsFetchRequested = (token) => {\n this.props.onFetchSuggestions(token);\n }\n\n onSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['text']);\n }\n\n onSpoilerSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['spoiler_text']);\n }\n\n handleChangeSpoilerText = (e) => {\n this.props.onChangeSpoilerText(e.target.value);\n }\n\n handleFocus = () => {\n if (this.composeForm && !this.props.singleColumn) {\n const { left, right } = this.composeForm.getBoundingClientRect();\n if (left < 0 || right > (window.innerWidth || document.documentElement.clientWidth)) {\n this.composeForm.scrollIntoView();\n }\n }\n }\n\n componentDidUpdate (prevProps) {\n // This statement does several things:\n // - If we're beginning a reply, and,\n // - Replying to zero or one users, places the cursor at the end of the textbox.\n // - Replying to more than one user, selects any usernames past the first;\n // this provides a convenient shortcut to drop everyone else from the conversation.\n if (this.props.focusDate !== prevProps.focusDate) {\n let selectionEnd, selectionStart;\n\n if (this.props.preselectDate !== prevProps.preselectDate) {\n selectionEnd = this.props.text.length;\n selectionStart = this.props.text.search(/\\s/) + 1;\n } else if (typeof this.props.caretPosition === 'number') {\n selectionStart = this.props.caretPosition;\n selectionEnd = this.props.caretPosition;\n } else {\n selectionEnd = this.props.text.length;\n selectionStart = selectionEnd;\n }\n\n this.autosuggestTextarea.textarea.setSelectionRange(selectionStart, selectionEnd);\n this.autosuggestTextarea.textarea.focus();\n } else if(prevProps.isSubmitting && !this.props.isSubmitting) {\n this.autosuggestTextarea.textarea.focus();\n } else if (this.props.spoiler !== prevProps.spoiler) {\n if (this.props.spoiler) {\n this.spoilerText.input.focus();\n } else {\n this.autosuggestTextarea.textarea.focus();\n }\n }\n }\n\n setAutosuggestTextarea = (c) => {\n this.autosuggestTextarea = c;\n }\n\n setSpoilerText = (c) => {\n this.spoilerText = c;\n }\n\n setRef = c => {\n this.composeForm = c;\n };\n\n handleEmojiPick = (data) => {\n const { text } = this.props;\n const position = this.autosuggestTextarea.textarea.selectionStart;\n const needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]);\n\n this.props.onPickEmoji(position, data, needsSpace);\n }\n\n render () {\n const { intl, onPaste, showSearch, anyMedia } = this.props;\n const disabled = this.props.isSubmitting;\n const text = [this.props.spoilerText, this.props.text].join('');\n const disabledButton = disabled || this.props.isUploading || this.props.isChangingUpload || length(text) > maxChars || (text.length !== 0 && text.trim().length === 0 && !anyMedia);\n let publishText = '';\n\n if (this.props.privacy === 'private' || this.props.privacy === 'direct') {\n publishText = <span className='compose-form__publish-private'><Icon id='lock' /> {intl.formatMessage(messages.publish)}</span>;\n } else {\n publishText = this.props.privacy !== 'unlisted' ? intl.formatMessage(messages.publishLoud, { publish: intl.formatMessage(messages.publish) }) : intl.formatMessage(messages.publish);\n }\n\n return (\n <div className='compose-form'>\n <WarningContainer />\n\n <ReplyIndicatorContainer />\n\n <div className={`spoiler-input ${this.props.spoiler ? 'spoiler-input--visible' : ''}`} ref={this.setRef}>\n <AutosuggestInput\n placeholder={intl.formatMessage(messages.spoiler_placeholder)}\n value={this.props.spoilerText}\n onChange={this.handleChangeSpoilerText}\n onKeyDown={this.handleKeyDown}\n disabled={!this.props.spoiler}\n ref={this.setSpoilerText}\n suggestions={this.props.suggestions}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSpoilerSuggestionSelected}\n searchTokens={[':']}\n id='cw-spoiler-input'\n className='spoiler-input__input'\n />\n </div>\n\n <AutosuggestTextarea\n ref={this.setAutosuggestTextarea}\n placeholder={intl.formatMessage(messages.placeholder)}\n disabled={disabled}\n value={this.props.text}\n onChange={this.handleChange}\n suggestions={this.props.suggestions}\n onFocus={this.handleFocus}\n onKeyDown={this.handleKeyDown}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSuggestionSelected}\n onPaste={onPaste}\n autoFocus={!showSearch && !isMobile(window.innerWidth)}\n >\n <EmojiPickerDropdown onPickEmoji={this.handleEmojiPick} />\n <div className='compose-form__modifiers'>\n <UploadFormContainer />\n <PollFormContainer />\n </div>\n </AutosuggestTextarea>\n\n <div className='compose-form__buttons-wrapper'>\n <div className='compose-form__buttons'>\n <UploadButtonContainer />\n <PollButtonContainer />\n <PrivacyDropdownContainer />\n <SpoilerButtonContainer />\n </div>\n <div className='character-counter__wrapper'><CharacterCounter max={maxChars} text={text} /></div>\n </div>\n\n <div className='compose-form__publish'>\n <div className='compose-form__publish-button-wrapper'><Button text={publishText} onClick={this.handleSubmit} disabled={disabledButton} block /></div>\n </div>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport ComposeForm from '../components/compose_form';\nimport {\n changeCompose,\n submitCompose,\n clearComposeSuggestions,\n fetchComposeSuggestions,\n selectComposeSuggestion,\n changeComposeSpoilerText,\n insertEmojiCompose,\n uploadCompose,\n} from '../../../actions/compose';\n\nconst mapStateToProps = state => ({\n text: state.getIn(['compose', 'text']),\n suggestions: state.getIn(['compose', 'suggestions']),\n spoiler: state.getIn(['compose', 'spoiler']),\n spoilerText: state.getIn(['compose', 'spoiler_text']),\n privacy: state.getIn(['compose', 'privacy']),\n focusDate: state.getIn(['compose', 'focusDate']),\n caretPosition: state.getIn(['compose', 'caretPosition']),\n preselectDate: state.getIn(['compose', 'preselectDate']),\n isSubmitting: state.getIn(['compose', 'is_submitting']),\n isChangingUpload: state.getIn(['compose', 'is_changing_upload']),\n isUploading: state.getIn(['compose', 'is_uploading']),\n showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),\n anyMedia: state.getIn(['compose', 'media_attachments']).size > 0,\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onChange (text) {\n dispatch(changeCompose(text));\n },\n\n onSubmit (router) {\n dispatch(submitCompose(router));\n },\n\n onClearSuggestions () {\n dispatch(clearComposeSuggestions());\n },\n\n onFetchSuggestions (token) {\n dispatch(fetchComposeSuggestions(token));\n },\n\n onSuggestionSelected (position, token, suggestion, path) {\n dispatch(selectComposeSuggestion(position, token, suggestion, path));\n },\n\n onChangeSpoilerText (checked) {\n dispatch(changeComposeSpoilerText(checked));\n },\n\n onPaste (files) {\n dispatch(uploadCompose(files));\n },\n\n onPickEmoji (position, data, needsSpace) {\n dispatch(insertEmojiCompose(position, data, needsSpace));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ComposeForm);\n","import { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport NavigationBar from '../components/navigation_bar';\nimport { logOut } from 'mastodon/utils/log_out';\nimport { openModal } from 'mastodon/actions/modal';\nimport { me } from '../../../initial_state';\n\nconst messages = defineMessages({\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = state => {\n return {\n account: state.getIn(['accounts', me]),\n };\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onLogout () {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n onConfirm: () => logOut(),\n }));\n },\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(NavigationBar));\n","import React from 'react';\nimport ComposeFormContainer from './containers/compose_form_container';\nimport NavigationContainer from './containers/navigation_container';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\nimport { mountCompose, unmountCompose } from '../../actions/compose';\nimport { Link } from 'react-router-dom';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport SearchContainer from './containers/search_container';\nimport Motion from '../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport SearchResultsContainer from './containers/search_results_container';\nimport { changeComposing } from '../../actions/compose';\nimport { openModal } from 'mastodon/actions/modal';\nimport { mascot } from '../../initial_state';\nimport Icon from 'mastodon/components/icon';\nimport { logOut } from 'mastodon/utils/log_out';\n\nconst messages = defineMessages({\n start: { id: 'getting_started.heading', defaultMessage: 'Getting started' },\n home_timeline: { id: 'tabs_bar.home', defaultMessage: 'Home' },\n notifications: { id: 'tabs_bar.notifications', defaultMessage: 'Notifications' },\n public: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },\n community: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },\n compose: { id: 'navigation_bar.compose', defaultMessage: 'Compose new toot' },\n logoutMessage: { id: 'confirmations.logout.message', defaultMessage: 'Are you sure you want to log out?' },\n logoutConfirm: { id: 'confirmations.logout.confirm', defaultMessage: 'Log out' },\n});\n\nconst mapStateToProps = (state, ownProps) => ({\n columns: state.getIn(['settings', 'columns']),\n showSearch: ownProps.multiColumn ? state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']) : ownProps.isSearchPage,\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass Compose extends React.PureComponent {\n\n static propTypes = {\n dispatch: PropTypes.func.isRequired,\n columns: ImmutablePropTypes.list.isRequired,\n multiColumn: PropTypes.bool,\n showSearch: PropTypes.bool,\n isSearchPage: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n const { isSearchPage } = this.props;\n\n if (!isSearchPage) {\n this.props.dispatch(mountCompose());\n }\n }\n\n componentWillUnmount () {\n const { isSearchPage } = this.props;\n\n if (!isSearchPage) {\n this.props.dispatch(unmountCompose());\n }\n }\n\n handleLogoutClick = e => {\n const { dispatch, intl } = this.props;\n\n e.preventDefault();\n e.stopPropagation();\n\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.logoutMessage),\n confirm: intl.formatMessage(messages.logoutConfirm),\n onConfirm: () => logOut(),\n }));\n\n return false;\n }\n\n onFocus = () => {\n this.props.dispatch(changeComposing(true));\n }\n\n onBlur = () => {\n this.props.dispatch(changeComposing(false));\n }\n\n render () {\n const { multiColumn, showSearch, isSearchPage, intl } = this.props;\n\n let header = '';\n\n if (multiColumn) {\n const { columns } = this.props;\n header = (\n <nav className='drawer__header'>\n <Link to='/getting-started' className='drawer__tab' title={intl.formatMessage(messages.start)} aria-label={intl.formatMessage(messages.start)}><Icon id='bars' fixedWidth /></Link>\n {!columns.some(column => column.get('id') === 'HOME') && (\n <Link to='/timelines/home' className='drawer__tab' title={intl.formatMessage(messages.home_timeline)} aria-label={intl.formatMessage(messages.home_timeline)}><Icon id='home' fixedWidth /></Link>\n )}\n {!columns.some(column => column.get('id') === 'NOTIFICATIONS') && (\n <Link to='/notifications' className='drawer__tab' title={intl.formatMessage(messages.notifications)} aria-label={intl.formatMessage(messages.notifications)}><Icon id='bell' fixedWidth /></Link>\n )}\n {!columns.some(column => column.get('id') === 'COMMUNITY') && (\n <Link to='/timelines/public/local' className='drawer__tab' title={intl.formatMessage(messages.community)} aria-label={intl.formatMessage(messages.community)}><Icon id='users' fixedWidth /></Link>\n )}\n {!columns.some(column => column.get('id') === 'PUBLIC') && (\n <Link to='/timelines/public' className='drawer__tab' title={intl.formatMessage(messages.public)} aria-label={intl.formatMessage(messages.public)}><Icon id='globe' fixedWidth /></Link>\n )}\n <a href='/user-settings' className='drawer__tab' title={intl.formatMessage(messages.preferences)} aria-label={intl.formatMessage(messages.preferences)}><Icon id='cog' fixedWidth /></a>\n <a href='/auth/sign_out' className='drawer__tab' title={intl.formatMessage(messages.logout)} aria-label={intl.formatMessage(messages.logout)} onClick={this.handleLogoutClick}><Icon id='sign-out' fixedWidth /></a>\n </nav>\n );\n }\n\n return (\n <div className='drawer' role='region' aria-label={intl.formatMessage(messages.compose)}>\n {header}\n\n {(multiColumn || isSearchPage) && <SearchContainer /> }\n\n <div className='drawer__pager'>\n {!isSearchPage && <div className='drawer__inner' onFocus={this.onFocus}>\n <NavigationContainer onClose={this.onBlur} />\n\n <ComposeFormContainer />\n\n mascot && ( <div className='drawer__inner__mastodon'>\n <img alt='' draggable='false' src={mascot} />\n </div> )\n </div>}\n\n <Motion defaultStyle={{ x: isSearchPage ? 0 : -100 }} style={{ x: spring(showSearch || isSearchPage ? 0 : -100, { stiffness: 210, damping: 20 }) }}>\n {({ x }) => (\n <div className='drawer__inner darker' style={{ transform: `translateX(${x}%)`, visibility: x === -100 ? 'hidden' : 'visible' }}>\n <SearchResultsContainer />\n </div>\n )}\n </Motion>\n </div>\n </div>\n );\n }\n\n}\n"],"sourceRoot":""}
\ No newline at end of file