mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-24 07:16:18 +00:00
1 line
1.7 MiB
1 line
1.7 MiB
{"version":3,"sources":["webpack:///./node_modules/emoji-mart/dist-es/vendor/raf-polyfill.js","webpack:///./node_modules/babel-runtime/core-js/object/keys.js","webpack:///./node_modules/core-js/library/fn/object/keys.js","webpack:///./node_modules/core-js/library/modules/es6.object.keys.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/core-js/library/modules/_object-keys-internal.js","webpack:///./node_modules/core-js/library/modules/_iobject.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_to-length.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_shared.js","webpack:///./node_modules/core-js/library/modules/_library.js","webpack:///./node_modules/core-js/library/modules/_uid.js","webpack:///./node_modules/core-js/library/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/library/modules/_object-sap.js","webpack:///./node_modules/core-js/library/modules/_export.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_hide.js","webpack:///./node_modules/core-js/library/modules/_object-dp.js","webpack:///./node_modules/core-js/library/modules/_an-object.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/react-select/lib/Select.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/react-select/lib/internal/react-fast-compare.js","webpack:///./node_modules/react-select/lib/filters.js","webpack:///./node_modules/react-select/lib/diacritics.js","webpack:///./node_modules/react-select/lib/internal/index.js","webpack:///./node_modules/react-select/lib/internal/A11yText.js","webpack:///./node_modules/react-select/lib/internal/DummyInput.js","webpack:///./node_modules/react-select/lib/internal/ScrollBlock.js","webpack:///./node_modules/react-select/lib/internal/ScrollLock/index.js","webpack:///./node_modules/react-select/lib/internal/ScrollLock/constants.js","webpack:///./node_modules/react-select/lib/internal/ScrollLock/utils.js","webpack:///./node_modules/react-select/lib/internal/ScrollCaptor.js","webpack:///./node_modules/react-select/lib/accessibility/index.js","webpack:///./node_modules/react-select/lib/builtins.js","webpack:///./node_modules/react-select/lib/components/index.js","webpack:///./node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///./node_modules/react-select/lib/styles.js","webpack:///./node_modules/react-select/lib/theme.js","webpack:///./node_modules/react-select/lib/stateManager.js","webpack:///./node_modules/history/node_modules/warning/browser.js","webpack:///./node_modules/history/es/DOMUtils.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/history/es/LocationUtils.js","webpack:///./node_modules/react-hotkeys/index.es.js","webpack:///./node_modules/lodash.isequal/index.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/precond/index.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/stringz/dist/index.js","webpack:///./node_modules/react-router-scroll-4/lib/react-router-scroll-4.es.js","webpack:///./node_modules/backoff/lib/backoff.js","webpack:///./node_modules/backoff/lib/strategy/strategy.js","webpack:///./node_modules/backoff/lib/strategy/fibonacci.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/websocket.js/lib/index.js","webpack:///./node_modules/lodash.isboolean/index.js","webpack:///./node_modules/lodash.isobject/index.js","webpack:///./node_modules/scroll-behavior/lib/index.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/react-toggle/dist/component/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/scroll.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/scroll.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/stream.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/actions/streaming.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/stream.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/actions/streaming.js","webpack:///./node_modules/history/es/createTransitionManager.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/notification_purge_buttons.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/containers/notification_purge_buttons_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/column_header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/column_header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/column.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/column.js","webpack:///./node_modules/unicode-astral-regex/index.js","webpack:///./node_modules/react-hotkeys/es/react-hotkeys.production.min.js","webpack:///./node_modules/mousetrap/mousetrap.js","webpack:///./node_modules/react-router-scroll-4/node_modules/warning/browser.js","webpack:///./node_modules/dom-helpers/util/requestAnimationFrame.js","webpack:///./node_modules/scroll-behavior/lib/utils.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/backoff/index.js","webpack:///./node_modules/precond/lib/checks.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/precond/lib/errors.js","webpack:///./node_modules/backoff/lib/strategy/exponential.js","webpack:///./node_modules/backoff/lib/function_call.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/card.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/status/components/card.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_visibility_icon.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/attachment_list.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/dropdown_menu.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/containers/dropdown_menu_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/media_gallery.js","webpack:///./node_modules/react-toggle/dist/component/check.js","webpack:///./node_modules/react-toggle/dist/component/x.js","webpack:///./node_modules/react-toggle/dist/component/util.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/media_gallery.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/dropdown_menu.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/containers/dropdown_menu_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/avatar_overlay.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/content_warning.js","webpack:///./node_modules/tiny-queue/index.js","webpack:///./node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.browser.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/avatar_overlay.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/overlay.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/overlay_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/schedule_idle_task.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/util/schedule_idle_task.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/account.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/containers/account_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/containers/status_list_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_prepend.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_icons.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/avatar_composite.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/status_action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/status.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/containers/status_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/containers/status_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/dom_helpers.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/util/get_rect_from_entry.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/intersection_observer_article.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/containers/intersection_observer_article_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/util/intersection_observer_wrapper.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/scrollable_list.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/column_back_button.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/column_back_button_slim.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/column_back_button_slim.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/status_list.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/load_more.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/status_list.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/get_rect_from_entry.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/intersection_observer_article.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/containers/intersection_observer_article_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/intersection_observer_wrapper.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/scrollable_list.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/load_gap.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/redux_helpers.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/load_gap.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/load_more.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/text_icon_button.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/options/dropdown/content/item/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/options/dropdown/content/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/options/dropdown/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/options/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/publisher/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/reply/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/spoiler/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/textarea/icons/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/textarea/suggestions/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/textarea/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/upload_form/item/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/upload_form/progress/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/upload_form/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/warning/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/hashtag_warning/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/direct_warning/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/url_regex.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/util/counter.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/emoji_picker/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/composer/textarea/suggestions/item/index.js","webpack:///./node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/react-router-dom/es/NavLink.js","webpack:///./node_modules/history/es/PathUtils.js","webpack:///./node_modules/history/es/createHashHistory.js","webpack:///./node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/history/es/index.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/account.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/containers/account_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/column_back_button.js","webpack:///./node_modules/emoji-mart/dist-es/components/emoji/emoji.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/extends.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","webpack:///./node_modules/emoji-mart/dist-es/utils/index.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/emoji-mart/dist-es/utils/data.js","webpack:///./node_modules/emoji-mart/dist-es/utils/shared-props.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/missing_indicator.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/components/missing_indicator.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/objectGetPrototypeOf.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/createClass.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/possibleConstructorReturn.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/inherits.js","webpack:///./node_modules/emoji-mart/dist-es/utils/store.js","webpack:///./node_modules/emoji-mart/dist-es/utils/frequently.js","webpack:///./node_modules/emoji-mart/dist-es/svgs/index.js","webpack:///./node_modules/emoji-mart/dist-es/components/anchors.js","webpack:///./node_modules/emoji-mart/dist-es/components/category.js","webpack:///./node_modules/emoji-mart/dist-es/components/preview.js","webpack:///./node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","webpack:///./node_modules/emoji-mart/dist-es/components/search.js","webpack:///./node_modules/emoji-mart/dist-es/components/skins.js","webpack:///./node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","webpack:///./node_modules/emoji-mart/dist-es/components/picker/picker.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/account/components/header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/account/components/action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/components/header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/account/components/header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/account/components/action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/components/moved_note.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/components/header.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/containers/header_container.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/setting_toggle.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/components/setting_text.js","webpack:///./node_modules/react-select/lib/components/Menu.js","webpack:///./node_modules/react-select/lib/utils.js","webpack:///./node_modules/react-select/lib/internal/NodeResolver.js","webpack:///./node_modules/react-select/lib/components/indicators.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_link.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_subheading.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/notifications/components/setting_toggle.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/library/modules/_has.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/drawer/account/index.js","webpack:///./node_modules/react-sparklines/build/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/react-select/lib/Async.js","webpack:///./node_modules/react-select/lib/components/containers.js","webpack:///./node_modules/react-select/lib/components/Control.js","webpack:///./node_modules/react-select/lib/components/Group.js","webpack:///./node_modules/react-select/lib/components/Input.js","webpack:///./node_modules/react-select/lib/components/MultiValue.js","webpack:///./node_modules/react-select/lib/components/Option.js","webpack:///./node_modules/react-select/lib/components/Placeholder.js","webpack:///./node_modules/react-select/lib/components/SingleValue.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/lists/components/new_list_form.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/list_editor/components/account.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/list_editor/components/search.js","webpack:///./node_modules/lodash/noop.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/utils/numbers.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/community_timeline/components/column_settings.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_link.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_subheading.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/lists/components/new_list_form.js","webpack:///./node_modules/@emotion/sheet/dist/sheet.browser.esm.js","webpack:///./node_modules/@emotion/stylis/dist/stylis.browser.esm.js","webpack:///./node_modules/@emotion/cache/dist/cache.browser.esm.js","webpack:///./node_modules/@emotion/hash/dist/hash.browser.esm.js","webpack:///./node_modules/@emotion/unitless/dist/unitless.browser.esm.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/serialize/dist/serialize.browser.esm.js","webpack:///./node_modules/@emotion/utils/dist/utils.browser.esm.js","webpack:///./node_modules/create-emotion/dist/create-emotion.browser.esm.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/drawer/search/popout/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/flavours/glitch/features/drawer/search/index.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/compose/components/action_bar.js","webpack:///app/javascript/builds/pleroma/mastofe/app/javascript/mastodon/features/compose/components/navigation_bar.js"],"names":["window","lastTime","vendors","x","length","requestAnimationFrame","cancelAnimationFrame","callback","element","currTime","Date","getTime","timeToCall","Math","max","id","setTimeout","clearTimeout","module","exports","default","require","__esModule","Object","keys","toObject","$keys","it","defined","enumBugKeys","O","has","toIObject","arrayIndexOf","IE_PROTO","object","names","key","i","result","push","cof","propertyIsEnumerable","split","toString","call","slice","toLength","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","value","index","toInteger","min","shared","uid","core","global","SHARED","store","undefined","version","mode","copyright","px","random","concat","$export","fails","KEY","exec","fn","exp","S","F","ctx","hide","PROTOTYPE","type","name","source","own","out","IS_FORCED","IS_GLOBAL","G","IS_STATIC","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","target","C","a","b","c","this","arguments","apply","Function","virtual","R","U","aFunction","that","TypeError","dP","createDesc","f","anObject","IE8_DOM_DEFINE","toPrimitive","defineProperty","Attributes","e","isObject","get","document","is","createElement","val","valueOf","bitmap","enumerable","configurable","writable","defaultProps","_extends","assign","prototype","hasOwnProperty","_createClass","defineProperties","props","descriptor","Constructor","protoProps","staticProps","_react","_react2","_interopRequireDefault","_memoizeOne2","_createEmotion2","_Menu","_reactFastCompare2","_filters","_index","_index2","_utils","_builtins","_index3","_styles","_theme","obj","backspaceRemovesValue","blurInputOnSelect","isTouchCapable","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","components","controlShouldRenderValue","escapeClearsValue","filterOption","createFilter","formatGroupLabel","getOptionLabel","getOptionValue","isDisabled","isLoading","isMulti","isRtl","isSearchable","isOptionDisabled","loadingMessage","maxMenuHeight","minMenuHeight","menuIsOpen","menuPlacement","menuPosition","menuShouldBlockScroll","menuShouldScrollIntoView","isMobileDevice","noOptionsMessage","openMenuOnFocus","openMenuOnClick","options","pageSize","placeholder","screenReaderStatus","_ref","count","styles","tabIndex","tabSelectsValue","instanceId","getEmotion","nonce","Select","_Component","instance","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","_initialiseProps","cacheComponents","bind","instancePrefix","selectValue","cleanValue","menuOptions","buildMenuOptions","emotion","state","subClass","superClass","create","constructor","setPrototypeOf","_inherits","Component","startListeningComposition","startListeningToTouch","addEventListener","onScroll","autoFocus","focusInput","nextProps","_props","inputValue","_selectValue","_menuOptions","_focusedValue","getNextFocusedValue","_focusedOption","getNextFocusedOption","focusable","setState","focusedOption","focusedValue","inputIsHiddenAfterUpdate","inputIsHidden","prevProps","_props2","isFocused","menuListRef","focusedOptionRef","scrollToFocusedOptionOnUpdate","scrollIntoView","stopListeningComposition","stopListeningToTouch","removeEventListener","onMenuOpen","_props3","announceAriaLiveContext","event","context","onInputChange","action","onMenuClose","newValue","actionMeta","inputRef","focus","blur","focusOption","_state","openAtIndex","selectedIndex","indexOf","direction","_props4","_state2","focusedIndex","lastIndex","nextFocus","_state3","theme","defaultTheme","clearValue","getStyles","setValue","selectOption","classNamePrefix","hasValue","cxPrefix","cx","classNames","getValue","selectProps","getTheme","nextSelectValue","clearFocusValueOnUpdate","_state4","lastFocusedIndex","lastFocusedOption","render","_props5","isClearable","option","_this2","isOptionSelected","candidate","some","data","formatOptionLabel","_inputValue","_selectValue2","onCompositionStart","onCompositionEnd","onTouchStart","onTouchMove","onTouchEnd","_this3","_props$inputValue","toOption","isSelected","label","shouldHideSelectedOptions","onHover","onOptionHover","onSelect","optionId","getElementId","innerProps","onClick","onMouseMove","onMouseOver","role","reduce","acc","item","itemIndex","hasGroups","children","map","child","filter","Boolean","groupId","_state5","ariaLiveContext","_props6","valueFocusAriaMessage","optionFocusAriaMessage","resultsAriaMessage","screenReaderMessage","countOptions","_props7","inputId","Input","DummyInput","innerRef","getInputRef","onBlur","onInputBlur","onChange","noop","onFocus","onInputFocus","readOnly","disabled","ariaAttributes","aria-autocomplete","aria-label","aria-labelledby","_commonProps","commonProps","autoCapitalize","autoComplete","autoCorrect","isHidden","handleInputChange","spellCheck","_this4","_components","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","SingleValue","Placeholder","_props8","_state6","opt","Container","Label","Remove","removeProps","removeValue","onMouseDown","preventDefault","stopPropagation","singleValue","ClearIndicator","_props9","onClearIndicatorMouseDown","onClearIndicatorTouchEnd","aria-hidden","LoadingIndicator","_props10","_components2","DropdownIndicator","IndicatorSeparator","onDropdownIndicatorMouseDown","onDropdownIndicatorTouchEnd","_this5","_components3","Group","GroupHeading","Menu","MenuList","MenuPortal","LoadingMessage","NoOptionsMessage","Option","_state7","_props11","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","getFocusedOptionRef","menuUI","hasOptions","group","_objectWithoutProperties","headingId","Heading","headingProps","message","_message","menuPlacementProps","menuElement","MenuPlacer","_ref2","ref","_ref2$placerProps","placerProps","placement","maxHeight","onMenuMouseDown","onMenuMouseMove","ScrollCaptor","isEnabled","onTopArrive","onBottomArrive","ScrollBlock","getMenuListRef","appendTo","controlElement","controlRef","_this6","_props12","delimiter","_value","join","input","_value2","A11yText","aria-live","ariaLiveSelection","constructAriaLiveMessage","_components4","Control","IndicatorsContainer","SelectContainer","ValueContainer","_props13","className","getCommonProps","onKeyDown","renderLiveRegion","getControlRef","onControlMouseDown","onControlTouchEnd","renderPlaceholderOrValue","renderInput","renderClearIndicator","renderLoadingIndicator","renderIndicatorSeparator","renderDropdownIndicator","renderMenu","renderFormField","_this7","isComposing","blockOptionHover","initialTouchX","initialTouchY","openAfterFocus","defaultComponents","blurInput","_props14","_props15","_props16","_selectValue3","announceAriaLiveSelection","arr","Array","isArray","arr2","from","_toConsumableArray","removedValue","popValue","lastSelectedValue","base","defaultStyles","boxSizing","custom","getActiveDescendentId","_state8","_ref3","valueEventAriaMessage","_ref4","instructionsAriaMessage","button","tagName","openMenu","_props17","HTMLElement","isDocumentElement","_ref5","touch","touches","clientX","clientY","userIsDragging","_ref6","deltaX","abs","deltaY","contains","currentTarget","_props18","activeElement","_props19","hideSelectedOptions","_props20","_state9","defaultPrevented","focusValue","shiftKey","__webpack_require__","r","__webpack_exports__","simpleIsEqual","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","isNewArgEqualToLast","newArg","_len","newArgs","_key","every","_typeof","Symbol","iterator","equal","arrA","arrB","dateA","dateB","regexpA","RegExp","regexpB","keyList","hasProp","$$typeof","error","match","console","warn","_diacritics","trimString","str","replace","defaultStringify","config","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","stringify","trim","matchFrom","toLowerCase","stripDiacritics","substr","diacritics","letters","_A11yText","_DummyInput","_NodeResolver","_ScrollBlock","_ScrollCaptor","css","zIndex","border","clip","height","width","position","overflow","padding","whiteSpace","backgroundColor","color","in","onExited","appear","enter","exit","background","fontSize","outline","left","opacity","transform","_NodeResolver2","_PureComponent","_temp","args","touchScrollTarget","getScrollTarget","blurSelectInput","PureComponent","bottom","right","top","_constants","canUseDOM","activeScrollLocks","ScrollLock","originalStyles","listenerOptions","capture","passive","accountForScrollbars","body","targetStyle","style","STYLE_KEYS","forEach","currentPadding","parseInt","paddingRight","clientWidth","adjustedPadding","innerWidth","LOCK_STYLES","isTouchDevice","preventTouchMove","preventInertiaScroll","allowTouchMove","scrollTop","totalScroll","scrollHeight","currentScroll","offsetHeight","navigator","maxTouchPoints","isBottom","isTop","cancelScroll","handleEventDelta","delta","_this$props","onBottomLeave","onTopLeave","_this$scrollTarget","scrollTarget","clientHeight","isDeltaPositive","availableScroll","shouldCancelScroll","onWheel","touchStart","changedTouches","startListening","stopListening","ScrollCaptorSwitch","_Component2","_containers","_indicators","_Control2","_Group","_Group2","_Input2","_Menu2","_MultiValue","_MultiValue2","_Option2","_Placeholder2","_SingleValue2","DownChevron","CrossIcon","_propTypes2","sizerStyle","visibility","INPUT_PROPS_BLACKLIST","copyStyles","node","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","test","userAgent","generateId","AutosizeInput","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","mounted","copyInputStyles","updateInputWidth","prevState","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholderIsMinWidth","extraWidth","select","injectStyles","dangerouslySetInnerHTML","__html","sizerValue","defaultValue","previousValue","currentValue","wrapperStyle","display","inputProps","inputStyle","field","inputClassName","renderStyles","propTypes","string","any","oneOfType","number","bool","func","mergeStyles","rsCss","_Control","_Input","_Placeholder","_Option","_SingleValue","clearIndicator","clearIndicatorCSS","container","containerCSS","control","dropdownIndicator","dropdownIndicatorCSS","groupCSS","groupHeading","groupHeadingCSS","indicatorsContainer","indicatorsContainerCSS","indicatorSeparator","indicatorSeparatorCSS","inputCSS","loadingIndicator","loadingIndicatorCSS","loadingMessageCSS","menu","menuCSS","menuList","menuListCSS","menuPortal","menuPortalCSS","multiValue","multiValueCSS","multiValueLabel","multiValueLabelCSS","multiValueRemove","multiValueRemoveCSS","noOptionsMessageCSS","optionCSS","placeholderCSS","valueContainer","valueContainerCSS","colors","primary","primary75","primary50","primary25","danger","dangerLight","neutral0","neutral5","neutral10","neutral20","neutral30","neutral40","neutral50","neutral60","neutral70","neutral80","neutral90","spacing","baseUnit","controlHeight","menuGutter","borderRadius","SelectComponent","_class","_temp2","StateManager","defaultInputValue","defaultMenuIsOpen","callProp","_len2","_key2","getProp","d","getConfirmation","supportsHistory","supportsPopStateOnHashChange","supportsGoWithoutReloadUsingHash","isExtraneousPopstateEvent","listener","attachEvent","detachEvent","confirm","ua","history","isAbsolute","pathname","charAt","spliceOne","list","k","n","pop","resolvePathname","to","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","last","up","part","unshift","valueEqual","aType","aValue","bValue","aKeys","bKeys","LocationUtils_createLocation","LocationUtils_locationsAreEqual","createLocation","path","currentLocation","location","parsePath","search","hash","decodeURI","URIError","locationsAreEqual","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeGlobal","freeSelf","root","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","array","predicate","mapToArray","size","setToArray","set","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","nativeObjectToString","reIsNative","Buffer","Uint8Array","splice","symToStringTag","toStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","arg","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","entries","clear","entry","ListCache","MapCache","SetCache","values","__data__","add","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","String","isIndex","assocIndexOf","eq","baseGetTag","isOwn","tag","unmasked","getRawTag","baseIsArguments","isObjectLike","baseIsEqual","other","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isFunction","baseKeys","Ctor","proto","arrLength","seen","arrValue","othIndex","symbolsFunc","getSymbols","offset","arrayPush","getMapData","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","isLength","webpackPolyfill","deprecate","paths","l","EventEmitter","_events","_maxListeners","isUndefined","defaultMaxListeners","setMaxListeners","isNaN","emit","er","handler","len","listeners","Error","err","on","addListener","m","newListener","warned","trace","once","fired","g","removeListener","removeAllListeners","listenerCount","evlistener","emitter","warning__WEBPACK_IMPORTED_MODULE_0__","warning__WEBPACK_IMPORTED_MODULE_0___default","invariant__WEBPACK_IMPORTED_MODULE_1__","invariant__WEBPACK_IMPORTED_MODULE_1___default","react__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_2___default","prop_types__WEBPACK_IMPORTED_MODULE_3__","prop_types__WEBPACK_IMPORTED_MODULE_3___default","_matchPath__WEBPACK_IMPORTED_MODULE_4__","isEmptyChildren","React","Children","Route","_React$Component","computeMatch","router","getChildContext","route","computedMatch","strict","exact","sensitive","invariant","matchPath","componentWillMount","warning","component","componentWillReceiveProps","nextContext","_context$router","staticContext","only","contextTypes","PropTypes","shape","isRequired","childContextTypes","path_to_regexp__WEBPACK_IMPORTED_MODULE_0__","path_to_regexp__WEBPACK_IMPORTED_MODULE_0___default","patternCache","cacheCount","parent","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","pattern","cacheKey","end","cache","compiledPattern","re","pathToRegexp","compilePath","url","isExact","params","memo","isarray","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","escaped","next","prefix","modifier","asterisk","partial","repeat","optional","escapeString","encodeURIComponentPretty","encodeURI","charCodeAt","toUpperCase","matches","opts","encode","pretty","encodeURIComponent","token","segment","JSON","j","attachKeys","flags","endsWithDelimiter","groups","regexpToRegexp","parts","arrayToRegexp","toArray","_unicodeAstralRegex2","substring","begin","strLength","limit","padString","padPosition","padRepeats","searchStr","pos","strArr","searchArr","finded","searchIndex","_unicodeAstralRegex","ScrollContainer","ScrollBehaviorContext","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","prop_types__WEBPACK_IMPORTED_MODULE_2__","prop_types__WEBPACK_IMPORTED_MODULE_2___default","react_router_dom__WEBPACK_IMPORTED_MODULE_4__","scroll_behavior__WEBPACK_IMPORTED_MODULE_5__","scroll_behavior__WEBPACK_IMPORTED_MODULE_5___default","classCallCheck","AwaitValue","AsyncGenerator","gen","front","back","resume","then","settle","done","reject","_invoke","request","return","asyncIterator","throw","createClass","inherits","possibleConstructorReturn","scrollKey","shouldUpdateScroll","scrollBehavior","prevRouterProps","routerProps","registerElement","ReactDOM","findDOMNode","unregisterElement","SessionStorage","stateKey","getStateKey","sessionStorage","getItem","storedValue","setItem","stateKeyBase","propTypes$1","ScrollContext","getRouterProps","ScrollBehaviorConstructor","ScrollBehavior","addTransitionHook","listen","stateStorage","getCurrentLocation","updateScroll","stop","withRouter","events","precond","Backoff","backoffStrategy","backoffStrategy_","maxNumberOfRetry_","backoffNumber_","backoffDelay_","timeoutID_","handlers","backoff","onBackoff_","failAfter","maxNumberOfRetry","checkArgument","checkState","reset","isDef","BackoffStrategy","initialDelay","maxDelay","initialDelay_","maxDelay_","randomisationFactor","randomisationFactor_","getMaxDelay","getInitialDelay","backoffDelay","next_","randomisationMultiple","round","reset_","util","FibonacciBackoffStrategy","nextBackoffDelay_","__WEBPACK_AMD_DEFINE_RESULT__","punycode","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","errors","not-basic","invalid-input","baseMinusTMin","floor","stringFromCharCode","fromCharCode","RangeError","mapDomain","ucs2decode","extra","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","decode","basic","oldi","w","t","baseMinusT","codePoint","inputLength","bias","lastIndexOf","handledCPCount","basicLength","q","handledCPCountPlusOne","qMinusT","ucs2","toASCII","toUnicode","define","WebSocketClient","protocols","reconnectEnabled","onBackoffStart","onBackoffReady","onBackoffFail","open","reconnect","isReconnect","ws","WebSocket","onclose","onCloseCallback","onerror","onErrorCallback","onmessage","onMessageCallback","onopen","onOpenCallback","delay","code","reason","close","send","bufferedAmount","readyState","binaryType","extensions","protocol","CONNECTING","OPEN","CLOSING","CLOSED","objectToString","_off2","_on2","_scrollLeft2","_scrollTop2","_requestAnimationFrame2","_invariant2","_onWindowScroll","_saveWindowPositionHandle","_saveWindowPosition","_windowScrollTarget","xTarget","yTarget","y","_cancelCheckWindowScroll","_savePosition","_checkWindowScrollPosition","_checkWindowScrollHandle","scrollToTarget","_numWindowScrollAttempts","_stateStorage","_getCurrentLocation","_shouldUpdateScroll","isMobileSafari","_oldScrollRestoration","scrollRestoration","_scrollElements","_removeTransitionHook","cancel","scrollElement","savePositionHandle","_saveElementPosition","saveElementPosition","_updateElementScroll","_scrollElements$key","prevContext","_updateWindowScroll","save","_getScrollTarget","_scrollElements$key2","_getDefaultScrollTarget","_getSavedScrollTarget","read","targetElement","getElementById","getElementsByName","_target","prop_types__WEBPACK_IMPORTED_MODULE_1__","prop_types__WEBPACK_IMPORTED_MODULE_1___default","invariant__WEBPACK_IMPORTED_MODULE_2__","invariant__WEBPACK_IMPORTED_MODULE_2___default","history__WEBPACK_IMPORTED_MODULE_3__","Link","handleClick","metaKey","altKey","ctrlKey","href","createHref","_classnames2","_check2","_x2","_util","Toggle","handleTouchStart","handleTouchMove","handleTouchEnd","handleFocus","handleBlur","previouslyChecked","checked","defaultChecked","hasFocus","checkbox","moved","click","startX","pointerCoord","activated","currentX","endX","icons","classes","react-toggle--checked","react-toggle--focus","react-toggle--disabled","getIcon","displayName","unchecked","scrollRight","scroll","startTime","now","gap","interrupt","step","elapsed","randomIntUpTo","connectStream","pollingRefresh","callbacks","onDisconnect","onReceive","dispatch","getState","streamingAPIBaseURL","getIn","accessToken","_callbacks","polling","clearPolling","subscription","stream","connected","received","disconnected","reconnected","onreconnect","getStream","setupPolling","connectUserStream","connectCommunityStream","connectPublicStream","connectHashtagStream","connectDirectStream","connectListStream","messages","getLocale","connectTimelineStream","timelineId","accept","locale","disconnectTimeline","updateTimeline","payload","deleteFromTimelines","updateNotifications","updateConversations","fetchFilters","refreshHomeTimelineAndNotification","expandHomeTimeline","expandNotifications","onlyMedia","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","defineMessages","btnAll","defaultMessage","btnNone","btnInvert","btnApply","NotificationPurgeButtons","injectIntl","intl","markNewForDelete","jsx","onMarkAll","formatMessage","onMarkNone","onInvert","onDeleteMarked","ImmutablePureComponent","clearMessage","clearConfirm","connect","onEnterCleaningMode","yes","enterNotificationClearingMode","openModal","onConfirm","deleteMarkedNotifications","markAllNotifications","show","moveLeft","moveRight","enterNotifCleaning","ColumnHeader","collapsed","animating","animatingNCD","goBack","onMove","historyBack","pinned","onPin","notifCleaningActive","extraContent","pinButton","moveButtons","backButton","collapseButton","icon","active","multiColumn","extraButton","showBackButton","notifCleaning","_this$state","title","wrapperClassName","buttonClassName","collapsibleClassName","collapsibleButtonClassName","notifCleaningButtonClassName","notifCleaningDrawerClassName","msgEnterNotifCleaning","handlePin","index_es","handleMoveLeft","handleMoveRight","handleBackClick","collapsedContent","aria-pressed","handleToggleClick","hasTitle","handleTitleClick","onTransitionEnd","handleTransitionEndNCD","notification_purge_buttons_container","handleTransitionEnd","_babel_runtime_helpers_esm_jsx__WEBPACK_IMPORTED_MODULE_0__","mastodon_components_icon__WEBPACK_IMPORTED_MODULE_8__","react_intl__WEBPACK_IMPORTED_MODULE_7__","fixedWidth","Column","_interruptScrollAnimation","scrollable","querySelector","componentDidMount","handleWheel","detectPassiveEvents","hasSupport","componentWillUnmount","extraClasses","react__WEBPACK_IMPORTED_MODULE_3___default","data-column","setRef","HotKeys","withHotKeys","FocusTrap","HotKeyMapMixin","prop_types__WEBPACK_IMPORTED_MODULE_0__","prop_types__WEBPACK_IMPORTED_MODULE_0___default","react__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_1___default","lodash_isequal__WEBPACK_IMPORTED_MODULE_2__","lodash_isequal__WEBPACK_IMPORTED_MODULE_2___default","react_dom__WEBPACK_IMPORTED_MODULE_3__","react_dom__WEBPACK_IMPORTED_MODULE_3___default","lodash_isboolean__WEBPACK_IMPORTED_MODULE_4__","lodash_isboolean__WEBPACK_IMPORTED_MODULE_4___default","lodash_isobject__WEBPACK_IMPORTED_MODULE_5__","lodash_isobject__WEBPACK_IMPORTED_MODULE_5___default","o","objectWithoutProperties","hotKeyParent","hotKeyMap","__hotKeyMap__","updateMap","buildMap","keyMap","__mousetrap__","attach","updateHotKeys","childHandledSequence","s","syncHandlersToMousetrap","getMap","sequence","isBool","focused","__isFocused__","__lastChildSequence__","_setRef","hotKeyHandlers","_REVERSE_MAP","_MAP","8","9","13","16","17","18","20","27","32","33","34","35","36","37","38","39","40","45","46","91","93","224","_KEYCODE_MAP","106","107","109","110","111","186","187","188","189","190","191","192","219","220","221","222","_SHIFT_MAP","~","!","@","#","$","%","^","&","*","(",")","_","+",":","\"","<",">","?","|","_SPECIAL_ALIASES","command","escape","plus","mod","platform","Mousetrap","_bindMultiple","unbind","trigger","_directMap","stopCallback","_belongsTo","ancestor","parentNode","isContentEditable","handleKey","_handleKey","addKeycodes","init","documentMousetrap","method","_addEvent","_characterFromEvent","which","character","_isModifier","_pickBestAction","modifiers","_getReverseMap","_getKeyInfo","combination","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","modifiers1","modifiers2","seq","sort","deleteCombo","combo","deleteSequence","_fireCallback","srcElement","returnValue","cancelBubble","_handleKeyEvent","keyCode","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","info","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","compatRaf","_inDOM","raf","curr","ms","prev","req","getKey","vendor","rafKey","cb","_default","ExponentialBackoffStrategy","FunctionCall","FibonacciStrategy","ExponentialStrategy","fibonacci","exponential","vargs","failCheck","ExceptionConstructor","callee","messageFormat","formatArgs","format","captureStackTrace","failArgumentCheck","IllegalArgumentError","typeOf","typeCheck","expect","IllegalStateError","checkIsDef","checkIsDefAndNotNull","checkIsString","checkIsArray","checkIsNumber","checkIsBoolean","checkIsFunction","checkIsObject","copy","fill","readUInt8","ctor","superCtor","super_","TempCtor","factor_","DEFAULT_FACTOR","factor","function_","arguments_","callback_","lastResult_","numRetries_","backoff_","strategy_","failAfter_","retryPredicate_","DEFAULT_RETRY_PREDICATE_","state_","State_","PENDING","RUNNING","COMPLETED","ABORTED","isPending","isRunning","isCompleted","isAborted","setStrategy","strategy","retryIf","retryPredicate","getLastResult","getNumRetries","abort","doCallback_","start","backoffFactory","doCall_","handleBackoff_","isRetry","eventArgs","handleFunctionCallback_","domParser","DOMParser","Card","defaultWidth","embedded","card","onOpenMedia","Immutable","fromJS","description","meta","original","handlePhotoClick","cacheWidth","offsetWidth","renderVideo","html","iframe","content","parseFromString","documentElement","src","innerHTML","react__WEBPACK_IMPORTED_MODULE_4___default","_this$props2","maxDescription","compact","parser","text","cut","provider","hostname","horizontal","interactive","classnames","rel","ratio","embed","thumbnail","backgroundImage","iconVariant","handleEmbedClick","public","unlisted","private","direct","VisibilityIcon","withLabel","visibilityClass","filename","AttachmentList","media","attachment","displayUrl","mastodon_components_icon__WEBPACK_IMPORTED_MODULE_7__","ImmutablePropTypes","wrappedComponentRef","remainingProps","routeComponentProps","WrappedComponent","hoistStatics","DropdownMenu","onClose","focusedItem","items","getElementsByTagName","Number","getAttribute","_this$props$items$i","handleDocumentClick","handleKeyDown","openedViaKeyboard","renderItem","_option$href","react_default","setFocusRef","handleItemKeyDown","data-index","arrowOffsetLeft","arrowOffsetTop","optional_motion","defaultStyle","scaleX","scaleY","spring","damping","stiffness","objectSpread","Dropdown","openDropdownId","handleClose","getBoundingClientRect","innerHeight","onOpen","handleItemClick","_this3$props$items$i","dropdownPlacement","icon_button","setTargetRef","Overlay_default","findTarget","dropdown_menu_DropdownMenu","isModalOpen","modalType","status","onItemClick","keyboard","isUserTouching","actions","openDropdownMenu","closeModal","closeDropdownMenu","hidden","toggle","toggle_visible","Item","hoverToPlay","play","pause","currentTime","autoPlayGif","standalone","letterbox","displayWidth","previewUrl","previewWidth","originalUrl","originalWidth","hasSize","srcSet","sizes","alt","objectPosition","controls","autoPlay","isIOS","autoplay","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","handleMouseDown","loop","muted","MediaGallery","visible","revealed","displayMedia","componentDidUpdate","isStandaloneEligible","_this$props3","_this$props4","fullwidth","take","computedClass","full-width","handleRef","handleOpen","_icon_button__WEBPACK_IMPORTED_MODULE_6__","overlay","viewBox","fillRule","pageX","pageY","spoiler-button--visible","ariaLabel","AvatarOverlay","account","friend","animate","baseStyle","overlayStyle","data-avatar-of","autoUnfoldCW","settings","rawRegex","regex","Queue","first","shift","Infinity","_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__","_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","currentStyle","HIDDEN_TEXTAREA_STYLE","min-height","max-height","z-index","SIZING_STYLE","computedStyleCache","hiddenTextarea","forceHiddenStyles","setProperty","calculateNodeHeight","uiTextNode","useCache","minRows","maxRows","appendChild","nodeStyling","sizingStyle","getPropertyValue","parseFloat","paddingSize","borderSize","nodeInfo","calculateNodeStyling","minHeight","singleRowHeight","valueRowCount","rowCount","TextareaAutosize","_onRef","current","_onChange","_controlled","_resizeComponent","_assertThisInitialized","nodeHeight","_uid","useCacheForDOMMeasurements","_resizeLock","_inheritsLoose","_proto","onHeightChange","_objectWithoutPropertiesLoose","_resizeListener","markForDeletion","NotificationOverlay","mark","notification","onMarkForDelete","aria-checked","onToggleMark","markNotificationForDelete","tiny_queue__WEBPACK_IMPORTED_MODULE_0__","taskQueue","runningRequestIdleCallback","runTasks","deadline","timeRemaining","requestIdleCallback","scheduleIdleTask","task","react_router_es_Route__WEBPACK_IMPORTED_MODULE_0__","follow","unfollow","requested","unblock","unmute","mute_notifications","unmute_notifications","Account","onFollow","onBlock","onMute","onMuteNotifications","buttons","small","react","me","following","blocking","muting","handleBlock","hidingNotificationsButton","handleUnmuteNotifications","handleMuteNotifications","handleMute","handleFollow","permalink","avatar","display_name","inline","unfollowConfirm","getAccount","makeGetAccount","unfollowModal","unfollowAccount","followAccount","unblockAccount","blockAccount","unmuteAccount","initMuteModal","notifications","muteAccount","getStatusIds","createSelector","ImmutableMap","ImmutableList","columnSettings","statusIds","statuses","statusForId","showStatus","hasMore","onScrollToTop","lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default","scrollTopTimeline","StatusList","StatusPrepend","parseClick","link","Message","StatusHeader","handleAccountClick","avatar_overlay","collapse","uncollapse","StatusIcons","setCollapsed","mediaIcon","collapsible","status_visibility_icon","flip","handleCollapsedClick","delete","redraft","mention","mute","block","reply","share","more","replyAll","reblog","reblog_private","cannot_reblog","favourite","bookmark","report","muteConversation","unmuteConversation","pin","unpin","admin_account","admin_status","StatusActionBar","onReply","_openInteractionDialog","onFavourite","onBookmark","onReblog","onDelete","onMention","onDirect","onEmbed","onReport","onMuteConversation","textarea","textContent","execCommand","removeChild","replyIcon","replyTitle","withDismiss","showReplyCount","mutingConversation","anonymousAccess","publicStatus","includes","reblogDisabled","reblogMessage","handleCopy","handleEmbed","handleConversationMuteClick","handlePinClick","handleDeleteClick","handleMentionClick","handleDirectClick","handleMuteClick","handleBlockClick","handleReport","isStaff","accountAdminLink","statusAdminLink","deleteOthersNotice","shareButton","handleShareClick","replyButton","handleReplyClick","pressed","handleReblogClick","handleFavouriteClick","handleBookmarkClick","dropdown_menu_container","relative_timestamp","timestamp","textForScreenReader","rebloggedByText","expanded","formatDate","hour","minute","month","day","Status","isCollapsed","autoCollapsed","isExpanded","setExpansion","destination","getSelection","removeAllRanges","onOpenVideo","onMoveUp","containerId","onMoveDown","getDerivedStateFromProps","update","updated","collapseProp","expandedProp","prepend","autoCollapseSettings","didShowCard","getSnapshotBeforeUpdate","getScrollPosition","snapshot","doShowCard","updateScrollBottom","offsetTop","renderLoadingMediaGallery","renderLoadingVideoPlayer","intersectionObserverWrapper","featured","objectWithoutPropertiesLoose","attachments","minHandlers","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","react_hotkeys_index_es","attachment_list","video","bundle","fetchComponent","Video","loading","preview","preventPlayback","handleOpenVideo","cachedMediaWidth","cacheMediaWidth","selectorAttribs","data-status-by","reblogged_by","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyMention","handleHotkeyOpen","openProfile","handleHotkeyOpenProfile","toggleSpoiler","handleExpandedToggle","has-background","status__wrapper-reply","esm_extends","data-featured","status_prepend_StatusPrepend","notificationId","status_header_StatusHeader","status_icons_StatusIcons","status_content","onExpandedToggle","status_action_bar_StatusActionBar","overlay_container","AvatarComposite","backgroundSize","accounts","cancel_reblog_private","catch","reblogIcon","onToggleHidden","_properStatus","statusAvatar","otherAccounts","unread","showThread","display_name_html","data-id","avatar_composite_AvatarComposite","toggleHidden","handleHotkeyToggleHidden","status-reply","others","collapsable","columnHeaderId","iconElement","mastodon_components_icon__WEBPACK_IMPORTED_MODULE_6__","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","blockConfirm","replyConfirm","replyMessage","getStatus","makeGetStatus","replyCompose","onModalReblog","unreblog","boostModal","unfavourite","onError","showAlertForError","withRedraft","deleteModal","deleteStatus","directCompose","mentionCompose","time","react_intl__WEBPACK_IMPORTED_MODULE_12__","initReport","unmuteStatus","muteStatus","revealStatus","hideStatus","reblogStatus","onDoNotAsk","changeLocalSetting","unbookmark","onModalFavourite","favouriteModal","react_intl__WEBPACK_IMPORTED_MODULE_13__","withPassive","focusRoot","detect_passive_events__WEBPACK_IMPORTED_MODULE_0__","parentElement","lodash_debounce__WEBPACK_IMPORTED_MODULE_4___default","heading","hideHeadingOnMobile","showHeading","isMobile","header","_column_header__WEBPACK_IMPORTED_MODULE_6__","handleHeaderClick","react__WEBPACK_IMPORTED_MODULE_5___default","handleScroll","hasBoundingRectBug","getRectFromEntry","boundingRect","observerRect","boundingClientRect","updateOnPropsForRendered","updateOnPropsForUnrendered","IntersectionObserverArticle","calculateHeight","updateStateAfterIntersection","isIntersecting","hideIfNotIntersecting","saveHeightKey","componentMounted","shouldComponentUpdate","nextState","isUnrendered","cachedHeight","prop","observe","handleIntersection","unobserve","listLength","aria-posinset","aria-setsize","cloneElement","setHeight","IntersectionObserverWrapper","observer","IntersectionObserver","observerBacklog","disconnect","ScrollableList","fullscreen","throttle_default","_this$node","onLoadMore","lastScrollWasSynthetic","scrollToTopOnMouseIdle","trailing","newScrollTop","mouseIdleTimer","clearMouseIdleTimer","handleMouseIdle","mouseMovedRecently","MOUSE_IDLE_DELAY","setScrollTop","isFullscreen","attachScrollListener","attachIntersectionObserver","attachFullscreenListener","onFullScreenChange","getFirstChildKey","detachScrollListener","detachIntersectionObserver","detachFullscreenListener","rootMargin","firstChild","trackScroll","showLoading","alwaysPrepend","emptyMessage","childrenCount","loadMore","load_more","handleLoadMore","scrollableArea","loading_indicator","handleMouseMove","intersection_observer_article_container","react_router_scroll_4_es","ColumnBackButton","react_intl__WEBPACK_IMPORTED_MODULE_5__","ColumnBackButtonSlim","mastodon_components_icon__WEBPACK_IMPORTED_MODULE_5__","react_intl__WEBPACK_IMPORTED_MODULE_3__","featuredStatusIds","getFeaturedStatusCount","elementIndex","getCurrentStatusIndex","_selectChild","lodash_debounce__WEBPACK_IMPORTED_MODULE_6___default","leading","_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_esm_jsx__WEBPACK_IMPORTED_MODULE_1__","react_intl__WEBPACK_IMPORTED_MODULE_14__","scrollableContent","statusId","_load_gap__WEBPACK_IMPORTED_MODULE_12__","maxId","flavours_glitch_containers_status_container__WEBPACK_IMPORTED_MODULE_10__","handleMoveUp","handleMoveDown","contextType","react__WEBPACK_IMPORTED_MODULE_7___default","_scrollable_list__WEBPACK_IMPORTED_MODULE_13__","handleLoadOlder","LoadMore","react_intl__WEBPACK_IMPORTED_MODULE_4__","react_intl__WEBPACK_IMPORTED_MODULE_8__","_load_gap__WEBPACK_IMPORTED_MODULE_13__","_containers_status_container__WEBPACK_IMPORTED_MODULE_11__","_scrollable_list__WEBPACK_IMPORTED_MODULE_14__","_ImmutablePureCompone","mastodonModalOpen","defaultShouldUpdateScroll","LoadGap","wrap","react_intl__WEBPACK_IMPORTED_MODULE_0__","react_redux__WEBPACK_IMPORTED_MODULE_1__","mapStateToProps","mapDispatchToProps","withIntl","TextIconButton","ariaControls","aria-expanded","aria-controls","handleActivate","ComposerOptionsDropdownContentItem","_React$PureComponent","assignHandlers","assertThisInitialized","_this$props2$options","lengthy","toggled-off","toggled-on","with-icon","component_default","components_icon","springMotion","ComposerOptionsDropdownContent","rest","item_ComposerOptionsDropdownContentItem","_this$handlers","handleToggle","handleMakeModal","onModalOpen","onModalClose","onPassiveClick","needsModalUpdate","modal","handleUpdate","ComposerOptionsDropdown","find","_this$handlers2","lineHeight","containerPadding","content_ComposerOptionsDropdownContent","advanced_options_icon_title","change_privacy","content_type","direct_long","direct_short","doodle","local_only_long","local_only_short","markdown","plain","private_long","private_short","public_long","public_short","spoiler","threaded_mode_long","threaded_mode_short","unlisted_long","unlisted_short","upload","handleChangeFiles","files","onUpload","handleClickAttach","fileElement","onDoodleOpen","handleRefFileElement","ComposerOptions","acceptContentTypes","advancedOptions","contentType","full","hasMedia","onChangeAdvancedOption","onChangeSensitivity","onChangeVisibility","onChangeContentType","onToggleSpoiler","privacy","resetFileKey","privacyItems","contentTypeItems","multiple","hiddenComponent","dropdown_ComposerOptionsDropdown","scale","inverted","text_icon_button_TextIconButton","publish","publishLoud","ComposerPublisher","countText","onSecondarySubmit","onSubmit","sideArm","diff","maxChars","over","components_button","onCancel","ComposerReply","account_container","handleRefSpoilerText","spoilerText","handleKeyUp","ComposerSpoiler","onKeyUp","localOnly","threadedMode","iconMap","ComposerTextareaIcons","ComposerTextareaSuggestions","onSuggestionClick","suggestions","isEmpty","suggestion","suggestions_item","selected","suggestionsHidden","handleChange","_ref$target","selectionStart","onSuggestionsFetchRequested","onSuggestionsClearRequested","lastToken","selectedSuggestion","tokenStart","handleClickSuggestion","onSuggestionSelected","_this$state2","handlePaste","onPaste","clipboardData","handleRefTextarea","ComposerTextarea","onPickEmoji","_this$state3","react_textarea_autosize_esm_browser","emoji_picker","undo","crop","onChangeDescription","dirtyDescription","hovered","handleRemove","onRemove","handleFocalPointClick","onOpenFocalPointModal","ComposerUploadFormItem","focusX","focusY","mediaType","backgroundPosition","maxLength","ComposerUploadFormProgress","progress","ComposerUploadForm","uploading","item_ComposerUploadFormItem","motionSpring","disclaimer","locked","ComposerWarning","lockedLink","profileLink","ComposerHashtagWarning","learn_more","ComposerDirectWarning","termsLink","regexen","regexSupplant","multiline","newRegex","urlRegex","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","APPROX_HASHTAG_RE","missingDescriptionMessage","missingDescriptionConfirm","handleChangeSpoiler","onChangeSpoilerText","handleEmoji","onInsertEmoji","handleSecondarySubmit","handleSubmit","handleSelect","onSelectSuggestion","uploadForm","onChangeText","isSubmitting","isChangingUpload","isUploading","anyMedia","mediaDescriptionConfirmation","onMediaDescriptionConfirm","firstWithoutDescription","findIndex","inputs","querySelectorAll","handleRefUploadForm","uploadFormComponent","textareaComponent","spoilerComponent","Composer","onMount","onUnmount","selectionEnd","focusDate","caretPosition","preselectDate","preselectOnReply","setSelectionRange","inputText","amUnlocked","layout","onCancelReply","onChangeSpoilerness","onClearSuggestions","onCloseModal","onFetchSuggestions","onOpenActionsModal","onOpenDoodleModal","onUndoUpload","inReplyTo","showSearch","spoilersAlwaysOn","disabledButton","reply_ComposerReply","spoiler_ComposerSpoiler","textarea_ComposerTextarea","options_ComposerOptions","replyPrivacy","sideArmBasePrivacy","sideArmRestrictedPrivacy","privacyPreference","sideArmPrivacy","replyAccount","replyContent","suggestionToken","cancelReplyCompose","changeComposeAdvancedOption","changeComposeContentType","changeUploadCompose","changeComposeSensitivity","changeComposeSpoilerText","changeComposeSpoilerness","changeCompose","changeComposeVisibility","clearComposeSuggestions","fetchComposeSuggestions","emoji","insertEmojiCompose","mountCompose","noEsc","selectComposeSuggestion","routerHistory","submitCompose","undoUploadCompose","unmountCompose","uploadCompose","EmojiPicker","Emoji","emoji_search","emoji_not_found","recent","search_results","people","nature","food","activity","travel","objects","symbols","DEFAULTS","getFrequentlyUsedEmojis","emojiCounters","emojis","keySeq","reverse","perLine","getCustomEmojis","aShort","bShort","assetHost","env","CDN_HOST","backgroundImageFn","categoriesSort","ModifierPickerMenu","attachListeners","removeListeners","react__WEBPACK_IMPORTED_MODULE_9___default","sheetSize","skin","ModifierPicker","EmojiPickerMenu","modifierOpen","notfound","categories","foods","places","native","colons","onPick","onSkinTone","custom_emojis","skinTone","frequentlyUsedEmojis","selecting","emojiSize","buildCustomEmojis","i18n","getI18n","include","showPreview","emojiTooltip","handleModifierOpen","handleModifierClose","handleModifierChange","EmojiPickerDropdown","changeSetting","useEmoji","dropdown","EmojiPickerAsync","EmojiMart","Picker","onHideDropdown","onShowDropdown","onToggle","pulse-loading","react_overlays_lib_Overlay__WEBPACK_IMPORTED_MODULE_12___default","ComposerTextareaSuggestionsItem","_babel_runtime_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_2__","inner","imageUrl","mapping","unicodeMapping","flavours_glitch_containers_account_container__WEBPACK_IMPORTED_MODULE_5__","onClickCapture","_LocationUtils__WEBPACK_IMPORTED_MODULE_2__","_PathUtils__WEBPACK_IMPORTED_MODULE_3__","_createTransitionManager__WEBPACK_IMPORTED_MODULE_4__","_DOMUtils__WEBPACK_IMPORTED_MODULE_5__","HashChangeEvent","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","stripTrailingSlash","addLeadingSlash","getDOMLocation","historyState","_window$location","hasBasename","stripBasename","createKey","transitionManager","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toLocation","toIndex","allKeys","go","initialLocation","createPath","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goForward","unlisten","_Route__WEBPACK_IMPORTED_MODULE_2__","_Link__WEBPACK_IMPORTED_MODULE_3__","NavLink","activeClassName","activeStyle","getIsActive","ariaCurrent","escapedPath","aria-current","stripLeadingSlash","hashIndex","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","getHashPath","replaceHashPath","createHashHistory","canGoWithoutReload","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","es_createHashHistory","es_createMemoryHistory","LocationUtils","PathUtils","onActionClick","actionIcon","actionTitle","handleAction","_polyfills_extends__WEBPACK_IMPORTED_MODULE_0__","_data_all_json__WEBPACK_IMPORTED_MODULE_2__","_nimble_emoji__WEBPACK_IMPORTED_MODULE_3__","_utils_shared_props__WEBPACK_IMPORTED_MODULE_4__","NimbleEmoji","EmojiPropTypes","EmojiDefaultProps","_Object","_String","fromCodePoint","highSurrogate","lowSurrogate","codeUnits","isFinite","getData","getSanitizedData","intersect","deepMerge","unifiedToNative","measureScrollbar","_JSON","COLONS_REGEX","SKINS","unified","codePoints","u","stringFromCodePoint","short_names","skin_tone","skin_variations","emoticons","emojiData","aliases","_Object$keys","buildSearch","variations","skinKey","variationData","v","uniq","uniqA","uniqB","originalValue","div","scrollbarWidth","__e","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_emojione","has_img_facebook","has_img_messenger","keywords","sheet","added_in","addToSearch","strings","compress","short_name","sheet_x","sheet_y","uncompress","compressed","toFixed","PickerDefaultProps","onOver","onLeave","fallback","forceSize","tooltip","oneOf","arrayOf","onSkinChange","defaultSkin","emojisToShowFilter","showSkinTones","MissingIndicator","react_intl__WEBPACK_IMPORTED_MODULE_2__","NAMESPACE","isLocalStorageSupported","getter","setter","localStorage","setNamespace","namespace","setHandlers","frequently","initialized","defaults","utils_frequently","quantity","frequentlyKeys","sliced","SVGs","Anchors","_Object$getPrototypeOf","defaultCategory","category","svg","onAnchorClick","anchor","getSVG","Category","setContainerRef","setLabelRef","margin","minMargin","memoizeSize","hasStickyPosition","emojiProps","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSize","nextSet","shouldUpdate","_container$getBoundin","parentTop","labelHeight","maxMargin","frequentlyUsed","getEmojis","labelStyles","labelSpanStyles","containerStyles","data-name","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","emoticon","Skins","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_loop","pool","emojiId","clearCustomEmojis","maxResults","exclude","_ref$custom","addCustomToPool","results","allResults","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","char","scores","_id","sub","subIndex","score","Search","emojiIndex","onSearch","opened","skinToneNodes","data-skin","I18N","NimblePicker","RECENT_CATEGORY","CUSTOM_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","testStickyPosition","firstRenderTimeout","updateCategoriesSize","leaveTimeout","stickyTestElement","customEmoji","categoryRefs","forceUpdate","updateDisplay","waitingForPaint","activeCategory","scrollingDown","minTop","ii","anchors","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","edit_profile","link_verified_on","dateFormatOptions","year","hour12","Header","fields","badge","mutingInfo","actionBtn","openEditProfile","inactive","pair","date","blockDomain","unblockDomain","hideReblogs","showReblogs","endorse","unendorse","add_or_remove_from_list","ActionBar","extraInfo","handleShare","onReblogToggle","onEndorseToggle","onAddToList","domain","onUnblockDomain","onBlockDomain","isStatusesPageActive","MovedNote","displayNameHtml","hideTabs","missing_indicator","moved_note_MovedNote","header_Header","action_bar_ActionBar","handleMention","handleDirect","handleReblogToggle","handleBlockDomain","handleUnblockDomain","handleEndorseToggle","handleAddToList","blockDomainConfirm","accountId","unpinAccount","pinAccount","linkVerifiedOn","account_locked","Avatar","isHovered","radius","handleMouseOver","onMouseOut","handleMouseOut","lockedIcon","header_Avatar","pins","preferences","follow_requests","favourites","lists","blocks","domain_blocks","mutes","formatNumber","shortNumberFormat","__g","_utils__WEBPACK_IMPORTED_MODULE_2__","_utils_data__WEBPACK_IMPORTED_MODULE_3__","_getData","_getSanitizedData","_getData2","_convertStyleToCSS","SettingToggle","settingPath","react_toggle__WEBPACK_IMPORTED_MODULE_5___default","htmlFor","SettingText","getMenuPlacement","_reactDom","_defineProperty","menuEl","shouldScroll","isFixedPosition","scrollParent","getScrollParent","defaultState","offsetParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","getScrollTop","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","animatedScrollTo","_constrainedHeight","scrollTo","_constrainedHeight2","coercePlacement","p","_ref2$theme","getPlacement","getPortalPlacement","getUpdatedProps","cn","overflowY","paddingBottom","paddingTop","WebkitOverflowScrolling","menu-list","menu-list--is-multi","noticeCSS","_ref6$theme","textAlign","menu-notice","menu-notice--no-options","menu-notice--loading","_ref7","rect","_ref8","_ref9","isFixed","getBoundingClientObj","scrollDistance","pageYOffset","menuWrapper","createPortal","emptyString","cssKey","applyPrefixToName","normalizedHeight","excludeStaticParent","overflowRx","docEl","overflowX","duration","change","increment","animateScroll","_raf2","focusedEl","menuRect","focusedRect","overScroll","toKey","createEvent","_raf","NodeResolver","raw","_templateObject","freeze","Svg","stroke","strokeWidth","baseCSS","transition",":hover","keyframesName","indicator","dropdown-indicator","clear-indicator","_ref3$theme","alignSelf","indicator-separator","keyframesInjected","LoadingDot","_ref4$theme","marginRight","verticalAlign","animationDuration","animationDelay","animationIterationCount","animationName","animationTimingFunction","marginLeft","injectGlobal","loading-indicator","ColumnLink","badgeElement","data-method","react_router_dom__WEBPACK_IMPORTED_MODULE_2__","ColumnSubheading","IObject","ceil","edit","DrawerAccount","flavours_glitch_components_permalink__WEBPACK_IMPORTED_MODULE_4__","flavours_glitch_components_avatar__WEBPACK_IMPORTED_MODULE_3__","factory","__WEBPACK_EXTERNAL_MODULE_1__","modules","installedModules","moduleId","property","NODE_ENV","REACT_ELEMENT_TYPE","for","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","nextTick","browser","argv","versions","off","prependListener","prependOnceListener","cwd","chdir","dir","umask","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","validateFormat","condition","argIndex","framesToPop","_mean","_mean2","dataMean","sqDiff","pow","avgSqDiff","sqrt","SparklinesText","SparklinesNormalBand","SparklinesReferenceLine","SparklinesSpots","SparklinesBars","SparklinesCurve","SparklinesLine","Sparklines","_SparklinesText2","_SparklinesLine2","_SparklinesCurve2","_SparklinesBars2","_SparklinesSpots2","_SparklinesReferenceLine2","_SparklinesNormalBand2","_dataToPoints2","svgWidth","svgHeight","preserveAspectRatio","points","svgOpts","ReactPropTypesSecret","checkPropTypes","isValidElement","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createChainableTypeChecker","typeChecker","propName","componentName","propFullName","PropTypeError","propValue","propType","getPropType","instanceOf","expectedClass","expectedClassName","actualClassName","isNode","objectOf","expectedValues","valuesString","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","shapeTypes","validate","manualPropTypeCallCache","manualPropTypeWarningCount","checkType","secret","chainedCheckType","expectedType","getPreciseType","iteratorFn","maybeIterable","getIteratorFn","loggedTypeFailures","typeSpecs","getStack","typeSpecName","ex","shim","getShim","point","linePoints","closePolyPoints","fillPoints","lineStyle","strokeLinejoin","strokeLinecap","fillStyle","fillOpacity","pointerEvents","tooltips","cy","_props$divisor","divisor","curve","barWidth","marginWidth","sign","spotColors","startSpot","endSpot","lastDirection","-1","0","1","dataProcessing","newObj","_interopRequireWildcard","ypoints","x1","y1","x2","y2","strokeOpacity","strokeDasharray","variance","stdev","median","midRange","avg","mean","_min3","_mean3","_midRange3","_median3","_stdev3","_variance3","_min2","_max2","sq","_stdev2","dataStdev","_ref$width","_ref$height","_ref$margin","_ref$max","_ref$min","vfactor","hfactor","filter_regex","ColumnSettings","flavours_glitch_features_notifications_components_setting_toggle__WEBPACK_IMPORTED_MODULE_5__","flavours_glitch_components_setting_text__WEBPACK_IMPORTED_MODULE_4__","formatRegExp","isString","inspect","isNull","msg","noDeprecation","throwDeprecation","traceDeprecation","debugEnviron","debugs","stylize","stylizeNoColor","depth","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","recurseTimes","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","idx","getOwnPropertyNames","isError","formatError","isRegExp","isDate","braces","toUTCString","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","desc","getOwnPropertyDescriptor","line","ar","pad","debuglog","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","red","yellow","special","boolean","null","regexp","isNullOrUndefined","isSymbol","isPrimitive","months","log","getHours","getMinutes","getSeconds","getDate","getMonth","origin","makeAsyncSelect","_Select2","_stateManager2","cacheOptions","defaultOptions","Async","optionsCache","lastRequest","loadedInputValue","loadedOptions","passEmptyOptions","loadOptions","loader","--is-disabled","--is-rtl","alignItems","flex","flexWrap","value-container","value-container--is-multi","value-container--has-value","flexShrink","indicators","_ref$theme","borderColor","borderStyle","borderWidth","boxShadow","cursor","justifyContent","&:hover","control--is-disabled","control--is-focused","paddingLeft","cleanProps","group-heading","_reactInputAutosize2","MultiValueGeneric","cropWithEllipsis","textOverflow","containerInnerProps","multi-value","multi-value--is-disabled","labelInnerProps","multi-value__label","removeInnerProps","multi-value__remove","userSelect","WebkitTapHighlightColor",":active","option--is-disabled","option--is-focused","option--is-selected","maxWidth","single-value","single-value--is-disabled","NewListForm","changeListEditorTitle","submitListEditor","flavours_glitch_components_icon_button__WEBPACK_IMPORTED_MODULE_7__","remove","onAdd","added","flavours_glitch_components_icon_button__WEBPACK_IMPORTED_MODULE_9__","flavours_glitch_components_avatar__WEBPACK_IMPORTED_MODULE_7__","flavours_glitch_components_display_name__WEBPACK_IMPORTED_MODULE_8__","onClear","handleClear","maximumFractionDigits","_notifications_components_setting_toggle__WEBPACK_IMPORTED_MODULE_4__","mastodon_components_icon__WEBPACK_IMPORTED_MODULE_3__","_components_icon_button__WEBPACK_IMPORTED_MODULE_7__","StyleSheet","isSpeedy","speedy","tags","ctr","before","insert","rule","_tag","setAttribute","createTextNode","nextSibling","insertBefore","styleSheets","ownerNode","sheetForTag","isImportRule","insertRule","cssRules","flush","stylis_min","X","h","ia","Z","L","ja","ka","aa","ba","la","ma","na","ea","oa","H","A","D","z","M","K","I","J","N","ca","da","fa","Y","E","ha","Q","use","T","toSheet","Sheet","ruleSheet","selectors","parents","column","ns","at","createCache","stylisOptions","stylis","Stylis","inserted","head","_insert","nodes","stylisPlugins","selector","serialized","shouldCache","registered","murmurhash2_32_gc","unitlessKeys","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flexGrow","flexPositive","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","order","orphans","tabSize","widows","zoom","WebkitLineClamp","floodOpacity","stopOpacity","strokeDashoffset","strokeMiterlimit","memoize","hyphenateRegex","animationRegex","processStyleName","styleName","processStyleValue","p1","p2","unitless","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","_i","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","identifierName","hashString","getRegisteredStyles","registeredStyles","rawClassName","insertWithoutScoping","merge","cls","toAdd","createEmotion","compat","isStringTag","insertStyles","_len4","_key4","_len3","_key3","keyframes","animation","hydrate","ids","hashtag","full_text","user","DrawerSearchPopout","searchEnabled","submitted","onShow","DrawerSearch","filters","NavigationBar"],"mappings":"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","file":"common.js","sourcesContent":["// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n\n// MIT license\n\nvar isWindowAvailable = typeof window !== 'undefined';\n\nisWindowAvailable && function () {\n var lastTime = 0;\n var vendors = ['ms', 'moz', 'webkit', 'o'];\n\n for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {\n window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];\n }\n\n if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback, element) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n\n lastTime = currTime + timeToCall;\n return id;\n };\n\n if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n}();","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultProps = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _memoizeOne = require('memoize-one');\n\nvar _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n\nvar _createEmotion = require('create-emotion');\n\nvar _createEmotion2 = _interopRequireDefault(_createEmotion);\n\nvar _Menu = require('./components/Menu');\n\nvar _reactFastCompare = require('./internal/react-fast-compare');\n\nvar _reactFastCompare2 = _interopRequireDefault(_reactFastCompare);\n\nvar _filters = require('./filters');\n\nvar _index = require('./internal/index');\n\nvar _index2 = require('./accessibility/index');\n\nvar _utils = require('./utils');\n\nvar _builtins = require('./builtins');\n\nvar _index3 = require('./components/index');\n\nvar _styles = require('./styles');\n\nvar _theme = require('./theme');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultProps = exports.defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: (0, _utils.isTouchCapable)(),\n captureMenuScroll: !(0, _utils.isTouchCapable)(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: (0, _filters.createFilter)(),\n formatGroupLabel: _builtins.formatGroupLabel,\n getOptionLabel: _builtins.getOptionLabel,\n getOptionValue: _builtins.getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: _builtins.isOptionDisabled,\n loadingMessage: function loadingMessage() {\n return 'Loading...';\n },\n maxMenuHeight: 300,\n minMenuHeight: 140,\n menuIsOpen: false,\n menuPlacement: 'bottom',\n menuPosition: 'absolute',\n menuShouldBlockScroll: false,\n menuShouldScrollIntoView: !(0, _utils.isMobileDevice)(),\n noOptionsMessage: function noOptionsMessage() {\n return 'No options';\n },\n openMenuOnFocus: false,\n openMenuOnClick: true,\n options: [],\n pageSize: 5,\n placeholder: 'Select...',\n screenReaderStatus: function screenReaderStatus(_ref) {\n var count = _ref.count;\n return count + ' result' + (count !== 1 ? 's' : '') + ' available';\n },\n styles: {},\n tabIndex: '0',\n tabSelectsValue: true\n};\n\nvar instanceId = 1;\n\nvar getEmotion = (0, _memoizeOne2.default)(function (nonce) {\n return (0, _createEmotion2.default)(nonce ? { nonce: nonce } : {});\n});\n\nvar Select = function (_Component) {\n _inherits(Select, _Component);\n\n // Lifecycle\n // ------------------------------\n\n // Refs\n // ------------------------------\n\n // TODO\n function Select(props) {\n _classCallCheck(this, Select);\n\n var _this = _possibleConstructorReturn(this, (Select.__proto__ || Object.getPrototypeOf(Select)).call(this, props));\n\n _initialiseProps.call(_this);\n\n var value = props.value;\n\n _this.cacheComponents = (0, _memoizeOne2.default)(_this.cacheComponents, _reactFastCompare2.default).bind(_this);\n _this.cacheComponents(props.components);\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var selectValue = (0, _utils.cleanValue)(value);\n var menuOptions = _this.buildMenuOptions(props, selectValue);\n\n _this.emotion = getEmotion(props.nonce);\n\n _this.state.menuOptions = menuOptions;\n _this.state.selectValue = selectValue;\n return _this;\n }\n\n // Misc. Instance Properties\n // ------------------------------\n\n _createClass(Select, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.startListeningComposition();\n this.startListeningToTouch();\n\n if (this.props.closeMenuOnScroll && document && document.addEventListener) {\n // Listen to all scroll events, and filter them out inside of 'onScroll'\n document.addEventListener('scroll', this.onScroll, true);\n }\n\n if (this.props.autoFocus) {\n this.focusInput();\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _props = this.props,\n options = _props.options,\n value = _props.value,\n inputValue = _props.inputValue;\n // re-cache custom components\n\n this.cacheComponents(nextProps.components);\n // rebuild the menu options\n if (nextProps.value !== value || nextProps.options !== options || nextProps.inputValue !== inputValue) {\n var _selectValue = (0, _utils.cleanValue)(nextProps.value);\n var _menuOptions = this.buildMenuOptions(nextProps, _selectValue);\n var _focusedValue = this.getNextFocusedValue(_selectValue);\n var _focusedOption = this.getNextFocusedOption(_menuOptions.focusable);\n this.setState({ menuOptions: _menuOptions, selectValue: _selectValue, focusedOption: _focusedOption, focusedValue: _focusedValue });\n }\n // some updates should toggle the state of the input visibility\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _props2 = this.props,\n isDisabled = _props2.isDisabled,\n menuIsOpen = _props2.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n\n if (\n // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled ||\n // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n }\n\n // scroll the focused option into view if necessary\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n (0, _utils.scrollIntoView)(this.menuListRef, this.focusedOptionRef);\n }\n this.scrollToFocusedOptionOnUpdate = false;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }\n }, {\n key: 'onMenuOpen',\n\n // ==============================\n // Consumer Handlers\n // ==============================\n\n value: function onMenuOpen() {\n this.props.onMenuOpen();\n }\n }, {\n key: 'onMenuClose',\n value: function onMenuClose() {\n var _props3 = this.props,\n isSearchable = _props3.isSearchable,\n isMulti = _props3.isMulti;\n\n this.announceAriaLiveContext({\n event: 'input',\n context: { isSearchable: isSearchable, isMulti: isMulti }\n });\n this.onInputChange('', { action: 'menu-close' });\n this.props.onMenuClose();\n }\n }, {\n key: 'onInputChange',\n value: function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n }\n\n // ==============================\n // Methods\n // ==============================\n\n }, {\n key: 'focusInput',\n value: function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n }\n }, {\n key: 'blurInput',\n value: function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n }\n\n // aliased for consumers\n\n }, {\n key: 'openMenu',\n value: function openMenu(focusOption) {\n var _state = this.state,\n menuOptions = _state.menuOptions,\n selectValue = _state.selectValue;\n var isMulti = this.props.isMulti;\n\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n }\n\n this.scrollToFocusedOptionOnUpdate = true;\n this.inputIsHiddenAfterUpdate = false;\n\n this.onMenuOpen();\n this.setState({\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n });\n\n this.announceAriaLiveContext({ event: 'menu' });\n }\n }, {\n key: 'focusValue',\n value: function focusValue(direction) {\n var _props4 = this.props,\n isMulti = _props4.isMulti,\n isSearchable = _props4.isSearchable;\n var _state2 = this.state,\n selectValue = _state2.selectValue,\n focusedValue = _state2.focusedValue;\n\n // Only multiselects support value focusing\n\n if (!isMulti) return;\n\n this.setState({\n focusedOption: null\n });\n\n var focusedIndex = selectValue.indexOf(focusedValue);\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({ event: 'value' });\n }\n\n var lastIndex = selectValue.length - 1;\n var nextFocus = -1;\n if (!selectValue.length) return;\n\n switch (direction) {\n case 'previous':\n if (focusedIndex === 0) {\n // don't cycle from the start to the end\n nextFocus = 0;\n } else if (focusedIndex === -1) {\n // if nothing is focused, focus the last value first\n nextFocus = lastIndex;\n } else {\n nextFocus = focusedIndex - 1;\n }\n break;\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: { isSearchable: isSearchable, isMulti: isMulti }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus === -1 ? false : true,\n focusedValue: selectValue[nextFocus]\n });\n }\n }, {\n key: 'focusOption',\n value: function focusOption() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'first';\n var pageSize = this.props.pageSize;\n var _state3 = this.state,\n focusedOption = _state3.focusedOption,\n menuOptions = _state3.menuOptions;\n\n var options = menuOptions.focusable;\n\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n var focusedIndex = options.indexOf(focusedOption);\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({ event: 'menu' });\n }\n\n if (direction === 'up') {\n nextFocus = focusedIndex > 0 ? focusedIndex - 1 : options.length - 1;\n } else if (direction === 'down') {\n nextFocus = (focusedIndex + 1) % options.length;\n } else if (direction === 'pageup') {\n nextFocus = focusedIndex - pageSize;\n if (nextFocus < 0) nextFocus = 0;\n } else if (direction === 'pagedown') {\n nextFocus = focusedIndex + pageSize;\n if (nextFocus > options.length - 1) nextFocus = options.length - 1;\n } else if (direction === 'last') {\n nextFocus = options.length - 1;\n }\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n }\n }, {\n key: 'getTheme',\n\n\n // ==============================\n // Getters\n // ==============================\n\n value: function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return _theme.defaultTheme;\n }\n // If the theme prop is a function, assume the function\n // knows how to merge the passed-in default theme with\n // its own modifications.\n if (typeof this.props.theme === 'function') {\n return this.props.theme(_theme.defaultTheme);\n }\n // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n return _extends({}, _theme.defaultTheme, this.props.theme);\n }\n }, {\n key: 'getCommonProps',\n value: function getCommonProps() {\n var clearValue = this.clearValue,\n getStyles = this.getStyles,\n setValue = this.setValue,\n selectOption = this.selectOption,\n props = this.props;\n var classNamePrefix = props.classNamePrefix,\n isMulti = props.isMulti,\n isRtl = props.isRtl,\n options = props.options;\n var selectValue = this.state.selectValue;\n\n var hasValue = this.hasValue();\n var getValue = function getValue() {\n return selectValue;\n };\n var cxPrefix = classNamePrefix;\n\n var cx = _utils.classNames.bind(null, cxPrefix);\n return {\n cx: cx,\n clearValue: clearValue,\n getStyles: getStyles,\n getValue: getValue,\n hasValue: hasValue,\n isMulti: isMulti,\n isRtl: isRtl,\n options: options,\n selectOption: selectOption,\n setValue: setValue,\n selectProps: props,\n theme: this.getTheme(),\n emotion: this.emotion\n };\n }\n }, {\n key: 'getNextFocusedValue',\n value: function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n var _state4 = this.state,\n focusedValue = _state4.focusedValue,\n lastSelectValue = _state4.selectValue;\n\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n if (nextFocusedIndex > -1) {\n // the focused value is still in the selectValue, return it\n return focusedValue;\n } else if (lastFocusedIndex < nextSelectValue.length) {\n // the focusedValue is not present in the next selectValue array by\n // reference, so return the new value at the same index\n return nextSelectValue[lastFocusedIndex];\n }\n }\n return null;\n }\n }, {\n key: 'getNextFocusedOption',\n value: function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n }\n\n // ==============================\n // Helpers\n // ==============================\n\n }, {\n key: 'hasValue',\n value: function hasValue() {\n var selectValue = this.state.selectValue;\n\n return selectValue.length > 0;\n }\n }, {\n key: 'hasOptions',\n value: function hasOptions() {\n return !!this.state.menuOptions.render.length;\n }\n }, {\n key: 'countOptions',\n value: function countOptions() {\n return this.state.menuOptions.focusable.length;\n }\n }, {\n key: 'isClearable',\n value: function isClearable() {\n var _props5 = this.props,\n isClearable = _props5.isClearable,\n isMulti = _props5.isMulti;\n\n // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n\n return isClearable;\n }\n }, {\n key: 'isOptionDisabled',\n value: function isOptionDisabled(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n }\n }, {\n key: 'isOptionSelected',\n value: function isOptionSelected(option, selectValue) {\n var _this2 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this2.getOptionValue(i) === candidate;\n });\n }\n }, {\n key: 'filterOption',\n value: function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n }\n }, {\n key: 'formatOptionLabel',\n value: function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var _inputValue = this.props.inputValue;\n var _selectValue2 = this.state.selectValue;\n\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: _inputValue,\n selectValue: _selectValue2\n });\n } else {\n return this.getOptionLabel(data);\n }\n }\n }, {\n key: 'formatGroupLabel',\n value: function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n }\n\n // ==============================\n // Mouse Handlers\n // ==============================\n\n }, {\n key: 'startListeningComposition',\n\n\n // ==============================\n // Composition Handlers\n // ==============================\n\n value: function startListeningComposition() {\n if (document && document.addEventListener) {\n document.addEventListener('compositionstart', this.onCompositionStart, false);\n document.addEventListener('compositionend', this.onCompositionEnd, false);\n }\n }\n }, {\n key: 'stopListeningComposition',\n value: function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }\n }, {\n key: 'startListeningToTouch',\n\n\n // ==============================\n // Touch Handlers\n // ==============================\n\n value: function startListeningToTouch() {\n if (document && document.addEventListener) {\n document.addEventListener('touchstart', this.onTouchStart, false);\n document.addEventListener('touchmove', this.onTouchMove, false);\n document.addEventListener('touchend', this.onTouchEnd, false);\n }\n }\n }, {\n key: 'stopListeningToTouch',\n value: function stopListeningToTouch() {\n if (document && document.removeEventListener) {\n document.removeEventListener('touchstart', this.onTouchStart);\n document.removeEventListener('touchmove', this.onTouchMove);\n document.removeEventListener('touchend', this.onTouchEnd);\n }\n }\n\n // ==============================\n // Focus Handlers\n // ==============================\n\n // ==============================\n // Keyboard Handlers\n // ==============================\n\n }, {\n key: 'buildMenuOptions',\n\n\n // ==============================\n // Menu Options\n // ==============================\n\n value: function buildMenuOptions(props, selectValue) {\n var _this3 = this;\n\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === undefined ? '' : _props$inputValue,\n options = props.options;\n\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this3.isOptionDisabled(option, selectValue);\n var isSelected = _this3.isOptionSelected(option, selectValue);\n var label = _this3.getOptionLabel(option);\n var value = _this3.getOptionValue(option);\n\n if (_this3.shouldHideSelectedOptions() && isSelected || !_this3.filterOption({ label: label, value: value, data: option }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this3.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this3.selectOption(option);\n };\n var optionId = _this3.getElementId('option') + '-' + id;\n\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\n role: 'option',\n tabIndex: -1\n },\n data: option,\n isDisabled: isDisabled,\n isSelected: isSelected,\n key: optionId,\n label: label,\n type: 'option',\n value: value\n };\n };\n\n return options.reduce(function (acc, item, itemIndex) {\n if (item.options) {\n // TODO needs a tidier implementation\n if (!_this3.hasGroups) _this3.hasGroups = true;\n\n var items = item.options;\n\n var children = items.map(function (child, i) {\n var option = toOption(child, itemIndex + '-' + i);\n if (option && !option.isDisabled) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n if (children.length) {\n var groupId = _this3.getElementId('group') + '-' + itemIndex;\n acc.render.push({\n type: 'group',\n key: groupId,\n data: item,\n options: children\n });\n }\n } else {\n var option = toOption(item, '' + itemIndex);\n if (option) {\n acc.render.push(option);\n if (!option.isDisabled) acc.focusable.push(item);\n }\n }\n return acc;\n }, { render: [], focusable: [] });\n }\n\n // ==============================\n // Renderers\n // ==============================\n\n }, {\n key: 'constructAriaLiveMessage',\n value: function constructAriaLiveMessage() {\n var _state5 = this.state,\n ariaLiveContext = _state5.ariaLiveContext,\n selectValue = _state5.selectValue,\n focusedValue = _state5.focusedValue,\n focusedOption = _state5.focusedOption;\n var _props6 = this.props,\n options = _props6.options,\n menuIsOpen = _props6.menuIsOpen,\n inputValue = _props6.inputValue,\n screenReaderStatus = _props6.screenReaderStatus;\n\n // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? (0, _index2.valueFocusAriaMessage)({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : '';\n // An aria live message representing the currently focused option in the select.\n var focusedOptionMsg = focusedOption && menuIsOpen ? (0, _index2.optionFocusAriaMessage)({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : '';\n // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n var resultsMsg = (0, _index2.resultsAriaMessage)({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({ count: this.countOptions() })\n });\n\n return focusedValueMsg + ' ' + focusedOptionMsg + ' ' + resultsMsg + ' ' + ariaLiveContext;\n }\n }, {\n key: 'renderInput',\n value: function renderInput() {\n var _props7 = this.props,\n isDisabled = _props7.isDisabled,\n isSearchable = _props7.isSearchable,\n inputId = _props7.inputId,\n inputValue = _props7.inputValue,\n tabIndex = _props7.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n\n\n var id = inputId || this.getElementId('input');\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return _react2.default.createElement(_index.DummyInput, {\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: _utils.noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: '',\n emotion: this.emotion\n });\n }\n\n // aria attributes makes the JSX \"noisy\", separated for clarity\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n\n var _commonProps = this.commonProps,\n cx = _commonProps.cx,\n theme = _commonProps.theme,\n selectProps = _commonProps.selectProps;\n\n\n return _react2.default.createElement(Input, _extends({\n autoCapitalize: 'none',\n autoComplete: 'off',\n autoCorrect: 'off',\n cx: cx,\n getStyles: this.getStyles,\n id: id,\n innerRef: this.getInputRef,\n isDisabled: isDisabled,\n isHidden: inputIsHidden,\n onBlur: this.onInputBlur,\n onChange: this.handleInputChange,\n onFocus: this.onInputFocus,\n selectProps: selectProps,\n spellCheck: 'false',\n tabIndex: tabIndex,\n theme: theme,\n type: 'text',\n value: inputValue,\n emotion: this.emotion\n }, ariaAttributes));\n }\n }, {\n key: 'renderPlaceholderOrValue',\n value: function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _components = this.components,\n MultiValue = _components.MultiValue,\n MultiValueContainer = _components.MultiValueContainer,\n MultiValueLabel = _components.MultiValueLabel,\n MultiValueRemove = _components.MultiValueRemove,\n SingleValue = _components.SingleValue,\n Placeholder = _components.Placeholder;\n var commonProps = this.commonProps;\n var _props8 = this.props,\n controlShouldRenderValue = _props8.controlShouldRenderValue,\n isDisabled = _props8.isDisabled,\n isMulti = _props8.isMulti,\n inputValue = _props8.inputValue,\n placeholder = _props8.placeholder;\n var _state6 = this.state,\n selectValue = _state6.selectValue,\n focusedValue = _state6.focusedValue,\n isFocused = _state6.isFocused;\n\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : _react2.default.createElement(\n Placeholder,\n _extends({}, commonProps, {\n key: 'placeholder',\n isDisabled: isDisabled,\n isFocused: isFocused\n }),\n placeholder\n );\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt) {\n var isFocused = opt === focusedValue;\n return _react2.default.createElement(\n MultiValue,\n _extends({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n removeProps: {\n onClick: function onClick() {\n return _this4.removeValue(opt);\n },\n onTouchEnd: function onTouchEnd() {\n return _this4.removeValue(opt);\n },\n onMouseDown: function onMouseDown(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n data: opt\n }),\n _this4.formatOptionLabel(opt, 'value')\n );\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return _react2.default.createElement(\n SingleValue,\n _extends({}, commonProps, { data: singleValue, isDisabled: isDisabled }),\n this.formatOptionLabel(singleValue, 'value')\n );\n }\n }, {\n key: 'renderClearIndicator',\n value: function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _props9 = this.props,\n isDisabled = _props9.isDisabled,\n isLoading = _props9.isLoading;\n var isFocused = this.state.isFocused;\n\n\n if (!this.isClearable() || !ClearIndicator || isDisabled || !this.hasValue() || isLoading) {\n return null;\n }\n\n var innerProps = {\n onMouseDown: this.onClearIndicatorMouseDown,\n onTouchEnd: this.onClearIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n\n return _react2.default.createElement(ClearIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n }\n }, {\n key: 'renderLoadingIndicator',\n value: function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _props10 = this.props,\n isDisabled = _props10.isDisabled,\n isLoading = _props10.isLoading;\n var isFocused = this.state.isFocused;\n\n\n if (!LoadingIndicator || !isLoading) return null;\n\n var innerProps = { 'aria-hidden': 'true' };\n return _react2.default.createElement(LoadingIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: 'renderIndicatorSeparator',\n value: function renderIndicatorSeparator() {\n var _components2 = this.components,\n DropdownIndicator = _components2.DropdownIndicator,\n IndicatorSeparator = _components2.IndicatorSeparator;\n\n // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n\n\n return _react2.default.createElement(IndicatorSeparator, _extends({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: 'renderDropdownIndicator',\n value: function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n\n\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n\n return _react2.default.createElement(DropdownIndicator, _extends({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n }\n }, {\n key: 'renderMenu',\n value: function renderMenu() {\n var _this5 = this;\n\n var _components3 = this.components,\n Group = _components3.Group,\n GroupHeading = _components3.GroupHeading,\n Menu = _components3.Menu,\n MenuList = _components3.MenuList,\n MenuPortal = _components3.MenuPortal,\n LoadingMessage = _components3.LoadingMessage,\n NoOptionsMessage = _components3.NoOptionsMessage,\n Option = _components3.Option;\n var commonProps = this.commonProps;\n var _state7 = this.state,\n focusedOption = _state7.focusedOption,\n menuOptions = _state7.menuOptions;\n var _props11 = this.props,\n captureMenuScroll = _props11.captureMenuScroll,\n inputValue = _props11.inputValue,\n isLoading = _props11.isLoading,\n loadingMessage = _props11.loadingMessage,\n minMenuHeight = _props11.minMenuHeight,\n maxMenuHeight = _props11.maxMenuHeight,\n menuIsOpen = _props11.menuIsOpen,\n menuPlacement = _props11.menuPlacement,\n menuPosition = _props11.menuPosition,\n menuPortalTarget = _props11.menuPortalTarget,\n menuShouldBlockScroll = _props11.menuShouldBlockScroll,\n menuShouldScrollIntoView = _props11.menuShouldScrollIntoView,\n noOptionsMessage = _props11.noOptionsMessage,\n onMenuScrollToTop = _props11.onMenuScrollToTop,\n onMenuScrollToBottom = _props11.onMenuScrollToBottom;\n\n\n if (!menuIsOpen) return null;\n\n // TODO: Internal Option Type here\n var render = function render(props) {\n // for performance, the menu options in state aren't changed when the\n // focused option changes so we calculate additional props based on that\n var isFocused = focusedOption === props.data;\n props.innerRef = isFocused ? _this5.getFocusedOptionRef : undefined;\n\n return _react2.default.createElement(\n Option,\n _extends({}, commonProps, props, { isFocused: isFocused }),\n _this5.formatOptionLabel(props.data, 'menu')\n );\n };\n\n var menuUI = void 0;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutProperties(item, ['type']);\n\n var headingId = item.key + '-heading';\n\n return _react2.default.createElement(\n Group,\n _extends({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }),\n item.options.map(function (option) {\n return render(option);\n })\n );\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({ inputValue: inputValue });\n if (message === null) return null;\n menuUI = _react2.default.createElement(\n LoadingMessage,\n commonProps,\n message\n );\n } else {\n var _message = noOptionsMessage({ inputValue: inputValue });\n if (_message === null) return null;\n menuUI = _react2.default.createElement(\n NoOptionsMessage,\n commonProps,\n _message\n );\n }\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n\n var menuElement = _react2.default.createElement(\n _Menu.MenuPlacer,\n _extends({}, commonProps, menuPlacementProps),\n function (_ref2) {\n var ref = _ref2.ref,\n _ref2$placerProps = _ref2.placerProps,\n placement = _ref2$placerProps.placement,\n maxHeight = _ref2$placerProps.maxHeight;\n return _react2.default.createElement(\n Menu,\n _extends({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }),\n _react2.default.createElement(\n _index.ScrollCaptor,\n {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n },\n _react2.default.createElement(\n _index.ScrollBlock,\n { emotion: _this5.emotion, isEnabled: menuShouldBlockScroll },\n _react2.default.createElement(\n MenuList,\n _extends({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }),\n menuUI\n )\n )\n )\n );\n }\n );\n\n // positioning behaviour is almost identical for portalled and fixed,\n // so we use the same component. the actual portalling logic is forked\n // within the component based on `menuPosition`\n return menuPortalTarget || menuPosition === 'fixed' ? _react2.default.createElement(\n MenuPortal,\n _extends({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }),\n menuElement\n ) : menuElement;\n }\n }, {\n key: 'renderFormField',\n value: function renderFormField() {\n var _this6 = this;\n\n var _props12 = this.props,\n delimiter = _props12.delimiter,\n isDisabled = _props12.isDisabled,\n isMulti = _props12.isMulti,\n name = _props12.name;\n var selectValue = this.state.selectValue;\n\n\n if (!name || isDisabled) return;\n\n if (isMulti) {\n if (delimiter) {\n var _value = selectValue.map(function (opt) {\n return _this6.getOptionValue(opt);\n }).join(delimiter);\n return _react2.default.createElement('input', { name: name, type: 'hidden', value: _value });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return _react2.default.createElement('input', {\n key: 'i-' + i,\n name: name,\n type: 'hidden',\n value: _this6.getOptionValue(opt)\n });\n }) : _react2.default.createElement('input', { name: name, type: 'hidden' });\n\n return _react2.default.createElement(\n 'div',\n null,\n input\n );\n }\n } else {\n var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n return _react2.default.createElement('input', { name: name, type: 'hidden', value: _value2 });\n }\n }\n }, {\n key: 'renderLiveRegion',\n value: function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return _react2.default.createElement(\n _index.A11yText,\n { emotion: this.emotion, 'aria-live': 'assertive' },\n _react2.default.createElement(\n 'p',\n { id: 'aria-selection-event' },\n '\\xA0',\n this.state.ariaLiveSelection\n ),\n _react2.default.createElement(\n 'p',\n { id: 'aria-context' },\n '\\xA0',\n this.constructAriaLiveMessage()\n )\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _components4 = this.components,\n Control = _components4.Control,\n IndicatorsContainer = _components4.IndicatorsContainer,\n SelectContainer = _components4.SelectContainer,\n ValueContainer = _components4.ValueContainer;\n var _props13 = this.props,\n className = _props13.className,\n id = _props13.id,\n isDisabled = _props13.isDisabled;\n var isFocused = this.state.isFocused;\n\n\n var commonProps = this.commonProps = this.getCommonProps();\n\n return _react2.default.createElement(\n SelectContainer,\n _extends({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }),\n this.renderLiveRegion(),\n _react2.default.createElement(\n Control,\n _extends({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }),\n _react2.default.createElement(\n ValueContainer,\n _extends({}, commonProps, { isDisabled: isDisabled }),\n this.renderPlaceholderOrValue(),\n this.renderInput()\n ),\n _react2.default.createElement(\n IndicatorsContainer,\n _extends({}, commonProps, { isDisabled: isDisabled }),\n this.renderClearIndicator(),\n this.renderLoadingIndicator(),\n this.renderIndicatorSeparator(),\n this.renderDropdownIndicator()\n )\n ),\n this.renderMenu(),\n this.renderFormField()\n );\n }\n }]);\n\n return Select;\n}(_react.Component);\n\nSelect.defaultProps = defaultProps;\n\nvar _initialiseProps = function _initialiseProps() {\n var _this7 = this;\n\n this.state = {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n isComposing: false,\n menuOptions: { render: [], focusable: [] },\n selectValue: []\n };\n this.blockOptionHover = false;\n this.clearFocusValueOnUpdate = false;\n this.hasGroups = false;\n this.initialTouchX = 0;\n this.initialTouchY = 0;\n this.instancePrefix = '';\n this.openAfterFocus = false;\n this.scrollToFocusedOptionOnUpdate = false;\n this.controlRef = null;\n\n this.getControlRef = function (ref) {\n _this7.controlRef = ref;\n };\n\n this.focusedOptionRef = null;\n\n this.getFocusedOptionRef = function (ref) {\n _this7.focusedOptionRef = ref;\n };\n\n this.menuListRef = null;\n\n this.getMenuListRef = function (ref) {\n _this7.menuListRef = ref;\n };\n\n this.inputRef = null;\n\n this.getInputRef = function (ref) {\n _this7.inputRef = ref;\n };\n\n this.cacheComponents = function (components) {\n _this7.components = (0, _index3.defaultComponents)({ components: components });\n };\n\n this.focus = this.focusInput;\n this.blur = this.blurInput;\n\n this.onChange = function (newValue, actionMeta) {\n var _props14 = _this7.props,\n onChange = _props14.onChange,\n name = _props14.name;\n\n onChange(newValue, _extends({}, actionMeta, { name: name }));\n };\n\n this.setValue = function (newValue) {\n var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'set-value';\n var option = arguments[2];\n var _props15 = _this7.props,\n closeMenuOnSelect = _props15.closeMenuOnSelect,\n isMulti = _props15.isMulti;\n\n _this7.onInputChange('', { action: 'set-value' });\n if (closeMenuOnSelect) {\n _this7.inputIsHiddenAfterUpdate = !isMulti;\n _this7.onMenuClose();\n }\n // when the select value should change, we should reset focusedValue\n _this7.clearFocusValueOnUpdate = true;\n _this7.onChange(newValue, { action: action, option: option });\n };\n\n this.selectOption = function (newValue) {\n var _props16 = _this7.props,\n blurInputOnSelect = _props16.blurInputOnSelect,\n isMulti = _props16.isMulti;\n\n\n if (isMulti) {\n var _selectValue3 = _this7.state.selectValue;\n\n if (_this7.isOptionSelected(newValue, _selectValue3)) {\n var candidate = _this7.getOptionValue(newValue);\n _this7.setValue(_selectValue3.filter(function (i) {\n return _this7.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n _this7.announceAriaLiveSelection({\n event: 'deselect-option',\n context: { value: _this7.getOptionLabel(newValue) }\n });\n } else {\n _this7.setValue([].concat(_toConsumableArray(_selectValue3), [newValue]), 'select-option', newValue);\n _this7.announceAriaLiveSelection({\n event: 'select-option',\n context: { value: _this7.getOptionLabel(newValue) }\n });\n }\n } else {\n _this7.setValue(newValue, 'select-option');\n _this7.announceAriaLiveSelection({\n event: 'select-option',\n context: { value: _this7.getOptionLabel(newValue) }\n });\n }\n\n if (blurInputOnSelect) {\n _this7.blurInput();\n }\n };\n\n this.removeValue = function (removedValue) {\n var selectValue = _this7.state.selectValue;\n\n var candidate = _this7.getOptionValue(removedValue);\n _this7.onChange(selectValue.filter(function (i) {\n return _this7.getOptionValue(i) !== candidate;\n }), {\n action: 'remove-value',\n removedValue: removedValue\n });\n _this7.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this7.getOptionLabel(removedValue) : undefined\n }\n });\n _this7.focusInput();\n };\n\n this.clearValue = function () {\n var isMulti = _this7.props.isMulti;\n\n _this7.onChange(isMulti ? [] : null, { action: 'clear' });\n };\n\n this.popValue = function () {\n var selectValue = _this7.state.selectValue;\n\n var lastSelectedValue = selectValue[selectValue.length - 1];\n _this7.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this7.getOptionLabel(lastSelectedValue) : undefined\n }\n });\n _this7.onChange(selectValue.slice(0, selectValue.length - 1), {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n };\n\n this.getOptionLabel = function (data) {\n return _this7.props.getOptionLabel(data);\n };\n\n this.getOptionValue = function (data) {\n return _this7.props.getOptionValue(data);\n };\n\n this.getStyles = function (key, props) {\n var base = _styles.defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this7.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n\n this.getElementId = function (element) {\n return _this7.instancePrefix + '-' + element;\n };\n\n this.getActiveDescendentId = function () {\n var menuIsOpen = _this7.props.menuIsOpen;\n var _state8 = _this7.state,\n menuOptions = _state8.menuOptions,\n focusedOption = _state8.focusedOption;\n\n\n if (!focusedOption || !menuIsOpen) return undefined;\n\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n\n return option && option.key;\n };\n\n this.announceAriaLiveSelection = function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this7.setState({\n ariaLiveSelection: (0, _index2.valueEventAriaMessage)(event, context)\n });\n };\n\n this.announceAriaLiveContext = function (_ref4) {\n var event = _ref4.event,\n context = _ref4.context;\n\n _this7.setState({\n ariaLiveContext: (0, _index2.instructionsAriaMessage)(event, _extends({}, context, {\n label: _this7.props['aria-label']\n }))\n });\n };\n\n this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n event.stopPropagation();\n event.preventDefault();\n _this7.focusInput();\n };\n\n this.onMenuMouseMove = function (event) {\n _this7.blockOptionHover = false;\n };\n\n this.onControlMouseDown = function (event) {\n var openMenuOnClick = _this7.props.openMenuOnClick;\n\n if (!_this7.state.isFocused) {\n if (openMenuOnClick) {\n _this7.openAfterFocus = true;\n }\n _this7.focusInput();\n } else if (!_this7.props.menuIsOpen) {\n _this7.openMenu('first');\n } else {\n // $FlowFixMe HTMLElement type does not have tagName property\n if (event.target.tagName !== 'INPUT') {\n _this7.onMenuClose();\n }\n }\n // $FlowFixMe HTMLElement type does not have tagName property\n if (event.target.tagName !== 'INPUT') {\n event.preventDefault();\n }\n };\n\n this.onDropdownIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n if (_this7.props.isDisabled) return;\n var _props17 = _this7.props,\n isMulti = _props17.isMulti,\n menuIsOpen = _props17.menuIsOpen;\n\n _this7.focusInput();\n if (menuIsOpen) {\n _this7.inputIsHiddenAfterUpdate = !isMulti;\n _this7.onMenuClose();\n } else {\n _this7.openMenu('first');\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n this.onClearIndicatorMouseDown = function (event) {\n // ignore mouse events that weren't triggered by the primary button\n if (event && event.type === 'mousedown' && event.button !== 0) {\n return;\n }\n _this7.clearValue();\n event.stopPropagation();\n _this7.openAfterFocus = false;\n setTimeout(function () {\n return _this7.focusInput();\n });\n };\n\n this.onScroll = function (event) {\n if (typeof _this7.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && (0, _utils.isDocumentElement)(event.target)) {\n _this7.props.onMenuClose();\n }\n } else if (typeof _this7.props.closeMenuOnScroll === 'function') {\n if (_this7.props.closeMenuOnScroll(event)) {\n _this7.props.onMenuClose();\n }\n }\n };\n\n this.onCompositionStart = function () {\n _this7.setState({\n isComposing: true\n });\n };\n\n this.onCompositionEnd = function () {\n _this7.setState({\n isComposing: false\n });\n };\n\n this.onTouchStart = function (_ref5) {\n var touches = _ref5.touches;\n\n var touch = touches.item(0);\n if (!touch) {\n return;\n }\n\n _this7.initialTouchX = touch.clientX;\n _this7.initialTouchY = touch.clientY;\n _this7.userIsDragging = false;\n };\n\n this.onTouchMove = function (_ref6) {\n var touches = _ref6.touches;\n\n var touch = touches.item(0);\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this7.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this7.initialTouchY);\n var moveThreshold = 5;\n\n _this7.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n\n this.onTouchEnd = function (event) {\n if (_this7.userIsDragging) return;\n\n // type cast the EventTarget\n var target = event.target;\n\n // close the menu if the user taps outside\n if (_this7.controlRef && !_this7.controlRef.contains(target) && _this7.menuListRef && !_this7.menuListRef.contains(target)) {\n _this7.blurInput();\n }\n\n // reset move vars\n _this7.initialTouchX = 0;\n _this7.initialTouchY = 0;\n };\n\n this.onControlTouchEnd = function (event) {\n if (_this7.userIsDragging) return;\n\n _this7.onControlMouseDown(event);\n };\n\n this.onClearIndicatorTouchEnd = function (event) {\n if (_this7.userIsDragging) return;\n\n _this7.onClearIndicatorMouseDown(event);\n };\n\n this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this7.userIsDragging) return;\n\n _this7.onDropdownIndicatorMouseDown(event);\n };\n\n this.handleInputChange = function (event) {\n var inputValue = event.currentTarget.value;\n _this7.inputIsHiddenAfterUpdate = false;\n _this7.onInputChange(inputValue, { action: 'input-change' });\n _this7.onMenuOpen();\n };\n\n this.onInputFocus = function (event) {\n var _props18 = _this7.props,\n isSearchable = _props18.isSearchable,\n isMulti = _props18.isMulti;\n\n if (_this7.props.onFocus) {\n _this7.props.onFocus(event);\n }\n _this7.inputIsHiddenAfterUpdate = false;\n _this7.announceAriaLiveContext({\n event: 'input',\n context: { isSearchable: isSearchable, isMulti: isMulti }\n });\n _this7.setState({\n isFocused: true\n });\n if (_this7.openAfterFocus || _this7.props.openMenuOnFocus) {\n _this7.openMenu('first');\n }\n _this7.openAfterFocus = false;\n };\n\n this.onInputBlur = function (event) {\n if (_this7.menuListRef && _this7.menuListRef.contains(document.activeElement)) {\n _this7.inputRef.focus();\n return;\n }\n if (_this7.props.onBlur) {\n _this7.props.onBlur(event);\n }\n _this7.onInputChange('', { action: 'input-blur' });\n _this7.onMenuClose();\n _this7.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n\n this.onOptionHover = function (focusedOption) {\n if (_this7.blockOptionHover || _this7.state.focusedOption === focusedOption) {\n return;\n }\n _this7.setState({ focusedOption: focusedOption });\n };\n\n this.shouldHideSelectedOptions = function () {\n var _props19 = _this7.props,\n hideSelectedOptions = _props19.hideSelectedOptions,\n isMulti = _props19.isMulti;\n\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n };\n\n this.onKeyDown = function (event) {\n var _props20 = _this7.props,\n isMulti = _props20.isMulti,\n backspaceRemovesValue = _props20.backspaceRemovesValue,\n escapeClearsValue = _props20.escapeClearsValue,\n inputValue = _props20.inputValue,\n isClearable = _props20.isClearable,\n isDisabled = _props20.isDisabled,\n menuIsOpen = _props20.menuIsOpen,\n onKeyDown = _props20.onKeyDown,\n tabSelectsValue = _props20.tabSelectsValue,\n openMenuOnFocus = _props20.openMenuOnFocus;\n var _state9 = _this7.state,\n isComposing = _state9.isComposing,\n focusedOption = _state9.focusedOption,\n focusedValue = _state9.focusedValue,\n selectValue = _state9.selectValue;\n\n\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n if (event.defaultPrevented) {\n return;\n }\n }\n\n // Block option hover events when the user has just pressed a key\n _this7.blockOptionHover = true;\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n _this7.focusValue('previous');\n break;\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n _this7.focusValue('next');\n break;\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n if (focusedValue) {\n _this7.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n if (isMulti) {\n _this7.popValue();\n } else if (isClearable) {\n _this7.clearValue();\n }\n }\n break;\n case 'Tab':\n if (isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption ||\n // don't capture the event if the menu opens on focus and the focused\n // option is already selected; it breaks the flow of navigation\n openMenuOnFocus && _this7.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n _this7.selectOption(focusedOption);\n break;\n case 'Enter':\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (isComposing) return;\n _this7.selectOption(focusedOption);\n } else {\n _this7.focusOption('first');\n }\n break;\n case 'Escape':\n if (menuIsOpen) {\n _this7.inputIsHiddenAfterUpdate = false;\n _this7.onInputChange('', { action: 'menu-close' });\n _this7.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this7.clearValue();\n }\n break;\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n if (!menuIsOpen) {\n _this7.openMenu('first');\n break;\n }\n if (!focusedOption) return;\n _this7.selectOption(focusedOption);\n break;\n case 'ArrowUp':\n if (menuIsOpen) {\n _this7.focusOption('up');\n } else {\n _this7.openMenu('last');\n }\n break;\n case 'ArrowDown':\n if (menuIsOpen) {\n _this7.focusOption('down');\n } else {\n _this7.openMenu('first');\n }\n break;\n case 'PageUp':\n if (!menuIsOpen) return;\n _this7.focusOption('pageup');\n break;\n case 'PageDown':\n if (!menuIsOpen) return;\n _this7.focusOption('pagedown');\n break;\n case 'Home':\n if (!menuIsOpen) return;\n _this7.focusOption('first');\n break;\n case 'End':\n if (!menuIsOpen) return;\n _this7.focusOption('last');\n break;\n default:\n return;\n }\n event.preventDefault();\n };\n};\n\nexports.default = Select;","var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index (resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index], index);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\nexport default index;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = exportedEqual;\nvar isArray = Array.isArray;\nvar keyList = Object.keys;\nvar hasProp = Object.prototype.hasOwnProperty;\n\nfunction equal(a, b) {\n // fast-deep-equal index.js 2.0.1\n if (a === b) return true;\n\n if (a && b && (typeof a === 'undefined' ? 'undefined' : _typeof(a)) == 'object' && (typeof b === 'undefined' ? 'undefined' : _typeof(b)) == 'object') {\n var arrA = isArray(a),\n arrB = isArray(b),\n i,\n length,\n key;\n\n if (arrA && arrB) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n }\n\n if (arrA != arrB) return false;\n\n var dateA = a instanceof Date,\n dateB = b instanceof Date;\n if (dateA != dateB) return false;\n if (dateA && dateB) return a.getTime() == b.getTime();\n\n var regexpA = a instanceof RegExp,\n regexpB = b instanceof RegExp;\n if (regexpA != regexpB) return false;\n if (regexpA && regexpB) return a.toString() == b.toString();\n\n var keys = keyList(a);\n length = keys.length;\n\n if (length !== keyList(b).length) {\n return false;\n }\n\n for (i = length; i-- !== 0;) {\n if (!hasProp.call(b, keys[i])) return false;\n }\n // end fast-deep-equal\n\n // Custom handling for React\n for (i = length; i-- !== 0;) {\n key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of a react element\n continue;\n } else {\n // all other properties should be traversed as usual\n if (!equal(a[key], b[key])) return false;\n }\n }\n\n // fast-deep-equal index.js 2.0.1\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nfunction exportedEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (error.message && error.message.match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('Warning: react-fast-compare does not handle circular references.', error.name, error.message);\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createFilter = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _diacritics = require('./diacritics');\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\nvar defaultStringify = function defaultStringify(option) {\n return option.label + ' ' + option.value;\n};\n\nvar createFilter = exports.createFilter = function createFilter(config) {\n return function (option, rawInput) {\n var _ignoreCase$ignoreAcc = _extends({\n ignoreCase: true,\n ignoreAccents: true,\n stringify: defaultStringify,\n trim: true,\n matchFrom: 'any'\n }, config),\n ignoreCase = _ignoreCase$ignoreAcc.ignoreCase,\n ignoreAccents = _ignoreCase$ignoreAcc.ignoreAccents,\n stringify = _ignoreCase$ignoreAcc.stringify,\n trim = _ignoreCase$ignoreAcc.trim,\n matchFrom = _ignoreCase$ignoreAcc.matchFrom;\n\n var input = trim ? trimString(rawInput) : rawInput;\n var candidate = trim ? trimString(stringify(option)) : stringify(option);\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n input = (0, _diacritics.stripDiacritics)(input);\n candidate = (0, _diacritics.stripDiacritics)(candidate);\n }\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar diacritics = [{ base: 'A', letters: /[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]/g }, { base: 'AA', letters: /[\\uA732]/g }, { base: 'AE', letters: /[\\u00C6\\u01FC\\u01E2]/g }, { base: 'AO', letters: /[\\uA734]/g }, { base: 'AU', letters: /[\\uA736]/g }, { base: 'AV', letters: /[\\uA738\\uA73A]/g }, { base: 'AY', letters: /[\\uA73C]/g }, { base: 'B', letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g }, { base: 'C', letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g }, { base: 'D', letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g }, { base: 'DZ', letters: /[\\u01F1\\u01C4]/g }, { base: 'Dz', letters: /[\\u01F2\\u01C5]/g }, { base: 'E', letters: /[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]/g }, { base: 'F', letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g }, { base: 'G', letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g }, { base: 'H', letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g }, { base: 'I', letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g }, { base: 'J', letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g }, { base: 'K', letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g }, { base: 'L', letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g }, { base: 'LJ', letters: /[\\u01C7]/g }, { base: 'Lj', letters: /[\\u01C8]/g }, { base: 'M', letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g }, { base: 'N', letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g }, { base: 'NJ', letters: /[\\u01CA]/g }, { base: 'Nj', letters: /[\\u01CB]/g }, { base: 'O', letters: /[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]/g }, { base: 'OI', letters: /[\\u01A2]/g }, { base: 'OO', letters: /[\\uA74E]/g }, { base: 'OU', letters: /[\\u0222]/g }, { base: 'P', letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g }, { base: 'Q', letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g }, { base: 'R', letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g }, { base: 'S', letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g }, { base: 'T', letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g }, { base: 'TZ', letters: /[\\uA728]/g }, { base: 'U', letters: /[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]/g }, { base: 'V', letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g }, { base: 'VY', letters: /[\\uA760]/g }, { base: 'W', letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g }, { base: 'X', letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g }, { base: 'Y', letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g }, { base: 'Z', letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g }, { base: 'a', letters: /[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]/g }, { base: 'aa', letters: /[\\uA733]/g }, { base: 'ae', letters: /[\\u00E6\\u01FD\\u01E3]/g }, { base: 'ao', letters: /[\\uA735]/g }, { base: 'au', letters: /[\\uA737]/g }, { base: 'av', letters: /[\\uA739\\uA73B]/g }, { base: 'ay', letters: /[\\uA73D]/g }, { base: 'b', letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g }, { base: 'c', letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g }, { base: 'd', letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g }, { base: 'dz', letters: /[\\u01F3\\u01C6]/g }, { base: 'e', letters: /[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]/g }, { base: 'f', letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g }, { base: 'g', letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g }, { base: 'h', letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g }, { base: 'hv', letters: /[\\u0195]/g }, { base: 'i', letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g }, { base: 'j', letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g }, { base: 'k', letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g }, { base: 'l', letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g }, { base: 'lj', letters: /[\\u01C9]/g }, { base: 'm', letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g }, { base: 'n', letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g }, { base: 'nj', letters: /[\\u01CC]/g }, { base: 'o', letters: /[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]/g }, { base: 'oi', letters: /[\\u01A3]/g }, { base: 'ou', letters: /[\\u0223]/g }, { base: 'oo', letters: /[\\uA74F]/g }, { base: 'p', letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g }, { base: 'q', letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g }, { base: 'r', letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g }, { base: 's', letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g }, { base: 't', letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g }, { base: 'tz', letters: /[\\uA729]/g }, { base: 'u', letters: /[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]/g }, { base: 'v', letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g }, { base: 'vy', letters: /[\\uA761]/g }, { base: 'w', letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g }, { base: 'x', letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g }, { base: 'y', letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g }, { base: 'z', letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g }];\n\nvar stripDiacritics = exports.stripDiacritics = function stripDiacritics(str) {\n\tfor (var i = 0; i < diacritics.length; i++) {\n\t\tstr = str.replace(diacritics[i].letters, diacritics[i].base);\n\t}\n\treturn str;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _A11yText = require('./A11yText');\n\nObject.defineProperty(exports, 'A11yText', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_A11yText).default;\n }\n});\n\nvar _DummyInput = require('./DummyInput');\n\nObject.defineProperty(exports, 'DummyInput', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DummyInput).default;\n }\n});\n\nvar _NodeResolver = require('./NodeResolver');\n\nObject.defineProperty(exports, 'NodeResolver', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_NodeResolver).default;\n }\n});\n\nvar _ScrollBlock = require('./ScrollBlock');\n\nObject.defineProperty(exports, 'ScrollBlock', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ScrollBlock).default;\n }\n});\n\nvar _ScrollCaptor = require('./ScrollCaptor');\n\nObject.defineProperty(exports, 'ScrollCaptor', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ScrollCaptor).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Assistive text to describe visual elements. Hidden for sighted users.\nvar A11yText = function A11yText(props) {\n return _react2.default.createElement('span', _extends({\n className: props.emotion.css({\n zIndex: 9999,\n border: 0,\n clip: 'rect(1px, 1px, 1px, 1px)',\n height: 1,\n width: 1,\n position: 'absolute',\n overflow: 'hidden',\n padding: 0,\n whiteSpace: 'nowrap',\n backgroundColor: 'red',\n color: 'blue'\n })\n }, props));\n};\n\nexports.default = A11yText;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DummyInput = function (_Component) {\n _inherits(DummyInput, _Component);\n\n function DummyInput() {\n _classCallCheck(this, DummyInput);\n\n return _possibleConstructorReturn(this, (DummyInput.__proto__ || Object.getPrototypeOf(DummyInput)).apply(this, arguments));\n }\n\n _createClass(DummyInput, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n inProp = _props.in,\n out = _props.out,\n onExited = _props.onExited,\n appear = _props.appear,\n enter = _props.enter,\n exit = _props.exit,\n innerRef = _props.innerRef,\n emotion = _props.emotion,\n props = _objectWithoutProperties(_props, ['in', 'out', 'onExited', 'appear', 'enter', 'exit', 'innerRef', 'emotion']);\n\n return _react2.default.createElement('input', _extends({\n ref: innerRef\n }, props, {\n className: emotion.css({\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n\n // important! without `width` browsers won't allow focus\n width: 1,\n\n // remove cursor on desktop\n color: 'transparent',\n\n // remove cursor on mobile whilst maintaining \"scroll into view\" behaviour\n left: -100,\n opacity: 0,\n position: 'relative',\n transform: 'scale(0)'\n })\n }));\n }\n }]);\n\n return DummyInput;\n}(_react.Component);\n\nexports.default = DummyInput;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _NodeResolver = require('./NodeResolver');\n\nvar _NodeResolver2 = _interopRequireDefault(_NodeResolver);\n\nvar _index = require('./ScrollLock/index');\n\nvar _index2 = _interopRequireDefault(_index);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// NOTE:\n// We shouldn't need this after updating to React v16.3.0, which introduces:\n// - createRef() https://reactjs.org/docs/react-api.html#reactcreateref\n// - forwardRef() https://reactjs.org/docs/react-api.html#reactforwardref\n\nvar ScrollBlock = function (_PureComponent) {\n _inherits(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ScrollBlock);\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 = _possibleConstructorReturn(this, (_ref = ScrollBlock.__proto__ || Object.getPrototypeOf(ScrollBlock)).call.apply(_ref, [this].concat(args))), _this), _this.state = { touchScrollTarget: null }, _this.getScrollTarget = function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n _this.setState({ touchScrollTarget: ref });\n }, _this.blurSelectInput = function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n // must be in state to trigger a re-render, only runs once per instance\n\n\n // this will close the menu when a user clicks outside\n\n\n _createClass(ScrollBlock, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n isEnabled = _props.isEnabled,\n emotion = _props.emotion;\n var touchScrollTarget = this.state.touchScrollTarget;\n\n // bail early if not enabled\n\n if (!isEnabled) return children;\n\n /*\n * Div\n * ------------------------------\n * blocks scrolling on non-body elements behind the menu\n * NodeResolver\n * ------------------------------\n * we need a reference to the scrollable element to \"unlock\" scroll on\n * mobile devices\n * ScrollLock\n * ------------------------------\n * actually does the scroll locking\n */\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement('div', {\n onClick: this.blurSelectInput,\n className: emotion.css({ position: 'fixed', left: 0, bottom: 0, right: 0, top: 0 })\n }),\n _react2.default.createElement(\n _NodeResolver2.default,\n { innerRef: this.getScrollTarget },\n children\n ),\n touchScrollTarget ? _react2.default.createElement(_index2.default, { touchScrollTarget: touchScrollTarget }) : null\n );\n }\n }]);\n\n return ScrollBlock;\n}(_react.PureComponent);\n\nexports.default = ScrollBlock;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _constants = require('./constants');\n\nvar _utils = require('./utils');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar activeScrollLocks = 0;\n\nvar ScrollLock = function (_Component) {\n _inherits(ScrollLock, _Component);\n\n function ScrollLock() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ScrollLock);\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 = _possibleConstructorReturn(this, (_ref = ScrollLock.__proto__ || Object.getPrototypeOf(ScrollLock)).call.apply(_ref, [this].concat(args))), _this), _this.originalStyles = {}, _this.listenerOptions = {\n capture: false,\n passive: false\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ScrollLock, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n\n var _props = this.props,\n accountForScrollbars = _props.accountForScrollbars,\n touchScrollTarget = _props.touchScrollTarget;\n\n var target = document.body;\n var targetStyle = target && target.style;\n\n if (accountForScrollbars) {\n // store any styles already applied to the body\n _constants.STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n }\n\n // apply the lock styles and padding if this is the first scroll lock\n if (accountForScrollbars && activeScrollLocks < 1) {\n var currentPadding = parseInt(this.originalStyles.paddingRight, 10) || 0;\n var clientWidth = document.body ? document.body.clientWidth : 0;\n var adjustedPadding = window.innerWidth - clientWidth + currentPadding || 0;\n\n Object.keys(_constants.LOCK_STYLES).forEach(function (key) {\n var val = _constants.LOCK_STYLES[key];\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = adjustedPadding + 'px';\n }\n }\n\n // account for touch devices\n if (target && (0, _utils.isTouchDevice)()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', _utils.preventTouchMove, this.listenerOptions);\n\n // Allow scroll on provided target\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', _utils.preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', _utils.allowTouchMove, this.listenerOptions);\n }\n }\n\n // increment active scroll locks\n activeScrollLocks += 1;\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n\n var _props2 = this.props,\n accountForScrollbars = _props2.accountForScrollbars,\n touchScrollTarget = _props2.touchScrollTarget;\n\n var target = document.body;\n var targetStyle = target && target.style;\n\n // safely decrement active scroll locks\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0);\n\n // reapply original body styles, if any\n if (accountForScrollbars && activeScrollLocks < 1) {\n _constants.STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n }\n\n // remove touch listeners\n if (target && (0, _utils.isTouchDevice)()) {\n target.removeEventListener('touchmove', _utils.preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', _utils.preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', _utils.allowTouchMove, this.listenerOptions);\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return null;\n }\n }]);\n\n return ScrollLock;\n}(_react.Component);\n\nScrollLock.defaultProps = {\n accountForScrollbars: true\n};\nexports.default = ScrollLock;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar STYLE_KEYS = exports.STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\n\nvar LOCK_STYLES = exports.LOCK_STYLES = {\n boxSizing: 'border-box', // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.preventTouchMove = preventTouchMove;\nexports.allowTouchMove = allowTouchMove;\nexports.preventInertiaScroll = preventInertiaScroll;\nexports.isTouchDevice = isTouchDevice;\nfunction preventTouchMove(e) {\n e.preventDefault();\n}\n\nfunction allowTouchMove(e) {\n e.stopPropagation();\n}\n\nfunction preventInertiaScroll() {\n var top = this.scrollTop;\n var totalScroll = this.scrollHeight;\n var currentScroll = top + this.offsetHeight;\n\n if (top === 0) {\n this.scrollTop = 1;\n } else if (currentScroll === totalScroll) {\n this.scrollTop = top - 1;\n }\n}\n\n// `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _NodeResolver = require('./NodeResolver');\n\nvar _NodeResolver2 = _interopRequireDefault(_NodeResolver);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ScrollCaptor = function (_Component) {\n _inherits(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ScrollCaptor);\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 = _possibleConstructorReturn(this, (_ref = ScrollCaptor.__proto__ || Object.getPrototypeOf(ScrollCaptor)).call.apply(_ref, [this].concat(args))), _this), _this.isBottom = false, _this.isTop = false, _this.cancelScroll = function (event) {\n event.preventDefault();\n event.stopPropagation();\n }, _this.handleEventDelta = function (event, delta) {\n var _this$props = _this.props,\n onBottomArrive = _this$props.onBottomArrive,\n onBottomLeave = _this$props.onBottomLeave,\n onTopArrive = _this$props.onTopArrive,\n onTopLeave = _this$props.onTopLeave;\n var _this$scrollTarget = _this.scrollTarget,\n scrollTop = _this$scrollTarget.scrollTop,\n scrollHeight = _this$scrollTarget.scrollHeight,\n clientHeight = _this$scrollTarget.clientHeight;\n\n var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false;\n\n // reset bottom/top flags\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n }\n\n // bottom limit\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true;\n\n // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n }\n\n // cancel scroll\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n }, _this.onWheel = function (event) {\n _this.handleEventDelta(event, event.deltaY);\n }, _this.onTouchStart = function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n }, _this.onTouchMove = function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n _this.handleEventDelta(event, deltaY);\n }, _this.getScrollTarget = function (ref) {\n _this.scrollTarget = ref;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ScrollCaptor, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.startListening(this.scrollTarget);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n }\n }, {\n key: 'startListening',\n value: function startListening(el) {\n // bail early if no scroll available\n if (el.scrollHeight <= el.clientHeight) return;\n\n // all the if statements are to appease Flow 😢\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: 'stopListening',\n value: function stopListening(el) {\n // bail early if no scroll available\n if (el.scrollHeight <= el.clientHeight) return;\n\n // all the if statements are to appease Flow 😢\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n _NodeResolver2.default,\n { innerRef: this.getScrollTarget },\n this.props.children\n );\n }\n }]);\n\n return ScrollCaptor;\n}(_react.Component);\n\nvar ScrollCaptorSwitch = function (_Component2) {\n _inherits(ScrollCaptorSwitch, _Component2);\n\n function ScrollCaptorSwitch() {\n _classCallCheck(this, ScrollCaptorSwitch);\n\n return _possibleConstructorReturn(this, (ScrollCaptorSwitch.__proto__ || Object.getPrototypeOf(ScrollCaptorSwitch)).apply(this, arguments));\n }\n\n _createClass(ScrollCaptorSwitch, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n isEnabled = _props.isEnabled,\n props = _objectWithoutProperties(_props, ['isEnabled']);\n\n return isEnabled ? _react2.default.createElement(ScrollCaptor, props) : this.props.children;\n }\n }]);\n\n return ScrollCaptorSwitch;\n}(_react.Component);\n\nScrollCaptorSwitch.defaultProps = { isEnabled: true };\nexports.default = ScrollCaptorSwitch;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar instructionsAriaMessage = exports.instructionsAriaMessage = function instructionsAriaMessage(event) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var isSearchable = context.isSearchable,\n isMulti = context.isMulti,\n label = context.label;\n\n switch (event) {\n case 'menu':\n return 'Use Up and Down to choose options, press Enter to select the currently focused option, press Escape to exit the menu, press Tab to select the option and exit the menu.';\n case 'input':\n return (label ? label : 'Select') + ' is focused ' + (isSearchable ? ',type to refine list' : '') + ', press Down to open the menu, ' + (isMulti ? ' press left to focus selected values' : '');\n case 'value':\n return 'Use left and right to toggle between focused values, press Enter to remove the currently focused value';\n }\n};\n\nvar valueEventAriaMessage = exports.valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value;\n\n if (!value) return;\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return 'option ' + value + ', deselected.';\n case 'select-option':\n return 'option ' + value + ', selected.';\n }\n};\n\nvar valueFocusAriaMessage = exports.valueFocusAriaMessage = function valueFocusAriaMessage(_ref) {\n var focusedValue = _ref.focusedValue,\n getOptionLabel = _ref.getOptionLabel,\n selectValue = _ref.selectValue;\n return 'value ' + getOptionLabel(focusedValue) + ' focused, ' + (selectValue.indexOf(focusedValue) + 1) + ' of ' + selectValue.length + '.';\n};\nvar optionFocusAriaMessage = exports.optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return 'option ' + getOptionLabel(focusedOption) + ' focused, ' + (options.indexOf(focusedOption) + 1) + ' of ' + options.length + '.';\n};\nvar resultsAriaMessage = exports.resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return '' + screenReaderMessage + (inputValue ? ' for search term ' + inputValue : '') + '.';\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar formatGroupLabel = exports.formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\n\nvar getOptionLabel = exports.getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\n\nvar getOptionValue = exports.getOptionValue = function getOptionValue(option) {\n return option.value;\n};\n\nvar isOptionDisabled = exports.isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultComponents = exports.components = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nrequire('react');\n\nvar _containers = require('./containers');\n\nvar _indicators = require('./indicators');\n\nvar _Control = require('./Control');\n\nvar _Control2 = _interopRequireDefault(_Control);\n\nvar _Group = require('./Group');\n\nvar _Group2 = _interopRequireDefault(_Group);\n\nvar _Input = require('./Input');\n\nvar _Input2 = _interopRequireDefault(_Input);\n\nvar _Menu = require('./Menu');\n\nvar _Menu2 = _interopRequireDefault(_Menu);\n\nvar _MultiValue = require('./MultiValue');\n\nvar _MultiValue2 = _interopRequireDefault(_MultiValue);\n\nvar _Option = require('./Option');\n\nvar _Option2 = _interopRequireDefault(_Option);\n\nvar _Placeholder = require('./Placeholder');\n\nvar _Placeholder2 = _interopRequireDefault(_Placeholder);\n\nvar _SingleValue = require('./SingleValue');\n\nvar _SingleValue2 = _interopRequireDefault(_SingleValue);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar components = exports.components = {\n ClearIndicator: _indicators.ClearIndicator,\n Control: _Control2.default,\n DropdownIndicator: _indicators.DropdownIndicator,\n DownChevron: _indicators.DownChevron,\n CrossIcon: _indicators.CrossIcon,\n Group: _Group2.default,\n GroupHeading: _Group.GroupHeading,\n IndicatorsContainer: _containers.IndicatorsContainer,\n IndicatorSeparator: _indicators.IndicatorSeparator,\n Input: _Input2.default,\n LoadingIndicator: _indicators.LoadingIndicator,\n Menu: _Menu2.default,\n MenuList: _Menu.MenuList,\n MenuPortal: _Menu.MenuPortal,\n LoadingMessage: _Menu.LoadingMessage,\n NoOptionsMessage: _Menu.NoOptionsMessage,\n MultiValue: _MultiValue2.default,\n MultiValueContainer: _MultiValue.MultiValueContainer,\n MultiValueLabel: _MultiValue.MultiValueLabel,\n MultiValueRemove: _MultiValue.MultiValueRemove,\n Option: _Option2.default,\n Placeholder: _Placeholder2.default,\n SelectContainer: _containers.SelectContainer,\n SingleValue: _SingleValue2.default,\n ValueContainer: _containers.ValueContainer\n};\n\nvar defaultComponents = exports.defaultComponents = function defaultComponents(props) {\n return _extends({}, components, props.components);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar sizerStyle = {\n\tposition: 'absolute',\n\ttop: 0,\n\tleft: 0,\n\tvisibility: 'hidden',\n\theight: 0,\n\toverflow: 'scroll',\n\twhiteSpace: 'pre'\n};\n\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n\tINPUT_PROPS_BLACKLIST.forEach(function (field) {\n\t\treturn delete inputProps[field];\n\t});\n\treturn inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n\tnode.style.fontSize = styles.fontSize;\n\tnode.style.fontFamily = styles.fontFamily;\n\tnode.style.fontWeight = styles.fontWeight;\n\tnode.style.fontStyle = styles.fontStyle;\n\tnode.style.letterSpacing = styles.letterSpacing;\n\tnode.style.textTransform = styles.textTransform;\n};\n\nvar isIE = typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false;\n\nvar generateId = function generateId() {\n\t// we only need an auto-generated ID for stylesheet injection, which is only\n\t// used for IE. so if the browser is not IE, this should return undefined.\n\treturn isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n\t_inherits(AutosizeInput, _Component);\n\n\tfunction AutosizeInput(props) {\n\t\t_classCallCheck(this, AutosizeInput);\n\n\t\tvar _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n\t\t_this.inputRef = function (el) {\n\t\t\t_this.input = el;\n\t\t\tif (typeof _this.props.inputRef === 'function') {\n\t\t\t\t_this.props.inputRef(el);\n\t\t\t}\n\t\t};\n\n\t\t_this.placeHolderSizerRef = function (el) {\n\t\t\t_this.placeHolderSizer = el;\n\t\t};\n\n\t\t_this.sizerRef = function (el) {\n\t\t\t_this.sizer = el;\n\t\t};\n\n\t\t_this.state = {\n\t\t\tinputWidth: props.minWidth,\n\t\t\tinputId: props.id || generateId()\n\t\t};\n\t\treturn _this;\n\t}\n\n\t_createClass(AutosizeInput, [{\n\t\tkey: 'componentDidMount',\n\t\tvalue: function componentDidMount() {\n\t\t\tthis.mounted = true;\n\t\t\tthis.copyInputStyles();\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillReceiveProps',\n\t\tvalue: function componentWillReceiveProps(nextProps) {\n\t\t\tvar id = nextProps.id;\n\n\t\t\tif (id !== this.props.id) {\n\t\t\t\tthis.setState({ inputId: id || generateId() });\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'componentDidUpdate',\n\t\tvalue: function componentDidUpdate(prevProps, prevState) {\n\t\t\tif (prevState.inputWidth !== this.state.inputWidth) {\n\t\t\t\tif (typeof this.props.onAutosize === 'function') {\n\t\t\t\t\tthis.props.onAutosize(this.state.inputWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.updateInputWidth();\n\t\t}\n\t}, {\n\t\tkey: 'componentWillUnmount',\n\t\tvalue: function componentWillUnmount() {\n\t\t\tthis.mounted = false;\n\t\t}\n\t}, {\n\t\tkey: 'copyInputStyles',\n\t\tvalue: function copyInputStyles() {\n\t\t\tif (!this.mounted || !window.getComputedStyle) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar inputStyles = this.input && window.getComputedStyle(this.input);\n\t\t\tif (!inputStyles) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcopyStyles(inputStyles, this.sizer);\n\t\t\tif (this.placeHolderSizer) {\n\t\t\t\tcopyStyles(inputStyles, this.placeHolderSizer);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'updateInputWidth',\n\t\tvalue: function updateInputWidth() {\n\t\t\tif (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar newInputWidth = void 0;\n\t\t\tif (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n\t\t\t\tnewInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n\t\t\t} else {\n\t\t\t\tnewInputWidth = this.sizer.scrollWidth + 2;\n\t\t\t}\n\t\t\t// add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\t\t\tvar extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n\t\t\tnewInputWidth += extraWidth;\n\t\t\tif (newInputWidth < this.props.minWidth) {\n\t\t\t\tnewInputWidth = this.props.minWidth;\n\t\t\t}\n\t\t\tif (newInputWidth !== this.state.inputWidth) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tinputWidth: newInputWidth\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'getInput',\n\t\tvalue: function getInput() {\n\t\t\treturn this.input;\n\t\t}\n\t}, {\n\t\tkey: 'focus',\n\t\tvalue: function focus() {\n\t\t\tthis.input.focus();\n\t\t}\n\t}, {\n\t\tkey: 'blur',\n\t\tvalue: function blur() {\n\t\t\tthis.input.blur();\n\t\t}\n\t}, {\n\t\tkey: 'select',\n\t\tvalue: function select() {\n\t\t\tthis.input.select();\n\t\t}\n\t}, {\n\t\tkey: 'renderStyles',\n\t\tvalue: function renderStyles() {\n\t\t\t// this method injects styles to hide IE's clear indicator, which messes\n\t\t\t// with input size detection. the stylesheet is only injected when the\n\t\t\t// browser is IE, and can also be disabled by the `injectStyles` prop.\n\t\t\tvar injectStyles = this.props.injectStyles;\n\n\t\t\treturn isIE && injectStyles ? _react2.default.createElement('style', { dangerouslySetInnerHTML: {\n\t\t\t\t\t__html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n\t\t\t\t} }) : null;\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render() {\n\t\t\tvar sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n\t\t\t\tif (previousValue !== null && previousValue !== undefined) {\n\t\t\t\t\treturn previousValue;\n\t\t\t\t}\n\t\t\t\treturn currentValue;\n\t\t\t});\n\n\t\t\tvar wrapperStyle = _extends({}, this.props.style);\n\t\t\tif (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n\t\t\tvar inputStyle = _extends({\n\t\t\t\tboxSizing: 'content-box',\n\t\t\t\twidth: this.state.inputWidth + 'px'\n\t\t\t}, this.props.inputStyle);\n\n\t\t\tvar inputProps = _objectWithoutProperties(this.props, []);\n\n\t\t\tcleanInputProps(inputProps);\n\t\t\tinputProps.className = this.props.inputClassName;\n\t\t\tinputProps.id = this.state.inputId;\n\t\t\tinputProps.style = inputStyle;\n\n\t\t\treturn _react2.default.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: this.props.className, style: wrapperStyle },\n\t\t\t\tthis.renderStyles(),\n\t\t\t\t_react2.default.createElement('input', _extends({}, inputProps, { ref: this.inputRef })),\n\t\t\t\t_react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.sizerRef, style: sizerStyle },\n\t\t\t\t\tsizerValue\n\t\t\t\t),\n\t\t\t\tthis.props.placeholder ? _react2.default.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ ref: this.placeHolderSizerRef, style: sizerStyle },\n\t\t\t\t\tthis.props.placeholder\n\t\t\t\t) : null\n\t\t\t);\n\t\t}\n\t}]);\n\n\treturn AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n\tclassName: _propTypes2.default.string, // className for the outer element\n\tdefaultValue: _propTypes2.default.any, // default field value\n\textraWidth: _propTypes2.default.oneOfType([// additional width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tid: _propTypes2.default.string, // id to use for the input, can be set for consistent snapshots\n\tinjectStyles: _propTypes2.default.bool, // inject the custom stylesheet to hide clear UI, defaults to true\n\tinputClassName: _propTypes2.default.string, // className for the input element\n\tinputRef: _propTypes2.default.func, // ref callback for the input element\n\tinputStyle: _propTypes2.default.object, // css styles for the input element\n\tminWidth: _propTypes2.default.oneOfType([// minimum width for input element\n\t_propTypes2.default.number, _propTypes2.default.string]),\n\tonAutosize: _propTypes2.default.func, // onAutosize handler: function(newWidth) {}\n\tonChange: _propTypes2.default.func, // onChange handler: function(event) {}\n\tplaceholder: _propTypes2.default.string, // placeholder text\n\tplaceholderIsMinWidth: _propTypes2.default.bool, // don't collapse size to less than the placeholder\n\tstyle: _propTypes2.default.object, // css styles for the outer element\n\tvalue: _propTypes2.default.any // field value\n};\nAutosizeInput.defaultProps = {\n\tminWidth: 1,\n\tinjectStyles: true\n};\n\nexports.default = AutosizeInput;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.defaultStyles = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.mergeStyles = mergeStyles;\n\nvar _containers = require('./components/containers');\n\nvar _Control = require('./components/Control');\n\nvar _Group = require('./components/Group');\n\nvar _indicators = require('./components/indicators');\n\nvar _Input = require('./components/Input');\n\nvar _Placeholder = require('./components/Placeholder');\n\nvar _Option = require('./components/Option');\n\nvar _Menu = require('./components/Menu');\n\nvar _SingleValue = require('./components/SingleValue');\n\nvar _MultiValue = require('./components/MultiValue');\n\nvar defaultStyles = exports.defaultStyles = {\n clearIndicator: _indicators.clearIndicatorCSS,\n container: _containers.containerCSS,\n control: _Control.css,\n dropdownIndicator: _indicators.dropdownIndicatorCSS,\n group: _Group.groupCSS,\n groupHeading: _Group.groupHeadingCSS,\n indicatorsContainer: _containers.indicatorsContainerCSS,\n indicatorSeparator: _indicators.indicatorSeparatorCSS,\n input: _Input.inputCSS,\n loadingIndicator: _indicators.loadingIndicatorCSS,\n loadingMessage: _Menu.loadingMessageCSS,\n menu: _Menu.menuCSS,\n menuList: _Menu.menuListCSS,\n menuPortal: _Menu.menuPortalCSS,\n multiValue: _MultiValue.multiValueCSS,\n multiValueLabel: _MultiValue.multiValueLabelCSS,\n multiValueRemove: _MultiValue.multiValueRemoveCSS,\n noOptionsMessage: _Menu.noOptionsMessageCSS,\n option: _Option.optionCSS,\n placeholder: _Placeholder.placeholderCSS,\n singleValue: _SingleValue.css,\n valueContainer: _containers.valueContainerCSS\n};\n\n// Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source) {\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // initialize with source styles\n var styles = _extends({}, source);\n\n // massage in target styles\n Object.keys(target).forEach(function (key) {\n if (source[key]) {\n styles[key] = function (rsCss, props) {\n return target[key](source[key](rsCss, props), props);\n };\n } else {\n styles[key] = target[key];\n }\n });\n\n return styles;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar colors = exports.colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\n\n neutral0: 'hsl(0, 0%, 100%)',\n neutral5: 'hsl(0, 0%, 95%)',\n neutral10: 'hsl(0, 0%, 90%)',\n neutral20: 'hsl(0, 0%, 80%)',\n neutral30: 'hsl(0, 0%, 70%)',\n neutral40: 'hsl(0, 0%, 60%)',\n neutral50: 'hsl(0, 0%, 50%)',\n neutral60: 'hsl(0, 0%, 40%)',\n neutral70: 'hsl(0, 0%, 30%)',\n neutral80: 'hsl(0, 0%, 20%)',\n neutral90: 'hsl(0, 0%, 10%)'\n};\n\nvar borderRadius = 4;\nvar baseUnit = 4; /* Used to calculate consistent margin/padding on elements */\nvar controlHeight = 38; /* The minimum height of the control */\nvar menuGutter = baseUnit * 2; /* The amount of space between the control and menu */\n\nvar spacing = exports.spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\n\nvar defaultTheme = exports.defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp2;\n\n return _temp2 = _class = function (_Component) {\n _inherits(StateManager, _Component);\n\n function StateManager() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, StateManager);\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 = _possibleConstructorReturn(this, (_ref = StateManager.__proto__ || Object.getPrototypeOf(StateManager)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n inputValue: _this.props.inputValue !== undefined ? _this.props.inputValue : _this.props.defaultInputValue,\n menuIsOpen: _this.props.menuIsOpen !== undefined ? _this.props.menuIsOpen : _this.props.defaultMenuIsOpen,\n value: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue\n }, _this.onChange = function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n _this.setState({ value: value });\n }, _this.onInputChange = function (value, actionMeta) {\n // TODO: for backwards compatibility, we allow the prop to return a new\n // value, but now inputValue is a controllable prop we probably shouldn't\n var newValue = _this.callProp('onInputChange', value, actionMeta);\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n }, _this.onMenuOpen = function () {\n _this.callProp('onMenuOpen');\n _this.setState({ menuIsOpen: true });\n }, _this.onMenuClose = function () {\n _this.callProp('onMenuClose');\n _this.setState({ menuIsOpen: false });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(StateManager, [{\n key: 'focus',\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: 'getProp',\n value: function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n }\n }, {\n key: 'callProp',\n value: function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _props;\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_props = this.props)[name].apply(_props, _toConsumableArray(args));\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return _react2.default.createElement(SelectComponent, _extends({}, this.props, {\n ref: function ref(_ref2) {\n _this2.select = _ref2;\n },\n inputValue: this.getProp('inputValue'),\n menuIsOpen: this.getProp('menuIsOpen'),\n onChange: this.onChange,\n onInputChange: this.onInputChange,\n onMenuClose: this.onMenuClose,\n onMenuOpen: this.onMenuOpen,\n value: this.getProp('value')\n }));\n }\n }]);\n\n return StateManager;\n }(_react.Component), _class.defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n }, _temp2;\n};\n\nexports.default = manageState;","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nexport var getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\n\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nexport var locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./es/react-hotkeys.production.min.js');\n} else {\n module.exports = require('./es/index.js');\n}\n","/**\n * Lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors <https://js.foundation/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nmodule.exports = require('./lib/checks');","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport warning from \"warning\";\nimport invariant from \"invariant\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport matchPath from \"./matchPath\";\n\nvar isEmptyChildren = function isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n};\n\n/**\n * The public API for matching a single path and rendering.\n */\n\nvar Route = function (_React$Component) {\n _inherits(Route, _React$Component);\n\n function Route() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Route);\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 = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n match: _this.computeMatch(_this.props, _this.context.router)\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Route.prototype.getChildContext = function getChildContext() {\n return {\n router: _extends({}, this.context.router, {\n route: {\n location: this.props.location || this.context.router.route.location,\n match: this.state.match\n }\n })\n };\n };\n\n Route.prototype.computeMatch = function computeMatch(_ref, router) {\n var computedMatch = _ref.computedMatch,\n location = _ref.location,\n path = _ref.path,\n strict = _ref.strict,\n exact = _ref.exact,\n sensitive = _ref.sensitive;\n\n if (computedMatch) return computedMatch; // <Switch> already computed the match for us\n\n invariant(router, \"You should not use <Route> or withRouter() outside a <Router>\");\n\n var route = router.route;\n\n var pathname = (location || route.location).pathname;\n\n return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);\n };\n\n Route.prototype.componentWillMount = function componentWillMount() {\n warning(!(this.props.component && this.props.render), \"You should not use <Route component> and <Route render> in the same route; <Route render> will be ignored\");\n\n warning(!(this.props.component && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored\");\n\n warning(!(this.props.render && this.props.children && !isEmptyChildren(this.props.children)), \"You should not use <Route render> and <Route children> in the same route; <Route children> will be ignored\");\n };\n\n Route.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps, nextContext) {\n warning(!(nextProps.location && !this.props.location), '<Route> elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.');\n\n warning(!(!nextProps.location && this.props.location), '<Route> elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.');\n\n this.setState({\n match: this.computeMatch(nextProps, nextContext.router)\n });\n };\n\n Route.prototype.render = function render() {\n var match = this.state.match;\n var _props = this.props,\n children = _props.children,\n component = _props.component,\n render = _props.render;\n var _context$router = this.context.router,\n history = _context$router.history,\n route = _context$router.route,\n staticContext = _context$router.staticContext;\n\n var location = this.props.location || route.location;\n var props = { match: match, location: location, history: history, staticContext: staticContext };\n\n if (component) return match ? React.createElement(component, props) : null;\n\n if (render) return match ? render(props) : null;\n\n if (typeof children === \"function\") return children(props);\n\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n\n return null;\n };\n\n return Route;\n}(React.Component);\n\nRoute.propTypes = {\n computedMatch: PropTypes.object, // private, from <Switch>\n path: PropTypes.string,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n sensitive: PropTypes.bool,\n component: PropTypes.func,\n render: PropTypes.func,\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n location: PropTypes.object\n};\nRoute.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.object.isRequired,\n route: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n })\n};\nRoute.childContextTypes = {\n router: PropTypes.object.isRequired\n};\n\n\nexport default Route;","import pathToRegexp from \"path-to-regexp\";\n\nvar patternCache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nvar compilePath = function compilePath(pattern, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});\n\n if (cache[pattern]) return cache[pattern];\n\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = { re: re, keys: keys };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n\n if (typeof options === \"string\") options = { path: options };\n\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === undefined ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === undefined ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === undefined ? false : _options$sensitive;\n\n\n if (path == null) return parent;\n\n var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n\n if (!match) return null;\n\n var url = match[0],\n values = match.slice(1);\n\n var isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path: path, // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact: isExact, // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n};\n\nexport default matchPath;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = toArray;\nexports.length = length;\nexports.substring = substring;\nexports.substr = substr;\nexports.limit = limit;\nexports.indexOf = indexOf;\n\nvar _unicodeAstralRegex = require('unicode-astral-regex');\n\nvar _unicodeAstralRegex2 = _interopRequireDefault(_unicodeAstralRegex);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Converts a string to an array of string chars\n * @param {string} str The string to turn into array\n * @returns {string[]}\n */\nfunction toArray(str) {\n if (typeof str !== 'string') {\n throw new Error('A string is expected as input');\n }\n return str.match(_unicodeAstralRegex2.default) || [];\n}\n\n/**\n * Returns the length of a string\n *\n * @export\n * @param {string} str\n * @returns {number}\n */\nfunction length(str) {\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n\n var match = str.match(_unicodeAstralRegex2.default);\n return match === null ? 0 : match.length;\n}\n\n/**\n * Returns a substring by providing start and end position\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} end End position\n * @returns {string}\n */\nfunction substring(str) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var end = arguments[2];\n\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n\n // Even though negative numbers work here, theyre not in the spec\n if (typeof begin !== 'number' || begin < 0) {\n begin = 0;\n }\n\n if (typeof end === 'number' && end < 0) {\n end = 0;\n }\n\n var match = str.match(_unicodeAstralRegex2.default);\n if (!match) return '';\n\n return match.slice(begin, end).join('');\n}\n\n/**\n * Returns a substring by providing start position and length\n *\n * @export\n * @param {string} str\n * @param {number} [begin=0] Starting position\n * @param {number} len Desired length\n * @returns {string}\n */\nfunction substr(str) {\n var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var len = arguments[2];\n\n // Check for input\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n\n var strLength = length(str);\n\n // Fix type\n if (typeof begin !== 'number') {\n begin = parseInt(begin, 10);\n }\n\n // Return zero-length string if got oversize number.\n if (begin >= strLength) {\n return '';\n }\n\n // Calculating postive version of negative value.\n if (begin < 0) {\n begin += strLength;\n }\n\n var end = void 0;\n\n if (typeof len === 'undefined') {\n end = strLength;\n } else {\n // Fix type\n if (typeof len !== 'number') {\n len = parseInt(len, 10);\n }\n\n end = len >= 0 ? len + begin : begin;\n }\n\n var match = str.match(_unicodeAstralRegex2.default);\n if (!match) return '';\n\n return match.slice(begin, end).join('');\n}\n\n/**\n * Enforces a string to be a certain length by\n * adding or removing characters\n *\n * @export\n * @param {string} str\n * @param {number} [limit=16] Limit\n * @param {string} [padString='#'] The Pad String\n * @param {string} [padPosition='right'] The Pad Position\n * @returns {string}\n */\nfunction limit(str) {\n var limit = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n var padString = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '#';\n var padPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'right';\n\n // Input should be a string, limit should be a number\n if (typeof str !== 'string' || typeof limit !== 'number') {\n throw new Error('Invalid arguments specified');\n }\n\n // Pad position should be either left or right\n if (['left', 'right'].indexOf(padPosition) === -1) {\n throw new Error('Pad position should be either left or right');\n }\n\n // Pad string can be anything, we convert it to string\n if (typeof padString !== 'string') {\n padString = String(padString);\n }\n\n // Calculate string length considering astral code points\n var strLength = length(str);\n\n if (strLength > limit) {\n return substring(str, 0, limit);\n } else if (strLength < limit) {\n var padRepeats = padString.repeat(limit - strLength);\n return padPosition === 'left' ? padRepeats + str : str + padRepeats;\n }\n\n return str;\n}\n\n/**\n * Returns the index of the first occurrence of a given string\n *\n * @export\n * @param {string} str\n * @param {string} [searchStr] the string to search\n * @param {number} [pos] starting position\n * @returns {number}\n */\nfunction indexOf(str, searchStr, pos) {\n if (typeof str !== 'string') {\n throw new Error('Input must be a string');\n }\n\n if (str === '') {\n if (searchStr === '') {\n return 0;\n }\n return -1;\n }\n\n // fix type\n pos = parseInt(pos, 10);\n pos = isNaN(pos) ? 0 : pos;\n searchStr = String(searchStr);\n\n var strArr = str.match(_unicodeAstralRegex2.default);\n if (pos >= strArr.length) {\n if (searchStr === '') {\n return strArr.length;\n }\n return -1;\n }\n if (searchStr === '') {\n return pos;\n }\n\n var searchArr = searchStr.match(_unicodeAstralRegex2.default);\n var finded = false;\n var index = void 0;\n for (index = pos; index < strArr.length; index += 1) {\n var searchIndex = 0;\n while (searchIndex < searchArr.length && searchArr[searchIndex] === strArr[index + searchIndex]) {\n searchIndex += 1;\n }\n if (searchIndex === searchArr.length && searchArr[searchIndex - 1] === strArr[index + searchIndex - 1]) {\n finded = true;\n break;\n }\n }\n return finded ? index : -1;\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport { withRouter } from 'react-router-dom';\nimport ScrollBehavior from 'scroll-behavior';\n\nvar asyncGenerator = function () {\n function AwaitValue(value) {\n this.value = value;\n }\n\n function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n\n if (value instanceof AwaitValue) {\n Promise.resolve(value.value).then(function (arg) {\n resume(\"next\", arg);\n }, function (arg) {\n resume(\"throw\", arg);\n });\n } else {\n settle(result.done ? \"return\" : \"normal\", result.value);\n }\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== \"function\") {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n\n AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n };\n\n AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke(\"throw\", arg);\n };\n\n AsyncGenerator.prototype.return = function (arg) {\n return this._invoke(\"return\", arg);\n };\n\n return {\n wrap: function (fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function (value) {\n return new AwaitValue(value);\n }\n };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar DEV = process.env.NODE_ENV !== 'production';\n\nvar propTypes = {\n scrollKey: PropTypes.string.isRequired,\n shouldUpdateScroll: PropTypes.func,\n children: PropTypes.element.isRequired\n};\n\nvar contextTypes = {\n // This is necessary when rendering on the client. However, when rendering on\n // the server, this container will do nothing, and thus does not require the\n // scroll behavior context.\n scrollBehavior: PropTypes.object\n};\n\nvar ScrollContainer = function (_React$Component) {\n inherits(ScrollContainer, _React$Component);\n\n function ScrollContainer(props, context) {\n classCallCheck(this, ScrollContainer);\n\n // We don't re-register if the scroll key changes, so make sure we\n // unregister with the initial scroll key just in case the user changes it.\n var _this = possibleConstructorReturn(this, (ScrollContainer.__proto__ || Object.getPrototypeOf(ScrollContainer)).call(this, props, context));\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing scrollBehavior._stateStorage.\n return shouldUpdateScroll.call(_this.context.scrollBehavior.scrollBehavior, prevRouterProps, routerProps);\n };\n\n _this.scrollKey = props.scrollKey;\n return _this;\n }\n\n createClass(ScrollContainer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.context.scrollBehavior.registerElement(this.props.scrollKey, ReactDOM.findDOMNode(this), this.shouldUpdateScroll);\n\n // Only keep around the current DOM node in development, as this is only\n // for emitting the appropriate warning.\n if (DEV) {\n this.domNode = ReactDOM.findDOMNode(this);\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n process.env.NODE_ENV !== 'production' ? warning(nextProps.scrollKey === this.props.scrollKey, '<ScrollContainer> does not support changing scrollKey.') : void 0;\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (DEV) {\n var prevDomNode = this.domNode;\n this.domNode = ReactDOM.findDOMNode(this);\n\n process.env.NODE_ENV !== 'production' ? warning(this.domNode === prevDomNode, '<ScrollContainer> does not support changing DOM node.') : void 0;\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.context.scrollBehavior.unregisterElement(this.scrollKey);\n }\n }, {\n key: 'render',\n value: function render() {\n return React.Children.only(this.props.children);\n }\n }]);\n return ScrollContainer;\n}(React.Component);\n\nScrollContainer.propTypes = propTypes;\nScrollContainer.contextTypes = contextTypes;\n\nvar STATE_KEY_PREFIX = '@@scroll|';\n\nvar SessionStorage = function () {\n function SessionStorage() {\n classCallCheck(this, SessionStorage);\n }\n\n createClass(SessionStorage, [{\n key: 'read',\n value: function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = sessionStorage.getItem(stateKey);\n return JSON.parse(value);\n } catch (e) {\n return {};\n }\n }\n }, {\n key: 'save',\n value: function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {}\n }\n }, {\n key: 'getStateKey',\n value: function getStateKey(location, key) {\n var locationKey = location.key;\n var stateKeyBase = '' + STATE_KEY_PREFIX + locationKey;\n return key == null ? stateKeyBase : stateKeyBase + '|' + key;\n }\n }]);\n return SessionStorage;\n}();\n\nvar propTypes$1 = {\n shouldUpdateScroll: PropTypes.func,\n children: PropTypes.element.isRequired,\n location: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired,\n scrollBehavior: PropTypes.func\n};\n\nvar childContextTypes = {\n scrollBehavior: PropTypes.object.isRequired\n};\n\nvar ScrollContext = function (_React$Component) {\n inherits(ScrollContext, _React$Component);\n\n function ScrollContext(props, context) {\n classCallCheck(this, ScrollContext);\n\n var _this = possibleConstructorReturn(this, (ScrollContext.__proto__ || Object.getPrototypeOf(ScrollContext)).call(this, props, context));\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n }\n\n // Hack to allow accessing scrollBehavior._stateStorage.\n return shouldUpdateScroll.call(_this.scrollBehavior, prevRouterProps, routerProps);\n };\n\n _this.registerElement = function (key, element, shouldUpdateScroll) {\n _this.scrollBehavior.registerElement(key, element, shouldUpdateScroll, _this.getRouterProps());\n };\n\n _this.unregisterElement = function (key) {\n _this.scrollBehavior.unregisterElement(key);\n };\n\n var history = props.history;\n\n\n var ScrollBehaviorConstructor = _this.props.scrollBehavior || ScrollBehavior;\n _this.scrollBehavior = new ScrollBehaviorConstructor({\n addTransitionHook: history.listen,\n stateStorage: new SessionStorage(),\n getCurrentLocation: function getCurrentLocation() {\n return _this.props.location;\n },\n shouldUpdateScroll: _this.shouldUpdateScroll\n });\n\n _this.scrollBehavior.updateScroll(null, _this.getRouterProps());\n return _this;\n }\n\n createClass(ScrollContext, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n scrollBehavior: this\n };\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var _props = this.props,\n location = _props.location,\n history = _props.history;\n\n var prevLocation = prevProps.location;\n\n if (location === prevLocation) {\n return;\n }\n\n var prevRouterProps = {\n history: prevProps.history,\n location: prevProps.location\n };\n\n this.scrollBehavior.updateScroll(prevRouterProps, { history: history, location: location });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.scrollBehavior.stop();\n }\n }, {\n key: 'getRouterProps',\n value: function getRouterProps() {\n var _props2 = this.props,\n history = _props2.history,\n location = _props2.location;\n\n return { history: history, location: location };\n }\n }, {\n key: 'render',\n value: function render() {\n return React.Children.only(this.props.children);\n }\n }]);\n return ScrollContext;\n}(React.Component);\n\nScrollContext.propTypes = propTypes$1;\nScrollContext.childContextTypes = childContextTypes;\n\nvar ScrollBehaviorContext = withRouter(ScrollContext);\n\nexport { ScrollContainer, ScrollBehaviorContext as ScrollContext };\n","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar precond = require('precond');\nvar util = require('util');\n\n// A class to hold the state of a backoff operation. Accepts a backoff strategy\n// to generate the backoff delays.\nfunction Backoff(backoffStrategy) {\n events.EventEmitter.call(this);\n\n this.backoffStrategy_ = backoffStrategy;\n this.maxNumberOfRetry_ = -1;\n this.backoffNumber_ = 0;\n this.backoffDelay_ = 0;\n this.timeoutID_ = -1;\n\n this.handlers = {\n backoff: this.onBackoff_.bind(this)\n };\n}\nutil.inherits(Backoff, events.EventEmitter);\n\n// Sets a limit, greater than 0, on the maximum number of backoffs. A 'fail'\n// event will be emitted when the limit is reached.\nBackoff.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkArgument(maxNumberOfRetry > 0,\n 'Expected a maximum number of retry greater than 0 but got %s.',\n maxNumberOfRetry);\n\n this.maxNumberOfRetry_ = maxNumberOfRetry;\n};\n\n// Starts a backoff operation. Accepts an optional parameter to let the\n// listeners know why the backoff operation was started.\nBackoff.prototype.backoff = function(err) {\n precond.checkState(this.timeoutID_ === -1, 'Backoff in progress.');\n\n if (this.backoffNumber_ === this.maxNumberOfRetry_) {\n this.emit('fail', err);\n this.reset();\n } else {\n this.backoffDelay_ = this.backoffStrategy_.next();\n this.timeoutID_ = setTimeout(this.handlers.backoff, this.backoffDelay_);\n this.emit('backoff', this.backoffNumber_, this.backoffDelay_, err);\n }\n};\n\n// Handles the backoff timeout completion.\nBackoff.prototype.onBackoff_ = function() {\n this.timeoutID_ = -1;\n this.emit('ready', this.backoffNumber_, this.backoffDelay_);\n this.backoffNumber_++;\n};\n\n// Stops any backoff operation and resets the backoff delay to its inital value.\nBackoff.prototype.reset = function() {\n this.backoffNumber_ = 0;\n this.backoffStrategy_.reset();\n clearTimeout(this.timeoutID_);\n this.timeoutID_ = -1;\n};\n\nmodule.exports = Backoff;\n","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar util = require('util');\n\nfunction isDef(value) {\n return value !== undefined && value !== null;\n}\n\n// Abstract class defining the skeleton for the backoff strategies. Accepts an\n// object holding the options for the backoff strategy:\n//\n// * `randomisationFactor`: The randomisation factor which must be between 0\n// and 1 where 1 equates to a randomization factor of 100% and 0 to no\n// randomization.\n// * `initialDelay`: The backoff initial delay in milliseconds.\n// * `maxDelay`: The backoff maximal delay in milliseconds.\nfunction BackoffStrategy(options) {\n options = options || {};\n\n if (isDef(options.initialDelay) && options.initialDelay < 1) {\n throw new Error('The initial timeout must be greater than 0.');\n } else if (isDef(options.maxDelay) && options.maxDelay < 1) {\n throw new Error('The maximal timeout must be greater than 0.');\n }\n\n this.initialDelay_ = options.initialDelay || 100;\n this.maxDelay_ = options.maxDelay || 10000;\n\n if (this.maxDelay_ <= this.initialDelay_) {\n throw new Error('The maximal backoff delay must be ' +\n 'greater than the initial backoff delay.');\n }\n\n if (isDef(options.randomisationFactor) &&\n (options.randomisationFactor < 0 || options.randomisationFactor > 1)) {\n throw new Error('The randomisation factor must be between 0 and 1.');\n }\n\n this.randomisationFactor_ = options.randomisationFactor || 0;\n}\n\n// Gets the maximal backoff delay.\nBackoffStrategy.prototype.getMaxDelay = function() {\n return this.maxDelay_;\n};\n\n// Gets the initial backoff delay.\nBackoffStrategy.prototype.getInitialDelay = function() {\n return this.initialDelay_;\n};\n\n// Template method that computes and returns the next backoff delay in\n// milliseconds.\nBackoffStrategy.prototype.next = function() {\n var backoffDelay = this.next_();\n var randomisationMultiple = 1 + Math.random() * this.randomisationFactor_;\n var randomizedDelay = Math.round(backoffDelay * randomisationMultiple);\n return randomizedDelay;\n};\n\n// Computes and returns the next backoff delay. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.next_ = function() {\n throw new Error('BackoffStrategy.next_() unimplemented.');\n};\n\n// Template method that resets the backoff delay to its initial value.\nBackoffStrategy.prototype.reset = function() {\n this.reset_();\n};\n\n// Resets the backoff delay to its initial value. Intended to be overridden by\n// subclasses.\nBackoffStrategy.prototype.reset_ = function() {\n throw new Error('BackoffStrategy.reset_() unimplemented.');\n};\n\nmodule.exports = BackoffStrategy;\n","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = require('util');\n\nvar BackoffStrategy = require('./strategy');\n\n// Fibonacci backoff strategy.\nfunction FibonacciBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n}\nutil.inherits(FibonacciBackoffStrategy, BackoffStrategy);\n\nFibonacciBackoffStrategy.prototype.next_ = function() {\n var backoffDelay = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ += this.backoffDelay_;\n this.backoffDelay_ = backoffDelay;\n return backoffDelay;\n};\n\nFibonacciBackoffStrategy.prototype.reset_ = function() {\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.backoffDelay_ = 0;\n};\n\nmodule.exports = FibonacciBackoffStrategy;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';Object.defineProperty(exports,\"__esModule\",{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if(\"value\"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor;};}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError(\"Cannot call a class as a function\");}}var backoff=require('backoff');var WebSocketClient=function(){/**\n * @param url DOMString The URL to which to connect; this should be the URL to which the WebSocket server will respond.\n * @param protocols DOMString|DOMString[] Either a single protocol string or an array of protocol strings. These strings are used to indicate sub-protocols, so that a single server can implement multiple WebSocket sub-protocols (for example, you might want one server to be able to handle different types of interactions depending on the specified protocol). If you don't specify a protocol string, an empty string is assumed.\n */function WebSocketClient(url,protocols){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};_classCallCheck(this,WebSocketClient);this.url=url;this.protocols=protocols;this.reconnectEnabled=true;this.listeners={};this.backoff=backoff[options.backoff||'fibonacci'](options);this.backoff.on('backoff',this.onBackoffStart.bind(this));this.backoff.on('ready',this.onBackoffReady.bind(this));this.backoff.on('fail',this.onBackoffFail.bind(this));this.open();}_createClass(WebSocketClient,[{key:'open',value:function open(){var reconnect=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;this.isReconnect=reconnect;this.ws=new WebSocket(this.url,this.protocols);this.ws.onclose=this.onCloseCallback.bind(this);this.ws.onerror=this.onErrorCallback.bind(this);this.ws.onmessage=this.onMessageCallback.bind(this);this.ws.onopen=this.onOpenCallback.bind(this);}/**\n * @ignore\n */},{key:'onBackoffStart',value:function onBackoffStart(number,delay){}/**\n * @ignore\n */},{key:'onBackoffReady',value:function onBackoffReady(number,delay){// console.log(\"onBackoffReady\", number + ' ' + delay + 'ms');\nthis.open(true);}/**\n * @ignore\n */},{key:'onBackoffFail',value:function onBackoffFail(){}/**\n * @ignore\n */},{key:'onCloseCallback',value:function onCloseCallback(){if(!this.isReconnect&&this.listeners['onclose'])this.listeners['onclose'].apply(null,arguments);if(this.reconnectEnabled){this.backoff.backoff();}}/**\n * @ignore\n */},{key:'onErrorCallback',value:function onErrorCallback(){if(this.listeners['onerror'])this.listeners['onerror'].apply(null,arguments);}/**\n * @ignore\n */},{key:'onMessageCallback',value:function onMessageCallback(){if(this.listeners['onmessage'])this.listeners['onmessage'].apply(null,arguments);}/**\n * @ignore\n */},{key:'onOpenCallback',value:function onOpenCallback(){if(this.listeners['onopen'])this.listeners['onopen'].apply(null,arguments);if(this.isReconnect&&this.listeners['onreconnect'])this.listeners['onreconnect'].apply(null,arguments);this.isReconnect=false;}/**\n * The number of bytes of data that have been queued using calls to send()\n * but not yet transmitted to the network. This value does not reset to zero\n * when the connection is closed; if you keep calling send(), this will\n * continue to climb.\n *\n * @type unsigned long\n * @readonly\n */},{key:'close',/**\n * Closes the WebSocket connection or connection attempt, if any. If the\n * connection is already CLOSED, this method does nothing.\n *\n * @param code A numeric value indicating the status code explaining why the connection is being closed. If this parameter is not specified, a default value of 1000 (indicating a normal \"transaction complete\" closure) is assumed. See the list of status codes on the CloseEvent page for permitted values.\n * @param reason A human-readable string explaining why the connection is closing. This string must be no longer than 123 bytes of UTF-8 text (not characters).\n *\n * @return void\n */value:function close(code,reason){if(typeof code=='undefined'){code=1000;}this.reconnectEnabled=false;this.ws.close(code,reason);}/**\n * Transmits data to the server over the WebSocket connection.\n * @param data DOMString|ArrayBuffer|Blob\n * @return void\n */},{key:'send',value:function send(data){this.ws.send(data);}/**\n * An event listener to be called when the WebSocket connection's readyState changes to CLOSED. The listener receives a CloseEvent named \"close\".\n * @param listener EventListener\n */},{key:'bufferedAmount',get:function get(){return this.ws.bufferedAmount;}/**\n * The current state of the connection; this is one of the Ready state constants.\n * @type unsigned short\n * @readonly\n */},{key:'readyState',get:function get(){return this.ws.readyState;}/**\n * A string indicating the type of binary data being transmitted by the\n * connection. This should be either \"blob\" if DOM Blob objects are being\n * used or \"arraybuffer\" if ArrayBuffer objects are being used.\n * @type DOMString\n */},{key:'binaryType',get:function get(){return this.ws.binaryType;},set:function set(binaryType){this.ws.binaryType=binaryType;}/**\n * The extensions selected by the server. This is currently only the empty\n * string or a list of extensions as negotiated by the connection.\n * @type DOMString\n */},{key:'extensions',get:function get(){return this.ws.extensions;},set:function set(extensions){this.ws.extensions=extensions;}/**\n * A string indicating the name of the sub-protocol the server selected;\n * this will be one of the strings specified in the protocols parameter when\n * creating the WebSocket object.\n * @type DOMString\n */},{key:'protocol',get:function get(){return this.ws.protocol;},set:function set(protocol){this.ws.protocol=protocol;}},{key:'onclose',set:function set(listener){this.listeners['onclose']=listener;},get:function get(){return this.listeners['onclose'];}/**\n * An event listener to be called when an error occurs. This is a simple event named \"error\".\n * @param listener EventListener\n */},{key:'onerror',set:function set(listener){this.listeners['onerror']=listener;},get:function get(){return this.listeners['onerror'];}/**\n * An event listener to be called when a message is received from the server. The listener receives a MessageEvent named \"message\".\n * @param listener EventListener\n */},{key:'onmessage',set:function set(listener){this.listeners['onmessage']=listener;},get:function get(){return this.listeners['onmessage'];}/**\n * An event listener to be called when the WebSocket connection's readyState changes to OPEN; this indicates that the connection is ready to send and receive data. The event is a simple one with the name \"open\".\n * @param listener EventListener\n */},{key:'onopen',set:function set(listener){this.listeners['onopen']=listener;},get:function get(){return this.listeners['onopen'];}/**\n * @param listener EventListener\n */},{key:'onreconnect',set:function set(listener){this.listeners['onreconnect']=listener;},get:function get(){return this.listeners['onreconnect'];}}]);return WebSocketClient;}();/**\n * The connection is not yet open.\n */WebSocketClient.CONNECTING=WebSocket.CONNECTING;/**\n * The connection is open and ready to communicate.\n */WebSocketClient.OPEN=WebSocket.OPEN;/**\n * The connection is in the process of closing.\n */WebSocketClient.CLOSING=WebSocket.CLOSING;/**\n * The connection is closed or couldn't be opened.\n */WebSocketClient.CLOSED=WebSocket.CLOSED;exports.default=WebSocketClient;","/**\n * lodash 3.0.3 (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && objectToString.call(value) == boolTag);\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;\n","/**\n * lodash 3.0.2 (Custom Build) <https://lodash.com/>\n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license <https://lodash.com/license>\n */\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _off = require('dom-helpers/events/off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nvar _on = require('dom-helpers/events/on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _scrollLeft = require('dom-helpers/query/scrollLeft');\n\nvar _scrollLeft2 = _interopRequireDefault(_scrollLeft);\n\nvar _scrollTop = require('dom-helpers/query/scrollTop');\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _requestAnimationFrame = require('dom-helpers/util/requestAnimationFrame');\n\nvar _requestAnimationFrame2 = _interopRequireDefault(_requestAnimationFrame);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* eslint-disable no-underscore-dangle */\n\n// Try at most this many times to scroll, to avoid getting stuck.\nvar MAX_SCROLL_ATTEMPTS = 2;\n\nvar ScrollBehavior = function () {\n function ScrollBehavior(_ref) {\n var _this = this;\n\n var addTransitionHook = _ref.addTransitionHook,\n stateStorage = _ref.stateStorage,\n getCurrentLocation = _ref.getCurrentLocation,\n shouldUpdateScroll = _ref.shouldUpdateScroll;\n\n _classCallCheck(this, ScrollBehavior);\n\n this._onWindowScroll = function () {\n // It's possible that this scroll operation was triggered by what will be a\n // `POP` transition. Instead of updating the saved location immediately, we\n // have to enqueue the update, then potentially cancel it if we observe a\n // location update.\n if (!_this._saveWindowPositionHandle) {\n _this._saveWindowPositionHandle = (0, _requestAnimationFrame2.default)(_this._saveWindowPosition);\n }\n\n if (_this._windowScrollTarget) {\n var _windowScrollTarget = _this._windowScrollTarget,\n xTarget = _windowScrollTarget[0],\n yTarget = _windowScrollTarget[1];\n\n var x = (0, _scrollLeft2.default)(window);\n var y = (0, _scrollTop2.default)(window);\n\n if (x === xTarget && y === yTarget) {\n _this._windowScrollTarget = null;\n _this._cancelCheckWindowScroll();\n }\n }\n };\n\n this._saveWindowPosition = function () {\n _this._saveWindowPositionHandle = null;\n\n _this._savePosition(null, window);\n };\n\n this._checkWindowScrollPosition = function () {\n _this._checkWindowScrollHandle = null;\n\n // We can only get here if scrollTarget is set. Every code path that unsets\n // scroll target also cancels the handle to avoid calling this handler.\n // Still, check anyway just in case.\n /* istanbul ignore if: paranoid guard */\n if (!_this._windowScrollTarget) {\n return;\n }\n\n _this.scrollToTarget(window, _this._windowScrollTarget);\n\n ++_this._numWindowScrollAttempts;\n\n /* istanbul ignore if: paranoid guard */\n if (_this._numWindowScrollAttempts >= MAX_SCROLL_ATTEMPTS) {\n _this._windowScrollTarget = null;\n return;\n }\n\n _this._checkWindowScrollHandle = (0, _requestAnimationFrame2.default)(_this._checkWindowScrollPosition);\n };\n\n this._stateStorage = stateStorage;\n this._getCurrentLocation = getCurrentLocation;\n this._shouldUpdateScroll = shouldUpdateScroll;\n\n // This helps avoid some jankiness in fighting against the browser's\n // default scroll behavior on `POP` transitions.\n /* istanbul ignore else: Travis browsers all support this */\n if ('scrollRestoration' in window.history &&\n // Unfortunately, Safari on iOS freezes for 2-6s after the user swipes to\n // navigate through history with scrollRestoration being 'manual', so we\n // need to detect this browser and exclude it from the following code\n // until this bug is fixed by Apple.\n !(0, _utils.isMobileSafari)()) {\n this._oldScrollRestoration = window.history.scrollRestoration;\n try {\n window.history.scrollRestoration = 'manual';\n } catch (e) {\n this._oldScrollRestoration = null;\n }\n } else {\n this._oldScrollRestoration = null;\n }\n\n this._saveWindowPositionHandle = null;\n this._checkWindowScrollHandle = null;\n this._windowScrollTarget = null;\n this._numWindowScrollAttempts = 0;\n\n this._scrollElements = {};\n\n // We have to listen to each window scroll update rather than to just\n // location updates, because some browsers will update scroll position\n // before emitting the location change.\n (0, _on2.default)(window, 'scroll', this._onWindowScroll);\n\n this._removeTransitionHook = addTransitionHook(function () {\n _requestAnimationFrame2.default.cancel(_this._saveWindowPositionHandle);\n _this._saveWindowPositionHandle = null;\n\n Object.keys(_this._scrollElements).forEach(function (key) {\n var scrollElement = _this._scrollElements[key];\n _requestAnimationFrame2.default.cancel(scrollElement.savePositionHandle);\n scrollElement.savePositionHandle = null;\n\n // It's fine to save element scroll positions here, though; the browser\n // won't modify them.\n _this._saveElementPosition(key);\n });\n });\n }\n\n ScrollBehavior.prototype.registerElement = function registerElement(key, element, shouldUpdateScroll, context) {\n var _this2 = this;\n\n !!this._scrollElements[key] ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'ScrollBehavior: There is already an element registered for `%s`.', key) : (0, _invariant2.default)(false) : void 0;\n\n var saveElementPosition = function saveElementPosition() {\n _this2._saveElementPosition(key);\n };\n\n var scrollElement = {\n element: element,\n shouldUpdateScroll: shouldUpdateScroll,\n savePositionHandle: null,\n\n onScroll: function onScroll() {\n if (!scrollElement.savePositionHandle) {\n scrollElement.savePositionHandle = (0, _requestAnimationFrame2.default)(saveElementPosition);\n }\n }\n };\n\n this._scrollElements[key] = scrollElement;\n (0, _on2.default)(element, 'scroll', scrollElement.onScroll);\n\n this._updateElementScroll(key, null, context);\n };\n\n ScrollBehavior.prototype.unregisterElement = function unregisterElement(key) {\n !this._scrollElements[key] ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'ScrollBehavior: There is no element registered for `%s`.', key) : (0, _invariant2.default)(false) : void 0;\n\n var _scrollElements$key = this._scrollElements[key],\n element = _scrollElements$key.element,\n onScroll = _scrollElements$key.onScroll,\n savePositionHandle = _scrollElements$key.savePositionHandle;\n\n\n (0, _off2.default)(element, 'scroll', onScroll);\n _requestAnimationFrame2.default.cancel(savePositionHandle);\n\n delete this._scrollElements[key];\n };\n\n ScrollBehavior.prototype.updateScroll = function updateScroll(prevContext, context) {\n var _this3 = this;\n\n this._updateWindowScroll(prevContext, context);\n\n Object.keys(this._scrollElements).forEach(function (key) {\n _this3._updateElementScroll(key, prevContext, context);\n });\n };\n\n ScrollBehavior.prototype.stop = function stop() {\n /* istanbul ignore if: not supported by any browsers on Travis */\n if (this._oldScrollRestoration) {\n try {\n window.history.scrollRestoration = this._oldScrollRestoration;\n } catch (e) {\n /* silence */\n }\n }\n\n (0, _off2.default)(window, 'scroll', this._onWindowScroll);\n this._cancelCheckWindowScroll();\n\n this._removeTransitionHook();\n };\n\n ScrollBehavior.prototype._cancelCheckWindowScroll = function _cancelCheckWindowScroll() {\n _requestAnimationFrame2.default.cancel(this._checkWindowScrollHandle);\n this._checkWindowScrollHandle = null;\n };\n\n ScrollBehavior.prototype._saveElementPosition = function _saveElementPosition(key) {\n var scrollElement = this._scrollElements[key];\n scrollElement.savePositionHandle = null;\n\n this._savePosition(key, scrollElement.element);\n };\n\n ScrollBehavior.prototype._savePosition = function _savePosition(key, element) {\n this._stateStorage.save(this._getCurrentLocation(), key, [(0, _scrollLeft2.default)(element), (0, _scrollTop2.default)(element)]);\n };\n\n ScrollBehavior.prototype._updateWindowScroll = function _updateWindowScroll(prevContext, context) {\n // Whatever we were doing before isn't relevant any more.\n this._cancelCheckWindowScroll();\n\n this._windowScrollTarget = this._getScrollTarget(null, this._shouldUpdateScroll, prevContext, context);\n\n // Updating the window scroll position is really flaky. Just trying to\n // scroll it isn't enough. Instead, try to scroll a few times until it\n // works.\n this._numWindowScrollAttempts = 0;\n this._checkWindowScrollPosition();\n };\n\n ScrollBehavior.prototype._updateElementScroll = function _updateElementScroll(key, prevContext, context) {\n var _scrollElements$key2 = this._scrollElements[key],\n element = _scrollElements$key2.element,\n shouldUpdateScroll = _scrollElements$key2.shouldUpdateScroll;\n\n\n var scrollTarget = this._getScrollTarget(key, shouldUpdateScroll, prevContext, context);\n if (!scrollTarget) {\n return;\n }\n\n // Unlike with the window, there shouldn't be any flakiness to deal with\n // here.\n this.scrollToTarget(element, scrollTarget);\n };\n\n ScrollBehavior.prototype._getDefaultScrollTarget = function _getDefaultScrollTarget(location) {\n var hash = location.hash;\n if (hash && hash !== '#') {\n return hash.charAt(0) === '#' ? hash.slice(1) : hash;\n }\n return [0, 0];\n };\n\n ScrollBehavior.prototype._getScrollTarget = function _getScrollTarget(key, shouldUpdateScroll, prevContext, context) {\n var scrollTarget = shouldUpdateScroll ? shouldUpdateScroll.call(this, prevContext, context) : true;\n\n if (!scrollTarget || Array.isArray(scrollTarget) || typeof scrollTarget === 'string') {\n return scrollTarget;\n }\n\n var location = this._getCurrentLocation();\n\n return this._getSavedScrollTarget(key, location) || this._getDefaultScrollTarget(location);\n };\n\n ScrollBehavior.prototype._getSavedScrollTarget = function _getSavedScrollTarget(key, location) {\n if (location.action === 'PUSH') {\n return null;\n }\n\n return this._stateStorage.read(location, key);\n };\n\n ScrollBehavior.prototype.scrollToTarget = function scrollToTarget(element, target) {\n if (typeof target === 'string') {\n var targetElement = document.getElementById(target) || document.getElementsByName(target)[0];\n if (targetElement) {\n targetElement.scrollIntoView();\n return;\n }\n\n // Fallback to scrolling to top when target fragment doesn't exist.\n target = [0, 0]; // eslint-disable-line no-param-reassign\n }\n\n var _target = target,\n left = _target[0],\n top = _target[1];\n\n (0, _scrollLeft2.default)(element, left);\n (0, _scrollTop2.default)(element, top);\n };\n\n return ScrollBehavior;\n}();\n\nexports.default = ScrollBehavior;\nmodule.exports = exports['default'];","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport { createLocation } from \"history\";\n\nvar isModifiedEvent = function isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n/**\n * The public API for rendering a history-aware <a>.\n */\n\nvar Link = function (_React$Component) {\n _inherits(Link, _React$Component);\n\n function Link() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Link);\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 = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.handleClick = function (event) {\n if (_this.props.onClick) _this.props.onClick(event);\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n !_this.props.target && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\n\n\n if (replace) {\n history.replace(to);\n } else {\n history.push(to);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Link.prototype.render = function render() {\n var _props = this.props,\n replace = _props.replace,\n to = _props.to,\n innerRef = _props.innerRef,\n props = _objectWithoutProperties(_props, [\"replace\", \"to\", \"innerRef\"]); // eslint-disable-line no-unused-vars\n\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n\n invariant(to !== undefined, 'You must specify the \"to\" property');\n\n var history = this.context.router.history;\n\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, { onClick: this.handleClick, href: href, ref: innerRef }));\n };\n\n return Link;\n}(React.Component);\n\nLink.propTypes = {\n onClick: PropTypes.func,\n target: PropTypes.string,\n replace: PropTypes.bool,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n innerRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\n};\nLink.defaultProps = {\n replace: false\n};\nLink.contextTypes = {\n router: PropTypes.shape({\n history: PropTypes.shape({\n push: PropTypes.func.isRequired,\n replace: PropTypes.func.isRequired,\n createHref: PropTypes.func.isRequired\n }).isRequired\n }).isRequired\n};\n\n\nexport default Link;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _check = require('./check');\n\nvar _check2 = _interopRequireDefault(_check);\n\nvar _x = require('./x');\n\nvar _x2 = _interopRequireDefault(_x);\n\nvar _util = require('./util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Toggle = function (_PureComponent) {\n _inherits(Toggle, _PureComponent);\n\n function Toggle(props) {\n _classCallCheck(this, Toggle);\n\n var _this = _possibleConstructorReturn(this, (Toggle.__proto__ || Object.getPrototypeOf(Toggle)).call(this, props));\n\n _this.handleClick = _this.handleClick.bind(_this);\n _this.handleTouchStart = _this.handleTouchStart.bind(_this);\n _this.handleTouchMove = _this.handleTouchMove.bind(_this);\n _this.handleTouchEnd = _this.handleTouchEnd.bind(_this);\n _this.handleFocus = _this.handleFocus.bind(_this);\n _this.handleBlur = _this.handleBlur.bind(_this);\n _this.previouslyChecked = !!(props.checked || props.defaultChecked);\n _this.state = {\n checked: !!(props.checked || props.defaultChecked),\n hasFocus: false\n };\n return _this;\n }\n\n _createClass(Toggle, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if ('checked' in nextProps) {\n this.setState({ checked: !!nextProps.checked });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n var checkbox = this.input;\n if (event.target !== checkbox && !this.moved) {\n this.previouslyChecked = checkbox.checked;\n event.preventDefault();\n checkbox.focus();\n checkbox.click();\n return;\n }\n\n var checked = this.props.hasOwnProperty('checked') ? this.props.checked : checkbox.checked;\n\n this.setState({ checked: checked });\n }\n }, {\n key: 'handleTouchStart',\n value: function handleTouchStart(event) {\n this.startX = (0, _util.pointerCoord)(event).x;\n this.activated = true;\n }\n }, {\n key: 'handleTouchMove',\n value: function handleTouchMove(event) {\n if (!this.activated) return;\n this.moved = true;\n\n if (this.startX) {\n var currentX = (0, _util.pointerCoord)(event).x;\n if (this.state.checked && currentX + 15 < this.startX) {\n this.setState({ checked: false });\n this.startX = currentX;\n this.activated = true;\n } else if (currentX - 15 > this.startX) {\n this.setState({ checked: true });\n this.startX = currentX;\n this.activated = currentX < this.startX + 5;\n }\n }\n }\n }, {\n key: 'handleTouchEnd',\n value: function handleTouchEnd(event) {\n if (!this.moved) return;\n var checkbox = this.input;\n event.preventDefault();\n\n if (this.startX) {\n var endX = (0, _util.pointerCoord)(event).x;\n if (this.previouslyChecked === true && this.startX + 4 > endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: false });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n } else if (this.startX - 4 < endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({ checked: true });\n this.previouslyChecked = this.state.checked;\n checkbox.click();\n }\n }\n\n this.activated = false;\n this.startX = null;\n this.moved = false;\n }\n }\n }, {\n key: 'handleFocus',\n value: function handleFocus(event) {\n var onFocus = this.props.onFocus;\n\n\n if (onFocus) {\n onFocus(event);\n }\n\n this.setState({ hasFocus: true });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur(event) {\n var onBlur = this.props.onBlur;\n\n\n if (onBlur) {\n onBlur(event);\n }\n\n this.setState({ hasFocus: false });\n }\n }, {\n key: 'getIcon',\n value: function getIcon(type) {\n var icons = this.props.icons;\n\n if (!icons) {\n return null;\n }\n return icons[type] === undefined ? Toggle.defaultProps.icons[type] : icons[type];\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n _icons = _props.icons,\n inputProps = _objectWithoutProperties(_props, ['className', 'icons']);\n\n var classes = (0, _classnames2.default)('react-toggle', {\n 'react-toggle--checked': this.state.checked,\n 'react-toggle--focus': this.state.hasFocus,\n 'react-toggle--disabled': this.props.disabled\n }, className);\n\n return _react2.default.createElement(\n 'div',\n { className: classes,\n onClick: this.handleClick,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n onTouchEnd: this.handleTouchEnd },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track' },\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-check' },\n this.getIcon('checked')\n ),\n _react2.default.createElement(\n 'div',\n { className: 'react-toggle-track-x' },\n this.getIcon('unchecked')\n )\n ),\n _react2.default.createElement('div', { className: 'react-toggle-thumb' }),\n _react2.default.createElement('input', _extends({}, inputProps, {\n ref: function ref(_ref) {\n _this2.input = _ref;\n },\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n className: 'react-toggle-screenreader-only',\n type: 'checkbox' }))\n );\n }\n }]);\n\n return Toggle;\n}(_react.PureComponent);\n\nexports.default = Toggle;\n\n\nToggle.displayName = 'Toggle';\n\nToggle.defaultProps = {\n icons: {\n checked: _react2.default.createElement(_check2.default, null),\n unchecked: _react2.default.createElement(_x2.default, null)\n }\n};\n\nToggle.propTypes = {\n checked: _propTypes2.default.bool,\n disabled: _propTypes2.default.bool,\n defaultChecked: _propTypes2.default.bool,\n onChange: _propTypes2.default.func,\n onFocus: _propTypes2.default.func,\n onBlur: _propTypes2.default.func,\n className: _propTypes2.default.string,\n name: _propTypes2.default.string,\n value: _propTypes2.default.string,\n id: _propTypes2.default.string,\n 'aria-labelledby': _propTypes2.default.string,\n 'aria-label': _propTypes2.default.string,\n icons: _propTypes2.default.oneOfType([_propTypes2.default.bool, _propTypes2.default.shape({\n checked: _propTypes2.default.node,\n unchecked: _propTypes2.default.node\n })])\n};","const easingOutQuint = (x, t, b, c, d) => c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n\nconst scroll = (node, key, target) => {\n const startTime = Date.now();\n const offset = node[key];\n const gap = target - offset;\n const duration = 1000;\n let interrupt = false;\n\n const step = () => {\n const elapsed = Date.now() - startTime;\n const percentage = elapsed / duration;\n\n if (percentage > 1 || interrupt) {\n return;\n }\n\n node[key] = easingOutQuint(0, elapsed, offset, gap, duration);\n requestAnimationFrame(step);\n };\n\n step();\n\n return () => {\n interrupt = true;\n };\n};\n\nexport const scrollRight = (node, position) => scroll(node, 'scrollLeft', position);\nexport const scrollTop = (node) => scroll(node, 'scrollTop', 0);\n","const easingOutQuint = (x, t, b, c, d) => c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n\nconst scroll = (node, key, target) => {\n const startTime = Date.now();\n const offset = node[key];\n const gap = target - offset;\n const duration = 1000;\n let interrupt = false;\n\n const step = () => {\n const elapsed = Date.now() - startTime;\n const percentage = elapsed / duration;\n\n if (percentage > 1 || interrupt) {\n return;\n }\n\n node[key] = easingOutQuint(0, elapsed, offset, gap, duration);\n requestAnimationFrame(step);\n };\n\n step();\n\n return () => {\n interrupt = true;\n };\n};\n\nexport const scrollRight = (node, position) => scroll(node, 'scrollLeft', position);\nexport const scrollTop = (node) => scroll(node, 'scrollTop', 0);\n","import WebSocketClient from 'websocket.js';\n\nconst randomIntUpTo = max => Math.floor(Math.random() * Math.floor(max));\n\nexport function connectStream(path, pollingRefresh = null, callbacks = () => ({ onDisconnect() {}, onReceive() {} })) {\n return (dispatch, getState) => {\n const streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']);\n const accessToken = getState().getIn(['meta', 'access_token']);\n const { onDisconnect, onReceive } = callbacks(dispatch, getState);\n\n let polling = null;\n\n const setupPolling = () => {\n pollingRefresh(dispatch, () => {\n polling = setTimeout(() => setupPolling(), 20000 + randomIntUpTo(20000));\n });\n };\n\n const clearPolling = () => {\n if (polling) {\n clearTimeout(polling);\n polling = null;\n }\n };\n\n const subscription = getStream(streamingAPIBaseURL, accessToken, path, {\n connected () {\n if (pollingRefresh) {\n clearPolling();\n }\n },\n\n disconnected () {\n if (pollingRefresh) {\n polling = setTimeout(() => setupPolling(), randomIntUpTo(40000));\n }\n\n onDisconnect();\n },\n\n received (data) {\n onReceive(data);\n },\n\n reconnected () {\n if (pollingRefresh) {\n clearPolling();\n pollingRefresh(dispatch);\n }\n },\n\n });\n\n const disconnect = () => {\n if (subscription) {\n subscription.close();\n }\n\n clearPolling();\n };\n\n return disconnect;\n };\n}\n\n\nexport default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {\n const params = [ `stream=${stream}` ];\n\n if (accessToken !== null) {\n params.push(`access_token=${accessToken}`);\n }\n\n const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`);\n\n ws.onopen = connected;\n ws.onmessage = e => {\n if (e.data !== '')\n received(JSON.parse(e.data));\n };\n ws.onclose = disconnected;\n ws.onreconnect = reconnected;\n\n return ws;\n};\n","import { connectStream } from '../stream';\nimport {\n updateTimeline,\n deleteFromTimelines,\n expandHomeTimeline,\n disconnectTimeline,\n} from './timelines';\nimport { updateNotifications, expandNotifications } from './notifications';\nimport { updateConversations } from './conversations';\nimport { fetchFilters } from './filters';\nimport { getLocale } from '../locales';\n\nconst { messages } = getLocale();\n\nexport function connectTimelineStream (timelineId, path, pollingRefresh = null, accept = null) {\n\n return connectStream (path, pollingRefresh, (dispatch, getState) => {\n const locale = getState().getIn(['meta', 'locale']);\n return {\n onDisconnect() {\n dispatch(disconnectTimeline(timelineId));\n },\n\n onReceive (data) {\n switch(data.event) {\n case 'update':\n dispatch(updateTimeline(timelineId, JSON.parse(data.payload), accept));\n break;\n case 'delete':\n dispatch(deleteFromTimelines(data.payload));\n break;\n case 'notification':\n dispatch(updateNotifications(JSON.parse(data.payload), messages, locale));\n break;\n case 'conversation':\n dispatch(updateConversations(JSON.parse(data.payload)));\n break;\n case 'filters_changed':\n dispatch(fetchFilters());\n break;\n }\n },\n };\n });\n}\n\nconst refreshHomeTimelineAndNotification = (dispatch, done) => {\n dispatch(expandHomeTimeline({}, () => dispatch(expandNotifications({}, done))));\n};\n\nexport const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);\nexport const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);\nexport const connectPublicStream = ({ onlyMedia } = {}) => connectTimelineStream(`public${onlyMedia ? ':media' : ''}`, `public${onlyMedia ? ':media' : ''}`);\nexport const connectHashtagStream = (id, tag, accept) => connectTimelineStream(`hashtag:${id}`, `hashtag&tag=${tag}`, null, accept);\nexport const connectDirectStream = () => connectTimelineStream('direct', 'direct');\nexport const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);\n","import WebSocketClient from 'websocket.js';\n\nconst randomIntUpTo = max => Math.floor(Math.random() * Math.floor(max));\n\nexport function connectStream(path, pollingRefresh = null, callbacks = () => ({ onDisconnect() {}, onReceive() {} })) {\n return (dispatch, getState) => {\n const streamingAPIBaseURL = getState().getIn(['meta', 'streaming_api_base_url']);\n const accessToken = getState().getIn(['meta', 'access_token']);\n const { onDisconnect, onReceive } = callbacks(dispatch, getState);\n\n let polling = null;\n\n const setupPolling = () => {\n pollingRefresh(dispatch, () => {\n polling = setTimeout(() => setupPolling(), 20000 + randomIntUpTo(20000));\n });\n };\n\n const clearPolling = () => {\n if (polling) {\n clearTimeout(polling);\n polling = null;\n }\n };\n\n const subscription = getStream(streamingAPIBaseURL, accessToken, path, {\n connected () {\n if (pollingRefresh) {\n clearPolling();\n }\n },\n\n disconnected () {\n if (pollingRefresh) {\n polling = setTimeout(() => setupPolling(), randomIntUpTo(40000));\n }\n\n onDisconnect();\n },\n\n received (data) {\n onReceive(data);\n },\n\n reconnected () {\n if (pollingRefresh) {\n clearPolling();\n pollingRefresh(dispatch);\n }\n },\n\n });\n\n const disconnect = () => {\n if (subscription) {\n subscription.close();\n }\n\n clearPolling();\n };\n\n return disconnect;\n };\n}\n\n\nexport default function getStream(streamingAPIBaseURL, accessToken, stream, { connected, received, disconnected, reconnected }) {\n const params = [ `stream=${stream}` ];\n\n if (accessToken !== null) {\n params.push(`access_token=${accessToken}`);\n }\n\n const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`);\n\n ws.onopen = connected;\n ws.onmessage = e => {\n if (e.data !== '')\n received(JSON.parse(e.data));\n };\n ws.onclose = disconnected;\n ws.onreconnect = reconnected;\n\n return ws;\n};\n","import { connectStream } from 'flavours/glitch/util/stream';\nimport {\n updateTimeline,\n deleteFromTimelines,\n expandHomeTimeline,\n disconnectTimeline,\n} from './timelines';\nimport { updateNotifications, expandNotifications } from './notifications';\nimport { fetchFilters } from './filters';\nimport { getLocale } from 'mastodon/locales';\n\nconst { messages } = getLocale();\n\nexport function connectTimelineStream (timelineId, path, pollingRefresh = null, accept = null) {\n\n return connectStream (path, pollingRefresh, (dispatch, getState) => {\n const locale = getState().getIn(['meta', 'locale']);\n return {\n onDisconnect() {\n dispatch(disconnectTimeline(timelineId));\n },\n\n onReceive (data) {\n switch(data.event) {\n case 'update':\n dispatch(updateTimeline(timelineId, JSON.parse(data.payload), accept));\n break;\n case 'delete':\n dispatch(deleteFromTimelines(data.payload));\n break;\n case 'notification':\n dispatch(updateNotifications(JSON.parse(data.payload), messages, locale));\n break;\n case 'filters_changed':\n dispatch(fetchFilters());\n break;\n }\n },\n };\n });\n}\n\nconst refreshHomeTimelineAndNotification = (dispatch, done) => {\n dispatch(expandHomeTimeline({}, () => dispatch(expandNotifications({}, done))));\n};\n\nexport const connectUserStream = () => connectTimelineStream('home', 'user', refreshHomeTimelineAndNotification);\nexport const connectCommunityStream = ({ onlyMedia } = {}) => connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);\nexport const connectPublicStream = ({ onlyMedia } = {}) => connectTimelineStream(`public${onlyMedia ? ':media' : ''}`, `public${onlyMedia ? ':media' : ''}`);\nexport const connectHashtagStream = (id, tag, accept) => connectTimelineStream(`hashtag:${id}`, `hashtag&tag=${tag}`, null, accept);\nexport const connectDirectStream = () => connectTimelineStream('direct', 'direct');\nexport const connectListStream = id => connectTimelineStream(`list:${id}`, `list&list=${id}`);\n","import warning from 'warning';\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n warning(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexport default createTransitionManager;","/**\n * Buttons widget for controlling the notification clearing mode.\n * In idle state, the cleaning mode button is shown. When the mode is active,\n * a Confirm and Abort buttons are shown in its place.\n */\n\n\n// Package imports //\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nconst messages = defineMessages({\n btnAll : { id: 'notification_purge.btn_all', defaultMessage: 'Select\\nall' },\n btnNone : { id: 'notification_purge.btn_none', defaultMessage: 'Select\\nnone' },\n btnInvert : { id: 'notification_purge.btn_invert', defaultMessage: 'Invert\\nselection' },\n btnApply : { id: 'notification_purge.btn_apply', defaultMessage: 'Clear\\nselected' },\n});\n\n@injectIntl\nexport default class NotificationPurgeButtons extends ImmutablePureComponent {\n\n static propTypes = {\n onDeleteMarked : PropTypes.func.isRequired,\n onMarkAll : PropTypes.func.isRequired,\n onMarkNone : PropTypes.func.isRequired,\n onInvert : PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n markNewForDelete: PropTypes.bool,\n };\n\n render () {\n const { intl, markNewForDelete } = this.props;\n\n //className='active'\n return (\n <div className='column-header__notif-cleaning-buttons'>\n <button onClick={this.props.onMarkAll} className={markNewForDelete ? 'active' : ''}>\n <b>∀</b><br />{intl.formatMessage(messages.btnAll)}\n </button>\n\n <button onClick={this.props.onMarkNone} className={!markNewForDelete ? 'active' : ''}>\n <b>∅</b><br />{intl.formatMessage(messages.btnNone)}\n </button>\n\n <button onClick={this.props.onInvert}>\n <b>¬</b><br />{intl.formatMessage(messages.btnInvert)}\n </button>\n\n <button onClick={this.props.onDeleteMarked}>\n <i className='fa fa-trash' /><br />{intl.formatMessage(messages.btnApply)}\n </button>\n </div>\n );\n }\n\n}\n","// Package imports.\nimport { connect } from 'react-redux';\nimport { defineMessages, injectIntl } from 'react-intl';\n\n// Our imports.\nimport NotificationPurgeButtons from 'flavours/glitch/components/notification_purge_buttons';\nimport {\n deleteMarkedNotifications,\n enterNotificationClearingMode,\n markAllNotifications,\n} from 'flavours/glitch/actions/notifications';\nimport { openModal } from 'flavours/glitch/actions/modal';\n\nconst messages = defineMessages({\n clearMessage: { id: 'notifications.marked_clear_confirmation', defaultMessage: 'Are you sure you want to permanently clear all selected notifications?' },\n clearConfirm: { id: 'notifications.marked_clear', defaultMessage: 'Clear selected notifications' },\n});\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onEnterCleaningMode(yes) {\n dispatch(enterNotificationClearingMode(yes));\n },\n\n onDeleteMarked() {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.clearMessage),\n confirm: intl.formatMessage(messages.clearConfirm),\n onConfirm: () => dispatch(deleteMarkedNotifications()),\n }));\n },\n\n onMarkAll() {\n dispatch(markAllNotifications(true));\n },\n\n onMarkNone() {\n dispatch(markAllNotifications(false));\n },\n\n onInvert() {\n dispatch(markAllNotifications(null));\n },\n});\n\nconst mapStateToProps = state => ({\n markNewForDelete: state.getIn(['notifications', 'markNewForDelete']),\n});\n\nexport default injectIntl(connect(mapStateToProps, mapDispatchToProps)(NotificationPurgeButtons));\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { defineMessages, FormattedMessage, injectIntl } from 'react-intl';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nimport NotificationPurgeButtonsContainer from 'flavours/glitch/containers/notification_purge_buttons_container';\n\nconst messages = defineMessages({\n show: { id: 'column_header.show_settings', defaultMessage: 'Show settings' },\n hide: { id: 'column_header.hide_settings', defaultMessage: 'Hide settings' },\n moveLeft: { id: 'column_header.moveLeft_settings', defaultMessage: 'Move column to the left' },\n moveRight: { id: 'column_header.moveRight_settings', defaultMessage: 'Move column to the right' },\n enterNotifCleaning : { id: 'notification_purge.start', defaultMessage: 'Enter notification cleaning mode' },\n});\n\n@injectIntl\nexport default class ColumnHeader extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n title: PropTypes.node,\n icon: PropTypes.string,\n active: PropTypes.bool,\n localSettings : ImmutablePropTypes.map,\n multiColumn: PropTypes.bool,\n extraButton: PropTypes.node,\n showBackButton: PropTypes.bool,\n notifCleaning: PropTypes.bool, // true only for the notification column\n notifCleaningActive: PropTypes.bool,\n onEnterCleaningMode: PropTypes.func,\n children: PropTypes.node,\n pinned: PropTypes.bool,\n onPin: PropTypes.func,\n onMove: PropTypes.func,\n onClick: PropTypes.func,\n intl: PropTypes.object.isRequired,\n };\n\n state = {\n collapsed: true,\n animating: false,\n animatingNCD: false,\n };\n\n historyBack = () => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/');\n }\n }\n\n handleToggleClick = (e) => {\n e.stopPropagation();\n this.setState({ collapsed: !this.state.collapsed, animating: true });\n }\n\n handleTitleClick = () => {\n this.props.onClick();\n }\n\n handleMoveLeft = () => {\n this.props.onMove(-1);\n }\n\n handleMoveRight = () => {\n this.props.onMove(1);\n }\n\n handleBackClick = () => {\n this.historyBack();\n }\n\n handleTransitionEnd = () => {\n this.setState({ animating: false });\n }\n\n handleTransitionEndNCD = () => {\n this.setState({ animatingNCD: false });\n }\n\n handlePin = () => {\n if (!this.props.pinned) {\n this.historyBack();\n }\n this.props.onPin();\n }\n\n onEnterCleaningMode = () => {\n this.setState({ animatingNCD: true });\n this.props.onEnterCleaningMode(!this.props.notifCleaningActive);\n }\n\n render () {\n const { intl, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, notifCleaning, notifCleaningActive } = this.props;\n const { collapsed, animating, animatingNCD } = this.state;\n\n let title = this.props.title;\n\n const wrapperClassName = classNames('column-header__wrapper', {\n 'active': active,\n });\n\n const buttonClassName = classNames('column-header', {\n 'active': active,\n });\n\n const collapsibleClassName = classNames('column-header__collapsible', {\n 'collapsed': collapsed,\n 'animating': animating,\n });\n\n const collapsibleButtonClassName = classNames('column-header__button', {\n 'active': !collapsed,\n });\n\n const notifCleaningButtonClassName = classNames('column-header__button', {\n 'active': notifCleaningActive,\n });\n\n const notifCleaningDrawerClassName = classNames('ncd column-header__collapsible', {\n 'collapsed': !notifCleaningActive,\n 'animating': animatingNCD,\n });\n\n let extraContent, pinButton, moveButtons, backButton, collapseButton;\n\n //*glitch\n const msgEnterNotifCleaning = intl.formatMessage(messages.enterNotifCleaning);\n\n if (children) {\n extraContent = (\n <div key='extra-content' className='column-header__collapsible__extra'>\n {children}\n </div>\n );\n }\n\n if (multiColumn && pinned) {\n pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><i className='fa fa fa-times' /> <FormattedMessage id='column_header.unpin' defaultMessage='Unpin' /></button>;\n\n moveButtons = (\n <div key='move-buttons' className='column-header__setting-arrows'>\n <button title={formatMessage(messages.moveLeft)} aria-label={formatMessage(messages.moveLeft)} className='text-btn column-header__setting-btn' onClick={this.handleMoveLeft}><i className='fa fa-chevron-left' /></button>\n <button title={formatMessage(messages.moveRight)} aria-label={formatMessage(messages.moveRight)} className='text-btn column-header__setting-btn' onClick={this.handleMoveRight}><i className='fa fa-chevron-right' /></button>\n </div>\n );\n } else if (multiColumn) {\n pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><i className='fa fa fa-plus' /> <FormattedMessage id='column_header.pin' defaultMessage='Pin' /></button>;\n }\n\n if (!pinned && (multiColumn || showBackButton)) {\n backButton = (\n <button onClick={this.handleBackClick} className='column-header__back-button'>\n <i className='fa fa-fw fa-chevron-left column-back-button__icon' />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </button>\n );\n }\n\n const collapsedContent = [\n extraContent,\n ];\n\n if (multiColumn) {\n collapsedContent.push(moveButtons);\n collapsedContent.push(pinButton);\n }\n\n if (children || multiColumn) {\n collapseButton = <button className={collapsibleButtonClassName} title={formatMessage(collapsed ? messages.show : messages.hide)} aria-label={formatMessage(collapsed ? messages.show : messages.hide)} aria-pressed={collapsed ? 'false' : 'true'} onClick={this.handleToggleClick}><i className='fa fa-sliders' /></button>;\n }\n\n const hasTitle = icon && title;\n\n return (\n <div className={wrapperClassName}>\n <h1 className={buttonClassName}>\n {hasTitle && (\n <button onClick={this.handleTitleClick}>\n <i className={`fa fa-fw fa-${icon} column-header__icon`} />\n {title}\n </button>\n )}\n\n {!hasTitle && backButton}\n\n <div className='column-header__buttons'>\n {hasTitle && backButton}\n {extraButton}\n { notifCleaning ? (\n <button\n aria-label={msgEnterNotifCleaning}\n title={msgEnterNotifCleaning}\n onClick={this.onEnterCleaningMode}\n className={notifCleaningButtonClassName}\n >\n <i className='fa fa-eraser' />\n </button>\n ) : null}\n {collapseButton}\n </div>\n </h1>\n\n { notifCleaning ? (\n <div className={notifCleaningDrawerClassName} onTransitionEnd={this.handleTransitionEndNCD}>\n <div className='column-header__collapsible-inner nopad-drawer'>\n {(notifCleaningActive || animatingNCD) ? (<NotificationPurgeButtonsContainer />) : null }\n </div>\n </div>\n ) : null}\n\n <div className={collapsibleClassName} tabIndex={collapsed ? -1 : null} onTransitionEnd={this.handleTransitionEnd}>\n <div className='column-header__collapsible-inner'>\n {(!collapsed || animating) && collapsedContent}\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl, defineMessages } from 'react-intl';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n show: { id: 'column_header.show_settings', defaultMessage: 'Show settings' },\n hide: { id: 'column_header.hide_settings', defaultMessage: 'Hide settings' },\n moveLeft: { id: 'column_header.moveLeft_settings', defaultMessage: 'Move column to the left' },\n moveRight: { id: 'column_header.moveRight_settings', defaultMessage: 'Move column to the right' },\n});\n\nexport default @injectIntl\nclass ColumnHeader extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n title: PropTypes.node,\n icon: PropTypes.string,\n active: PropTypes.bool,\n multiColumn: PropTypes.bool,\n extraButton: PropTypes.node,\n showBackButton: PropTypes.bool,\n children: PropTypes.node,\n pinned: PropTypes.bool,\n onPin: PropTypes.func,\n onMove: PropTypes.func,\n onClick: PropTypes.func,\n };\n\n state = {\n collapsed: true,\n animating: false,\n };\n\n historyBack = () => {\n if (window.history && window.history.length === 1) {\n this.context.router.history.push('/');\n } else {\n this.context.router.history.goBack();\n }\n }\n\n handleToggleClick = (e) => {\n e.stopPropagation();\n this.setState({ collapsed: !this.state.collapsed, animating: true });\n }\n\n handleTitleClick = () => {\n this.props.onClick();\n }\n\n handleMoveLeft = () => {\n this.props.onMove(-1);\n }\n\n handleMoveRight = () => {\n this.props.onMove(1);\n }\n\n handleBackClick = () => {\n this.historyBack();\n }\n\n handleTransitionEnd = () => {\n this.setState({ animating: false });\n }\n\n handlePin = () => {\n if (!this.props.pinned) {\n this.historyBack();\n }\n this.props.onPin();\n }\n\n render () {\n const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage } } = this.props;\n const { collapsed, animating } = this.state;\n\n const wrapperClassName = classNames('column-header__wrapper', {\n 'active': active,\n });\n\n const buttonClassName = classNames('column-header', {\n 'active': active,\n });\n\n const collapsibleClassName = classNames('column-header__collapsible', {\n 'collapsed': collapsed,\n 'animating': animating,\n });\n\n const collapsibleButtonClassName = classNames('column-header__button', {\n 'active': !collapsed,\n });\n\n let extraContent, pinButton, moveButtons, backButton, collapseButton;\n\n if (children) {\n extraContent = (\n <div key='extra-content' className='column-header__collapsible__extra'>\n {children}\n </div>\n );\n }\n\n if (multiColumn && pinned) {\n pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><Icon id='times' /> <FormattedMessage id='column_header.unpin' defaultMessage='Unpin' /></button>;\n\n moveButtons = (\n <div key='move-buttons' className='column-header__setting-arrows'>\n <button title={formatMessage(messages.moveLeft)} aria-label={formatMessage(messages.moveLeft)} className='text-btn column-header__setting-btn' onClick={this.handleMoveLeft}><Icon id='chevron-left' /></button>\n <button title={formatMessage(messages.moveRight)} aria-label={formatMessage(messages.moveRight)} className='text-btn column-header__setting-btn' onClick={this.handleMoveRight}><Icon id='chevron-right' /></button>\n </div>\n );\n } else if (multiColumn) {\n pinButton = <button key='pin-button' className='text-btn column-header__setting-btn' onClick={this.handlePin}><Icon id='plus' /> <FormattedMessage id='column_header.pin' defaultMessage='Pin' /></button>;\n }\n\n if (!pinned && (multiColumn || showBackButton)) {\n backButton = (\n <button onClick={this.handleBackClick} className='column-header__back-button'>\n <Icon id='chevron-left' className='column-back-button__icon' fixedWidth />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </button>\n );\n }\n\n const collapsedContent = [\n extraContent,\n ];\n\n if (multiColumn) {\n collapsedContent.push(moveButtons);\n collapsedContent.push(pinButton);\n }\n\n if (children || multiColumn) {\n collapseButton = <button className={collapsibleButtonClassName} title={formatMessage(collapsed ? messages.show : messages.hide)} aria-label={formatMessage(collapsed ? messages.show : messages.hide)} aria-pressed={collapsed ? 'false' : 'true'} onClick={this.handleToggleClick}><Icon id='sliders' /></button>;\n }\n\n const hasTitle = icon && title;\n\n return (\n <div className={wrapperClassName}>\n <h1 className={buttonClassName}>\n {hasTitle && (\n <button onClick={this.handleTitleClick}>\n <Icon id={icon} fixedWidth className='column-header__icon' />\n {title}\n </button>\n )}\n\n {!hasTitle && backButton}\n\n <div className='column-header__buttons'>\n {hasTitle && backButton}\n {extraButton}\n {collapseButton}\n </div>\n </h1>\n\n <div className={collapsibleClassName} tabIndex={collapsed ? -1 : null} onTransitionEnd={this.handleTransitionEnd}>\n <div className='column-header__collapsible-inner'>\n {(!collapsed || animating) && collapsedContent}\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport detectPassiveEvents from 'detect-passive-events';\nimport { scrollTop } from 'flavours/glitch/util/scroll';\n\nexport default class Column extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n extraClasses: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n };\n\n scrollTop () {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n }\n\n setRef = c => {\n this.node = c;\n }\n\n componentDidMount () {\n this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n }\n\n componentWillUnmount () {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n render () {\n const { children, extraClasses, name, label } = this.props;\n\n return (\n <div role='region' aria-label={label} data-column={name} className={`column ${extraClasses || ''}`} ref={this.setRef}>\n {children}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport detectPassiveEvents from 'detect-passive-events';\nimport { scrollTop } from '../scroll';\n\nexport default class Column extends React.PureComponent {\n\n static propTypes = {\n children: PropTypes.node,\n label: PropTypes.string,\n };\n\n scrollTop () {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n handleWheel = () => {\n if (typeof this._interruptScrollAnimation !== 'function') {\n return;\n }\n\n this._interruptScrollAnimation();\n }\n\n setRef = c => {\n this.node = c;\n }\n\n componentDidMount () {\n this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n }\n\n componentWillUnmount () {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n render () {\n const { label, children } = this.props;\n\n return (\n <div role='region' aria-label={label} className='column' ref={this.setRef}>\n {children}\n </div>\n );\n }\n\n}\n","// Borrowed from:\n// https://github.com/lodash/lodash/blob/master/lodash.js\n// https://github.com/mathiasbynens/regenerate\n// https://mathiasbynens.be/notes/javascript-unicode\nmodule.exports = /\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g;\n","/**\n * ISC License\n *\n * Copyright (c) 2018, Aleck Greenham\n *\n * Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport PropTypes from\"prop-types\";import React,{Component,PureComponent}from\"react\";import isEqual from\"lodash.isequal\";import ReactDOM from\"react-dom\";import isBool from\"lodash.isboolean\";import isObject from\"lodash.isobject\";var classCallCheck=function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")},createClass=function(){function e(e,t){for(var o=0;o<t.length;o++){var n=t[o];n.enumerable=n.enumerable||!1,n.configurable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e},inherits=function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function, not \"+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},objectWithoutProperties=function(e,t){var o={};for(var n in e)t.indexOf(n)>=0||Object.prototype.hasOwnProperty.call(e,n)&&(o[n]=e[n]);return o},possibleConstructorReturn=function(e,t){if(!e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return!t||\"object\"!=typeof t&&\"function\"!=typeof t?e:t},FocusTrap=function(e){function t(){return classCallCheck(this,t),possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return inherits(t,Component),createClass(t,[{key:\"render\",value:function(){var e=this.props,t=e.component,o=e.children,n=objectWithoutProperties(e,[\"component\",\"children\"]);return React.createElement(t,_extends({tabIndex:\"-1\"},n),o)}}]),t}();function sequencesFromKeyMap(e,t){var o=e[t];return o?Array.isArray(o)?o:[o]:[t]}function hasChanged(e,t){return!isEqual(e,t)}FocusTrap.propTypes={onFocus:PropTypes.func,onBlur:PropTypes.func,component:PropTypes.oneOfType([PropTypes.func,PropTypes.string]),children:PropTypes.node},FocusTrap.defaultProps={component:\"div\"};var HotKeys=function(e){function t(e,o){classCallCheck(this,t);var n=possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,o));return n.onFocus=n.onFocus.bind(n),n.onBlur=n.onBlur.bind(n),n}return inherits(t,Component),createClass(t,[{key:\"getChildContext\",value:function(){return{hotKeyParent:this,hotKeyMap:this.__hotKeyMap__}}},{key:\"componentWillMount\",value:function(){this.updateMap()}},{key:\"updateMap\",value:function(){var e=this.buildMap();return!isEqual(e,this.__hotKeyMap__)&&(this.__hotKeyMap__=e,!0)}},{key:\"buildMap\",value:function(){var e=this.context.hotKeyMap||{},t=this.props.keyMap||{};return _extends({},e,t)}},{key:\"getMap\",value:function(){return this.__hotKeyMap__}},{key:\"componentDidMount\",value:function(){var e=require(\"mousetrap\");this.__mousetrap__=new e(this.props.attach||ReactDOM.findDOMNode(this)),this.updateHotKeys(!0)}},{key:\"componentDidUpdate\",value:function(e){this.updateHotKeys(!1,e)}},{key:\"componentWillUnmount\",value:function(){this.context.hotKeyParent&&this.context.hotKeyParent.childHandledSequence(null),this.__mousetrap__&&this.__mousetrap__.reset()}},{key:\"updateHotKeys\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=this.props.handlers,n=void 0===o?{}:o,r=t.handlers,s=void 0===r?n:r,a=this.updateMap();(e||a||hasChanged(n,s))&&(this.context.hotKeyParent&&this.context.hotKeyParent.childHandledSequence(null),this.syncHandlersToMousetrap())}},{key:\"syncHandlersToMousetrap\",value:function(){var e=this,t=this.props.handlers,o=void 0===t?{}:t,n=this.getMap(),r=[],s=this.__mousetrap__;Object.keys(o).forEach(function(t){var s=o[t];sequencesFromKeyMap(n,t).forEach(function(t){var o=void 0;isObject(t)&&(o=t.action,t=t.sequence),r.push({callback:function(t,o){if((isBool(e.props.focused)?e.props.focused:e.__isFocused__)&&o!==e.__lastChildSequence__)return e.context.hotKeyParent&&e.context.hotKeyParent.childHandledSequence(o),s(t,o)},action:o,sequence:t})})}),s.reset(),r.forEach(function(e){var t=e.sequence,o=e.callback,n=e.action;return s.bind(t,o,n)})}},{key:\"childHandledSequence\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;this.__lastChildSequence__=e,this.context.hotKeyParent&&this.context.hotKeyParent.childHandledSequence(e)}},{key:\"render\",value:function(){var e=this.props,t=(e.keyMap,e.handlers,e.focused,e.attach,e.children),o=objectWithoutProperties(e,[\"keyMap\",\"handlers\",\"focused\",\"attach\",\"children\"]);return React.createElement(FocusTrap,_extends({},o,{onFocus:this.onFocus,onBlur:this.onBlur}),t)}},{key:\"onFocus\",value:function(){var e;(this.__isFocused__=!0,this.props.onFocus)&&(e=this.props).onFocus.apply(e,arguments)}},{key:\"onBlur\",value:function(){var e;(this.__isFocused__=!1,this.props.onBlur)&&(e=this.props).onBlur.apply(e,arguments);this.context.hotKeyParent&&this.context.hotKeyParent.childHandledSequence(null)}}]),t}();HotKeys.propTypes={keyMap:PropTypes.object,handlers:PropTypes.object,focused:PropTypes.bool,attach:PropTypes.any,children:PropTypes.node,onFocus:PropTypes.func,onBlur:PropTypes.func},HotKeys.childContextTypes={hotKeyParent:PropTypes.any,hotKeyMap:PropTypes.object},HotKeys.contextTypes={hotKeyParent:PropTypes.any,hotKeyMap:PropTypes.object};var withHotKeys=function(e){return function(t){return function(o){function n(e){classCallCheck(this,n);var t=possibleConstructorReturn(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));return t._setRef=t._setRef.bind(t),t.state={handlers:{}},t}return inherits(n,PureComponent),createClass(n,[{key:\"componentDidMount\",value:function(){this.setState({handlers:this._ref.hotKeyHandlers})}},{key:\"_setRef\",value:function(e){this._ref=e}},{key:\"render\",value:function(){var o=this.state.handlers;return React.createElement(HotKeys,{component:\"document-fragment\",keyMap:e,handlers:o},React.createElement(t,_extends({ref:this._setRef},this.props)))}}]),n}()}};function HotKeyMapMixin(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{contextTypes:{hotKeyMap:PropTypes.object},childContextTypes:{hotKeyMap:PropTypes.object},getChildContext:function(){return{hotKeyMap:this.__hotKeyMap__}},componentWillMount:function(){this.updateMap()},updateMap:function(){var e=this.buildMap();return!isEqual(e,this.__hotKeyMap__)&&(this.__hotKeyMap__=e,!0)},buildMap:function(){var t=this.context.hotKeyMap||{},o=this.props.keyMap||{};return _extends({},t,e,o)},getMap:function(){return this.__hotKeyMap__}}}export{HotKeys,withHotKeys,FocusTrap,HotKeyMapMixin};\n","/*global define:false */\n/**\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.2\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\n }\n\n /**\n * mapping of special keycodes to their corresponding keys\n *\n * everything in this dictionary cannot use keypress events\n * so it has to be here to map to the correct keycodes for\n * keyup/keydown events\n *\n * @type {Object}\n */\n var _MAP = {\n 8: 'backspace',\n 9: 'tab',\n 13: 'enter',\n 16: 'shift',\n 17: 'ctrl',\n 18: 'alt',\n 20: 'capslock',\n 27: 'esc',\n 32: 'space',\n 33: 'pageup',\n 34: 'pagedown',\n 35: 'end',\n 36: 'home',\n 37: 'left',\n 38: 'up',\n 39: 'right',\n 40: 'down',\n 45: 'ins',\n 46: 'del',\n 91: 'meta',\n 93: 'meta',\n 224: 'meta'\n };\n\n /**\n * mapping for special characters so they can support\n *\n * this dictionary is only used incase you want to bind a\n * keyup or keydown event to one of these keys\n *\n * @type {Object}\n */\n var _KEYCODE_MAP = {\n 106: '*',\n 107: '+',\n 109: '-',\n 110: '.',\n 111 : '/',\n 186: ';',\n 187: '=',\n 188: ',',\n 189: '-',\n 190: '.',\n 191: '/',\n 192: '`',\n 219: '[',\n 220: '\\\\',\n 221: ']',\n 222: '\\''\n };\n\n /**\n * this is a mapping of keys that require shift on a US keypad\n * back to the non shift equivelents\n *\n * this is so you can use keyup events with these keys\n *\n * note that this will only work reliably on US keyboards\n *\n * @type {Object}\n */\n var _SHIFT_MAP = {\n '~': '`',\n '!': '1',\n '@': '2',\n '#': '3',\n '$': '4',\n '%': '5',\n '^': '6',\n '&': '7',\n '*': '8',\n '(': '9',\n ')': '0',\n '_': '-',\n '+': '=',\n ':': ';',\n '\\\"': '\\'',\n '<': ',',\n '>': '.',\n '?': '/',\n '|': '\\\\'\n };\n\n /**\n * this is a list of special strings you can use to map\n * to modifier keys when you specify your keyboard shortcuts\n *\n * @type {Object}\n */\n var _SPECIAL_ALIASES = {\n 'option': 'alt',\n 'command': 'meta',\n 'return': 'enter',\n 'escape': 'esc',\n 'plus': '+',\n 'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n };\n\n /**\n * variable to store the flipped version of _MAP from above\n * needed to check if we should use keypress or not when no action\n * is specified\n *\n * @type {Object|undefined}\n */\n var _REVERSE_MAP;\n\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n\n /**\n * loop through to map numbers on the numeric keypad\n */\n for (i = 0; i <= 9; ++i) {\n\n // This needs to use a string cause otherwise since 0 is falsey\n // mousetrap will never fire for numpad 0 pressed as part of a keydown\n // event.\n //\n // @see https://github.com/ccampbell/mousetrap/pull/258\n _MAP[i + 96] = i.toString();\n }\n\n /**\n * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n function _addEvent(object, type, callback) {\n if (object.addEventListener) {\n object.addEventListener(type, callback, false);\n return;\n }\n\n object.attachEvent('on' + type, callback);\n }\n\n /**\n * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n function _characterFromEvent(e) {\n\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which);\n\n // if the shift key is not pressed then it is safe to assume\n // that we want the character to be lowercase. this means if\n // you accidentally have caps lock on then your key bindings\n // will continue to work\n //\n // the only side effect that might not be desired is if you\n // bind something like 'A' cause you want to trigger an\n // event when capital A is pressed caps lock will no longer\n // trigger the event. shift+a will though.\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n }\n\n // for non keypress events the special maps are needed\n if (_MAP[e.which]) {\n return _MAP[e.which];\n }\n\n if (_KEYCODE_MAP[e.which]) {\n return _KEYCODE_MAP[e.which];\n }\n\n // if it is not in the special map\n\n // with keydown and keyup events the character seems to always\n // come in as an uppercase character whether you are pressing shift\n // or not. we should make sure it is always lowercase for comparisons\n return String.fromCharCode(e.which).toLowerCase();\n }\n\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n function _eventModifiers(e) {\n var modifiers = [];\n\n if (e.shiftKey) {\n modifiers.push('shift');\n }\n\n if (e.altKey) {\n modifiers.push('alt');\n }\n\n if (e.ctrlKey) {\n modifiers.push('ctrl');\n }\n\n if (e.metaKey) {\n modifiers.push('meta');\n }\n\n return modifiers;\n }\n\n /**\n * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n }\n\n /**\n * reverses the map lookup so that we can look for specific keys\n * to see what can and can't use keypress\n *\n * @return {Object}\n */\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n for (var key in _MAP) {\n\n // pull out the numeric keypad from here cause keypress should\n // be able to detect the keys from the character\n if (key > 95 && key < 112) {\n continue;\n }\n\n if (_MAP.hasOwnProperty(key)) {\n _REVERSE_MAP[_MAP[key]] = key;\n }\n }\n }\n return _REVERSE_MAP;\n }\n\n /**\n * picks the best action based on the key combination\n *\n * @param {string} key - character for key\n * @param {Array} modifiers\n * @param {string=} action passed in\n */\n function _pickBestAction(key, modifiers, action) {\n\n // if no action was picked in we should try to pick the one\n // that we think would work best for this key\n if (!action) {\n action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n }\n\n // modifier keys don't work as expected with keypress,\n // switch to keydown\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\n }\n\n /**\n * Converts from a string key combination to an array\n *\n * @param {string} combination like \"command+shift+l\"\n * @return {Array}\n */\n function _keysFromString(combination) {\n if (combination === '+') {\n return ['+'];\n }\n\n combination = combination.replace(/\\+{2}/g, '+plus');\n return combination.split('+');\n }\n\n /**\n * Gets info for a specific key combination\n *\n * @param {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n * @param {string=} action\n * @returns {Object}\n */\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = [];\n\n // take the keys from this pattern and figure out what the actual\n // pattern is all about\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n\n // normalize key names\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\n }\n\n // if this is not a keypress event then we should\n // be smart about using shift keys\n // this will only work for US keyboards however\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n }\n\n // if this key is a modifier then add it to the list of modifiers\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n }\n\n // depending on what the key combination is\n // we will try to pick the best event for it\n action = _pickBestAction(key, modifiers, action);\n\n return {\n key: key,\n modifiers: modifiers,\n action: action\n };\n }\n\n function _belongsTo(element, ancestor) {\n if (element === null || element === document) {\n return false;\n }\n\n if (element === ancestor) {\n return true;\n }\n\n return _belongsTo(element.parentNode, ancestor);\n }\n\n function Mousetrap(targetElement) {\n var self = this;\n\n targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n self.target = targetElement;\n\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n self._callbacks = {};\n\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n self._directMap = {};\n\n /**\n * keeps track of what level each sequence is at since multiple\n * sequences can start out with the same sequence\n *\n * @type {Object}\n */\n var _sequenceLevels = {};\n\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n var _resetTimer;\n\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n var _ignoreNextKeyup = false;\n\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n var _ignoreNextKeypress = false;\n\n /**\n * are we currently inside of a sequence?\n * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n *\n * @type {boolean|string}\n */\n var _nextExpectedAction = false;\n\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\n }\n }\n\n /**\n * finds all callbacks that match based on the keycode, modifiers,\n * and action\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event|Object} e\n * @param {string=} sequenceName - name of the sequence we are looking for\n * @param {string=} combination\n * @param {number=} level\n * @returns {Array}\n */\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type;\n\n // if there are no events related to this keycode\n if (!self._callbacks[character]) {\n return [];\n }\n\n // if a modifier key is coming up on its own we should allow it\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n }\n\n // loop through all callbacks for the key that was pressed\n // and see if any of them match\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i];\n\n // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n }\n\n // if the action we are looking for doesn't match the action we got\n // then we should keep going\n if (action != callback.action) {\n continue;\n }\n\n // if this is a keypress event and the meta key and control key\n // are not pressed that means that we need to only look at the\n // character, otherwise check the modifiers as well\n //\n // chrome will not fire a keypress if meta or control is down\n // safari will fire a keypress if meta or meta+shift is down\n // firefox will fire a keypress if meta or control is down\n if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n // when you bind a combination or sequence a second time it\n // should overwrite the first one. if a sequenceName or\n // combination is specified in this call it does just that\n //\n // @todo make deleting its own method?\n var deleteCombo = !sequenceName && callback.combo == combination;\n var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n if (deleteCombo || deleteSequence) {\n self._callbacks[character].splice(i, 1);\n }\n\n matches.push(callback);\n }\n }\n\n return matches;\n }\n\n /**\n * actually calls the callback function\n *\n * if your callback function returns false this will use the jquery\n * convention - prevent default and stop propogation on the event\n *\n * @param {Function} callback\n * @param {Event} e\n * @returns void\n */\n function _fireCallback(callback, e, combo, sequence) {\n\n // if this event should not happen stop here\n if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n return;\n }\n\n if (callback(e, combo) === false) {\n _preventDefault(e);\n _stopPropagation(e);\n }\n }\n\n /**\n * handles a character key event\n *\n * @param {string} character\n * @param {Array} modifiers\n * @param {Event} e\n * @returns void\n */\n self._handleKey = function(character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false;\n\n // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n }\n\n // loop through matching callbacks for this key event\n for (i = 0; i < callbacks.length; ++i) {\n\n // fire for all sequence callbacks\n // this is because if for example you have multiple sequences\n // bound such as \"g i\" and \"g t\" they both need to fire the\n // callback for matching g cause otherwise you can only ever\n // match the first one\n if (callbacks[i].seq) {\n\n // only fire callbacks for the maxLevel to prevent\n // subsequences from also firing\n //\n // for example 'a option b' should not cause 'option b' to fire\n // even though 'option b' is part of the other sequence\n //\n // any sequences that do not match here will be discarded\n // below by the _resetSequences call\n if (callbacks[i].level != maxLevel) {\n continue;\n }\n\n processedSequenceCallback = true;\n\n // keep a list of which sequences were matches for later\n doNotReset[callbacks[i].seq] = 1;\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n continue;\n }\n\n // if there were no sequence matches but we are still here\n // that means this is a regular match so we should fire that\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n }\n }\n\n // if the key you pressed matches the type of sequence without\n // being a modifier (ie \"keyup\" or \"keypress\") then we should\n // reset all sequences that were not matched by this event\n //\n // this is so, for example, if you have the sequence \"h a t\" and you\n // type \"h e a r t\" it does not match. in this case the \"e\" will\n // cause the sequence to reset\n //\n // modifier keys are ignored because you can have a sequence\n // that contains modifiers such as \"enter ctrl+space\" and in most\n // cases the modifier key will be pressed before the next key\n //\n // also if you have a sequence such as \"ctrl+b a\" then pressing the\n // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n //\n // the \"keydown\" is expected when there is a modifier, but the\n // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n // after and that causes the sequence to reset\n //\n // we ignore keypresses in a sequence that directly follow a keydown\n // for the same character\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n function _handleKeyEvent(e) {\n\n // normalize e.which for key events\n // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n if (typeof e.which !== 'number') {\n e.which = e.keyCode;\n }\n\n var character = _characterFromEvent(e);\n\n // no character found then stop\n if (!character) {\n return;\n }\n\n // need to use === for the character check because the character can be 0\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\n }\n\n /**\n * called to set a 1 second timeout on the specified sequence\n *\n * this is so after each key press in the sequence you have 1 second\n * to press the next key before you have to start over\n *\n * @returns void\n */\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\n }\n\n /**\n * binds a key sequence to an event\n *\n * @param {string} combo - combo specified in bind call\n * @param {Array} keys\n * @param {Function} callback\n * @param {string=} action\n * @returns void\n */\n function _bindSequence(combo, keys, callback, action) {\n\n // start off by adding a sequence level record for this combination\n // and setting the level to 0\n _sequenceLevels[combo] = 0;\n\n /**\n * callback to increase the sequence level for this sequence and reset\n * all other sequences that were active\n *\n * @param {string} nextAction\n * @returns {Function}\n */\n function _increaseSequence(nextAction) {\n return function() {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n _resetSequenceTimer();\n };\n }\n\n /**\n * wraps the specified callback inside of another function in order\n * to reset all sequence counters as soon as this sequence is done\n *\n * @param {Event} e\n * @returns void\n */\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo);\n\n // we should ignore the next key up if the action is key down\n // or keypress. this is so if you finish a sequence and\n // release the key the final key will not trigger a keyup\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n }\n\n // weird race condition if a sequence ends with the key\n // another sequence begins with\n setTimeout(_resetSequences, 10);\n }\n\n // loop through keys one at a time and bind the appropriate callback\n // function. for any key leading up to the final one it should\n // increase the sequence. after the final, it should reset all sequences\n //\n // if an action is specified in the original bind call then that will\n // be used throughout. otherwise we will pass the action that the\n // next key in the sequence should match. this allows a sequence\n // to mix and match keypress and keydown events depending on which\n // ones are better suited to the key provided\n for (var i = 0; i < keys.length; ++i) {\n var isFinal = i + 1 === keys.length;\n var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\n }\n }\n\n /**\n * binds a single keyboard combination\n *\n * @param {string} combination\n * @param {Function} callback\n * @param {string=} action\n * @param {string=} sequenceName - name of sequence if part of sequence\n * @param {number=} level - what part of the sequence the command is\n * @returns void\n */\n function _bindSingle(combination, callback, action, sequenceName, level) {\n\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback;\n\n // make sure multiple spaces in a row become a single space\n combination = combination.replace(/\\s+/g, ' ');\n\n var sequence = combination.split(' ');\n var info;\n\n // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n return;\n }\n\n info = _getKeyInfo(combination, action);\n\n // make sure to initialize array if this is the first time\n // a callback is added for this key\n self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n // remove an existing match if there is one\n _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n // add this call back to the array\n // if it is a sequence put it at the beginning\n // if not put it at the end\n //\n // this is important because the way these are processed expects\n // the sequence ones to come first\n self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n callback: callback,\n modifiers: info.modifiers,\n action: info.action,\n seq: sequenceName,\n level: level,\n combo: combination\n });\n }\n\n /**\n * binds multiple combinations to the same callback\n *\n * @param {Array} combinations\n * @param {Function} callback\n * @param {string|undefined} action\n * @returns void\n */\n self._bindMultiple = function(combinations, callback, action) {\n for (var i = 0; i < combinations.length; ++i) {\n _bindSingle(combinations[i], callback, action);\n }\n };\n\n // start!\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\n }\n\n /**\n * binds an event to mousetrap\n *\n * can be a single key, a combination of keys separated with +,\n * an array of keys, or a sequence of keys separated by spaces\n *\n * be sure to list the modifier keys first to make sure that the\n * correct key ends up getting bound (the last key in the pattern)\n *\n * @param {string|Array} keys\n * @param {Function} callback\n * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n * @returns void\n */\n Mousetrap.prototype.bind = function(keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n self._bindMultiple.call(self, keys, callback, action);\n return self;\n };\n\n /**\n * unbinds an event to mousetrap\n *\n * the unbinding sets the callback function of the specified key combo\n * to an empty function and deletes the corresponding key in the\n * _directMap dict.\n *\n * TODO: actually remove this from the _callbacks dictionary instead\n * of binding an empty function\n *\n * the keycombo+action has to be exactly the same as\n * it was defined in the bind method\n *\n * @param {string|Array} keys\n * @param {string} action\n * @returns void\n */\n Mousetrap.prototype.unbind = function(keys, action) {\n var self = this;\n return self.bind.call(self, keys, function() {}, action);\n };\n\n /**\n * triggers an event that has already been bound\n *\n * @param {string} keys\n * @param {string=} action\n * @returns void\n */\n Mousetrap.prototype.trigger = function(keys, action) {\n var self = this;\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n return self;\n };\n\n /**\n * resets the library back to its initial state. this is useful\n * if you want to clear out the current keyboard shortcuts and bind\n * new ones - for example if you switch to another page\n *\n * @returns void\n */\n Mousetrap.prototype.reset = function() {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\n };\n\n /**\n * should we stop this event before firing off callbacks\n *\n * @param {Event} e\n * @param {Element} element\n * @return {boolean}\n */\n Mousetrap.prototype.stopCallback = function(e, element) {\n var self = this;\n\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n }\n\n // stop for input, select, and textarea\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n Mousetrap.prototype.handleKey = function() {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n\n /**\n * allow custom key mappings\n */\n Mousetrap.addKeycodes = function(object) {\n for (var key in object) {\n if (object.hasOwnProperty(key)) {\n _MAP[key] = object[key];\n }\n }\n _REVERSE_MAP = null;\n };\n\n /**\n * Init the global mousetrap functions\n *\n * This method is needed to allow the global mousetrap functions to work\n * now that mousetrap is a constructor function.\n */\n Mousetrap.init = function() {\n var documentMousetrap = Mousetrap(document);\n for (var method in documentMousetrap) {\n if (method.charAt(0) !== '_') {\n Mousetrap[method] = (function(method) {\n return function() {\n return documentMousetrap[method].apply(documentMousetrap, arguments);\n };\n } (method));\n }\n }\n };\n\n Mousetrap.init();\n\n // expose mousetrap to the global object\n window.Mousetrap = Mousetrap;\n\n // expose as a common js module\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n }\n\n // expose mousetrap as an AMD module\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return Mousetrap;\n });\n }\n}) (typeof window !== 'undefined' ? window : null, typeof window !== 'undefined' ? document : null);\n","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"./inDOM\"));\n\nvar vendors = ['', 'webkit', 'moz', 'o', 'ms'];\nvar cancel = 'clearTimeout';\nvar raf = fallback;\nvar compatRaf;\n\nvar getKey = function getKey(vendor, k) {\n return vendor + (!vendor ? k : k[0].toUpperCase() + k.substr(1)) + 'AnimationFrame';\n};\n\nif (_inDOM.default) {\n vendors.some(function (vendor) {\n var rafKey = getKey(vendor, 'request');\n\n if (rafKey in window) {\n cancel = getKey(vendor, 'cancel');\n return raf = function raf(cb) {\n return window[rafKey](cb);\n };\n }\n });\n}\n/* https://github.com/component/raf */\n\n\nvar prev = new Date().getTime();\n\nfunction fallback(fn) {\n var curr = new Date().getTime(),\n ms = Math.max(0, 16 - (curr - prev)),\n req = setTimeout(fn, ms);\n prev = curr;\n return req;\n}\n\ncompatRaf = function compatRaf(cb) {\n return raf(cb);\n};\n\ncompatRaf.cancel = function (id) {\n window[cancel] && typeof window[cancel] === 'function' && window[cancel](id);\n};\n\nvar _default = compatRaf;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.isMobileSafari = isMobileSafari;\nfunction isMobileSafari() {\n return (/iPad|iPhone|iPod/.test(window.navigator.platform) && /^((?!CriOS).)*Safari/.test(window.navigator.userAgent)\n );\n}","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar Backoff = require('./lib/backoff');\nvar ExponentialBackoffStrategy = require('./lib/strategy/exponential');\nvar FibonacciBackoffStrategy = require('./lib/strategy/fibonacci');\nvar FunctionCall = require('./lib/function_call.js');\n\nmodule.exports.Backoff = Backoff;\nmodule.exports.FunctionCall = FunctionCall;\nmodule.exports.FibonacciStrategy = FibonacciBackoffStrategy;\nmodule.exports.ExponentialStrategy = ExponentialBackoffStrategy;\n\n// Constructs a Fibonacci backoff.\nmodule.exports.fibonacci = function(options) {\n return new Backoff(new FibonacciBackoffStrategy(options));\n};\n\n// Constructs an exponential backoff.\nmodule.exports.exponential = function(options) {\n return new Backoff(new ExponentialBackoffStrategy(options));\n};\n\n// Constructs a FunctionCall for the given function and arguments.\nmodule.exports.call = function(fn, vargs, callback) {\n var args = Array.prototype.slice.call(arguments);\n fn = args[0];\n vargs = args.slice(1, args.length - 1);\n callback = args[args.length - 1];\n return new FunctionCall(fn, vargs, callback);\n};\n","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = require('util');\n\nvar errors = module.exports = require('./errors');\n\nfunction failCheck(ExceptionConstructor, callee, messageFormat, formatArgs) {\n messageFormat = messageFormat || '';\n var message = util.format.apply(this, [messageFormat].concat(formatArgs));\n var error = new ExceptionConstructor(message);\n Error.captureStackTrace(error, callee);\n throw error;\n}\n\nfunction failArgumentCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalArgumentError, callee, message, formatArgs);\n}\n\nfunction failStateCheck(callee, message, formatArgs) {\n failCheck(errors.IllegalStateError, callee, message, formatArgs);\n}\n\nmodule.exports.checkArgument = function(value, message) {\n if (!value) {\n failArgumentCheck(arguments.callee, message,\n Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkState = function(value, message) {\n if (!value) {\n failStateCheck(arguments.callee, message,\n Array.prototype.slice.call(arguments, 2));\n }\n};\n\nmodule.exports.checkIsDef = function(value, message) {\n if (value !== undefined) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected value to be defined but was undefined.',\n Array.prototype.slice.call(arguments, 2));\n};\n\nmodule.exports.checkIsDefAndNotNull = function(value, message) {\n // Note that undefined == null.\n if (value != null) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected value to be defined and not null but got \"' +\n typeOf(value) + '\".', Array.prototype.slice.call(arguments, 2));\n};\n\n// Fixed version of the typeOf operator which returns 'null' for null values\n// and 'array' for arrays.\nfunction typeOf(value) {\n var s = typeof value;\n if (s == 'object') {\n if (!value) {\n return 'null';\n } else if (value instanceof Array) {\n return 'array';\n }\n }\n return s;\n}\n\nfunction typeCheck(expect) {\n return function(value, message) {\n var type = typeOf(value);\n\n if (type == expect) {\n return value;\n }\n\n failArgumentCheck(arguments.callee, message ||\n 'Expected \"' + expect + '\" but got \"' + type + '\".',\n Array.prototype.slice.call(arguments, 2));\n };\n}\n\nmodule.exports.checkIsString = typeCheck('string');\nmodule.exports.checkIsArray = typeCheck('array');\nmodule.exports.checkIsNumber = typeCheck('number');\nmodule.exports.checkIsBoolean = typeCheck('boolean');\nmodule.exports.checkIsFunction = typeCheck('function');\nmodule.exports.checkIsObject = typeCheck('object');\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","/*\n * Copyright (c) 2012 Mathieu Turcotte\n * Licensed under the MIT license.\n */\n\nvar util = require('util');\n\nfunction IllegalArgumentError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalArgumentError, Error);\n\nIllegalArgumentError.prototype.name = 'IllegalArgumentError';\n\nfunction IllegalStateError(message) {\n Error.call(this, message);\n this.message = message;\n}\nutil.inherits(IllegalStateError, Error);\n\nIllegalStateError.prototype.name = 'IllegalStateError';\n\nmodule.exports.IllegalStateError = IllegalStateError;\nmodule.exports.IllegalArgumentError = IllegalArgumentError;","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar util = require('util');\nvar precond = require('precond');\n\nvar BackoffStrategy = require('./strategy');\n\n// Exponential backoff strategy.\nfunction ExponentialBackoffStrategy(options) {\n BackoffStrategy.call(this, options);\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n this.factor_ = ExponentialBackoffStrategy.DEFAULT_FACTOR;\n\n if (options && options.factor !== undefined) {\n precond.checkArgument(options.factor > 1,\n 'Exponential factor should be greater than 1 but got %s.',\n options.factor);\n this.factor_ = options.factor;\n }\n}\nutil.inherits(ExponentialBackoffStrategy, BackoffStrategy);\n\n// Default multiplication factor used to compute the next backoff delay from\n// the current one. The value can be overridden by passing a custom factor as\n// part of the options.\nExponentialBackoffStrategy.DEFAULT_FACTOR = 2;\n\nExponentialBackoffStrategy.prototype.next_ = function() {\n this.backoffDelay_ = Math.min(this.nextBackoffDelay_, this.getMaxDelay());\n this.nextBackoffDelay_ = this.backoffDelay_ * this.factor_;\n return this.backoffDelay_;\n};\n\nExponentialBackoffStrategy.prototype.reset_ = function() {\n this.backoffDelay_ = 0;\n this.nextBackoffDelay_ = this.getInitialDelay();\n};\n\nmodule.exports = ExponentialBackoffStrategy;\n","// Copyright (c) 2012 Mathieu Turcotte\n// Licensed under the MIT license.\n\nvar events = require('events');\nvar precond = require('precond');\nvar util = require('util');\n\nvar Backoff = require('./backoff');\nvar FibonacciBackoffStrategy = require('./strategy/fibonacci');\n\n// Wraps a function to be called in a backoff loop.\nfunction FunctionCall(fn, args, callback) {\n events.EventEmitter.call(this);\n\n precond.checkIsFunction(fn, 'Expected fn to be a function.');\n precond.checkIsArray(args, 'Expected args to be an array.');\n precond.checkIsFunction(callback, 'Expected callback to be a function.');\n\n this.function_ = fn;\n this.arguments_ = args;\n this.callback_ = callback;\n this.lastResult_ = [];\n this.numRetries_ = 0;\n\n this.backoff_ = null;\n this.strategy_ = null;\n this.failAfter_ = -1;\n this.retryPredicate_ = FunctionCall.DEFAULT_RETRY_PREDICATE_;\n\n this.state_ = FunctionCall.State_.PENDING;\n}\nutil.inherits(FunctionCall, events.EventEmitter);\n\n// States in which the call can be.\nFunctionCall.State_ = {\n // Call isn't started yet.\n PENDING: 0,\n // Call is in progress.\n RUNNING: 1,\n // Call completed successfully which means that either the wrapped function\n // returned successfully or the maximal number of backoffs was reached.\n COMPLETED: 2,\n // The call was aborted.\n ABORTED: 3\n};\n\n// The default retry predicate which considers any error as retriable.\nFunctionCall.DEFAULT_RETRY_PREDICATE_ = function(err) {\n return true;\n};\n\n// Checks whether the call is pending.\nFunctionCall.prototype.isPending = function() {\n return this.state_ == FunctionCall.State_.PENDING;\n};\n\n// Checks whether the call is in progress.\nFunctionCall.prototype.isRunning = function() {\n return this.state_ == FunctionCall.State_.RUNNING;\n};\n\n// Checks whether the call is completed.\nFunctionCall.prototype.isCompleted = function() {\n return this.state_ == FunctionCall.State_.COMPLETED;\n};\n\n// Checks whether the call is aborted.\nFunctionCall.prototype.isAborted = function() {\n return this.state_ == FunctionCall.State_.ABORTED;\n};\n\n// Sets the backoff strategy to use. Can only be called before the call is\n// started otherwise an exception will be thrown.\nFunctionCall.prototype.setStrategy = function(strategy) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.strategy_ = strategy;\n return this; // Return this for chaining.\n};\n\n// Sets the predicate which will be used to determine whether the errors\n// returned from the wrapped function should be retried or not, e.g. a\n// network error would be retriable while a type error would stop the\n// function call.\nFunctionCall.prototype.retryIf = function(retryPredicate) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.retryPredicate_ = retryPredicate;\n return this;\n};\n\n// Returns all intermediary results returned by the wrapped function since\n// the initial call.\nFunctionCall.prototype.getLastResult = function() {\n return this.lastResult_.concat();\n};\n\n// Returns the number of times the wrapped function call was retried.\nFunctionCall.prototype.getNumRetries = function() {\n return this.numRetries_;\n};\n\n// Sets the backoff limit.\nFunctionCall.prototype.failAfter = function(maxNumberOfRetry) {\n precond.checkState(this.isPending(), 'FunctionCall in progress.');\n this.failAfter_ = maxNumberOfRetry;\n return this; // Return this for chaining.\n};\n\n// Aborts the call.\nFunctionCall.prototype.abort = function() {\n if (this.isCompleted() || this.isAborted()) {\n return;\n }\n\n if (this.isRunning()) {\n this.backoff_.reset();\n }\n\n this.state_ = FunctionCall.State_.ABORTED;\n this.lastResult_ = [new Error('Backoff aborted.')];\n this.emit('abort');\n this.doCallback_();\n};\n\n// Initiates the call to the wrapped function. Accepts an optional factory\n// function used to create the backoff instance; used when testing.\nFunctionCall.prototype.start = function(backoffFactory) {\n precond.checkState(!this.isAborted(), 'FunctionCall is aborted.');\n precond.checkState(this.isPending(), 'FunctionCall already started.');\n\n var strategy = this.strategy_ || new FibonacciBackoffStrategy();\n\n this.backoff_ = backoffFactory ?\n backoffFactory(strategy) :\n new Backoff(strategy);\n\n this.backoff_.on('ready', this.doCall_.bind(this, true /* isRetry */));\n this.backoff_.on('fail', this.doCallback_.bind(this));\n this.backoff_.on('backoff', this.handleBackoff_.bind(this));\n\n if (this.failAfter_ > 0) {\n this.backoff_.failAfter(this.failAfter_);\n }\n\n this.state_ = FunctionCall.State_.RUNNING;\n this.doCall_(false /* isRetry */);\n};\n\n// Calls the wrapped function.\nFunctionCall.prototype.doCall_ = function(isRetry) {\n if (isRetry) {\n this.numRetries_++;\n }\n var eventArgs = ['call'].concat(this.arguments_);\n events.EventEmitter.prototype.emit.apply(this, eventArgs);\n var callback = this.handleFunctionCallback_.bind(this);\n this.function_.apply(null, this.arguments_.concat(callback));\n};\n\n// Calls the wrapped function's callback with the last result returned by the\n// wrapped function.\nFunctionCall.prototype.doCallback_ = function() {\n this.callback_.apply(null, this.lastResult_);\n};\n\n// Handles wrapped function's completion. This method acts as a replacement\n// for the original callback function.\nFunctionCall.prototype.handleFunctionCallback_ = function() {\n if (this.isAborted()) {\n return;\n }\n\n var args = Array.prototype.slice.call(arguments);\n this.lastResult_ = args; // Save last callback arguments.\n events.EventEmitter.prototype.emit.apply(this, ['callback'].concat(args));\n\n var err = args[0];\n if (err && this.retryPredicate_(err)) {\n this.backoff_.backoff(err);\n } else {\n this.state_ = FunctionCall.State_.COMPLETED;\n this.doCallback_();\n }\n};\n\n// Handles the backoff event by reemitting it.\nFunctionCall.prototype.handleBackoff_ = function(number, delay, err) {\n this.emit('backoff', number, delay, err);\n};\n\nmodule.exports = FunctionCall;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Immutable from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport punycode from 'punycode';\nimport classnames from 'classnames';\n\nconst IDNA_PREFIX = 'xn--';\n\nconst decodeIDNA = domain => {\n return domain\n .split('.')\n .map(part => part.indexOf(IDNA_PREFIX) === 0 ? punycode.decode(part.slice(IDNA_PREFIX.length)) : part)\n .join('.');\n};\n\nconst getHostname = url => {\n const parser = document.createElement('a');\n parser.href = url;\n return parser.hostname;\n};\n\nconst trim = (text, len) => {\n const cut = text.indexOf(' ', len);\n\n if (cut === -1) {\n return text;\n }\n\n return text.substring(0, cut) + (text.length > len ? '…' : '');\n};\n\nconst domParser = new DOMParser();\n\nconst addAutoPlay = html => {\n const document = domParser.parseFromString(html, 'text/html').documentElement;\n const iframe = document.querySelector('iframe');\n\n if (iframe) {\n if (iframe.src.indexOf('?') !== -1) {\n iframe.src += '&';\n } else {\n iframe.src += '?';\n }\n\n iframe.src += 'autoplay=1&auto_play=1';\n\n // DOM parser creates html/body elements around original HTML fragment,\n // so we need to get innerHTML out of the body and not the entire document\n return document.querySelector('body').innerHTML;\n }\n\n return html;\n};\n\nexport default class Card extends React.PureComponent {\n\n static propTypes = {\n card: ImmutablePropTypes.map,\n maxDescription: PropTypes.number,\n onOpenMedia: PropTypes.func.isRequired,\n compact: PropTypes.bool,\n defaultWidth: PropTypes.number,\n cacheWidth: PropTypes.func,\n };\n\n static defaultProps = {\n maxDescription: 50,\n compact: false,\n };\n\n state = {\n width: this.props.defaultWidth || 280,\n embedded: false,\n };\n\n componentWillReceiveProps (nextProps) {\n if (this.props.card !== nextProps.card) {\n this.setState({ embedded: false });\n }\n }\n\n handlePhotoClick = () => {\n const { card, onOpenMedia } = this.props;\n\n onOpenMedia(\n Immutable.fromJS([\n {\n type: 'image',\n url: card.get('embed_url'),\n description: card.get('title'),\n meta: {\n original: {\n width: card.get('width'),\n height: card.get('height'),\n },\n },\n },\n ]),\n 0\n );\n };\n\n handleEmbedClick = () => {\n const { card } = this.props;\n\n if (card.get('type') === 'photo') {\n this.handlePhotoClick();\n } else {\n this.setState({ embedded: true });\n }\n }\n\n setRef = c => {\n if (c) {\n if (this.props.cacheWidth) this.props.cacheWidth(c.offsetWidth);\n this.setState({ width: c.offsetWidth });\n }\n }\n\n renderVideo () {\n const { card } = this.props;\n const content = { __html: addAutoPlay(card.get('html')) };\n const { width } = this.state;\n const ratio = card.get('width') / card.get('height');\n const height = width / ratio;\n\n return (\n <div\n ref={this.setRef}\n className='status-card__image status-card-video'\n dangerouslySetInnerHTML={content}\n style={{ height }}\n />\n );\n }\n\n render () {\n const { card, maxDescription, compact, defaultWidth } = this.props;\n const { width, embedded } = this.state;\n\n if (card === null) {\n return null;\n }\n\n const provider = card.get('provider_name').length === 0 ? decodeIDNA(getHostname(card.get('url'))) : card.get('provider_name');\n const horizontal = (!compact && card.get('width') > card.get('height') && (card.get('width') + 100 >= width)) || card.get('type') !== 'link' || embedded;\n const interactive = card.get('type') !== 'link';\n const className = classnames('status-card', { horizontal, compact, interactive });\n const title = interactive ? <a className='status-card__title' href={card.get('url')} title={card.get('title')} rel='noopener' target='_blank'><strong>{card.get('title')}</strong></a> : <strong className='status-card__title' title={card.get('title')}>{card.get('title')}</strong>;\n const ratio = card.get('width') / card.get('height');\n const height = (compact && !embedded) ? (width / (16 / 9)) : (width / ratio);\n\n const description = (\n <div className='status-card__content'>\n {title}\n {!(horizontal || compact) && <p className='status-card__description'>{trim(card.get('description') || '', maxDescription)}</p>}\n <span className='status-card__host'>{provider}</span>\n </div>\n );\n\n let embed = '';\n let thumbnail = <div style={{ backgroundImage: `url(${card.get('image')})`, width: horizontal ? width : null, height: horizontal ? height : null }} className='status-card__image-image' />;\n\n if (interactive) {\n if (embedded) {\n embed = this.renderVideo();\n } else {\n let iconVariant = 'play';\n\n if (card.get('type') === 'photo') {\n iconVariant = 'search-plus';\n }\n\n embed = (\n <div className='status-card__image'>\n {thumbnail}\n\n <div className='status-card__actions'>\n <div>\n <button onClick={this.handleEmbedClick}><i className={`fa fa-${iconVariant}`} /></button>\n {horizontal && <a href={card.get('url')} target='_blank' rel='noopener'><i className='fa fa-external-link' /></a>}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className={className} ref={this.setRef}>\n {embed}\n {!compact && description}\n </div>\n );\n } else if (card.get('image')) {\n embed = (\n <div className='status-card__image'>\n {thumbnail}\n </div>\n );\n } else {\n embed = (\n <div className='status-card__image'>\n <i className='fa fa-file-text' />\n </div>\n );\n }\n\n return (\n <a href={card.get('url')} className={className} target='_blank' rel='noopener' ref={this.setRef}>\n {embed}\n {description}\n </a>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Immutable from 'immutable';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport punycode from 'punycode';\nimport classnames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nconst IDNA_PREFIX = 'xn--';\n\nconst decodeIDNA = domain => {\n return domain\n .split('.')\n .map(part => part.indexOf(IDNA_PREFIX) === 0 ? punycode.decode(part.slice(IDNA_PREFIX.length)) : part)\n .join('.');\n};\n\nconst getHostname = url => {\n const parser = document.createElement('a');\n parser.href = url;\n return parser.hostname;\n};\n\nconst trim = (text, len) => {\n const cut = text.indexOf(' ', len);\n\n if (cut === -1) {\n return text;\n }\n\n return text.substring(0, cut) + (text.length > len ? '…' : '');\n};\n\nconst domParser = new DOMParser();\n\nconst addAutoPlay = html => {\n const document = domParser.parseFromString(html, 'text/html').documentElement;\n const iframe = document.querySelector('iframe');\n\n if (iframe) {\n if (iframe.src.indexOf('?') !== -1) {\n iframe.src += '&';\n } else {\n iframe.src += '?';\n }\n\n iframe.src += 'autoplay=1&auto_play=1';\n\n // DOM parser creates html/body elements around original HTML fragment,\n // so we need to get innerHTML out of the body and not the entire document\n return document.querySelector('body').innerHTML;\n }\n\n return html;\n};\n\nexport default class Card extends React.PureComponent {\n\n static propTypes = {\n card: ImmutablePropTypes.map,\n maxDescription: PropTypes.number,\n onOpenMedia: PropTypes.func.isRequired,\n compact: PropTypes.bool,\n defaultWidth: PropTypes.number,\n cacheWidth: PropTypes.func,\n };\n\n static defaultProps = {\n maxDescription: 50,\n compact: false,\n };\n\n state = {\n width: this.props.defaultWidth || 280,\n embedded: false,\n };\n\n componentWillReceiveProps (nextProps) {\n if (!Immutable.is(this.props.card, nextProps.card)) {\n this.setState({ embedded: false });\n }\n }\n\n handlePhotoClick = () => {\n const { card, onOpenMedia } = this.props;\n\n onOpenMedia(\n Immutable.fromJS([\n {\n type: 'image',\n url: card.get('embed_url'),\n description: card.get('title'),\n meta: {\n original: {\n width: card.get('width'),\n height: card.get('height'),\n },\n },\n },\n ]),\n 0\n );\n };\n\n handleEmbedClick = () => {\n const { card } = this.props;\n\n if (card.get('type') === 'photo') {\n this.handlePhotoClick();\n } else {\n this.setState({ embedded: true });\n }\n }\n\n setRef = c => {\n if (c) {\n if (this.props.cacheWidth) this.props.cacheWidth(c.offsetWidth);\n this.setState({ width: c.offsetWidth });\n }\n }\n\n renderVideo () {\n const { card } = this.props;\n const content = { __html: addAutoPlay(card.get('html')) };\n const { width } = this.state;\n const ratio = card.get('width') / card.get('height');\n const height = width / ratio;\n\n return (\n <div\n ref={this.setRef}\n className='status-card__image status-card-video'\n dangerouslySetInnerHTML={content}\n style={{ height }}\n />\n );\n }\n\n render () {\n const { card, maxDescription, compact } = this.props;\n const { width, embedded } = this.state;\n\n if (card === null) {\n return null;\n }\n\n const provider = card.get('provider_name').length === 0 ? decodeIDNA(getHostname(card.get('url'))) : card.get('provider_name');\n const horizontal = (!compact && card.get('width') > card.get('height') && (card.get('width') + 100 >= width)) || card.get('type') !== 'link' || embedded;\n const interactive = card.get('type') !== 'link';\n const className = classnames('status-card', { horizontal, compact, interactive });\n const title = interactive ? <a className='status-card__title' href={card.get('url')} title={card.get('title')} rel='noopener' target='_blank'><strong>{card.get('title')}</strong></a> : <strong className='status-card__title' title={card.get('title')}>{card.get('title')}</strong>;\n const ratio = card.get('width') / card.get('height');\n const height = (compact && !embedded) ? (width / (16 / 9)) : (width / ratio);\n\n const description = (\n <div className='status-card__content'>\n {title}\n {!(horizontal || compact) && <p className='status-card__description'>{trim(card.get('description') || '', maxDescription)}</p>}\n <span className='status-card__host'>{provider}</span>\n </div>\n );\n\n let embed = '';\n let thumbnail = <div style={{ backgroundImage: `url(${card.get('image')})`, width: horizontal ? width : null, height: horizontal ? height : null }} className='status-card__image-image' />;\n\n if (interactive) {\n if (embedded) {\n embed = this.renderVideo();\n } else {\n let iconVariant = 'play';\n\n if (card.get('type') === 'photo') {\n iconVariant = 'search-plus';\n }\n\n embed = (\n <div className='status-card__image'>\n {thumbnail}\n\n <div className='status-card__actions'>\n <div>\n <button onClick={this.handleEmbedClick}><Icon id={iconVariant} /></button>\n {horizontal && <a href={card.get('url')} target='_blank' rel='noopener'><Icon id='external-link' /></a>}\n </div>\n </div>\n </div>\n );\n }\n\n return (\n <div className={className} ref={this.setRef}>\n {embed}\n {!compact && description}\n </div>\n );\n } else if (card.get('image')) {\n embed = (\n <div className='status-card__image'>\n {thumbnail}\n </div>\n );\n } else {\n embed = (\n <div className='status-card__image'>\n <Icon id='file-text' />\n </div>\n );\n }\n\n return (\n <a href={card.get('url')} className={className} target='_blank' rel='noopener' ref={this.setRef}>\n {embed}\n {description}\n </a>\n );\n }\n\n}\n","// Package imports //\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nconst messages = defineMessages({\n public: { id: 'privacy.public.short', defaultMessage: 'Public' },\n unlisted: { id: 'privacy.unlisted.short', defaultMessage: 'Unlisted' },\n private: { id: 'privacy.private.short', defaultMessage: 'Followers-only' },\n direct: { id: 'privacy.direct.short', defaultMessage: 'Direct' },\n});\n\n@injectIntl\nexport default class VisibilityIcon extends ImmutablePureComponent {\n\n static propTypes = {\n visibility: PropTypes.string,\n intl: PropTypes.object.isRequired,\n withLabel: PropTypes.bool,\n };\n\n render() {\n const { withLabel, visibility, intl } = this.props;\n\n const visibilityClass = {\n public: 'globe',\n unlisted: 'unlock',\n private: 'lock',\n direct: 'envelope',\n }[visibility];\n\n const label = intl.formatMessage(messages[visibility]);\n\n const icon = (<i\n className={`status__visibility-icon fa fa-fw fa-${visibilityClass}`}\n title={label}\n aria-hidden='true'\n />);\n\n if (withLabel) {\n return (<span style={{ whiteSpace: 'nowrap' }}>{icon} {label}</span>);\n } else {\n return icon;\n }\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Icon from 'mastodon/components/icon';\n\nconst filename = url => url.split('/').pop().split('#')[0].split('?')[0];\n\nexport default class AttachmentList extends ImmutablePureComponent {\n\n static propTypes = {\n media: ImmutablePropTypes.list.isRequired,\n compact: PropTypes.bool,\n };\n\n render () {\n const { media, compact } = this.props;\n\n if (compact) {\n return (\n <div className='attachment-list compact'>\n <ul className='attachment-list__list'>\n {media.map(attachment => {\n const displayUrl = attachment.get('remote_url') || attachment.get('url');\n\n return (\n <li key={attachment.get('id')}>\n <a href={displayUrl} target='_blank' rel='noopener'><Icon id='link' /> {filename(displayUrl)}</a>\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n return (\n <div className='attachment-list'>\n <div className='attachment-list__icon'>\n <Icon id='link' />\n </div>\n\n <ul className='attachment-list__list'>\n {media.map(attachment => {\n const displayUrl = attachment.get('remote_url') || attachment.get('url');\n\n return (\n <li key={attachment.get('id')}>\n <a href={displayUrl} target='_blank' rel='noopener'>{filename(displayUrl)}</a>\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n}\n","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nvar withRouter = function withRouter(Component) {\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutProperties(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(Route, {\n children: function children(routeComponentProps) {\n return React.createElement(Component, _extends({}, remainingProps, routeComponentProps, {\n ref: wrappedComponentRef\n }));\n }\n });\n };\n\n C.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n C.WrappedComponent = Component;\n C.propTypes = {\n wrappedComponentRef: PropTypes.func\n };\n\n return hoistStatics(C, Component);\n};\n\nexport default withRouter;","// Written in this round about way for babel-transform-imports\nimport withRouter from \"react-router/es/withRouter\";\n\nexport default withRouter;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport IconButton from './icon_button';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from '../features/ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport detectPassiveEvents from 'detect-passive-events';\n\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\nlet id = 0;\n\nclass DropdownMenu extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n items: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n style: PropTypes.object,\n placement: PropTypes.string,\n arrowOffsetLeft: PropTypes.string,\n arrowOffsetTop: PropTypes.string,\n openedViaKeyboard: PropTypes.bool,\n };\n\n static defaultProps = {\n style: {},\n placement: 'bottom',\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 componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('keydown', this.handleKeyDown, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n if (this.focusedItem && this.props.openedViaKeyboard) this.focusedItem.focus();\n this.setState({ mounted: true });\n }\n\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('keydown', this.handleKeyDown, 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 handleKeyDown = e => {\n const items = Array.from(this.node.getElementsByTagName('a'));\n const index = items.indexOf(document.activeElement);\n let element;\n\n switch(e.key) {\n case 'ArrowDown':\n element = items[index+1];\n if (element) {\n element.focus();\n }\n break;\n case 'ArrowUp':\n element = items[index-1];\n if (element) {\n element.focus();\n }\n break;\n case 'Home':\n element = items[0];\n if (element) {\n element.focus();\n }\n break;\n case 'End':\n element = items[items.length-1];\n if (element) {\n element.focus();\n }\n break;\n }\n }\n\n handleItemKeyDown = e => {\n if (e.key === 'Enter') {\n this.handleClick(e);\n }\n }\n\n handleClick = e => {\n const i = Number(e.currentTarget.getAttribute('data-index'));\n const { action, to } = this.props.items[i];\n\n this.props.onClose();\n\n if (typeof action === 'function') {\n e.preventDefault();\n action(e);\n } else if (to) {\n e.preventDefault();\n this.context.router.history.push(to);\n }\n }\n\n renderItem (option, i) {\n if (option === null) {\n return <li key={`sep-${i}`} className='dropdown-menu__separator' />;\n }\n\n const { text, href = '#' } = option;\n\n return (\n <li className='dropdown-menu__item' key={`${text}-${i}`}>\n <a href={href} target='_blank' rel='noopener' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyDown={this.handleItemKeyDown} data-index={i}>\n {text}\n </a>\n </li>\n );\n }\n\n render () {\n const { items, style, placement, arrowOffsetLeft, arrowOffsetTop } = this.props;\n const { mounted } = this.state;\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={`dropdown-menu ${placement}`} style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}>\n <div className={`dropdown-menu__arrow ${placement}`} style={{ left: arrowOffsetLeft, top: arrowOffsetTop }} />\n\n <ul>\n {items.map((option, i) => this.renderItem(option, i))}\n </ul>\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\nexport default class Dropdown extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n icon: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n size: PropTypes.number.isRequired,\n title: PropTypes.string,\n disabled: PropTypes.bool,\n status: ImmutablePropTypes.map,\n isUserTouching: PropTypes.func,\n isModalOpen: PropTypes.bool.isRequired,\n onOpen: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n dropdownPlacement: PropTypes.string,\n openDropdownId: PropTypes.number,\n openedViaKeyboard: PropTypes.bool,\n };\n\n static defaultProps = {\n title: 'Menu',\n };\n\n state = {\n id: id++,\n };\n\n handleClick = ({ target, type }) => {\n if (this.state.id === this.props.openDropdownId) {\n this.handleClose();\n } else {\n const { top } = target.getBoundingClientRect();\n const placement = top * 2 < innerHeight ? 'bottom' : 'top';\n\n this.props.onOpen(this.state.id, this.handleItemClick, placement, type !== 'click');\n }\n }\n\n handleClose = () => {\n this.props.onClose(this.state.id);\n }\n\n handleKeyDown = e => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleClick(e);\n e.preventDefault();\n break;\n case 'Escape':\n this.handleClose();\n break;\n }\n }\n\n handleItemClick = e => {\n const i = Number(e.currentTarget.getAttribute('data-index'));\n const { action, to } = this.props.items[i];\n\n this.handleClose();\n\n if (typeof action === 'function') {\n e.preventDefault();\n action();\n } else if (to) {\n e.preventDefault();\n this.context.router.history.push(to);\n }\n }\n\n setTargetRef = c => {\n this.target = c;\n }\n\n findTarget = () => {\n return this.target;\n }\n\n componentWillUnmount = () => {\n if (this.state.id === this.props.openDropdownId) {\n this.handleClose();\n }\n }\n\n render () {\n const { icon, items, size, title, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard } = this.props;\n const open = this.state.id === openDropdownId;\n\n return (\n <div onKeyDown={this.handleKeyDown}>\n <IconButton\n icon={icon}\n title={title}\n active={open}\n disabled={disabled}\n size={size}\n ref={this.setTargetRef}\n onClick={this.handleClick}\n />\n\n <Overlay show={open} placement={dropdownPlacement} target={this.findTarget}>\n <DropdownMenu items={items} onClose={this.handleClose} openedViaKeyboard={openedViaKeyboard} />\n </Overlay>\n </div>\n );\n }\n\n}\n","import { openDropdownMenu, closeDropdownMenu } from '../actions/dropdown_menu';\nimport { openModal, closeModal } from '../actions/modal';\nimport { connect } from 'react-redux';\nimport DropdownMenu from '../components/dropdown_menu';\nimport { isUserTouching } from '../is_mobile';\n\nconst mapStateToProps = state => ({\n isModalOpen: state.get('modal').modalType === 'ACTIONS',\n dropdownPlacement: state.getIn(['dropdown_menu', 'placement']),\n openDropdownId: state.getIn(['dropdown_menu', 'openId']),\n openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),\n});\n\nconst mapDispatchToProps = (dispatch, { status, items }) => ({\n onOpen(id, onItemClick, dropdownPlacement, keyboard) {\n dispatch(isUserTouching() ? openModal('ACTIONS', {\n status,\n actions: items,\n onClick: onItemClick,\n }) : openDropdownMenu(id, dropdownPlacement, keyboard));\n },\n onClose(id) {\n dispatch(closeModal());\n dispatch(closeDropdownMenu(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DropdownMenu);\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { is } from 'immutable';\nimport IconButton from './icon_button';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { isIOS } from 'flavours/glitch/util/is_mobile';\nimport classNames from 'classnames';\nimport { autoPlayGif, displayMedia } from 'flavours/glitch/util/initial_state';\n\nconst messages = defineMessages({\n hidden: {\n defaultMessage: 'Media hidden',\n id: 'status.media_hidden',\n },\n sensitive: {\n defaultMessage: 'Sensitive',\n id: 'media_gallery.sensitive',\n },\n toggle: {\n defaultMessage: 'Click to view',\n id: 'status.sensitive_toggle',\n },\n toggle_visible: {\n defaultMessage: 'Toggle visibility',\n id: 'media_gallery.toggle_visible',\n },\n warning: {\n defaultMessage: 'Sensitive content',\n id: 'status.sensitive_warning',\n },\n});\n\nclass Item extends React.PureComponent {\n\n static propTypes = {\n attachment: ImmutablePropTypes.map.isRequired,\n standalone: PropTypes.bool,\n index: PropTypes.number.isRequired,\n size: PropTypes.number.isRequired,\n letterbox: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n displayWidth: PropTypes.number,\n };\n\n static defaultProps = {\n standalone: false,\n index: 0,\n size: 1,\n };\n\n handleMouseEnter = (e) => {\n if (this.hoverToPlay()) {\n e.target.play();\n }\n }\n\n handleMouseLeave = (e) => {\n if (this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n }\n\n hoverToPlay () {\n const { attachment } = this.props;\n return !autoPlayGif && attachment.get('type') === 'gifv';\n }\n\n handleClick = (e) => {\n const { index, onClick } = this.props;\n\n if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n if (this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n e.preventDefault();\n onClick(index);\n }\n\n e.stopPropagation();\n }\n\n handleMouseDown = (e) => {\n e.preventDefault();\n e.stopPropagation();\n }\n\n render () {\n const { attachment, index, size, standalone, letterbox, displayWidth } = this.props;\n\n let width = 50;\n let height = 100;\n let top = 'auto';\n let left = 'auto';\n let bottom = 'auto';\n let right = 'auto';\n\n if (size === 1) {\n width = 100;\n }\n\n if (size === 4 || (size === 3 && index > 0)) {\n height = 50;\n }\n\n if (size === 2) {\n if (index === 0) {\n right = '2px';\n } else {\n left = '2px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '2px';\n } else if (index > 0) {\n left = '2px';\n }\n\n if (index === 1) {\n bottom = '2px';\n } else if (index > 1) {\n top = '2px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '2px';\n }\n\n if (index === 1 || index === 3) {\n left = '2px';\n }\n\n if (index < 2) {\n bottom = '2px';\n } else {\n top = '2px';\n }\n }\n\n let thumbnail = '';\n\n if (attachment.get('type') === 'image') {\n const previewUrl = attachment.get('preview_url');\n const previewWidth = attachment.getIn(['meta', 'small', 'width']);\n\n const originalUrl = attachment.get('url');\n const originalWidth = attachment.getIn(['meta', 'original', 'width']);\n\n const hasSize = typeof originalWidth === 'number' && typeof previewWidth === 'number';\n\n const srcSet = hasSize ? `${originalUrl} ${originalWidth}w, ${previewUrl} ${previewWidth}w` : null;\n const sizes = hasSize && (displayWidth > 0) ? `${displayWidth * (width / 100)}px` : null;\n\n const focusX = attachment.getIn(['meta', 'focus', 'x']) || 0;\n const focusY = attachment.getIn(['meta', 'focus', 'y']) || 0;\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n thumbnail = (\n <a\n className='media-gallery__item-thumbnail'\n href={attachment.get('remote_url') || originalUrl}\n onClick={this.handleClick}\n target='_blank'\n >\n <img\n className={letterbox ? 'letterbox' : null}\n src={previewUrl}\n srcSet={srcSet}\n sizes={sizes}\n alt={attachment.get('description')}\n title={attachment.get('description')}\n style={{ objectPosition: letterbox ? null : `${x}% ${y}%` }}\n />\n </a>\n );\n } else if (attachment.get('type') === 'audio') {\n thumbnail = (\n <div\n className='media-gallery__audio'\n aria-label={attachment.get('description')}\n role='application'\n >\n <span><p>sound<br/>only</p></span>\n <span><p>{attachment.get('description')}</p></span>\n <audio\n src={attachment.get('url')}\n controls\n />\n </div>\n );\n } else if (attachment.get('type') === 'gifv') {\n const autoPlay = !isIOS() && autoPlayGif;\n\n thumbnail = (\n <div className={classNames('media-gallery__gifv', { autoplay: autoPlay })}>\n <video\n className={`media-gallery__item-gifv-thumbnail${letterbox ? ' letterbox' : ''}`}\n aria-label={attachment.get('description')}\n title={attachment.get('description')}\n role='application'\n src={attachment.get('url')}\n onClick={this.handleClick}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n onMouseDown={this.handleMouseDown}\n autoPlay={autoPlay}\n loop\n muted\n />\n\n <span className='media-gallery__gifv__label'>GIF</span>\n </div>\n );\n }\n\n return (\n <div className={classNames('media-gallery__item', { standalone, letterbox })} key={attachment.get('id')} style={{ left: left, top: top, right: right, bottom: bottom, width: `${width}%`, height: `${height}%` }}>\n {thumbnail}\n </div>\n );\n }\n\n}\n\n@injectIntl\nexport default class MediaGallery extends React.PureComponent {\n\n static propTypes = {\n sensitive: PropTypes.bool,\n revealed: PropTypes.bool,\n standalone: PropTypes.bool,\n letterbox: PropTypes.bool,\n fullwidth: PropTypes.bool,\n hidden: PropTypes.bool,\n media: ImmutablePropTypes.list.isRequired,\n size: PropTypes.object,\n onOpenMedia: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n defaultWidth: PropTypes.number,\n cacheWidth: PropTypes.func,\n };\n\n static defaultProps = {\n standalone: false,\n };\n\n state = {\n visible: this.props.revealed === undefined ? (displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all') : this.props.revealed,\n width: this.props.defaultWidth,\n };\n\n componentWillReceiveProps (nextProps) {\n if (!is(nextProps.media, this.props.media)) {\n this.setState({ visible: nextProps.revealed === undefined ? (displayMedia !== 'hide_all' && !nextProps.sensitive || displayMedia === 'show_all') : nextProps.revealed });\n }\n }\n\n componentDidUpdate (prevProps) {\n if (this.node && this.node.offsetWidth && this.node.offsetWidth != this.state.width) {\n this.setState({\n width: this.node.offsetWidth,\n });\n }\n }\n\n handleOpen = () => {\n this.setState({ visible: !this.state.visible });\n }\n\n handleClick = (index) => {\n this.props.onOpenMedia(this.props.media, index);\n }\n\n handleRef = (node) => {\n this.node = node;\n if (node && node.offsetWidth && node.offsetWidth != this.state.width) {\n if (this.props.cacheWidth) this.props.cacheWidth(node.offsetWidth);\n this.setState({\n width: node.offsetWidth,\n });\n }\n }\n\n isStandaloneEligible() {\n const { media, standalone } = this.props;\n return standalone && media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']);\n }\n\n render () {\n const { media, intl, sensitive, letterbox, fullwidth, defaultWidth } = this.props;\n const { visible } = this.state;\n const size = media.take(4).size;\n\n const width = this.state.width || defaultWidth;\n\n let children;\n\n const style = {};\n\n const computedClass = classNames('media-gallery', { 'full-width': fullwidth });\n\n if (this.isStandaloneEligible() && width) {\n style.height = width / this.props.media.getIn([0, 'meta', 'small', 'aspect']);\n } else if (width) {\n style.height = width / (16/9);\n } else {\n return (<div className={computedClass} ref={this.handleRef}></div>);\n }\n\n if (!visible) {\n let warning = <FormattedMessage {...(sensitive ? messages.warning : messages.hidden)} />;\n\n children = (\n <button className='media-spoiler' type='button' onClick={this.handleOpen}>\n <span className='media-spoiler__warning'>{warning}</span>\n <span className='media-spoiler__trigger'><FormattedMessage {...messages.toggle} /></span>\n </button>\n );\n } else {\n if (this.isStandaloneEligible()) {\n children = <Item standalone attachment={media.get(0)} onClick={this.handleClick} displayWidth={width} />;\n } else {\n children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} onClick={this.handleClick} attachment={attachment} index={i} size={size} letterbox={letterbox} displayWidth={width} />);\n }\n }\n\n return (\n <div className={computedClass} style={style} ref={this.handleRef}>\n {visible ? (\n <div className='sensitive-info'>\n <IconButton\n icon='eye'\n onClick={this.handleOpen}\n overlay\n title={intl.formatMessage(messages.toggle_visible)}\n />\n {sensitive ? (\n <span className='sensitive-marker'>\n <FormattedMessage {...messages.sensitive} />\n </span>\n ) : null}\n </div>\n ) : null}\n\n {children}\n </div>\n );\n }\n\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '14', height: '11', viewBox: '0 0 14 11' },\n _react2.default.createElement(\n 'title',\n null,\n 'switch-check'\n ),\n _react2.default.createElement('path', { d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0', fill: '#fff', fillRule: 'evenodd' })\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n return _react2.default.createElement(\n 'svg',\n { width: '10', height: '10', viewBox: '0 0 10 10' },\n _react2.default.createElement(\n 'title',\n null,\n 'switch-x'\n ),\n _react2.default.createElement('path', { d: 'M9.9 2.12L7.78 0 4.95 2.828 2.12 0 0 2.12l2.83 2.83L0 7.776 2.123 9.9 4.95 7.07 7.78 9.9 9.9 7.776 7.072 4.95 9.9 2.12', fill: '#fff', fillRule: 'evenodd' })\n );\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pointerCoord = pointerCoord;\n// Copyright 2015-present Drifty Co.\n// http://drifty.com/\n// from: https://github.com/driftyco/ionic/blob/master/src/util/dom.ts\n\nfunction pointerCoord(event) {\n // get coordinates for either a mouse click\n // or a touch depending on the given event\n if (event) {\n var changedTouches = event.changedTouches;\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n var pageX = event.pageX;\n if (pageX !== undefined) {\n return { x: pageX, y: event.pageY };\n }\n }\n return { x: 0, y: 0 };\n}","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { is } from 'immutable';\nimport IconButton from './icon_button';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { isIOS } from '../is_mobile';\nimport classNames from 'classnames';\nimport { autoPlayGif, displayMedia } from '../initial_state';\n\nconst messages = defineMessages({\n toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Toggle visibility' },\n});\n\nclass Item extends React.PureComponent {\n\n static propTypes = {\n attachment: ImmutablePropTypes.map.isRequired,\n standalone: PropTypes.bool,\n index: PropTypes.number.isRequired,\n size: PropTypes.number.isRequired,\n onClick: PropTypes.func.isRequired,\n displayWidth: PropTypes.number,\n };\n\n static defaultProps = {\n standalone: false,\n index: 0,\n size: 1,\n };\n\n handleMouseEnter = (e) => {\n if (this.hoverToPlay()) {\n e.target.play();\n }\n }\n\n handleMouseLeave = (e) => {\n if (this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n }\n\n hoverToPlay () {\n const { attachment } = this.props;\n return !autoPlayGif && attachment.get('type') === 'gifv';\n }\n\n handleClick = (e) => {\n const { index, onClick } = this.props;\n\n if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n if (this.hoverToPlay()) {\n e.target.pause();\n e.target.currentTime = 0;\n }\n e.preventDefault();\n onClick(index);\n }\n\n e.stopPropagation();\n }\n\n render () {\n const { attachment, index, size, standalone, displayWidth } = this.props;\n\n let width = 50;\n let height = 100;\n let top = 'auto';\n let left = 'auto';\n let bottom = 'auto';\n let right = 'auto';\n\n if (size === 1) {\n width = 100;\n }\n\n if (size === 4 || (size === 3 && index > 0)) {\n height = 50;\n }\n\n if (size === 2) {\n if (index === 0) {\n right = '2px';\n } else {\n left = '2px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '2px';\n } else if (index > 0) {\n left = '2px';\n }\n\n if (index === 1) {\n bottom = '2px';\n } else if (index > 1) {\n top = '2px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '2px';\n }\n\n if (index === 1 || index === 3) {\n left = '2px';\n }\n\n if (index < 2) {\n bottom = '2px';\n } else {\n top = '2px';\n }\n }\n\n let thumbnail = '';\n\n if (attachment.get('type') === 'image') {\n const previewUrl = attachment.get('preview_url');\n const previewWidth = attachment.getIn(['meta', 'small', 'width']);\n\n const originalUrl = attachment.get('url');\n const originalWidth = attachment.getIn(['meta', 'original', 'width']);\n\n const hasSize = typeof originalWidth === 'number' && typeof previewWidth === 'number';\n\n const srcSet = hasSize ? `${originalUrl} ${originalWidth}w, ${previewUrl} ${previewWidth}w` : null;\n const sizes = hasSize && (displayWidth > 0) ? `${displayWidth * (width / 100)}px` : null;\n\n const focusX = attachment.getIn(['meta', 'focus', 'x']) || 0;\n const focusY = attachment.getIn(['meta', 'focus', 'y']) || 0;\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n thumbnail = (\n <a\n className='media-gallery__item-thumbnail'\n href={attachment.get('remote_url') || originalUrl}\n onClick={this.handleClick}\n target='_blank'\n >\n <img\n src={previewUrl}\n srcSet={srcSet}\n sizes={sizes}\n alt={attachment.get('description')}\n title={attachment.get('description')}\n style={{ objectPosition: `${x}% ${y}%` }}\n />\n </a>\n );\n } else if (attachment.get('type') === 'audio') {\n thumbnail = (\n <div className='media-gallery__audio'>\n <audio\n className='media-gallery__item-audio-thumbnail'\n aria-label={attachment.get('description')}\n role='application'\n src={attachment.get('url')}\n controls\n />\n </div>\n );\n } else if (attachment.get('type') === 'gifv') {\n const autoPlay = !isIOS() && autoPlayGif;\n\n thumbnail = (\n <div className={classNames('media-gallery__gifv', { autoplay: autoPlay })}>\n <video\n className='media-gallery__item-gifv-thumbnail'\n aria-label={attachment.get('description')}\n title={attachment.get('description')}\n role='application'\n src={attachment.get('url')}\n onClick={this.handleClick}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n autoPlay={autoPlay}\n loop\n muted\n />\n\n <span className='media-gallery__gifv__label'>GIF</span>\n </div>\n );\n }\n\n return (\n <div className={classNames('media-gallery__item', { standalone })} key={attachment.get('id')} style={{ left: left, top: top, right: right, bottom: bottom, width: `${width}%`, height: `${height}%` }}>\n {thumbnail}\n </div>\n );\n }\n\n}\n\nexport default @injectIntl\nclass MediaGallery extends React.PureComponent {\n\n static propTypes = {\n sensitive: PropTypes.bool,\n standalone: PropTypes.bool,\n media: ImmutablePropTypes.list.isRequired,\n size: PropTypes.object,\n height: PropTypes.number.isRequired,\n onOpenMedia: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n defaultWidth: PropTypes.number,\n cacheWidth: PropTypes.func,\n };\n\n static defaultProps = {\n standalone: false,\n };\n\n state = {\n visible: displayMedia !== 'hide_all' && !this.props.sensitive || displayMedia === 'show_all',\n width: this.props.defaultWidth,\n };\n\n componentWillReceiveProps (nextProps) {\n if (!is(nextProps.media, this.props.media)) {\n this.setState({ visible: !nextProps.sensitive });\n }\n }\n\n handleOpen = () => {\n this.setState({ visible: !this.state.visible });\n }\n\n handleClick = (index) => {\n this.props.onOpenMedia(this.props.media, index);\n }\n\n handleRef = (node) => {\n if (node /*&& this.isStandaloneEligible()*/) {\n // offsetWidth triggers a layout, so only calculate when we need to\n if (this.props.cacheWidth) this.props.cacheWidth(node.offsetWidth);\n this.setState({\n width: node.offsetWidth,\n });\n }\n }\n\n isStandaloneEligible() {\n const { media, standalone } = this.props;\n return standalone && media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']);\n }\n\n render () {\n const { media, intl, sensitive, height, defaultWidth } = this.props;\n const { visible } = this.state;\n\n const width = this.state.width || defaultWidth;\n\n let children;\n\n const style = {};\n\n if (this.isStandaloneEligible()) {\n if (width) {\n style.height = width / this.props.media.getIn([0, 'meta', 'small', 'aspect']);\n }\n } else if (width) {\n style.height = width / (16/9);\n } else {\n style.height = height;\n }\n\n if (!visible) {\n let warning;\n\n if (sensitive) {\n warning = <FormattedMessage id='status.sensitive_warning' defaultMessage='Sensitive content' />;\n } else {\n warning = <FormattedMessage id='status.media_hidden' defaultMessage='Media hidden' />;\n }\n\n children = (\n <button type='button' className='media-spoiler' onClick={this.handleOpen} style={style} ref={this.handleRef}>\n <span className='media-spoiler__warning'>{warning}</span>\n <span className='media-spoiler__trigger'><FormattedMessage id='status.sensitive_toggle' defaultMessage='Click to view' /></span>\n </button>\n );\n } else {\n const size = media.take(4).size;\n\n if (this.isStandaloneEligible()) {\n children = <Item standalone onClick={this.handleClick} attachment={media.get(0)} displayWidth={width} />;\n } else {\n children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} onClick={this.handleClick} attachment={attachment} index={i} size={size} displayWidth={width} />);\n }\n }\n\n return (\n <div className='media-gallery' style={style} ref={this.handleRef}>\n <div className={classNames('spoiler-button', { 'spoiler-button--visible': visible })}>\n <IconButton title={intl.formatMessage(messages.toggle_visible)} icon={visible ? 'eye' : 'eye-slash'} overlay onClick={this.handleOpen} />\n </div>\n\n {children}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport IconButton from './icon_button';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport detectPassiveEvents from 'detect-passive-events';\n\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\nlet id = 0;\n\nclass DropdownMenu extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n items: PropTypes.array.isRequired,\n onClose: PropTypes.func.isRequired,\n style: PropTypes.object,\n placement: PropTypes.string,\n arrowOffsetLeft: PropTypes.string,\n arrowOffsetTop: PropTypes.string,\n openedViaKeyboard: PropTypes.bool,\n };\n\n static defaultProps = {\n style: {},\n placement: 'bottom',\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 componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('keydown', this.handleKeyDown, false);\n document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);\n if (this.focusedItem && this.props.openedViaKeyboard) this.focusedItem.focus();\n this.setState({ mounted: true });\n }\n\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('keydown', this.handleKeyDown, 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 handleKeyDown = e => {\n const items = Array.from(this.node.getElementsByTagName('a'));\n const index = items.indexOf(document.activeElement);\n let element;\n\n switch(e.key) {\n case 'ArrowDown':\n element = items[index+1];\n if (element) {\n element.focus();\n }\n break;\n case 'ArrowUp':\n element = items[index-1];\n if (element) {\n element.focus();\n }\n break;\n case 'Home':\n element = items[0];\n if (element) {\n element.focus();\n }\n break;\n case 'End':\n element = items[items.length-1];\n if (element) {\n element.focus();\n }\n break;\n }\n }\n\n handleItemKeyDown = e => {\n if (e.key === 'Enter') {\n this.handleClick(e);\n }\n }\n\n handleClick = e => {\n const i = Number(e.currentTarget.getAttribute('data-index'));\n const { action, to } = this.props.items[i];\n\n this.props.onClose();\n\n if (typeof action === 'function') {\n e.preventDefault();\n action();\n } else if (to) {\n e.preventDefault();\n this.context.router.history.push(to);\n }\n }\n\n renderItem (option, i) {\n if (option === null) {\n return <li key={`sep-${i}`} className='dropdown-menu__separator' />;\n }\n\n const { text, href = '#' } = option;\n\n return (\n <li className='dropdown-menu__item' key={`${text}-${i}`}>\n <a href={href} target='_blank' rel='noopener' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyDown={this.handleItemKeyDown} data-index={i}>\n {text}\n </a>\n </li>\n );\n }\n\n render () {\n const { items, style, placement, arrowOffsetLeft, arrowOffsetTop } = this.props;\n const { mounted } = this.state;\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='dropdown-menu' style={{ ...style, opacity: opacity, transform: mounted ? `scale(${scaleX}, ${scaleY})` : null }} ref={this.setRef}>\n <div className={`dropdown-menu__arrow ${placement}`} style={{ left: arrowOffsetLeft, top: arrowOffsetTop }} />\n\n <ul>\n {items.map((option, i) => this.renderItem(option, i))}\n </ul>\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\nexport default class Dropdown extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n icon: PropTypes.string.isRequired,\n items: PropTypes.array.isRequired,\n size: PropTypes.number.isRequired,\n ariaLabel: PropTypes.string,\n disabled: PropTypes.bool,\n status: ImmutablePropTypes.map,\n isUserTouching: PropTypes.func,\n isModalOpen: PropTypes.bool.isRequired,\n onOpen: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n dropdownPlacement: PropTypes.string,\n openDropdownId: PropTypes.number,\n openedViaKeyboard: PropTypes.bool,\n };\n\n static defaultProps = {\n ariaLabel: 'Menu',\n };\n\n state = {\n id: id++,\n };\n\n handleClick = ({ target, type }) => {\n if (this.state.id === this.props.openDropdownId) {\n this.handleClose();\n } else {\n const { top } = target.getBoundingClientRect();\n const placement = top * 2 < innerHeight ? 'bottom' : 'top';\n\n this.props.onOpen(this.state.id, this.handleItemClick, placement, type !== 'click');\n }\n }\n\n handleClose = () => {\n this.props.onClose(this.state.id);\n }\n\n handleKeyDown = e => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleClick(e);\n e.preventDefault();\n break;\n case 'Escape':\n this.handleClose();\n break;\n }\n }\n\n handleItemClick = (i, e) => {\n const { action, to } = this.props.items[i];\n\n this.handleClose();\n\n if (typeof action === 'function') {\n e.preventDefault();\n action();\n } else if (to) {\n e.preventDefault();\n this.context.router.history.push(to);\n }\n }\n\n setTargetRef = c => {\n this.target = c;\n }\n\n findTarget = () => {\n return this.target;\n }\n\n componentWillUnmount = () => {\n if (this.state.id === this.props.openDropdownId) {\n this.handleClose();\n }\n }\n\n render () {\n const { icon, items, size, ariaLabel, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard } = this.props;\n const open = this.state.id === openDropdownId;\n\n return (\n <div onKeyDown={this.handleKeyDown}>\n <IconButton\n icon={icon}\n title={ariaLabel}\n active={open}\n disabled={disabled}\n size={size}\n ref={this.setTargetRef}\n onClick={this.handleClick}\n />\n\n <Overlay show={open} placement={dropdownPlacement} target={this.findTarget}>\n <DropdownMenu items={items} onClose={this.handleClose} openedViaKeyboard={openedViaKeyboard} />\n </Overlay>\n </div>\n );\n }\n\n}\n","import { openDropdownMenu, closeDropdownMenu } from 'flavours/glitch/actions/dropdown_menu';\nimport { openModal, closeModal } from 'flavours/glitch/actions/modal';\nimport { connect } from 'react-redux';\nimport DropdownMenu from 'flavours/glitch/components/dropdown_menu';\nimport { isUserTouching } from 'flavours/glitch/util/is_mobile';\n\nconst mapStateToProps = state => ({\n isModalOpen: state.get('modal').modalType === 'ACTIONS',\n dropdownPlacement: state.getIn(['dropdown_menu', 'placement']),\n openDropdownId: state.getIn(['dropdown_menu', 'openId']),\n openedViaKeyboard: state.getIn(['dropdown_menu', 'keyboard']),\n});\n\nconst mapDispatchToProps = (dispatch, { status, items }) => ({\n onOpen(id, onItemClick, dropdownPlacement, keyboard) {\n dispatch(isUserTouching() ? openModal('ACTIONS', {\n status,\n actions: items.map(\n (item, i) => item ? {\n ...item,\n name: `${item.text}-${i}`,\n onClick: item.action ? ((e) => { return onItemClick(i, e) }) : null,\n } : null\n ),\n }) : openDropdownMenu(id, dropdownPlacement, keyboard));\n },\n onClose(id) {\n dispatch(closeModal());\n dispatch(closeDropdownMenu(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DropdownMenu);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { autoPlayGif } from 'flavours/glitch/util/initial_state';\n\nexport default class AvatarOverlay extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n friend: ImmutablePropTypes.map.isRequired,\n animate: PropTypes.bool,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n render() {\n const { account, friend, animate } = this.props;\n\n const baseStyle = {\n backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`,\n };\n\n const overlayStyle = {\n backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`,\n };\n\n return (\n <div className='account__avatar-overlay'>\n <div className='account__avatar-overlay-base' style={baseStyle} data-avatar-of={`@${account.get('acct')}`} />\n <div className='account__avatar-overlay-overlay' style={overlayStyle} data-avatar-of={`@${friend.get('acct')}`} />\n </div>\n );\n }\n\n}\n","export function autoUnfoldCW (settings, status) {\n if (!settings.getIn(['content_warnings', 'auto_unfold'])) {\n return false;\n }\n\n const rawRegex = settings.getIn(['content_warnings', 'filter']);\n\n if (!rawRegex) {\n return true;\n }\n\n let regex = null;\n\n try {\n regex = rawRegex && new RegExp(rawRegex.trim(), 'i');\n } catch (e) {\n // Bad regex, don't affect filters\n }\n\n if (!(status && regex)) {\n return undefined;\n }\n return !regex.test(status.get('spoiler_text'));\n}\n","'use strict';\n\n// Simple FIFO queue implementation to avoid having to do shift()\n// on an array, which is slow.\n\nfunction Queue() {\n this.length = 0;\n}\n\nQueue.prototype.push = function (item) {\n var node = {item: item};\n if (this.last) {\n this.last = this.last.next = node;\n } else {\n this.last = this.first = node;\n }\n this.length++;\n};\n\nQueue.prototype.shift = function () {\n var node = this.first;\n if (node) {\n this.first = node.next;\n if (!(--this.length)) {\n this.last = undefined;\n }\n return node.item;\n }\n};\n\nQueue.prototype.slice = function (start, end) {\n start = typeof start === 'undefined' ? 0 : start;\n end = typeof end === 'undefined' ? Infinity : end;\n\n var output = [];\n\n var i = 0;\n for (var node = this.first; node; node = node.next) {\n if (--end < 0) {\n break;\n } else if (++i > start) {\n output.push(node.item);\n }\n }\n return output;\n}\n\nmodule.exports = Queue;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar isIE = !!document.documentElement.currentStyle;\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 = {};\nvar hiddenTextarea = document.createElement('textarea');\n\nvar forceHiddenStyles = function forceHiddenStyles(node) {\n Object.keys(HIDDEN_TEXTAREA_STYLE).forEach(function (key) {\n node.style.setProperty(key, HIDDEN_TEXTAREA_STYLE[key], 'important');\n });\n};\n\n{\n forceHiddenStyles(hiddenTextarea);\n}\n\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 forceHiddenStyles(hiddenTextarea);\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; // Stores the value's rows count rendered in `hiddenTextarea`,\n // regardless if `maxRows` or `minRows` props are passed\n\n var valueRowCount = Math.floor(height / singleRowHeight);\n\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 var rowCount = Math.floor(height / singleRowHeight);\n return {\n height: height,\n minHeight: minHeight,\n maxHeight: maxHeight,\n rowCount: rowCount,\n valueRowCount: valueRowCount\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']; // probably node is detached from DOM, can't read computed dimensions\n\n if (boxSizing === '') {\n return null;\n } // 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\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 delete computedStyleCache[uid];\n};\n\nvar noop = function noop() {};\n\nvar uid = 0;\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\n _this._onRef = function (node) {\n _this._ref = node;\n var inputRef = _this.props.inputRef;\n\n if (typeof inputRef === 'function') {\n inputRef(node);\n return;\n }\n\n inputRef.current = node;\n };\n\n _this._onChange = function (event) {\n if (!_this._controlled) {\n _this._resizeComponent();\n }\n\n _this.props.onChange(event, _assertThisInitialized(_assertThisInitialized(_this)));\n };\n\n _this._resizeComponent = function (callback) {\n if (callback === void 0) {\n callback = noop;\n }\n\n var nodeHeight = calculateNodeHeight(_this._ref, _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 valueRowCount = nodeHeight.valueRowCount;\n _this.rowCount = rowCount;\n _this.valueRowCount = valueRowCount;\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 = props.value !== undefined;\n _this._resizeLock = false;\n return _this;\n }\n\n var _proto = TextareaAutosize.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n _inputRef = _this$props.inputRef,\n _maxRows = _this$props.maxRows,\n _minRows = _this$props.minRows,\n _onHeightChange = _this$props.onHeightChange,\n _useCacheForDOMMeasurements = _this$props.useCacheForDOMMeasurements,\n props = _objectWithoutPropertiesLoose(_this$props, [\"inputRef\", \"maxRows\", \"minRows\", \"onHeightChange\", \"useCacheForDOMMeasurements\"]);\n\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._onRef\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 _this2._resizeLock = false;\n });\n };\n\n window.addEventListener('resize', this._resizeListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps !== this.props) {\n this._resizeComponent();\n }\n\n if (this.state.height !== prevState.height) {\n this.props.onHeightChange(this.state.height, this);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener('resize', this._resizeListener);\n purgeCache(this._uid);\n };\n\n return TextareaAutosize;\n}(React.Component);\n\nTextareaAutosize.defaultProps = {\n inputRef: noop,\n onChange: noop,\n onHeightChange: noop,\n useCacheForDOMMeasurements: false\n};\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes = {\n inputRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]),\n maxRows: PropTypes.number,\n minRows: PropTypes.number,\n onChange: PropTypes.func,\n onHeightChange: PropTypes.func,\n style: PropTypes.object,\n useCacheForDOMMeasurements: PropTypes.bool,\n value: PropTypes.string\n} : void 0;\n\nexport default TextareaAutosize;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { autoPlayGif } from '../initial_state';\n\nexport default class AvatarOverlay extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n friend: ImmutablePropTypes.map.isRequired,\n animate: PropTypes.bool,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n render() {\n const { account, friend, animate } = this.props;\n\n const baseStyle = {\n backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`,\n };\n\n const overlayStyle = {\n backgroundImage: `url(${friend.get(animate ? 'avatar' : 'avatar_static')})`,\n };\n\n return (\n <div className='account__avatar-overlay'>\n <div className='account__avatar-overlay-base' style={baseStyle} />\n <div className='account__avatar-overlay-overlay' style={overlayStyle} />\n </div>\n );\n }\n\n}\n","/**\n * Notification overlay\n */\n\n\n// Package imports.\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n markForDeletion: { id: 'notification.markForDeletion', defaultMessage: 'Mark for deletion' },\n});\n\n@injectIntl\nexport default class NotificationOverlay extends ImmutablePureComponent {\n\n static propTypes = {\n notification : ImmutablePropTypes.map.isRequired,\n onMarkForDelete : PropTypes.func.isRequired,\n show : PropTypes.bool.isRequired,\n intl : PropTypes.object.isRequired,\n };\n\n onToggleMark = () => {\n const mark = !this.props.notification.get('markedForDelete');\n const id = this.props.notification.get('id');\n this.props.onMarkForDelete(id, mark);\n }\n\n render () {\n const { notification, show, intl } = this.props;\n\n const active = notification.get('markedForDelete');\n const label = intl.formatMessage(messages.markForDeletion);\n\n return show ? (\n <div\n aria-label={label}\n role='checkbox'\n aria-checked={active}\n tabIndex={0}\n className={`notification__dismiss-overlay ${active ? 'active' : ''}`}\n onClick={this.onToggleMark}\n >\n <div className='wrappy'>\n <div className='ckbox' aria-hidden='true' title={label}>\n {active ? (<i className='fa fa-check' />) : ''}\n </div>\n </div>\n </div>\n ) : null;\n }\n\n}\n","// Package imports.\nimport { connect } from 'react-redux';\n\n// Our imports.\nimport NotificationOverlay from '../components/overlay';\nimport { markNotificationForDelete } from 'flavours/glitch/actions/notifications';\n\nconst mapDispatchToProps = dispatch => ({\n onMarkForDelete(id, yes) {\n dispatch(markNotificationForDelete(id, yes));\n },\n});\n\nconst mapStateToProps = state => ({\n show: state.getIn(['notifications', 'cleaningMode']),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NotificationOverlay);\n","// Wrapper to call requestIdleCallback() to schedule low-priority work.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API\n// for a good breakdown of the concepts behind this.\n\nimport Queue from 'tiny-queue';\n\nconst taskQueue = new Queue();\nlet runningRequestIdleCallback = false;\n\nfunction runTasks(deadline) {\n while (taskQueue.length && deadline.timeRemaining() > 0) {\n taskQueue.shift()();\n }\n if (taskQueue.length) {\n requestIdleCallback(runTasks);\n } else {\n runningRequestIdleCallback = false;\n }\n}\n\nfunction scheduleIdleTask(task) {\n taskQueue.push(task);\n if (!runningRequestIdleCallback) {\n runningRequestIdleCallback = true;\n requestIdleCallback(runTasks);\n }\n}\n\nexport default scheduleIdleTask;\n","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\n\nexport default Route;","// Wrapper to call requestIdleCallback() to schedule low-priority work.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Background_Tasks_API\n// for a good breakdown of the concepts behind this.\n\nimport Queue from 'tiny-queue';\n\nconst taskQueue = new Queue();\nlet runningRequestIdleCallback = false;\n\nfunction runTasks(deadline) {\n while (taskQueue.length && deadline.timeRemaining() > 0) {\n taskQueue.shift()();\n }\n if (taskQueue.length) {\n requestIdleCallback(runTasks);\n } else {\n runningRequestIdleCallback = false;\n }\n}\n\nfunction scheduleIdleTask(task) {\n taskQueue.push(task);\n if (!runningRequestIdleCallback) {\n runningRequestIdleCallback = true;\n requestIdleCallback(runTasks);\n }\n}\n\nexport default scheduleIdleTask;\n","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 'flavours/glitch/util/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: 'You are not currently muting notifications from @{name}. Click to mute notifications' },\n unmute_notifications: { id: 'account.unmute_notifications', defaultMessage: 'You are currently muting notifications from @{name}. Click to unmute notifications' },\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 small: 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 {\n account,\n hidden,\n intl,\n small,\n } = this.props;\n\n if (!account) {\n return <div />;\n }\n\n if (hidden) {\n return (\n <Fragment>\n {account.get('display_name')}\n {account.get('username')}\n </Fragment>\n );\n }\n\n let buttons;\n\n if (account.get('id') !== me && !small && 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' 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 small ? (\n <Permalink\n className='account small'\n href={account.get('url')}\n to={`/accounts/${account.get('id')}`}\n >\n <div className='account__avatar-wrapper'>\n <Avatar\n account={account}\n size={24}\n />\n </div>\n <DisplayName\n account={account}\n inline\n />\n </Permalink>\n ) : (\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 {buttons ?\n <div className='account__relationship'>\n {buttons}\n </div>\n : null}\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { makeGetAccount } from 'flavours/glitch/selectors';\nimport Account from 'flavours/glitch/components/account';\nimport {\n followAccount,\n unfollowAccount,\n blockAccount,\n unblockAccount,\n muteAccount,\n unmuteAccount,\n} from 'flavours/glitch/actions/accounts';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { unfollowModal } from 'flavours/glitch/util/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","import { connect } from 'react-redux';\nimport StatusList from 'flavours/glitch/components/status_list';\nimport { scrollTopTimeline } from 'flavours/glitch/actions/timelines';\nimport { Map as ImmutableMap, List as ImmutableList } from 'immutable';\nimport { createSelector } from 'reselect';\nimport { debounce } from 'lodash';\nimport { me } from 'flavours/glitch/util/initial_state';\n\nconst makeGetStatusIds = () => createSelector([\n (state, { type }) => state.getIn(['settings', type], ImmutableMap()),\n (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),\n (state) => state.get('statuses'),\n], (columnSettings, statusIds, statuses) => {\n const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();\n let regex = null;\n\n try {\n regex = rawRegex && new RegExp(rawRegex, 'i');\n } catch (e) {\n // Bad regex, don't affect filters\n }\n\n return statusIds.filter(id => {\n if (id === null) return true;\n\n const statusForId = statuses.get(id);\n let showStatus = true;\n\n if (columnSettings.getIn(['shows', 'reblog']) === false) {\n showStatus = showStatus && statusForId.get('reblog') === null;\n }\n\n if (columnSettings.getIn(['shows', 'reply']) === false) {\n showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me);\n }\n\n if (columnSettings.getIn(['shows', 'direct']) === false) {\n showStatus = showStatus && statusForId.get('visibility') !== 'direct';\n }\n\n if (showStatus && regex && statusForId.get('account') !== me) {\n const searchIndex = statusForId.get('reblog') ? statuses.getIn([statusForId.get('reblog'), 'search_index']) : statusForId.get('search_index');\n showStatus = !regex.test(searchIndex);\n }\n\n return showStatus;\n });\n});\n\nconst makeMapStateToProps = () => {\n const getStatusIds = makeGetStatusIds();\n\n const mapStateToProps = (state, { timelineId }) => ({\n statusIds: getStatusIds(state, { type: timelineId }),\n isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),\n isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false),\n hasMore: state.getIn(['timelines', timelineId, 'hasMore']),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { timelineId }) => ({\n\n onScrollToTop: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, true));\n }, 100),\n\n onScroll: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, false));\n }, 100),\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(StatusList);\n","import { connect } from 'react-redux';\nimport StatusList from '../../../components/status_list';\nimport { scrollTopTimeline } from '../../../actions/timelines';\nimport { Map as ImmutableMap, List as ImmutableList } from 'immutable';\nimport { createSelector } from 'reselect';\nimport { debounce } from 'lodash';\nimport { me } from '../../../initial_state';\n\nconst makeGetStatusIds = () => createSelector([\n (state, { type }) => state.getIn(['settings', type], ImmutableMap()),\n (state, { type }) => state.getIn(['timelines', type, 'items'], ImmutableList()),\n (state) => state.get('statuses'),\n], (columnSettings, statusIds, statuses) => {\n return statusIds.filter(id => {\n if (id === null) return true;\n\n const statusForId = statuses.get(id);\n let showStatus = true;\n\n if (columnSettings.getIn(['shows', 'reblog']) === false) {\n showStatus = showStatus && statusForId.get('reblog') === null;\n }\n\n if (columnSettings.getIn(['shows', 'reply']) === false) {\n showStatus = showStatus && (statusForId.get('in_reply_to_id') === null || statusForId.get('in_reply_to_account_id') === me);\n }\n\n return showStatus;\n });\n});\n\nconst makeMapStateToProps = () => {\n const getStatusIds = makeGetStatusIds();\n\n const mapStateToProps = (state, { timelineId }) => ({\n statusIds: getStatusIds(state, { type: timelineId }),\n isLoading: state.getIn(['timelines', timelineId, 'isLoading'], true),\n isPartial: state.getIn(['timelines', timelineId, 'isPartial'], false),\n hasMore: state.getIn(['timelines', timelineId, 'hasMore']),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { timelineId }) => ({\n\n onScrollToTop: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, true));\n }, 100),\n\n onScroll: debounce(() => {\n dispatch(scrollTopTimeline(timelineId, false));\n }, 100),\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(StatusList);\n","// Package imports //\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class StatusPrepend extends React.PureComponent {\n\n static propTypes = {\n type: PropTypes.string.isRequired,\n account: ImmutablePropTypes.map.isRequired,\n parseClick: PropTypes.func.isRequired,\n notificationId: PropTypes.number,\n };\n\n handleClick = (e) => {\n const { account, parseClick } = this.props;\n parseClick(e, `/accounts/${account.get('id')}`);\n }\n\n Message = () => {\n const { type, account } = this.props;\n let link = (\n <a\n onClick={this.handleClick}\n href={account.get('url')}\n className='status__display-name'\n >\n <b\n dangerouslySetInnerHTML={{\n __html : account.get('display_name_html') || account.get('username'),\n }}\n />\n </a>\n );\n switch (type) {\n case 'featured':\n return (\n <FormattedMessage id='status.pinned' defaultMessage='Pinned toot' />\n );\n case 'reblogged_by':\n return (\n <FormattedMessage\n id='status.reblogged_by'\n defaultMessage='{name} boosted'\n values={{ name : link }}\n />\n );\n case 'favourite':\n return (\n <FormattedMessage\n id='notification.favourite'\n defaultMessage='{name} favourited your status'\n values={{ name : link }}\n />\n );\n case 'reblog':\n return (\n <FormattedMessage\n id='notification.reblog'\n defaultMessage='{name} boosted your status'\n values={{ name : link }}\n />\n );\n }\n return null;\n }\n\n render () {\n const { Message } = this;\n const { type } = this.props;\n\n return !type ? null : (\n <aside className={type === 'reblogged_by' || type === 'featured' ? 'status__prepend' : 'notification__message'}>\n <div className={type === 'reblogged_by' || type === 'featured' ? 'status__prepend-icon-wrapper' : 'notification__favourite-icon-wrapper'}>\n <i\n className={`fa fa-fw fa-${\n type === 'favourite' ? 'star star-icon' : (type === 'featured' ? 'thumb-tack' : 'retweet')\n } status__prepend-icon`}\n />\n </div>\n <Message />\n </aside>\n );\n }\n\n}\n","// Package imports.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\n// Mastodon imports.\nimport Avatar from './avatar';\nimport AvatarOverlay from './avatar_overlay';\nimport DisplayName from './display_name';\n\nexport default class StatusHeader extends React.PureComponent {\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n friend: ImmutablePropTypes.map,\n parseClick: PropTypes.func.isRequired,\n };\n\n // Handles clicks on account name/image\n handleAccountClick = (e) => {\n const { status, parseClick } = this.props;\n parseClick(e, `/accounts/${status.getIn(['account', 'id'])}`);\n }\n\n // Rendering.\n render () {\n const {\n status,\n friend,\n } = this.props;\n\n const account = status.get('account');\n\n return (\n <div className='status__info__account' >\n <a\n href={account.get('url')}\n target='_blank'\n className='status__avatar'\n onClick={this.handleAccountClick}\n >\n {\n friend ? (\n <AvatarOverlay account={account} friend={friend} />\n ) : (\n <Avatar account={account} size={48} />\n )\n }\n </a>\n <a\n href={account.get('url')}\n target='_blank'\n className='status__display-name'\n onClick={this.handleAccountClick}\n >\n <DisplayName account={account} />\n </a>\n </div>\n );\n }\n\n}\n","// Package imports.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages, injectIntl } from 'react-intl';\n\n// Mastodon imports.\nimport IconButton from './icon_button';\nimport VisibilityIcon from './status_visibility_icon';\n\n// Messages for use with internationalization stuff.\nconst messages = defineMessages({\n collapse: { id: 'status.collapse', defaultMessage: 'Collapse' },\n uncollapse: { id: 'status.uncollapse', defaultMessage: 'Uncollapse' },\n});\n\n@injectIntl\nexport default class StatusIcons extends React.PureComponent {\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n mediaIcon: PropTypes.string,\n collapsible: PropTypes.bool,\n collapsed: PropTypes.bool,\n setCollapsed: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n // Handles clicks on collapsed button\n handleCollapsedClick = (e) => {\n const { collapsed, setCollapsed } = this.props;\n if (e.button === 0) {\n setCollapsed(!collapsed);\n e.preventDefault();\n }\n }\n\n // Rendering.\n render () {\n const {\n status,\n mediaIcon,\n collapsible,\n collapsed,\n intl,\n } = this.props;\n\n return (\n <div className='status__info__icons'>\n {status.get('in_reply_to_id', null) !== null ? (\n <i\n className={`fa fa-fw fa-comment status__reply-icon`}\n aria-hidden='true'\n />\n ) : null}\n {mediaIcon ? (\n <i\n className={`fa fa-fw fa-${mediaIcon} status__media-icon`}\n aria-hidden='true'\n />\n ) : null}\n {(\n <VisibilityIcon visibility={status.get('visibility')} />\n )}\n {collapsible ? (\n <IconButton\n className='status__collapse-button'\n animate flip\n active={collapsed}\n title={\n collapsed ?\n intl.formatMessage(messages.uncollapse) :\n intl.formatMessage(messages.collapse)\n }\n icon='angle-double-up'\n onClick={this.handleCollapsedClick}\n />\n ) : null}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from './icon_button';\nimport DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { me, isStaff, deleteOthersNotice } from 'flavours/glitch/util/initial_state';\nimport RelativeTimestamp from './relative_timestamp';\nimport { accountAdminLink, statusAdminLink } from 'flavours/glitch/util/backend_links';\n\nconst messages = defineMessages({\n delete: { id: 'status.delete', defaultMessage: 'Delete' },\n redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },\n direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },\n mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },\n mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },\n block: { id: 'account.block', defaultMessage: 'Block @{name}' },\n reply: { id: 'status.reply', defaultMessage: 'Reply' },\n share: { id: 'status.share', defaultMessage: 'Share' },\n more: { id: 'status.more', defaultMessage: 'More' },\n replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },\n reblog: { id: 'status.reblog', defaultMessage: 'Boost' },\n reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost to original audience' },\n cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },\n favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },\n bookmark: { id: 'status.bookmark', defaultMessage: 'Bookmark' },\n open: { id: 'status.open', defaultMessage: 'Expand this status' },\n report: { id: 'status.report', defaultMessage: 'Report @{name}' },\n muteConversation: { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' },\n unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' },\n pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },\n unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },\n embed: { id: 'status.embed', defaultMessage: 'Embed' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' },\n copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },\n});\n\nconst obfuscatedCount = count => {\n if (count < 0) {\n return 0;\n } else if (count <= 1) {\n return count;\n } else {\n return '1+';\n }\n};\n\n@injectIntl\nexport default class StatusActionBar extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n onReply: PropTypes.func,\n onFavourite: PropTypes.func,\n onReblog: PropTypes.func,\n onDelete: PropTypes.func,\n onDirect: PropTypes.func,\n onMention: PropTypes.func,\n onMute: PropTypes.func,\n onBlock: PropTypes.func,\n onReport: PropTypes.func,\n onEmbed: PropTypes.func,\n onMuteConversation: PropTypes.func,\n onPin: PropTypes.func,\n onBookmark: PropTypes.func,\n withDismiss: PropTypes.bool,\n showReplyCount: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n };\n\n // Avoid checking props that are functions (and whose equality will always\n // evaluate to false. See react-immutable-pure-component for usage.\n updateOnProps = [\n 'status',\n 'showReplyCount',\n 'withDismiss',\n ]\n\n handleReplyClick = () => {\n if (me) {\n this.props.onReply(this.props.status, this.context.router.history);\n } else {\n this._openInteractionDialog('reply');\n }\n }\n\n handleShareClick = () => {\n navigator.share({\n text: this.props.status.get('search_index'),\n url: this.props.status.get('url'),\n });\n }\n\n handleFavouriteClick = (e) => {\n if (me) {\n this.props.onFavourite(this.props.status, e);\n } else {\n this._openInteractionDialog('favourite');\n }\n }\n\n handleBookmarkClick = (e) => {\n this.props.onBookmark(this.props.status, e);\n }\n\n handleReblogClick = e => {\n if (me) {\n this.props.onReblog(this.props.status, e);\n } else {\n this._openInteractionDialog('reblog');\n }\n }\n\n _openInteractionDialog = type => {\n window.open(`/interact/${this.props.status.get('id')}?type=${type}`, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');\n }\n\n handleDeleteClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history);\n }\n\n handleRedraftClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history, true);\n }\n\n handlePinClick = () => {\n this.props.onPin(this.props.status);\n }\n\n handleMentionClick = () => {\n this.props.onMention(this.props.status.get('account'), this.context.router.history);\n }\n\n handleDirectClick = () => {\n this.props.onDirect(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMuteClick = () => {\n this.props.onMute(this.props.status.get('account'));\n }\n\n handleBlockClick = () => {\n this.props.onBlock(this.props.status.get('account'));\n }\n\n handleOpen = () => {\n this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);\n }\n\n handleEmbed = () => {\n this.props.onEmbed(this.props.status);\n }\n\n handleReport = () => {\n this.props.onReport(this.props.status);\n }\n\n handleConversationMuteClick = () => {\n this.props.onMuteConversation(this.props.status);\n }\n\n handleCopy = () => {\n const url = this.props.status.get('url');\n const textarea = document.createElement('textarea');\n\n textarea.textContent = url;\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n }\n\n render () {\n const { status, intl, withDismiss, showReplyCount } = this.props;\n\n const mutingConversation = status.get('muted');\n const anonymousAccess = !me;\n const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n const reblogDisabled = status.get('visibility') === 'direct' || (status.get('visibility') === 'private' && me !== status.getIn(['account', 'id']));\n const reblogMessage = status.get('visibility') === 'private' ? messages.reblog_private : messages.reblog;\n\n let menu = [];\n let reblogIcon = 'retweet';\n let replyIcon;\n let replyTitle;\n\n menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen });\n\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });\n menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });\n }\n\n menu.push(null);\n\n if (status.getIn(['account', 'id']) === me || withDismiss) {\n menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });\n menu.push(null);\n }\n\n if (status.getIn(['account', 'id']) === me) {\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });\n }\n\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });\n menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });\n menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });\n menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });\n\n if (isStaff && (accountAdminLink || statusAdminLink)) {\n menu.push(null);\n if (accountAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }),\n href: accountAdminLink(status.getIn(['account', 'id'])),\n });\n }\n if (statusAdminLink !== undefined) {\n menu.push({\n text: intl.formatMessage(messages.admin_status),\n href: statusAdminLink(status.getIn(['account', 'id']), status.get('id')),\n });\n }\n }\n if ( deleteOthersNotice ) {\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n }\n }\n\n if (status.get('in_reply_to_id', null) === null) {\n replyIcon = 'reply';\n replyTitle = intl.formatMessage(messages.reply);\n } else {\n replyIcon = 'reply-all';\n replyTitle = intl.formatMessage(messages.replyAll);\n }\n\n const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (\n <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />\n );\n\n let replyButton = (\n <IconButton\n className='status__action-bar-button'\n title={replyTitle}\n icon={replyIcon}\n onClick={this.handleReplyClick}\n />\n );\n if (showReplyCount) {\n replyButton = (\n <div className='status__action-bar__counter'>\n {replyButton}\n <span className='status__action-bar__counter__label' >{obfuscatedCount(status.get('replies_count'))}</span>\n </div>\n );\n }\n\n return (\n <div className='status__action-bar'>\n {replyButton}\n <IconButton className='status__action-bar-button' disabled={reblogDisabled} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogDisabled ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(reblogMessage)} icon={reblogIcon} onClick={this.handleReblogClick} />\n <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />\n {shareButton}\n <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />\n\n <div className='status__action-bar-dropdown'>\n <DropdownMenuContainer disabled={anonymousAccess} status={status} items={menu} icon='ellipsis-h' size={18} direction='right' ariaLabel={intl.formatMessage(messages.more)} />\n </div>\n\n <a href={status.get('url')} className='status__relative-time' target='_blank' rel='noopener'><RelativeTimestamp timestamp={status.get('created_at')} /></a>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport StatusPrepend from './status_prepend';\nimport StatusHeader from './status_header';\nimport StatusIcons from './status_icons';\nimport StatusContent from './status_content';\nimport StatusActionBar from './status_action_bar';\nimport AttachmentList from './attachment_list';\nimport Card from '../features/status/components/card';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { MediaGallery, Video } from 'flavours/glitch/util/async-components';\nimport { HotKeys } from 'react-hotkeys';\nimport NotificationOverlayContainer from 'flavours/glitch/features/notifications/containers/overlay_container';\nimport classNames from 'classnames';\nimport { autoUnfoldCW } from 'flavours/glitch/util/content_warning';\n\n// We use the component (and not the container) since we do not want\n// to use the progress bar to show download progress\nimport Bundle from '../features/ui/components/bundle';\n\nexport const textForScreenReader = (intl, status, rebloggedByText = false, expanded = false) => {\n const displayName = status.getIn(['account', 'display_name']);\n\n const values = [\n displayName.length === 0 ? status.getIn(['account', 'acct']).split('@')[0] : displayName,\n status.get('spoiler_text') && !expanded ? status.get('spoiler_text') : status.get('search_index').slice(status.get('spoiler_text').length),\n intl.formatDate(status.get('created_at'), { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }),\n status.getIn(['account', 'acct']),\n ];\n\n if (rebloggedByText) {\n values.push(rebloggedByText);\n }\n\n return values.join(', ');\n};\n\n@injectIntl\nexport default class Status extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n containerId: PropTypes.string,\n id: PropTypes.string,\n status: ImmutablePropTypes.map,\n account: ImmutablePropTypes.map,\n onReply: PropTypes.func,\n onFavourite: PropTypes.func,\n onReblog: PropTypes.func,\n onDelete: PropTypes.func,\n onDirect: PropTypes.func,\n onMention: PropTypes.func,\n onPin: PropTypes.func,\n onOpenMedia: PropTypes.func,\n onOpenVideo: PropTypes.func,\n onBlock: PropTypes.func,\n onEmbed: PropTypes.func,\n onHeightChange: PropTypes.func,\n muted: PropTypes.bool,\n collapse: PropTypes.bool,\n hidden: PropTypes.bool,\n prepend: PropTypes.string,\n withDismiss: PropTypes.bool,\n onMoveUp: PropTypes.func,\n onMoveDown: PropTypes.func,\n getScrollPosition: PropTypes.func,\n updateScrollBottom: PropTypes.func,\n expanded: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n cacheMediaWidth: PropTypes.func,\n cachedMediaWidth: PropTypes.number,\n };\n\n state = {\n isCollapsed: false,\n autoCollapsed: false,\n isExpanded: undefined,\n }\n\n // Avoid checking props that are functions (and whose equality will always\n // evaluate to false. See react-immutable-pure-component for usage.\n updateOnProps = [\n 'status',\n 'account',\n 'settings',\n 'prepend',\n 'boostModal',\n 'favouriteModal',\n 'muted',\n 'collapse',\n 'notification',\n 'hidden',\n 'expanded',\n ]\n\n updateOnStates = [\n 'isExpanded',\n 'isCollapsed',\n ]\n\n // If our settings have changed to disable collapsed statuses, then we\n // need to make sure that we uncollapse every one. We do that by watching\n // for changes to `settings.collapsed.enabled` in\n // `getderivedStateFromProps()`.\n\n // We also need to watch for changes on the `collapse` prop---if this\n // changes to anything other than `undefined`, then we need to collapse or\n // uncollapse our status accordingly.\n static getDerivedStateFromProps(nextProps, prevState) {\n let update = {};\n let updated = false;\n\n // Make sure the state mirrors props we track…\n if (nextProps.collapse !== prevState.collapseProp) {\n update.collapseProp = nextProps.collapse;\n updated = true;\n }\n if (nextProps.expanded !== prevState.expandedProp) {\n update.expandedProp = nextProps.expanded;\n updated = true;\n }\n\n // Update state based on new props\n if (!nextProps.settings.getIn(['collapsed', 'enabled'])) {\n if (prevState.isCollapsed) {\n update.isCollapsed = false;\n updated = true;\n }\n } else if (\n nextProps.collapse !== prevState.collapseProp &&\n nextProps.collapse !== undefined\n ) {\n update.isCollapsed = nextProps.collapse;\n if (nextProps.collapse) update.isExpanded = false;\n updated = true;\n }\n if (nextProps.expanded !== prevState.expandedProp &&\n nextProps.expanded !== undefined\n ) {\n update.isExpanded = nextProps.expanded;\n if (nextProps.expanded) update.isCollapsed = false;\n updated = true;\n }\n\n if (nextProps.expanded === undefined &&\n prevState.isExpanded === undefined &&\n update.isExpanded === undefined\n ) {\n const isExpanded = autoUnfoldCW(nextProps.settings, nextProps.status);\n if (isExpanded !== undefined) {\n update.isExpanded = isExpanded;\n updated = true;\n }\n }\n\n return updated ? update : null;\n }\n\n // When mounting, we just check to see if our status should be collapsed,\n // and collapse it if so. We don't need to worry about whether collapsing\n // is enabled here, because `setCollapsed()` already takes that into\n // account.\n\n // The cases where a status should be collapsed are:\n //\n // - The `collapse` prop has been set to `true`\n // - The user has decided in local settings to collapse all statuses.\n // - The user has decided to collapse all notifications ('muted'\n // statuses).\n // - The user has decided to collapse long statuses and the status is\n // over 400px (without media, or 650px with).\n // - The status is a reply and the user has decided to collapse all\n // replies.\n // - The status contains media and the user has decided to collapse all\n // statuses with media.\n // - The status is a reblog the user has decided to collapse all\n // statuses which are reblogs.\n componentDidMount () {\n const { node } = this;\n const {\n status,\n settings,\n collapse,\n muted,\n prepend,\n } = this.props;\n\n // Prevent a crash when node is undefined. Not completely sure why this\n // happens, might be because status === null.\n if (node === undefined) return;\n\n const autoCollapseSettings = settings.getIn(['collapsed', 'auto']);\n\n if (function () {\n switch (true) {\n case !!collapse:\n case !!autoCollapseSettings.get('all'):\n case autoCollapseSettings.get('notifications') && !!muted:\n case autoCollapseSettings.get('lengthy') && node.clientHeight > (\n status.get('media_attachments').size && !muted ? 650 : 400\n ):\n case autoCollapseSettings.get('reblogs') && prepend === 'reblogged_by':\n case autoCollapseSettings.get('replies') && status.get('in_reply_to_id', null) !== null:\n case autoCollapseSettings.get('media') && !(status.get('spoiler_text').length) && !!status.get('media_attachments').size:\n return true;\n default:\n return false;\n }\n }()) {\n this.setCollapsed(true);\n // Hack to fix timeline jumps on second rendering when auto-collapsing\n this.setState({ autoCollapsed: true });\n }\n\n this.didShowCard = !this.props.muted && !this.props.hidden && this.props.status && this.props.status.get('card') && this.props.settings.get('inline_preview_cards');\n }\n\n getSnapshotBeforeUpdate (prevProps, prevState) {\n if (this.props.getScrollPosition) {\n return this.props.getScrollPosition();\n } else {\n return null;\n }\n }\n\n // Hack to fix timeline jumps on second rendering when auto-collapsing\n componentDidUpdate (prevProps, prevState, snapshot) {\n const doShowCard = !this.props.muted && !this.props.hidden && this.props.status && this.props.status.get('card') && this.props.settings.get('inline_preview_cards');\n if (this.state.autoCollapsed || (doShowCard && !this.didShowCard)) {\n if (doShowCard) this.didShowCard = true;\n if (this.state.autoCollapsed) this.setState({ autoCollapsed: false });\n if (snapshot !== null && this.props.updateScrollBottom) {\n if (this.node.offsetTop < snapshot.top) {\n this.props.updateScrollBottom(snapshot.height - snapshot.top);\n }\n }\n }\n }\n\n componentWillUnmount() {\n if (this.node && this.props.getScrollPosition) {\n const position = this.props.getScrollPosition();\n if (position !== null && this.node.offsetTop < position.top) {\n requestAnimationFrame(() => { this.props.updateScrollBottom(position.height - position.top); });\n }\n }\n }\n\n // `setCollapsed()` sets the value of `isCollapsed` in our state, that is,\n // whether the toot is collapsed or not.\n\n // `setCollapsed()` automatically checks for us whether toot collapsing\n // is enabled, so we don't have to.\n setCollapsed = (value) => {\n if (this.props.settings.getIn(['collapsed', 'enabled'])) {\n this.setState({ isCollapsed: value });\n if (value) {\n this.setExpansion(false);\n }\n } else {\n this.setState({ isCollapsed: false });\n }\n }\n\n setExpansion = (value) => {\n this.setState({ isExpanded: value });\n if (value) {\n this.setCollapsed(false);\n }\n }\n\n // `parseClick()` takes a click event and responds appropriately.\n // If our status is collapsed, then clicking on it should uncollapse it.\n // If `Shift` is held, then clicking on it should collapse it.\n // Otherwise, we open the url handed to us in `destination`, if\n // applicable.\n parseClick = (e, destination) => {\n const { router } = this.context;\n const { status } = this.props;\n const { isCollapsed } = this.state;\n if (!router) return;\n if (destination === undefined) {\n destination = `/statuses/${\n status.getIn(['reblog', 'id'], status.get('id'))\n }`;\n }\n if (e.button === 0 && !(e.ctrlKey || e.altKey || e.metaKey)) {\n if (isCollapsed) this.setCollapsed(false);\n else if (e.shiftKey) {\n this.setCollapsed(true);\n document.getSelection().removeAllRanges();\n } else router.history.push(destination);\n e.preventDefault();\n }\n }\n\n handleAccountClick = (e) => {\n if (this.context.router && e.button === 0) {\n const id = e.currentTarget.getAttribute('data-id');\n e.preventDefault();\n this.context.router.history.push(`/accounts/${id}`);\n }\n }\n\n handleExpandedToggle = () => {\n if (this.props.status.get('spoiler_text')) {\n this.setExpansion(!this.state.isExpanded);\n }\n };\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n handleHotkeyReply = e => {\n e.preventDefault();\n this.props.onReply(this.props.status, this.context.router.history);\n }\n\n handleHotkeyFavourite = (e) => {\n this.props.onFavourite(this.props.status, e);\n }\n\n handleHotkeyBoost = e => {\n this.props.onReblog(this.props.status, e);\n }\n\n handleHotkeyMention = e => {\n e.preventDefault();\n this.props.onMention(this.props.status.get('account'), this.context.router.history);\n }\n\n handleHotkeyOpen = () => {\n this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);\n }\n\n handleHotkeyOpenProfile = () => {\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`);\n }\n\n handleHotkeyMoveUp = e => {\n this.props.onMoveUp(this.props.containerId || this.props.id, e.target.getAttribute('data-featured'));\n }\n\n handleHotkeyMoveDown = e => {\n this.props.onMoveDown(this.props.containerId || this.props.id, e.target.getAttribute('data-featured'));\n }\n\n handleRef = c => {\n this.node = c;\n }\n\n renderLoadingMediaGallery () {\n return <div className='media_gallery' style={{ height: '110px' }} />;\n }\n\n renderLoadingVideoPlayer () {\n return <div className='media-spoiler-video' style={{ height: '110px' }} />;\n }\n\n render () {\n const {\n handleRef,\n parseClick,\n setExpansion,\n setCollapsed,\n } = this;\n const { router } = this.context;\n const {\n intl,\n status,\n account,\n settings,\n collapsed,\n muted,\n prepend,\n intersectionObserverWrapper,\n onOpenVideo,\n onOpenMedia,\n notification,\n hidden,\n featured,\n ...other\n } = this.props;\n const { isExpanded, isCollapsed } = this.state;\n let background = null;\n let attachments = null;\n let media = null;\n let mediaIcon = null;\n\n if (status === null) {\n return null;\n }\n\n if (hidden) {\n return (\n <div ref={this.handleRef}>\n {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])}\n {' '}\n {status.get('content')}\n </div>\n );\n }\n\n if (status.get('filtered') || status.getIn(['reblog', 'filtered'])) {\n const minHandlers = this.props.muted ? {} : {\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n };\n\n return (\n <HotKeys handlers={minHandlers}>\n <div className='status__wrapper status__wrapper--filtered focusable' tabIndex='0' ref={this.handleRef}>\n <FormattedMessage id='status.filtered' defaultMessage='Filtered' />\n </div>\n </HotKeys>\n );\n }\n\n // If user backgrounds for collapsed statuses are enabled, then we\n // initialize our background accordingly. This will only be rendered if\n // the status is collapsed.\n if (settings.getIn(['collapsed', 'backgrounds', 'user_backgrounds'])) {\n background = status.getIn(['account', 'header']);\n }\n\n // This handles our media attachments.\n // If a media file is of unknwon type or if the status is muted\n // (notification), we show a list of links instead of embedded media.\n\n // After we have generated our appropriate media element and stored it in\n // `media`, we snatch the thumbnail to use as our `background` if media\n // backgrounds for collapsed statuses are enabled.\n attachments = status.get('media_attachments');\n if (attachments.size > 0) {\n if (muted || attachments.some(item => item.get('type') === 'unknown')) {\n media = (\n <AttachmentList\n compact\n media={status.get('media_attachments')}\n />\n );\n } else if (attachments.getIn([0, 'type']) === 'video') { // Media type is 'video'\n const video = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >\n {Component => (<Component\n preview={video.get('preview_url')}\n src={video.get('url')}\n alt={video.get('description')}\n inline\n sensitive={status.get('sensitive')}\n letterbox={settings.getIn(['media', 'letterbox'])}\n fullwidth={settings.getIn(['media', 'fullwidth'])}\n preventPlayback={isCollapsed || !isExpanded}\n onOpenVideo={this.handleOpenVideo}\n width={this.props.cachedMediaWidth}\n cacheWidth={this.props.cacheMediaWidth}\n />)}\n </Bundle>\n );\n mediaIcon = 'video-camera';\n } else { // Media type is 'image' or 'gifv'\n media = (\n <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}>\n {Component => (\n <Component\n media={attachments}\n sensitive={status.get('sensitive')}\n letterbox={settings.getIn(['media', 'letterbox'])}\n fullwidth={settings.getIn(['media', 'fullwidth'])}\n hidden={isCollapsed || !isExpanded}\n onOpenMedia={this.props.onOpenMedia}\n cacheWidth={this.props.cacheMediaWidth}\n defaultWidth={this.props.cachedMediaWidth}\n />\n )}\n </Bundle>\n );\n mediaIcon = 'picture-o';\n }\n\n if (!status.get('sensitive') && !(status.get('spoiler_text').length > 0) && settings.getIn(['collapsed', 'backgrounds', 'preview_images'])) {\n background = attachments.getIn([0, 'preview_url']);\n }\n } else if (status.get('card') && settings.get('inline_preview_cards')) {\n media = (\n <Card\n onOpenMedia={this.props.onOpenMedia}\n card={status.get('card')}\n compact\n cacheWidth={this.props.cacheMediaWidth}\n defaultWidth={this.props.cachedMediaWidth}\n />\n );\n mediaIcon = 'link';\n }\n\n // Here we prepare extra data-* attributes for CSS selectors.\n // Users can use those for theming, hiding avatars etc via UserStyle\n const selectorAttribs = {\n 'data-status-by': `@${status.getIn(['account', 'acct'])}`,\n };\n\n if (prepend && account) {\n const notifKind = {\n favourite: 'favourited',\n reblog: 'boosted',\n reblogged_by: 'boosted',\n }[prepend];\n\n selectorAttribs[`data-${notifKind}-by`] = `@${account.get('acct')}`;\n }\n\n let rebloggedByText;\n\n if (prepend === 'reblog') {\n rebloggedByText = intl.formatMessage({ id: 'status.reblogged_by', defaultMessage: '{name} boosted' }, { name: account.get('acct') });\n }\n\n const handlers = {\n reply: this.handleHotkeyReply,\n favourite: this.handleHotkeyFavourite,\n boost: this.handleHotkeyBoost,\n mention: this.handleHotkeyMention,\n open: this.handleHotkeyOpen,\n openProfile: this.handleHotkeyOpenProfile,\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n toggleSpoiler: this.handleExpandedToggle,\n };\n\n const computedClass = classNames('status', `status-${status.get('visibility')}`, {\n collapsed: isCollapsed,\n 'has-background': isCollapsed && background,\n 'status__wrapper-reply': !!status.get('in_reply_to_id'),\n muted,\n }, 'focusable');\n\n return (\n <HotKeys handlers={handlers}>\n <div\n className={computedClass}\n style={isCollapsed && background ? { backgroundImage: `url(${background})` } : null}\n {...selectorAttribs}\n ref={handleRef}\n tabIndex='0'\n data-featured={featured ? 'true' : null}\n aria-label={textForScreenReader(intl, status, rebloggedByText, !status.get('hidden'))}\n >\n <header className='status__info'>\n <span>\n {prepend && account ? (\n <StatusPrepend\n type={prepend}\n account={account}\n parseClick={parseClick}\n notificationId={this.props.notificationId}\n />\n ) : null}\n {!muted || !isCollapsed ? (\n <StatusHeader\n status={status}\n friend={account}\n collapsed={isCollapsed}\n parseClick={parseClick}\n />\n ) : null}\n </span>\n <StatusIcons\n status={status}\n mediaIcon={mediaIcon}\n collapsible={settings.getIn(['collapsed', 'enabled'])}\n collapsed={isCollapsed}\n setCollapsed={setCollapsed}\n />\n </header>\n <StatusContent\n status={status}\n media={media}\n mediaIcon={mediaIcon}\n expanded={isExpanded}\n onExpandedToggle={this.handleExpandedToggle}\n parseClick={parseClick}\n disabled={!router}\n />\n {!isCollapsed || !(muted || !settings.getIn(['collapsed', 'show_action_bar'])) ? (\n <StatusActionBar\n {...other}\n status={status}\n account={status.get('account')}\n showReplyCount={settings.get('show_reply_count')}\n />\n ) : null}\n {notification ? (\n <NotificationOverlayContainer\n notification={notification}\n />\n ) : null}\n </div>\n </HotKeys>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { autoPlayGif } from '../initial_state';\n\nexport default class AvatarComposite extends React.PureComponent {\n\n static propTypes = {\n accounts: ImmutablePropTypes.list.isRequired,\n animate: PropTypes.bool,\n size: PropTypes.number.isRequired,\n };\n\n static defaultProps = {\n animate: autoPlayGif,\n };\n\n renderItem (account, size, index) {\n const { animate } = this.props;\n\n let width = 50;\n let height = 100;\n let top = 'auto';\n let left = 'auto';\n let bottom = 'auto';\n let right = 'auto';\n\n if (size === 1) {\n width = 100;\n }\n\n if (size === 4 || (size === 3 && index > 0)) {\n height = 50;\n }\n\n if (size === 2) {\n if (index === 0) {\n right = '2px';\n } else {\n left = '2px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '2px';\n } else if (index > 0) {\n left = '2px';\n }\n\n if (index === 1) {\n bottom = '2px';\n } else if (index > 1) {\n top = '2px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '2px';\n }\n\n if (index === 1 || index === 3) {\n left = '2px';\n }\n\n if (index < 2) {\n bottom = '2px';\n } else {\n top = '2px';\n }\n }\n\n const style = {\n left: left,\n top: top,\n right: right,\n bottom: bottom,\n width: `${width}%`,\n height: `${height}%`,\n backgroundSize: 'cover',\n backgroundImage: `url(${account.get(animate ? 'avatar' : 'avatar_static')})`,\n };\n\n return (\n <div key={account.get('id')} style={style} />\n );\n }\n\n render() {\n const { accounts, size } = this.props;\n\n return (\n <div className='account__avatar-composite' style={{ width: `${size}px`, height: `${size}px` }}>\n {accounts.take(4).map((account, i) => this.renderItem(account, accounts.size, i))}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport IconButton from './icon_button';\nimport DropdownMenuContainer from '../containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { me, deleteOthersNotice, isStaff } from '../initial_state';\n\nconst messages = defineMessages({\n delete: { id: 'status.delete', defaultMessage: 'Delete' },\n redraft: { id: 'status.redraft', defaultMessage: 'Delete & re-draft' },\n direct: { id: 'status.direct', defaultMessage: 'Direct message @{name}' },\n mention: { id: 'status.mention', defaultMessage: 'Mention @{name}' },\n mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },\n block: { id: 'account.block', defaultMessage: 'Block @{name}' },\n reply: { id: 'status.reply', defaultMessage: 'Reply' },\n share: { id: 'status.share', defaultMessage: 'Share' },\n more: { id: 'status.more', defaultMessage: 'More' },\n replyAll: { id: 'status.replyAll', defaultMessage: 'Reply to thread' },\n reblog: { id: 'status.reblog', defaultMessage: 'Boost' },\n reblog_private: { id: 'status.reblog_private', defaultMessage: 'Boost to original audience' },\n cancel_reblog_private: { id: 'status.cancel_reblog_private', defaultMessage: 'Unboost' },\n cannot_reblog: { id: 'status.cannot_reblog', defaultMessage: 'This post cannot be boosted' },\n favourite: { id: 'status.favourite', defaultMessage: 'Favourite' },\n open: { id: 'status.open', defaultMessage: 'Expand this status' },\n report: { id: 'status.report', defaultMessage: 'Report @{name}' },\n muteConversation: { id: 'status.mute_conversation', defaultMessage: 'Mute conversation' },\n unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' },\n pin: { id: 'status.pin', defaultMessage: 'Pin on profile' },\n unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },\n embed: { id: 'status.embed', defaultMessage: 'Embed' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' },\n copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },\n});\n\nconst obfuscatedCount = count => {\n if (count < 0) {\n return 0;\n } else if (count <= 1) {\n return count;\n } else {\n return '1+';\n }\n};\n\nexport default @injectIntl\nclass StatusActionBar extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n onReply: PropTypes.func,\n onFavourite: PropTypes.func,\n onReblog: PropTypes.func,\n onDelete: PropTypes.func,\n onDirect: PropTypes.func,\n onMention: PropTypes.func,\n onMute: PropTypes.func,\n onBlock: PropTypes.func,\n onReport: PropTypes.func,\n onEmbed: PropTypes.func,\n onMuteConversation: PropTypes.func,\n onPin: PropTypes.func,\n withDismiss: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n };\n\n // Avoid checking props that are functions (and whose equality will always\n // evaluate to false. See react-immutable-pure-component for usage.\n updateOnProps = [\n 'status',\n 'withDismiss',\n ]\n\n handleReplyClick = () => {\n if (me) {\n this.props.onReply(this.props.status, this.context.router.history);\n } else {\n this._openInteractionDialog('reply');\n }\n }\n\n handleShareClick = () => {\n navigator.share({\n text: this.props.status.get('search_index'),\n url: this.props.status.get('url'),\n }).catch((e) => {\n if (e.name !== 'AbortError') console.error(e);\n });\n }\n\n handleFavouriteClick = () => {\n if (me) {\n this.props.onFavourite(this.props.status);\n } else {\n this._openInteractionDialog('favourite');\n }\n }\n\n handleReblogClick = e => {\n if (me) {\n this.props.onReblog(this.props.status, e);\n } else {\n this._openInteractionDialog('reblog');\n }\n }\n\n _openInteractionDialog = type => {\n window.open(`/interact/${this.props.status.get('id')}?type=${type}`, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');\n }\n\n handleDeleteClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history);\n }\n\n handleRedraftClick = () => {\n this.props.onDelete(this.props.status, this.context.router.history, true);\n }\n\n handlePinClick = () => {\n this.props.onPin(this.props.status);\n }\n\n handleMentionClick = () => {\n this.props.onMention(this.props.status.get('account'), this.context.router.history);\n }\n\n handleDirectClick = () => {\n this.props.onDirect(this.props.status.get('account'), this.context.router.history);\n }\n\n handleMuteClick = () => {\n this.props.onMute(this.props.status.get('account'));\n }\n\n handleBlockClick = () => {\n this.props.onBlock(this.props.status.get('account'));\n }\n\n handleOpen = () => {\n this.context.router.history.push(`/statuses/${this.props.status.get('id')}`);\n }\n\n handleEmbed = () => {\n this.props.onEmbed(this.props.status);\n }\n\n handleReport = () => {\n this.props.onReport(this.props.status);\n }\n\n handleConversationMuteClick = () => {\n this.props.onMuteConversation(this.props.status);\n }\n\n handleCopy = () => {\n const url = this.props.status.get('url');\n const textarea = document.createElement('textarea');\n\n textarea.textContent = url;\n textarea.style.position = 'fixed';\n\n document.body.appendChild(textarea);\n\n try {\n textarea.select();\n document.execCommand('copy');\n } catch (e) {\n\n } finally {\n document.body.removeChild(textarea);\n }\n }\n\n render () {\n const { status, intl, withDismiss } = this.props;\n\n const mutingConversation = status.get('muted');\n const anonymousAccess = !me;\n const publicStatus = ['public', 'unlisted'].includes(status.get('visibility'));\n\n let menu = [];\n let reblogIcon = 'retweet';\n let replyIcon;\n let replyTitle;\n\n menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen });\n\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });\n menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });\n }\n\n menu.push(null);\n\n if (status.getIn(['account', 'id']) === me || withDismiss) {\n menu.push({ text: intl.formatMessage(mutingConversation ? messages.unmuteConversation : messages.muteConversation), action: this.handleConversationMuteClick });\n menu.push(null);\n }\n\n if (status.getIn(['account', 'id']) === me) {\n if (publicStatus) {\n menu.push({ text: intl.formatMessage(status.get('pinned') ? messages.unpin : messages.pin), action: this.handlePinClick });\n } else {\n if (status.get('visibility') === 'private') {\n menu.push({ text: intl.formatMessage(status.get('reblogged') ? messages.cancel_reblog_private : messages.reblog_private), action: this.handleReblogClick });\n }\n }\n\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mention, { name: status.getIn(['account', 'username']) }), action: this.handleMentionClick });\n menu.push({ text: intl.formatMessage(messages.direct, { name: status.getIn(['account', 'username']) }), action: this.handleDirectClick });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mute, { name: status.getIn(['account', 'username']) }), action: this.handleMuteClick });\n menu.push({ text: intl.formatMessage(messages.block, { name: status.getIn(['account', 'username']) }), action: this.handleBlockClick });\n menu.push({ text: intl.formatMessage(messages.report, { name: status.getIn(['account', 'username']) }), action: this.handleReport });\n\n if (isStaff) {\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.admin_account, { name: status.getIn(['account', 'username']) }), href: `/admin/accounts/${status.getIn(['account', 'id'])}` });\n menu.push({ text: intl.formatMessage(messages.admin_status), href: `/admin/accounts/${status.getIn(['account', 'id'])}/statuses/${status.get('id')}` });\n }\n if ( deleteOthersNotice ) {\n menu.push({ text: intl.formatMessage(messages.delete), action: this.handleDeleteClick });\n }\n }\n\n if (status.get('visibility') === 'direct') {\n reblogIcon = 'envelope';\n } else if (status.get('visibility') === 'private') {\n reblogIcon = 'lock';\n }\n\n if (status.get('in_reply_to_id', null) === null) {\n replyIcon = 'reply';\n replyTitle = intl.formatMessage(messages.reply);\n } else {\n replyIcon = 'reply-all';\n replyTitle = intl.formatMessage(messages.replyAll);\n }\n\n const shareButton = ('share' in navigator) && status.get('visibility') === 'public' && (\n <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />\n );\n\n return (\n <div className='status__action-bar'>\n <div className='status__action-bar__counter'><IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} /><span className='status__action-bar__counter__label' >{obfuscatedCount(status.get('replies_count'))}</span></div>\n <IconButton className='status__action-bar-button' disabled={!publicStatus} active={status.get('reblogged')} pressed={status.get('reblogged')} title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)} icon={reblogIcon} onClick={this.handleReblogClick} />\n <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} />\n {shareButton}\n\n <div className='status__action-bar-dropdown'>\n <DropdownMenuContainer disabled={anonymousAccess} status={status} items={menu} icon='ellipsis-h' size={18} direction='right' title={intl.formatMessage(messages.more)} />\n </div>\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 './avatar';\nimport AvatarOverlay from './avatar_overlay';\nimport AvatarComposite from './avatar_composite';\nimport RelativeTimestamp from './relative_timestamp';\nimport DisplayName from './display_name';\nimport StatusContent from './status_content';\nimport StatusActionBar from './status_action_bar';\nimport AttachmentList from './attachment_list';\nimport Card from '../features/status/components/card';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { MediaGallery, Video } from '../features/ui/util/async-components';\nimport { HotKeys } from 'react-hotkeys';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\n// We use the component (and not the container) since we do not want\n// to use the progress bar to show download progress\nimport Bundle from '../features/ui/components/bundle';\n\nexport const textForScreenReader = (intl, status, rebloggedByText = false) => {\n const displayName = status.getIn(['account', 'display_name']);\n\n const values = [\n displayName.length === 0 ? status.getIn(['account', 'acct']).split('@')[0] : displayName,\n status.get('spoiler_text') && status.get('hidden') ? status.get('spoiler_text') : status.get('search_index').slice(status.get('spoiler_text').length),\n intl.formatDate(status.get('created_at'), { hour: '2-digit', minute: '2-digit', month: 'short', day: 'numeric' }),\n status.getIn(['account', 'acct']),\n ];\n\n if (rebloggedByText) {\n values.push(rebloggedByText);\n }\n\n return values.join(', ');\n};\n\nexport default @injectIntl\nclass Status extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map,\n account: ImmutablePropTypes.map,\n otherAccounts: ImmutablePropTypes.list,\n onClick: PropTypes.func,\n onReply: PropTypes.func,\n onFavourite: PropTypes.func,\n onReblog: PropTypes.func,\n onDelete: PropTypes.func,\n onDirect: PropTypes.func,\n onMention: PropTypes.func,\n onPin: PropTypes.func,\n onOpenMedia: PropTypes.func,\n onOpenVideo: PropTypes.func,\n onBlock: PropTypes.func,\n onEmbed: PropTypes.func,\n onHeightChange: PropTypes.func,\n onToggleHidden: PropTypes.func,\n muted: PropTypes.bool,\n hidden: PropTypes.bool,\n unread: PropTypes.bool,\n onMoveUp: PropTypes.func,\n onMoveDown: PropTypes.func,\n showThread: PropTypes.bool,\n getScrollPosition: PropTypes.func,\n updateScrollBottom: PropTypes.func,\n cacheMediaWidth: PropTypes.func,\n cachedMediaWidth: PropTypes.number,\n };\n\n // Avoid checking props that are functions (and whose equality will always\n // evaluate to false. See react-immutable-pure-component for usage.\n updateOnProps = [\n 'status',\n 'account',\n 'muted',\n 'hidden',\n ];\n\n // Track height changes we know about to compensate scrolling\n componentDidMount () {\n this.didShowCard = !this.props.muted && !this.props.hidden && this.props.status && this.props.status.get('card');\n }\n\n getSnapshotBeforeUpdate () {\n if (this.props.getScrollPosition) {\n return this.props.getScrollPosition();\n } else {\n return null;\n }\n }\n\n // Compensate height changes\n componentDidUpdate (prevProps, prevState, snapshot) {\n const doShowCard = !this.props.muted && !this.props.hidden && this.props.status && this.props.status.get('card');\n if (doShowCard && !this.didShowCard) {\n this.didShowCard = true;\n if (snapshot !== null && this.props.updateScrollBottom) {\n if (this.node && this.node.offsetTop < snapshot.top) {\n this.props.updateScrollBottom(snapshot.height - snapshot.top);\n }\n }\n }\n }\n\n componentWillUnmount() {\n if (this.node && this.props.getScrollPosition) {\n const position = this.props.getScrollPosition();\n if (position !== null && this.node.offsetTop < position.top) {\n requestAnimationFrame(() => {\n this.props.updateScrollBottom(position.height - position.top);\n });\n }\n }\n }\n\n handleClick = () => {\n if (this.props.onClick) {\n this.props.onClick();\n return;\n }\n\n if (!this.context.router) {\n return;\n }\n\n const { status } = this.props;\n this.context.router.history.push(`/statuses/${status.getIn(['reblog', 'id'], status.get('id'))}`);\n }\n\n handleAccountClick = (e) => {\n if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {\n const id = e.currentTarget.getAttribute('data-id');\n e.preventDefault();\n this.context.router.history.push(`/accounts/${id}`);\n }\n }\n\n handleExpandedToggle = () => {\n this.props.onToggleHidden(this._properStatus());\n };\n\n renderLoadingMediaGallery () {\n return <div className='media_gallery' style={{ height: '110px' }} />;\n }\n\n renderLoadingVideoPlayer () {\n return <div className='media-spoiler-video' style={{ height: '110px' }} />;\n }\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n handleHotkeyReply = e => {\n e.preventDefault();\n this.props.onReply(this._properStatus(), this.context.router.history);\n }\n\n handleHotkeyFavourite = () => {\n this.props.onFavourite(this._properStatus());\n }\n\n handleHotkeyBoost = e => {\n this.props.onReblog(this._properStatus(), e);\n }\n\n handleHotkeyMention = e => {\n e.preventDefault();\n this.props.onMention(this._properStatus().get('account'), this.context.router.history);\n }\n\n handleHotkeyOpen = () => {\n this.context.router.history.push(`/statuses/${this._properStatus().get('id')}`);\n }\n\n handleHotkeyOpenProfile = () => {\n this.context.router.history.push(`/accounts/${this._properStatus().getIn(['account', 'id'])}`);\n }\n\n handleHotkeyMoveUp = e => {\n this.props.onMoveUp(this.props.status.get('id'), e.target.getAttribute('data-featured'));\n }\n\n handleHotkeyMoveDown = e => {\n this.props.onMoveDown(this.props.status.get('id'), e.target.getAttribute('data-featured'));\n }\n\n handleHotkeyToggleHidden = () => {\n this.props.onToggleHidden(this._properStatus());\n }\n\n _properStatus () {\n const { status } = this.props;\n\n if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') {\n return status.get('reblog');\n } else {\n return status;\n }\n }\n\n handleRef = c => {\n this.node = c;\n }\n\n render () {\n let media = null;\n let statusAvatar, prepend, rebloggedByText;\n\n const { intl, hidden, featured, otherAccounts, unread, showThread } = this.props;\n\n let { status, account, ...other } = this.props;\n\n if (status === null) {\n return null;\n }\n\n if (hidden) {\n return (\n <div ref={this.handleRef}>\n {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])}\n {status.get('content')}\n </div>\n );\n }\n\n if (status.get('filtered') || status.getIn(['reblog', 'filtered'])) {\n const minHandlers = this.props.muted ? {} : {\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n };\n\n return (\n <HotKeys handlers={minHandlers}>\n <div className='status__wrapper status__wrapper--filtered focusable' tabIndex='0' ref={this.handleRef}>\n <FormattedMessage id='status.filtered' defaultMessage='Filtered' />\n </div>\n </HotKeys>\n );\n }\n\n if (featured) {\n prepend = (\n <div className='status__prepend'>\n <div className='status__prepend-icon-wrapper'><Icon id='thumb-tack' className='status__prepend-icon' fixedWidth /></div>\n <FormattedMessage id='status.pinned' defaultMessage='Pinned toot' />\n </div>\n );\n } else if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') {\n const display_name_html = { __html: status.getIn(['account', 'display_name_html']) };\n\n prepend = (\n <div className='status__prepend'>\n <div className='status__prepend-icon-wrapper'><Icon id='retweet' className='status__prepend-icon' fixedWidth /></div>\n <FormattedMessage id='status.reblogged_by' defaultMessage='{name} boosted' values={{ name: <a onClick={this.handleAccountClick} data-id={status.getIn(['account', 'id'])} href={status.getIn(['account', 'url'])} className='status__display-name muted'><bdi><strong dangerouslySetInnerHTML={display_name_html} /></bdi></a> }} />\n </div>\n );\n\n rebloggedByText = intl.formatMessage({ id: 'status.reblogged_by', defaultMessage: '{name} boosted' }, { name: status.getIn(['account', 'acct']) });\n\n account = status.get('account');\n status = status.get('reblog');\n }\n\n if (status.get('media_attachments').size > 0) {\n if (this.props.muted || status.get('media_attachments').some(item => item.get('type') === 'unknown')) {\n media = (\n <AttachmentList\n compact\n media={status.get('media_attachments')}\n />\n );\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n const video = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >\n {Component => (\n <Component\n preview={video.get('preview_url')}\n src={video.get('url')}\n alt={video.get('description')}\n width={this.props.cachedMediaWidth}\n height={110}\n inline\n sensitive={status.get('sensitive')}\n onOpenVideo={this.handleOpenVideo}\n cacheWidth={this.props.cacheMediaWidth}\n />\n )}\n </Bundle>\n );\n } else {\n media = (\n <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery}>\n {Component => (\n <Component\n media={status.get('media_attachments')}\n sensitive={status.get('sensitive')}\n height={110}\n onOpenMedia={this.props.onOpenMedia}\n cacheWidth={this.props.cacheMediaWidth}\n defaultWidth={this.props.cachedMediaWidth}\n />\n )}\n </Bundle>\n );\n }\n } else if (status.get('spoiler_text').length === 0 && status.get('card')) {\n media = (\n <Card\n onOpenMedia={this.props.onOpenMedia}\n card={status.get('card')}\n compact\n cacheWidth={this.props.cacheMediaWidth}\n defaultWidth={this.props.cachedMediaWidth}\n />\n );\n }\n\n if (otherAccounts && otherAccounts.size > 0) {\n statusAvatar = <AvatarComposite accounts={otherAccounts} size={48} />;\n } else if (account === undefined || account === null) {\n statusAvatar = <Avatar account={status.get('account')} size={48} />;\n } else {\n statusAvatar = <AvatarOverlay account={status.get('account')} friend={account} />;\n }\n\n const handlers = this.props.muted ? {} : {\n reply: this.handleHotkeyReply,\n favourite: this.handleHotkeyFavourite,\n boost: this.handleHotkeyBoost,\n mention: this.handleHotkeyMention,\n open: this.handleHotkeyOpen,\n openProfile: this.handleHotkeyOpenProfile,\n moveUp: this.handleHotkeyMoveUp,\n moveDown: this.handleHotkeyMoveDown,\n toggleHidden: this.handleHotkeyToggleHidden,\n };\n\n return (\n <HotKeys handlers={handlers}>\n <div className={classNames('status__wrapper', `status__wrapper-${status.get('visibility')}`, { 'status__wrapper-reply': !!status.get('in_reply_to_id'), read: unread === false, focusable: !this.props.muted })} tabIndex={this.props.muted ? null : 0} data-featured={featured ? 'true' : null} aria-label={textForScreenReader(intl, status, rebloggedByText, !status.get('hidden'))} ref={this.handleRef}>\n {prepend}\n\n <div className={classNames('status', `status-${status.get('visibility')}`, { 'status-reply': !!status.get('in_reply_to_id'), muted: this.props.muted, read: unread === false })} data-id={status.get('id')}>\n <div className='status__info'>\n <a href={status.get('url')} className='status__relative-time' target='_blank' rel='noopener'><RelativeTimestamp timestamp={status.get('created_at')} /></a>\n\n <a onClick={this.handleAccountClick} target='_blank' data-id={status.getIn(['account', 'id'])} href={status.getIn(['account', 'url'])} title={status.getIn(['account', 'acct'])} className='status__display-name'>\n <div className='status__avatar'>\n {statusAvatar}\n </div>\n\n <DisplayName account={status.get('account')} others={otherAccounts} />\n </a>\n </div>\n\n <StatusContent status={status} onClick={this.handleClick} expanded={!status.get('hidden')} onExpandedToggle={this.handleExpandedToggle} collapsable />\n\n {media}\n\n {showThread && status.get('in_reply_to_id') && status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) && (\n <button className='status__content__read-more-button' onClick={this.handleClick}>\n <FormattedMessage id='status.show_thread' defaultMessage='Show thread' />\n </button>\n )}\n\n <StatusActionBar status={status} account={account} {...other} />\n </div>\n </div>\n </HotKeys>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nexport default class ColumnHeader extends React.PureComponent {\n\n static propTypes = {\n icon: PropTypes.string,\n type: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func,\n columnHeaderId: PropTypes.string,\n };\n\n handleClick = () => {\n this.props.onClick();\n }\n\n render () {\n const { icon, type, active, columnHeaderId } = this.props;\n let iconElement = '';\n\n if (icon) {\n iconElement = <i className={`fa fa-fw fa-${icon} column-header__icon`} />;\n }\n\n return (\n <h1 className={classNames('column-header', { active })} id={columnHeaderId || null}>\n <button onClick={this.handleClick}>\n {iconElement}\n {type}\n </button>\n </h1>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nexport default class ColumnHeader extends React.PureComponent {\n\n static propTypes = {\n icon: PropTypes.string,\n type: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func,\n columnHeaderId: PropTypes.string,\n };\n\n handleClick = () => {\n this.props.onClick();\n }\n\n render () {\n const { icon, type, active, columnHeaderId } = this.props;\n let iconElement = '';\n\n if (icon) {\n iconElement = <Icon id={icon} fixedWidth className='column-header__icon' />;\n }\n\n return (\n <h1 className={classNames('column-header', { active })} id={columnHeaderId || null}>\n <button onClick={this.handleClick}>\n {iconElement}\n {type}\n </button>\n </h1>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport Status from '../components/status';\nimport { makeGetStatus } from '../selectors';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from '../actions/compose';\nimport {\n reblog,\n favourite,\n unreblog,\n unfavourite,\n pin,\n unpin,\n} from '../actions/interactions';\nimport { blockAccount } from '../actions/accounts';\nimport {\n muteStatus,\n unmuteStatus,\n deleteStatus,\n hideStatus,\n revealStatus,\n} from '../actions/statuses';\nimport { initMuteModal } from '../actions/mutes';\nimport { initReport } from '../actions/reports';\nimport { openModal } from '../actions/modal';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { boostModal, deleteModal } from '../initial_state';\nimport { showAlertForError } from '../actions/alerts';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },\n redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },\n replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => ({\n status: getStatus(state, props),\n });\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onReply (status, router) {\n dispatch((_, getState) => {\n let state = getState();\n if (state.getIn(['compose', 'text']).trim().length !== 0) {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.replyMessage),\n confirm: intl.formatMessage(messages.replyConfirm),\n onConfirm: () => dispatch(replyCompose(status, router)),\n }));\n } else {\n dispatch(replyCompose(status, router));\n }\n });\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, history, withRedraft = false) {\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), history, withRedraft));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),\n }));\n }\n },\n\n 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","import React from 'react';\nimport { connect } from 'react-redux';\nimport Status from 'flavours/glitch/components/status';\nimport { makeGetStatus } from 'flavours/glitch/selectors';\nimport {\n replyCompose,\n mentionCompose,\n directCompose,\n} from 'flavours/glitch/actions/compose';\nimport {\n reblog,\n favourite,\n bookmark,\n unreblog,\n unfavourite,\n unbookmark,\n pin,\n unpin,\n} from 'flavours/glitch/actions/interactions';\nimport { blockAccount } from 'flavours/glitch/actions/accounts';\nimport { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { initReport } from 'flavours/glitch/actions/reports';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { changeLocalSetting } from 'flavours/glitch/actions/local_settings';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { boostModal, favouriteModal, deleteModal } from 'flavours/glitch/util/initial_state';\nimport { showAlertForError } from '../actions/alerts';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },\n redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },\n replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const mapStateToProps = (state, props) => {\n\n let status = getStatus(state, props);\n let reblogStatus = status ? status.get('reblog', null) : null;\n let account = undefined;\n let prepend = undefined;\n\n if (props.featured) {\n account = status.get('account');\n prepend = 'featured';\n } else if (reblogStatus !== null && typeof reblogStatus === 'object') {\n account = status.get('account');\n status = reblogStatus;\n prepend = 'reblogged_by';\n }\n\n return {\n containerId : props.containerId || props.id, // Should match reblogStatus's id for reblogs\n status : status,\n account : account || props.account,\n settings : state.get('local_settings'),\n prepend : prepend || props.prepend,\n };\n };\n\n return mapStateToProps;\n};\n\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n\n onReply (status, router) {\n dispatch((_, getState) => {\n let state = getState();\n if (state.getIn(['local_settings', 'confirm_before_clearing_draft']) && state.getIn(['compose', 'text']).trim().length !== 0) {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.replyMessage),\n confirm: intl.formatMessage(messages.replyConfirm),\n onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_before_clearing_draft'], false)),\n onConfirm: () => dispatch(replyCompose(status, router)),\n }));\n } else {\n dispatch(replyCompose(status, router));\n }\n });\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 onBookmark (status) {\n if (status.get('bookmarked')) {\n dispatch(unbookmark(status));\n } else {\n dispatch(bookmark(status));\n }\n },\n\n onModalFavourite (status) {\n dispatch(favourite(status));\n },\n\n onFavourite (status, e) {\n if (status.get('favourited')) {\n dispatch(unfavourite(status));\n } else {\n if (e.shiftKey || !favouriteModal) {\n this.onModalFavourite(status);\n } else {\n dispatch(openModal('FAVOURITE', { status, onFavourite: this.onModalFavourite }));\n }\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, history, withRedraft = false) {\n if (!deleteModal) {\n dispatch(deleteStatus(status.get('id'), history, withRedraft));\n } else {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(withRedraft ? messages.redraftMessage : messages.deleteMessage),\n confirm: intl.formatMessage(withRedraft ? messages.redraftConfirm : messages.deleteConfirm),\n onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),\n }));\n }\n },\n\n 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});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status));\n","// Package imports.\nimport detectPassiveEvents from 'detect-passive-events';\n\n// This will either be a passive lister options object (if passive\n// events are supported), or `false`.\nexport const withPassive = detectPassiveEvents.hasSupport ? { passive: true } : false;\n\n// Focuses the root element.\nexport function focusRoot () {\n let e;\n if (document && (e = document.querySelector('.ui')) && (e = e.parentElement)) {\n e.focus();\n }\n}\n","import React from 'react';\nimport ColumnHeader from './column_header';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport { scrollTop } from 'flavours/glitch/util/scroll';\nimport { isMobile } from 'flavours/glitch/util/is_mobile';\n\nexport default class Column extends React.PureComponent {\n\n static propTypes = {\n heading: PropTypes.string,\n icon: PropTypes.string,\n children: PropTypes.node,\n active: PropTypes.bool,\n hideHeadingOnMobile: PropTypes.bool,\n name: PropTypes.string,\n };\n\n handleHeaderClick = () => {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n scrollTop () {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n\n handleScroll = debounce(() => {\n if (typeof this._interruptScrollAnimation !== 'undefined') {\n this._interruptScrollAnimation();\n }\n }, 200)\n\n setRef = (c) => {\n this.node = c;\n }\n\n render () {\n const { heading, icon, children, active, hideHeadingOnMobile, name } = this.props;\n\n const showHeading = heading && (!hideHeadingOnMobile || (hideHeadingOnMobile && !isMobile(window.innerWidth)));\n\n const columnHeaderId = showHeading && heading.replace(/ /g, '-');\n const header = showHeading && (\n <ColumnHeader icon={icon} active={active} type={heading} onClick={this.handleHeaderClick} columnHeaderId={columnHeaderId} />\n );\n return (\n <div\n ref={this.setRef}\n role='region'\n data-column={name}\n aria-labelledby={columnHeaderId}\n className='column'\n onScroll={this.handleScroll}\n >\n {header}\n {children}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ColumnHeader from './column_header';\nimport PropTypes from 'prop-types';\nimport { debounce } from 'lodash';\nimport { scrollTop } from '../../../scroll';\nimport { isMobile } from '../../../is_mobile';\n\nexport default class Column extends React.PureComponent {\n\n static propTypes = {\n heading: PropTypes.string,\n icon: PropTypes.string,\n children: PropTypes.node,\n active: PropTypes.bool,\n hideHeadingOnMobile: PropTypes.bool,\n };\n\n handleHeaderClick = () => {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n scrollTop () {\n const scrollable = this.node.querySelector('.scrollable');\n\n if (!scrollable) {\n return;\n }\n\n this._interruptScrollAnimation = scrollTop(scrollable);\n }\n\n\n handleScroll = debounce(() => {\n if (typeof this._interruptScrollAnimation !== 'undefined') {\n this._interruptScrollAnimation();\n }\n }, 200)\n\n setRef = (c) => {\n this.node = c;\n }\n\n render () {\n const { heading, icon, children, active, hideHeadingOnMobile } = this.props;\n\n const showHeading = heading && (!hideHeadingOnMobile || (hideHeadingOnMobile && !isMobile(window.innerWidth)));\n\n const columnHeaderId = showHeading && heading.replace(/ /g, '-');\n const header = showHeading && (\n <ColumnHeader icon={icon} active={active} type={heading} onClick={this.handleHeaderClick} columnHeaderId={columnHeaderId} />\n );\n return (\n <div\n ref={this.setRef}\n role='region'\n aria-labelledby={columnHeaderId}\n className='column'\n onScroll={this.handleScroll}\n >\n {header}\n {children}\n </div>\n );\n }\n\n}\n","\n// Get the bounding client rect from an IntersectionObserver entry.\n// This is to work around a bug in Chrome: https://crbug.com/737228\n\nlet hasBoundingRectBug;\n\nfunction getRectFromEntry(entry) {\n if (typeof hasBoundingRectBug !== 'boolean') {\n const boundingRect = entry.target.getBoundingClientRect();\n const observerRect = entry.boundingClientRect;\n hasBoundingRectBug = boundingRect.height !== observerRect.height ||\n boundingRect.top !== observerRect.top ||\n boundingRect.width !== observerRect.width ||\n boundingRect.bottom !== observerRect.bottom ||\n boundingRect.left !== observerRect.left ||\n boundingRect.right !== observerRect.right;\n }\n return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect;\n}\n\nexport default getRectFromEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport scheduleIdleTask from '../features/ui/util/schedule_idle_task';\nimport getRectFromEntry from '../features/ui/util/get_rect_from_entry';\nimport { is } from 'immutable';\n\n// Diff these props in the \"rendered\" state\nconst updateOnPropsForRendered = ['id', 'index', 'listLength'];\n// Diff these props in the \"unrendered\" state\nconst updateOnPropsForUnrendered = ['id', 'index', 'listLength', 'cachedHeight'];\n\nexport default class IntersectionObserverArticle extends React.Component {\n\n static propTypes = {\n intersectionObserverWrapper: PropTypes.object.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listLength: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n saveHeightKey: PropTypes.string,\n cachedHeight: PropTypes.number,\n onHeightChange: PropTypes.func,\n children: PropTypes.node,\n };\n\n state = {\n isHidden: false, // set to true in requestIdleCallback to trigger un-render\n }\n\n shouldComponentUpdate (nextProps, nextState) {\n const isUnrendered = !this.state.isIntersecting && (this.state.isHidden || this.props.cachedHeight);\n const willBeUnrendered = !nextState.isIntersecting && (nextState.isHidden || nextProps.cachedHeight);\n if (!!isUnrendered !== !!willBeUnrendered) {\n // If we're going from rendered to unrendered (or vice versa) then update\n return true;\n }\n // Otherwise, diff based on props\n const propsToDiff = isUnrendered ? updateOnPropsForUnrendered : updateOnPropsForRendered;\n return !propsToDiff.every(prop => is(nextProps[prop], this.props[prop]));\n }\n\n componentDidMount () {\n const { intersectionObserverWrapper, id } = this.props;\n\n intersectionObserverWrapper.observe(\n id,\n this.node,\n this.handleIntersection\n );\n\n this.componentMounted = true;\n }\n\n componentWillUnmount () {\n const { intersectionObserverWrapper, id } = this.props;\n intersectionObserverWrapper.unobserve(id, this.node);\n\n this.componentMounted = false;\n }\n\n handleIntersection = (entry) => {\n this.entry = entry;\n\n scheduleIdleTask(this.calculateHeight);\n this.setState(this.updateStateAfterIntersection);\n }\n\n updateStateAfterIntersection = (prevState) => {\n if (prevState.isIntersecting !== false && !this.entry.isIntersecting) {\n scheduleIdleTask(this.hideIfNotIntersecting);\n }\n return {\n isIntersecting: this.entry.isIntersecting,\n isHidden: false,\n };\n }\n\n calculateHeight = () => {\n const { onHeightChange, saveHeightKey, id } = this.props;\n // save the height of the fully-rendered element (this is expensive\n // on Chrome, where we need to fall back to getBoundingClientRect)\n this.height = getRectFromEntry(this.entry).height;\n\n if (onHeightChange && saveHeightKey) {\n onHeightChange(saveHeightKey, id, this.height);\n }\n }\n\n hideIfNotIntersecting = () => {\n if (!this.componentMounted) {\n return;\n }\n\n // When the browser gets a chance, test if we're still not intersecting,\n // and if so, set our isHidden to true to trigger an unrender. The point of\n // this is to save DOM nodes and avoid using up too much memory.\n // See: https://github.com/tootsuite/mastodon/issues/2900\n this.setState((prevState) => ({ isHidden: !prevState.isIntersecting }));\n }\n\n handleRef = (node) => {\n this.node = node;\n }\n\n render () {\n const { children, id, index, listLength, cachedHeight } = this.props;\n const { isIntersecting, isHidden } = this.state;\n\n if (!isIntersecting && (isHidden || cachedHeight)) {\n return (\n <article\n ref={this.handleRef}\n aria-posinset={index + 1}\n aria-setsize={listLength}\n style={{ height: `${this.height || cachedHeight}px`, opacity: 0, overflow: 'hidden' }}\n data-id={id}\n tabIndex='0'\n >\n {children && React.cloneElement(children, { hidden: true })}\n </article>\n );\n }\n\n return (\n <article ref={this.handleRef} aria-posinset={index + 1} aria-setsize={listLength} data-id={id} tabIndex='0'>\n {children && React.cloneElement(children, { hidden: false })}\n </article>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport IntersectionObserverArticle from '../components/intersection_observer_article';\nimport { setHeight } from '../actions/height_cache';\n\nconst makeMapStateToProps = (state, props) => ({\n cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id]),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onHeightChange (key, id, height) {\n dispatch(setHeight(key, id, height));\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(IntersectionObserverArticle);\n","// Wrapper for IntersectionObserver in order to make working with it\n// a bit easier. We also follow this performance advice:\n// \"If you need to observe multiple elements, it is both possible and\n// advised to observe multiple elements using the same IntersectionObserver\n// instance by calling observe() multiple times.\"\n// https://developers.google.com/web/updates/2016/04/intersectionobserver\n\nclass IntersectionObserverWrapper {\n\n callbacks = {};\n observerBacklog = [];\n observer = null;\n\n connect (options) {\n const onIntersection = (entries) => {\n entries.forEach(entry => {\n const id = entry.target.getAttribute('data-id');\n if (this.callbacks[id]) {\n this.callbacks[id](entry);\n }\n });\n };\n\n this.observer = new IntersectionObserver(onIntersection, options);\n this.observerBacklog.forEach(([ id, node, callback ]) => {\n this.observe(id, node, callback);\n });\n this.observerBacklog = null;\n }\n\n observe (id, node, callback) {\n if (!this.observer) {\n this.observerBacklog.push([ id, node, callback ]);\n } else {\n this.callbacks[id] = callback;\n this.observer.observe(node);\n }\n }\n\n unobserve (id, node) {\n if (this.observer) {\n delete this.callbacks[id];\n this.observer.unobserve(node);\n }\n }\n\n disconnect () {\n if (this.observer) {\n this.callbacks = {};\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n}\n\nexport default IntersectionObserverWrapper;\n","import React, { PureComponent } from 'react';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport PropTypes from 'prop-types';\nimport IntersectionObserverArticleContainer from '../containers/intersection_observer_article_container';\nimport LoadMore from './load_more';\nimport IntersectionObserverWrapper from '../features/ui/util/intersection_observer_wrapper';\nimport { throttle } from 'lodash';\nimport { List as ImmutableList } from 'immutable';\nimport classNames from 'classnames';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from '../features/ui/util/fullscreen';\nimport LoadingIndicator from './loading_indicator';\n\nconst MOUSE_IDLE_DELAY = 300;\n\nexport default class ScrollableList extends PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n onLoadMore: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n showLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n emptyMessage: PropTypes.node,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n state = {\n fullscreen: null,\n cachedMediaWidth: 250, // Default media/card width using default Mastodon theme\n };\n\n intersectionObserverWrapper = new IntersectionObserverWrapper();\n\n handleScroll = throttle(() => {\n if (this.node) {\n const { scrollTop, scrollHeight, clientHeight } = this.node;\n const offset = scrollHeight - scrollTop - clientHeight;\n\n if (400 > offset && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {\n this.props.onLoadMore();\n }\n\n if (scrollTop < 100 && this.props.onScrollToTop) {\n this.props.onScrollToTop();\n } else if (this.props.onScroll) {\n this.props.onScroll();\n }\n\n if (!this.lastScrollWasSynthetic) {\n // If the last scroll wasn't caused by setScrollTop(), assume it was\n // intentional and cancel any pending scroll reset on mouse idle\n this.scrollToTopOnMouseIdle = false;\n }\n this.lastScrollWasSynthetic = false;\n }\n }, 150, {\n trailing: true,\n });\n\n mouseIdleTimer = null;\n mouseMovedRecently = false;\n lastScrollWasSynthetic = false;\n scrollToTopOnMouseIdle = false;\n\n setScrollTop = newScrollTop => {\n if (this.node.scrollTop !== newScrollTop) {\n this.lastScrollWasSynthetic = true;\n this.node.scrollTop = newScrollTop;\n }\n };\n\n clearMouseIdleTimer = () => {\n if (this.mouseIdleTimer === null) {\n return;\n }\n\n clearTimeout(this.mouseIdleTimer);\n this.mouseIdleTimer = null;\n };\n\n handleMouseMove = throttle(() => {\n // As long as the mouse keeps moving, clear and restart the idle timer.\n this.clearMouseIdleTimer();\n this.mouseIdleTimer = setTimeout(this.handleMouseIdle, MOUSE_IDLE_DELAY);\n\n if (!this.mouseMovedRecently && this.node.scrollTop === 0) {\n // Only set if we just started moving and are scrolled to the top.\n this.scrollToTopOnMouseIdle = true;\n }\n\n // Save setting this flag for last, so we can do the comparison above.\n this.mouseMovedRecently = true;\n }, MOUSE_IDLE_DELAY / 2);\n\n handleWheel = throttle(() => {\n this.scrollToTopOnMouseIdle = false;\n }, 150, {\n trailing: true,\n });\n\n handleMouseIdle = () => {\n if (this.scrollToTopOnMouseIdle) {\n this.setScrollTop(0);\n }\n\n this.mouseMovedRecently = false;\n this.scrollToTopOnMouseIdle = false;\n }\n\n componentDidMount () {\n this.attachScrollListener();\n this.attachIntersectionObserver();\n\n attachFullscreenListener(this.onFullScreenChange);\n\n // Handle initial scroll posiiton\n this.handleScroll();\n }\n\n getScrollPosition = () => {\n if (this.node && (this.node.scrollTop > 0 || this.mouseMovedRecently)) {\n return { height: this.node.scrollHeight, top: this.node.scrollTop };\n } else {\n return null;\n }\n }\n\n updateScrollBottom = (snapshot) => {\n const newScrollTop = this.node.scrollHeight - snapshot;\n\n this.setScrollTop(newScrollTop);\n }\n\n getSnapshotBeforeUpdate (prevProps) {\n const someItemInserted = React.Children.count(prevProps.children) > 0 &&\n React.Children.count(prevProps.children) < React.Children.count(this.props.children) &&\n this.getFirstChildKey(prevProps) !== this.getFirstChildKey(this.props);\n\n if (someItemInserted && (this.node.scrollTop > 0 || this.mouseMovedRecently)) {\n return this.node.scrollHeight - this.node.scrollTop;\n } else {\n return null;\n }\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n // Reset the scroll position when a new child comes in in order not to\n // jerk the scrollbar around if you're already scrolled down the page.\n if (snapshot !== null) {\n this.setScrollTop(this.node.scrollHeight - snapshot);\n }\n }\n\n cacheMediaWidth = (width) => {\n if (width && this.state.cachedMediaWidth !== width) {\n this.setState({ cachedMediaWidth: width });\n }\n }\n\n componentWillUnmount () {\n this.clearMouseIdleTimer();\n this.detachScrollListener();\n this.detachIntersectionObserver();\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n attachIntersectionObserver () {\n this.intersectionObserverWrapper.connect({\n root: this.node,\n rootMargin: '300% 0px',\n });\n }\n\n detachIntersectionObserver () {\n this.intersectionObserverWrapper.disconnect();\n }\n\n attachScrollListener () {\n this.node.addEventListener('scroll', this.handleScroll);\n this.node.addEventListener('wheel', this.handleWheel);\n }\n\n detachScrollListener () {\n this.node.removeEventListener('scroll', this.handleScroll);\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n getFirstChildKey (props) {\n const { children } = props;\n let firstChild = children;\n\n if (children instanceof ImmutableList) {\n firstChild = children.get(0);\n } else if (Array.isArray(children)) {\n firstChild = children[0];\n }\n\n return firstChild && firstChild.key;\n }\n\n setRef = (c) => {\n this.node = c;\n }\n\n handleLoadMore = e => {\n e.preventDefault();\n this.props.onLoadMore();\n }\n\n render () {\n const { children, scrollKey, trackScroll, shouldUpdateScroll, showLoading, isLoading, hasMore, prepend, alwaysPrepend, emptyMessage, onLoadMore } = this.props;\n const { fullscreen } = this.state;\n const childrenCount = React.Children.count(children);\n\n const loadMore = (hasMore && onLoadMore) ? <LoadMore visible={!isLoading} onClick={this.handleLoadMore} /> : null;\n let scrollableArea = null;\n\n if (showLoading) {\n scrollableArea = (\n <div className='scrollable scrollable--flex' ref={this.setRef}>\n <div role='feed' className='item-list'>\n {prepend}\n </div>\n\n <div className='scrollable__append'>\n <LoadingIndicator />\n </div>\n </div>\n );\n } else if (isLoading || childrenCount > 0 || hasMore || !emptyMessage) {\n scrollableArea = (\n <div className={classNames('scrollable', { fullscreen })} ref={this.setRef} onMouseMove={this.handleMouseMove}>\n <div role='feed' className='item-list'>\n {prepend}\n\n {React.Children.map(this.props.children, (child, index) => (\n <IntersectionObserverArticleContainer\n key={child.key}\n id={child.key}\n index={index}\n listLength={childrenCount}\n intersectionObserverWrapper={this.intersectionObserverWrapper}\n saveHeightKey={trackScroll ? `${this.context.router.route.location.key}:${scrollKey}` : null}\n >\n {React.cloneElement(child, {\n getScrollPosition: this.getScrollPosition,\n updateScrollBottom: this.updateScrollBottom,\n cachedMediaWidth: this.state.cachedMediaWidth,\n cacheMediaWidth: this.cacheMediaWidth,\n })}\n </IntersectionObserverArticleContainer>\n ))}\n\n {loadMore}\n </div>\n </div>\n );\n } else {\n scrollableArea = (\n <div className={classNames('scrollable scrollable--flex', { fullscreen })} ref={this.setRef}>\n {alwaysPrepend && prepend}\n\n <div className='empty-column-indicator'>\n {emptyMessage}\n </div>\n </div>\n );\n }\n\n if (trackScroll) {\n return (\n <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll}>\n {scrollableArea}\n </ScrollContainer>\n );\n } else {\n return scrollableArea;\n }\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\nimport Icon from 'mastodon/components/icon';\n\nexport default class ColumnBackButton extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n handleClick = () => {\n if (window.history && window.history.length === 1) {\n this.context.router.history.push('/');\n } else {\n this.context.router.history.goBack();\n }\n }\n\n render () {\n return (\n <button onClick={this.handleClick} className='column-back-button'>\n <Icon id='chevron-left' className='column-back-button__icon' fixedWidth />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </button>\n );\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class ColumnBackButtonSlim extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n handleClick = () => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/');\n }\n }\n\n render () {\n return (\n <div className='column-back-button--slim'>\n <div role='button' tabIndex='0' onClick={this.handleClick} className='column-back-button column-back-button--slim-button'>\n <i className='fa fa-fw fa-chevron-left column-back-button__icon' />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport ColumnBackButton from './column_back_button';\nimport Icon from 'mastodon/components/icon';\n\nexport default class ColumnBackButtonSlim extends ColumnBackButton {\n\n render () {\n return (\n <div className='column-back-button--slim'>\n <div role='button' tabIndex='0' onClick={this.handleClick} className='column-back-button column-back-button--slim-button'>\n <Icon id='chevron-left' className='column-back-button__icon' fixedWidth />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </div>\n </div>\n );\n }\n\n}\n","import { debounce } from 'lodash';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport LoadGap from './load_gap';\nimport ScrollableList from './scrollable_list';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class StatusList extends ImmutablePureComponent {\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n statusIds: ImmutablePropTypes.list.isRequired,\n featuredStatusIds: ImmutablePropTypes.list,\n onLoadMore: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n isPartial: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n emptyMessage: PropTypes.node,\n timelineId: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n getFeaturedStatusCount = () => {\n return this.props.featuredStatusIds ? this.props.featuredStatusIds.size : 0;\n }\n\n getCurrentStatusIndex = (id, featured) => {\n if (featured) {\n return this.props.featuredStatusIds.indexOf(id);\n } else {\n return this.props.statusIds.indexOf(id) + this.getFeaturedStatusCount();\n }\n }\n\n handleMoveUp = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) - 1;\n this._selectChild(elementIndex);\n }\n\n handleMoveDown = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) + 1;\n this._selectChild(elementIndex);\n }\n\n handleLoadOlder = debounce(() => {\n this.props.onLoadMore(this.props.statusIds.size > 0 ? this.props.statusIds.last() : undefined);\n }, 300, { leading: true })\n\n _selectChild (index) {\n const element = this.node.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n element.focus();\n }\n }\n\n setRef = c => {\n this.node = c;\n }\n\n render () {\n const { statusIds, featuredStatusIds, onLoadMore, timelineId, ...other } = this.props;\n const { isLoading, isPartial } = other;\n\n if (isPartial) {\n return (\n <div className='regeneration-indicator'>\n <div>\n <div className='regeneration-indicator__figure' />\n\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' />\n <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />\n </div>\n </div>\n </div>\n );\n }\n\n let scrollableContent = (isLoading || statusIds.size > 0) ? (\n statusIds.map((statusId, index) => statusId === null ? (\n <LoadGap\n key={'gap:' + statusIds.get(index + 1)}\n disabled={isLoading}\n maxId={index > 0 ? statusIds.get(index - 1) : null}\n onClick={onLoadMore}\n />\n ) : (\n <StatusContainer\n key={statusId}\n id={statusId}\n onMoveUp={this.handleMoveUp}\n onMoveDown={this.handleMoveDown}\n contextType={timelineId}\n />\n ))\n ) : null;\n\n if (scrollableContent && featuredStatusIds) {\n scrollableContent = featuredStatusIds.map(statusId => (\n <StatusContainer\n key={`f-${statusId}`}\n id={statusId}\n featured\n onMoveUp={this.handleMoveUp}\n onMoveDown={this.handleMoveDown}\n contextType={timelineId}\n />\n )).concat(scrollableContent);\n }\n\n return (\n <ScrollableList {...other} showLoading={isLoading && statusIds.size === 0} onLoadMore={onLoadMore && this.handleLoadOlder} ref={this.setRef}>\n {scrollableContent}\n </ScrollableList>\n );\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class LoadMore extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n visible: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: true,\n }\n\n render() {\n const { disabled, visible } = this.props;\n\n return (\n <button className='load-more' disabled={disabled || !visible} style={{ visibility: visible ? 'visible' : 'hidden' }} onClick={this.props.onClick}>\n <FormattedMessage id='status.load_more' defaultMessage='Load more' />\n </button>\n );\n }\n\n}\n","import { debounce } from 'lodash';\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport StatusContainer from '../containers/status_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport LoadGap from './load_gap';\nimport ScrollableList from './scrollable_list';\n\nexport default class StatusList extends ImmutablePureComponent {\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n statusIds: ImmutablePropTypes.list.isRequired,\n featuredStatusIds: ImmutablePropTypes.list,\n onLoadMore: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n isPartial: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n emptyMessage: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n timelineId: PropTypes.string,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n getFeaturedStatusCount = () => {\n return this.props.featuredStatusIds ? this.props.featuredStatusIds.size : 0;\n }\n\n getCurrentStatusIndex = (id, featured) => {\n if (featured) {\n return this.props.featuredStatusIds.indexOf(id);\n } else {\n return this.props.statusIds.indexOf(id) + this.getFeaturedStatusCount();\n }\n }\n\n handleMoveUp = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) - 1;\n this._selectChild(elementIndex);\n }\n\n handleMoveDown = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) + 1;\n this._selectChild(elementIndex);\n }\n\n handleLoadOlder = debounce(() => {\n this.props.onLoadMore(this.props.statusIds.size > 0 ? this.props.statusIds.last() : undefined);\n }, 300, { leading: true })\n\n _selectChild (index) {\n const element = this.node.node.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n element.focus();\n }\n }\n\n setRef = c => {\n this.node = c;\n }\n\n render () {\n const { statusIds, featuredStatusIds, shouldUpdateScroll, onLoadMore, timelineId, ...other } = this.props;\n const { isLoading, isPartial } = other;\n\n if (isPartial) {\n return (\n <div className='regeneration-indicator'>\n <div>\n <div className='regeneration-indicator__figure' />\n\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading…' />\n <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />\n </div>\n </div>\n </div>\n );\n }\n\n let scrollableContent = (isLoading || statusIds.size > 0) ? (\n statusIds.map((statusId, index) => statusId === null ? (\n <LoadGap\n key={'gap:' + statusIds.get(index + 1)}\n disabled={isLoading}\n maxId={index > 0 ? statusIds.get(index - 1) : null}\n onClick={onLoadMore}\n />\n ) : (\n <StatusContainer\n key={statusId}\n id={statusId}\n onMoveUp={this.handleMoveUp}\n onMoveDown={this.handleMoveDown}\n contextType={timelineId}\n showThread\n />\n ))\n ) : null;\n\n if (scrollableContent && featuredStatusIds) {\n scrollableContent = featuredStatusIds.map(statusId => (\n <StatusContainer\n key={`f-${statusId}`}\n id={statusId}\n featured\n onMoveUp={this.handleMoveUp}\n onMoveDown={this.handleMoveDown}\n contextType={timelineId}\n showThread\n />\n )).concat(scrollableContent);\n }\n\n return (\n <ScrollableList {...other} showLoading={isLoading && statusIds.size === 0} onLoadMore={onLoadMore && this.handleLoadOlder} shouldUpdateScroll={shouldUpdateScroll} ref={this.setRef}>\n {scrollableContent}\n </ScrollableList>\n );\n }\n\n}\n","\n// Get the bounding client rect from an IntersectionObserver entry.\n// This is to work around a bug in Chrome: https://crbug.com/737228\n\nlet hasBoundingRectBug;\n\nfunction getRectFromEntry(entry) {\n if (typeof hasBoundingRectBug !== 'boolean') {\n const boundingRect = entry.target.getBoundingClientRect();\n const observerRect = entry.boundingClientRect;\n hasBoundingRectBug = boundingRect.height !== observerRect.height ||\n boundingRect.top !== observerRect.top ||\n boundingRect.width !== observerRect.width ||\n boundingRect.bottom !== observerRect.bottom ||\n boundingRect.left !== observerRect.left ||\n boundingRect.right !== observerRect.right;\n }\n return hasBoundingRectBug ? entry.target.getBoundingClientRect() : entry.boundingClientRect;\n}\n\nexport default getRectFromEntry;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport scheduleIdleTask from 'flavours/glitch/util/schedule_idle_task';\nimport getRectFromEntry from 'flavours/glitch/util/get_rect_from_entry';\n\nexport default class IntersectionObserverArticle extends ImmutablePureComponent {\n\n static propTypes = {\n intersectionObserverWrapper: PropTypes.object.isRequired,\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n listLength: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n saveHeightKey: PropTypes.string,\n cachedHeight: PropTypes.number,\n onHeightChange: PropTypes.func,\n children: PropTypes.node,\n };\n\n state = {\n isHidden: false, // set to true in requestIdleCallback to trigger un-render\n }\n\n shouldComponentUpdate (nextProps, nextState) {\n if (!nextState.isIntersecting && nextState.isHidden) {\n // It's only if we're not intersecting (i.e. offscreen) and isHidden is true\n // that either \"isIntersecting\" or \"isHidden\" matter, and then they're\n // the only things that matter (and updated ARIA attributes).\n return this.state.isIntersecting || !this.state.isHidden || nextProps.listLength !== this.props.listLength;\n } else if (nextState.isIntersecting && !this.state.isIntersecting) {\n // If we're going from a non-intersecting state to an intersecting state,\n // (i.e. offscreen to onscreen), then we definitely need to re-render\n return true;\n }\n // Otherwise, diff based on \"updateOnProps\" and \"updateOnStates\"\n return super.shouldComponentUpdate(nextProps, nextState);\n }\n\n componentDidMount () {\n const { intersectionObserverWrapper, id } = this.props;\n\n intersectionObserverWrapper.observe(\n id,\n this.node,\n this.handleIntersection\n );\n\n this.componentMounted = true;\n }\n\n componentWillUnmount () {\n const { intersectionObserverWrapper, id } = this.props;\n intersectionObserverWrapper.unobserve(id, this.node);\n\n this.componentMounted = false;\n }\n\n handleIntersection = (entry) => {\n this.entry = entry;\n\n scheduleIdleTask(this.calculateHeight);\n this.setState(this.updateStateAfterIntersection);\n }\n\n updateStateAfterIntersection = (prevState) => {\n if (prevState.isIntersecting !== false && !this.entry.isIntersecting) {\n scheduleIdleTask(this.hideIfNotIntersecting);\n }\n return {\n isIntersecting: this.entry.isIntersecting,\n isHidden: false,\n };\n }\n\n calculateHeight = () => {\n const { onHeightChange, saveHeightKey, id } = this.props;\n // save the height of the fully-rendered element (this is expensive\n // on Chrome, where we need to fall back to getBoundingClientRect)\n this.height = getRectFromEntry(this.entry).height;\n\n if (onHeightChange && saveHeightKey) {\n onHeightChange(saveHeightKey, id, this.height);\n }\n }\n\n hideIfNotIntersecting = () => {\n if (!this.componentMounted) {\n return;\n }\n\n // When the browser gets a chance, test if we're still not intersecting,\n // and if so, set our isHidden to true to trigger an unrender. The point of\n // this is to save DOM nodes and avoid using up too much memory.\n // See: https://github.com/tootsuite/mastodon/issues/2900\n this.setState((prevState) => ({ isHidden: !prevState.isIntersecting }));\n }\n\n handleRef = (node) => {\n this.node = node;\n }\n\n render () {\n const { children, id, index, listLength, cachedHeight } = this.props;\n const { isIntersecting, isHidden } = this.state;\n\n const style = {};\n\n if (!isIntersecting && (isHidden || cachedHeight)) {\n style.height = `${this.height || cachedHeight || 150}px`;\n style.opacity = 0;\n style.overflow = 'hidden';\n }\n\n return (\n <article\n ref={this.handleRef}\n aria-posinset={index + 1}\n aria-setsize={listLength}\n data-id={id}\n tabIndex='0'\n style={style}>\n {children && React.cloneElement(children, { hidden: !isIntersecting && (isHidden || cachedHeight) })}\n </article>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport IntersectionObserverArticle from 'flavours/glitch/components/intersection_observer_article';\nimport { setHeight } from 'flavours/glitch/actions/height_cache';\n\nconst makeMapStateToProps = (state, props) => ({\n cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id]),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onHeightChange (key, id, height) {\n dispatch(setHeight(key, id, height));\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(IntersectionObserverArticle);\n","// Wrapper for IntersectionObserver in order to make working with it\n// a bit easier. We also follow this performance advice:\n// \"If you need to observe multiple elements, it is both possible and\n// advised to observe multiple elements using the same IntersectionObserver\n// instance by calling observe() multiple times.\"\n// https://developers.google.com/web/updates/2016/04/intersectionobserver\n\nclass IntersectionObserverWrapper {\n\n callbacks = {};\n observerBacklog = [];\n observer = null;\n\n connect (options) {\n const onIntersection = (entries) => {\n entries.forEach(entry => {\n const id = entry.target.getAttribute('data-id');\n if (this.callbacks[id]) {\n this.callbacks[id](entry);\n }\n });\n };\n\n this.observer = new IntersectionObserver(onIntersection, options);\n this.observerBacklog.forEach(([ id, node, callback ]) => {\n this.observe(id, node, callback);\n });\n this.observerBacklog = null;\n }\n\n observe (id, node, callback) {\n if (!this.observer) {\n this.observerBacklog.push([ id, node, callback ]);\n } else {\n this.callbacks[id] = callback;\n this.observer.observe(node);\n }\n }\n\n unobserve (id, node) {\n if (this.observer) {\n delete this.callbacks[id];\n this.observer.unobserve(node);\n }\n }\n\n disconnect () {\n if (this.observer) {\n this.callbacks = {};\n this.observer.disconnect();\n this.observer = null;\n }\n }\n\n}\n\nexport default IntersectionObserverWrapper;\n","import React, { PureComponent } from 'react';\nimport { ScrollContainer } from 'react-router-scroll-4';\nimport PropTypes from 'prop-types';\nimport IntersectionObserverArticleContainer from 'flavours/glitch/containers/intersection_observer_article_container';\nimport LoadMore from './load_more';\nimport IntersectionObserverWrapper from 'flavours/glitch/util/intersection_observer_wrapper';\nimport { throttle } from 'lodash';\nimport { List as ImmutableList } from 'immutable';\nimport classNames from 'classnames';\nimport { attachFullscreenListener, detachFullscreenListener, isFullscreen } from 'flavours/glitch/util/fullscreen';\nimport LoadingIndicator from './loading_indicator';\n\nconst MOUSE_IDLE_DELAY = 300;\n\nexport default class ScrollableList extends PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n scrollKey: PropTypes.string.isRequired,\n onLoadMore: PropTypes.func,\n onScrollToTop: PropTypes.func,\n onScroll: PropTypes.func,\n trackScroll: PropTypes.bool,\n shouldUpdateScroll: PropTypes.func,\n isLoading: PropTypes.bool,\n showLoading: PropTypes.bool,\n hasMore: PropTypes.bool,\n prepend: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n emptyMessage: PropTypes.node,\n children: PropTypes.node,\n };\n\n static defaultProps = {\n trackScroll: true,\n };\n\n state = {\n fullscreen: null,\n cachedMediaWidth: 300,\n };\n\n intersectionObserverWrapper = new IntersectionObserverWrapper();\n\n handleScroll = throttle(() => {\n if (this.node) {\n const { scrollTop, scrollHeight, clientHeight } = this.node;\n const offset = scrollHeight - scrollTop - clientHeight;\n\n if (400 > offset && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {\n this.props.onLoadMore();\n }\n\n if (scrollTop < 100 && this.props.onScrollToTop) {\n this.props.onScrollToTop();\n } else if (this.props.onScroll) {\n this.props.onScroll();\n }\n\n if (!this.lastScrollWasSynthetic) {\n // If the last scroll wasn't caused by setScrollTop(), assume it was\n // intentional and cancel any pending scroll reset on mouse idle\n this.scrollToTopOnMouseIdle = false;\n }\n this.lastScrollWasSynthetic = false;\n }\n }, 150, {\n trailing: true,\n });\n\n mouseIdleTimer = null;\n mouseMovedRecently = false;\n lastScrollWasSynthetic = false;\n scrollToTopOnMouseIdle = false;\n\n setScrollTop = newScrollTop => {\n if (this.node.scrollTop !== newScrollTop) {\n this.lastScrollWasSynthetic = true;\n this.node.scrollTop = newScrollTop;\n }\n };\n\n clearMouseIdleTimer = () => {\n if (this.mouseIdleTimer === null) {\n return;\n }\n clearTimeout(this.mouseIdleTimer);\n this.mouseIdleTimer = null;\n };\n\n handleMouseMove = throttle(() => {\n // As long as the mouse keeps moving, clear and restart the idle timer.\n this.clearMouseIdleTimer();\n this.mouseIdleTimer =\n setTimeout(this.handleMouseIdle, MOUSE_IDLE_DELAY);\n\n if (!this.mouseMovedRecently && this.node.scrollTop === 0) {\n // Only set if we just started moving and are scrolled to the top.\n this.scrollToTopOnMouseIdle = true;\n }\n // Save setting this flag for last, so we can do the comparison above.\n this.mouseMovedRecently = true;\n }, MOUSE_IDLE_DELAY / 2);\n\n handleWheel = throttle(() => {\n this.scrollToTopOnMouseIdle = false;\n }, 150, {\n trailing: true,\n });\n\n handleMouseIdle = () => {\n if (this.scrollToTopOnMouseIdle) {\n this.setScrollTop(0);\n }\n this.mouseMovedRecently = false;\n this.scrollToTopOnMouseIdle = false;\n }\n\n componentDidMount () {\n this.attachScrollListener();\n this.attachIntersectionObserver();\n attachFullscreenListener(this.onFullScreenChange);\n\n // Handle initial scroll posiiton\n this.handleScroll();\n }\n\n getScrollPosition = () => {\n if (this.node && (this.node.scrollTop > 0 || this.mouseMovedRecently)) {\n return {height: this.node.scrollHeight, top: this.node.scrollTop};\n } else {\n return null;\n }\n }\n\n updateScrollBottom = (snapshot) => {\n const newScrollTop = this.node.scrollHeight - snapshot;\n\n this.setScrollTop(newScrollTop);\n }\n\n cacheMediaWidth = (width) => {\n if (width && this.state.cachedMediaWidth != width) this.setState({ cachedMediaWidth: width });\n }\n\n getSnapshotBeforeUpdate (prevProps, prevState) {\n const someItemInserted = React.Children.count(prevProps.children) > 0 &&\n React.Children.count(prevProps.children) < React.Children.count(this.props.children) &&\n this.getFirstChildKey(prevProps) !== this.getFirstChildKey(this.props);\n if (someItemInserted && (this.node.scrollTop > 0 || this.mouseMovedRecently)) {\n return this.node.scrollHeight - this.node.scrollTop;\n } else {\n return null;\n }\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n // Reset the scroll position when a new child comes in in order not to\n // jerk the scrollbar around if you're already scrolled down the page.\n if (snapshot !== null) this.updateScrollBottom(snapshot);\n }\n\n componentWillUnmount () {\n this.clearMouseIdleTimer();\n this.detachScrollListener();\n this.detachIntersectionObserver();\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n attachIntersectionObserver () {\n this.intersectionObserverWrapper.connect({\n root: this.node,\n rootMargin: '300% 0px',\n });\n }\n\n detachIntersectionObserver () {\n this.intersectionObserverWrapper.disconnect();\n }\n\n attachScrollListener () {\n this.node.addEventListener('scroll', this.handleScroll);\n this.node.addEventListener('wheel', this.handleWheel);\n }\n\n detachScrollListener () {\n this.node.removeEventListener('scroll', this.handleScroll);\n this.node.removeEventListener('wheel', this.handleWheel);\n }\n\n getFirstChildKey (props) {\n const { children } = props;\n let firstChild = children;\n\n if (children instanceof ImmutableList) {\n firstChild = children.get(0);\n } else if (Array.isArray(children)) {\n firstChild = children[0];\n }\n\n return firstChild && firstChild.key;\n }\n\n setRef = (c) => {\n this.node = c;\n }\n\n handleLoadMore = e => {\n e.preventDefault();\n this.props.onLoadMore();\n }\n\n defaultShouldUpdateScroll = (prevRouterProps, { location }) => {\n if ((((prevRouterProps || {}).location || {}).state || {}).mastodonModalOpen) return false;\n return !(location.state && location.state.mastodonModalOpen);\n }\n\n render () {\n const { children, scrollKey, trackScroll, shouldUpdateScroll, showLoading, isLoading, hasMore, prepend, alwaysPrepend, emptyMessage, onLoadMore } = this.props;\n const { fullscreen } = this.state;\n const childrenCount = React.Children.count(children);\n\n const loadMore = (hasMore && onLoadMore) ? <LoadMore visible={!isLoading} onClick={this.handleLoadMore} /> : null;\n let scrollableArea = null;\n\n if (showLoading) {\n scrollableArea = (\n <div className='scrollable scrollable--flex' ref={this.setRef}>\n <div role='feed' className='item-list'>\n {prepend}\n </div>\n\n <div className='scrollable__append'>\n <LoadingIndicator />\n </div>\n </div>\n );\n } else if (isLoading || childrenCount > 0 || hasMore || !emptyMessage) {\n scrollableArea = (\n <div className={classNames('scrollable', { fullscreen })} ref={this.setRef} onMouseMove={this.handleMouseMove}>\n <div role='feed' className='item-list'>\n {prepend}\n\n {React.Children.map(this.props.children, (child, index) => (\n <IntersectionObserverArticleContainer\n key={child.key}\n id={child.key}\n index={index}\n listLength={childrenCount}\n intersectionObserverWrapper={this.intersectionObserverWrapper}\n saveHeightKey={trackScroll ? `${this.context.router.route.location.key}:${scrollKey}` : null}\n >\n {React.cloneElement(child, {\n getScrollPosition: this.getScrollPosition,\n updateScrollBottom: this.updateScrollBottom,\n cachedMediaWidth: this.state.cachedMediaWidth,\n cacheMediaWidth: this.cacheMediaWidth,\n })}\n </IntersectionObserverArticleContainer>\n ))}\n\n {loadMore}\n </div>\n </div>\n );\n } else {\n scrollableArea = (\n <div className={classNames('scrollable scrollable--flex', { fullscreen })} ref={this.setRef}>\n {alwaysPrepend && prepend}\n\n <div className='empty-column-indicator'>\n {emptyMessage}\n </div>\n </div>\n );\n }\n\n if (trackScroll) {\n return (\n <ScrollContainer scrollKey={scrollKey} shouldUpdateScroll={shouldUpdateScroll || this.defaultShouldUpdateScroll}>\n {scrollableArea}\n </ScrollContainer>\n );\n } else {\n return scrollableArea;\n }\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n load_more: { id: 'status.load_more', defaultMessage: 'Load more' },\n});\n\n@injectIntl\nexport default class LoadGap extends React.PureComponent {\n\n static propTypes = {\n disabled: PropTypes.bool,\n maxId: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.onClick(this.props.maxId);\n }\n\n render () {\n const { disabled, intl } = this.props;\n\n return (\n <button className='load-more load-gap' disabled={disabled} onClick={this.handleClick} aria-label={intl.formatMessage(messages.load_more)}>\n <i className='fa fa-ellipsis-h' />\n </button>\n );\n }\n\n}\n","import { injectIntl } from 'react-intl';\nimport { connect } from 'react-redux';\n\n// Connects a component.\nexport function wrap (Component, mapStateToProps, mapDispatchToProps, options) {\n const withIntl = typeof options === 'object' ? options.withIntl : !!options;\n return (withIntl ? injectIntl : i => i)(connect(mapStateToProps, mapDispatchToProps)(Component));\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n load_more: { id: 'status.load_more', defaultMessage: 'Load more' },\n});\n\nexport default @injectIntl\nclass LoadGap extends React.PureComponent {\n\n static propTypes = {\n disabled: PropTypes.bool,\n maxId: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleClick = () => {\n this.props.onClick(this.props.maxId);\n }\n\n render () {\n const { disabled, intl } = this.props;\n\n return (\n <button className='load-more load-gap' disabled={disabled} onClick={this.handleClick} aria-label={intl.formatMessage(messages.load_more)}>\n <Icon id='ellipsis-h' />\n </button>\n );\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class LoadMore extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n disabled: PropTypes.bool,\n visible: PropTypes.bool,\n }\n\n static defaultProps = {\n visible: true,\n }\n\n render() {\n const { disabled, visible } = this.props;\n\n return (\n <button className='load-more' disabled={disabled || !visible} style={{ visibility: visible ? 'visible' : 'hidden' }} onClick={this.props.onClick}>\n <FormattedMessage id='status.load_more' defaultMessage='Load more' />\n </button>\n );\n }\n\n}\n","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","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Toggle from 'react-toggle';\n\n// Components.\nimport Icon from 'flavours/glitch/components/icon';\n\n// Utils.\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\n\n// Handlers.\nconst handlers = {\n\n // This function activates the dropdown item.\n handleActivate (e) {\n const {\n name,\n onChange,\n onClose,\n options: { on },\n } = this.props;\n\n // If the escape key was pressed, we close the dropdown.\n if (e.key === 'Escape' && onClose) {\n onClose();\n\n // Otherwise, we both close the dropdown and change the value.\n } else if (onChange && (!e.key || e.key === 'Enter')) {\n e.preventDefault(); // Prevents change in focus on click\n if ((on === null || typeof on === 'undefined') && onClose) {\n onClose();\n }\n onChange(name);\n }\n },\n};\n\n// The component.\nexport default class ComposerOptionsDropdownContentItem extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n }\n\n // Rendering.\n render () {\n const { handleActivate } = this.handlers;\n const {\n active,\n options: {\n icon,\n meta,\n on,\n text,\n },\n } = this.props;\n const computedClass = classNames('composer--options--dropdown--content--item', {\n active,\n lengthy: meta,\n 'toggled-off': !on && on !== null && typeof on !== 'undefined',\n 'toggled-on': on,\n 'with-icon': icon,\n });\n\n // The result.\n return (\n <div\n className={computedClass}\n onClick={handleActivate}\n onKeyDown={handleActivate}\n role='button'\n tabIndex='0'\n >\n {function () {\n\n // We render a `<Toggle>` if we were provided an `on`\n // property, and otherwise show an `<Icon>` if available.\n switch (true) {\n case on !== null && typeof on !== 'undefined':\n return (\n <Toggle\n checked={on}\n onChange={handleActivate}\n />\n );\n case !!icon:\n return (\n <Icon\n className='icon'\n fullwidth\n icon={icon}\n />\n );\n default:\n return null;\n }\n }()}\n {meta ? (\n <div className='content'>\n <strong>{text}</strong>\n {meta}\n </div>\n ) :\n <div className='content'>\n <strong>{text}</strong>\n </div>}\n </div>\n );\n }\n\n};\n\n// Props.\nComposerOptionsDropdownContentItem.propTypes = {\n active: PropTypes.bool,\n name: PropTypes.string,\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n options: PropTypes.shape({\n icon: PropTypes.string,\n meta: PropTypes.node,\n on: PropTypes.bool,\n text: PropTypes.node,\n }),\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport spring from 'react-motion/lib/spring';\n\n// Components.\nimport ComposerOptionsDropdownContentItem from './item';\n\n// Utils.\nimport { withPassive } from 'flavours/glitch/util/dom_helpers';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\n\n// Handlers.\nconst handlers = {\n // When the document is clicked elsewhere, we close the dropdown.\n handleDocumentClick ({ target }) {\n const { node } = this;\n const { onClose } = this.props;\n if (onClose && node && !node.contains(target)) {\n onClose();\n }\n },\n\n // Stores our node in `this.node`.\n handleRef (node) {\n this.node = node;\n },\n};\n\n// The spring to use with our motion.\nconst springMotion = spring(1, {\n damping: 35,\n stiffness: 400,\n});\n\n// The component.\nexport default class ComposerOptionsDropdownContent extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n\n // Instance variables.\n this.node = null;\n\n this.state = {\n mounted: false,\n };\n }\n\n // On mounting, we add our listeners.\n componentDidMount () {\n const { handleDocumentClick } = this.handlers;\n document.addEventListener('click', handleDocumentClick, false);\n document.addEventListener('touchend', handleDocumentClick, withPassive);\n this.setState({ mounted: true });\n }\n\n // On unmounting, we remove our listeners.\n componentWillUnmount () {\n const { handleDocumentClick } = this.handlers;\n document.removeEventListener('click', handleDocumentClick, false);\n document.removeEventListener('touchend', handleDocumentClick, withPassive);\n }\n\n // Rendering.\n render () {\n const { mounted } = this.state;\n const { handleRef } = this.handlers;\n const {\n items,\n onChange,\n onClose,\n style,\n value,\n } = this.props;\n\n // The result.\n return (\n <Motion\n defaultStyle={{\n opacity: 0,\n scaleX: 0.85,\n scaleY: 0.75,\n }}\n style={{\n opacity: springMotion,\n scaleX: springMotion,\n scaleY: springMotion,\n }}\n >\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\n className='composer--options--dropdown--content'\n ref={handleRef}\n style={{\n ...style,\n opacity: opacity,\n transform: mounted ? `scale(${scaleX}, ${scaleY})` : null,\n }}\n >\n {items ? items.map(\n ({\n name,\n ...rest\n }) => (\n <ComposerOptionsDropdownContentItem\n active={name === value}\n key={name}\n name={name}\n onChange={onChange}\n onClose={onClose}\n options={rest}\n />\n )\n ) : null}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n\n// Props.\nComposerOptionsDropdownContent.propTypes = {\n items: PropTypes.arrayOf(PropTypes.shape({\n icon: PropTypes.string,\n meta: PropTypes.node,\n name: PropTypes.string.isRequired,\n on: PropTypes.bool,\n text: PropTypes.node,\n })),\n onChange: PropTypes.func,\n onClose: PropTypes.func,\n style: PropTypes.object,\n value: PropTypes.string,\n};\n\n// Default props.\nComposerOptionsDropdownContent.defaultProps = { style: {} };\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Overlay from 'react-overlays/lib/Overlay';\n\n// Components.\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport ComposerOptionsDropdownContent from './content';\n\n// Utils.\nimport { isUserTouching } from 'flavours/glitch/util/is_mobile';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\n\n// Handlers.\nconst handlers = {\n\n // Closes the dropdown.\n handleClose () {\n this.setState({ open: false });\n },\n\n // The enter key toggles the dropdown's open state, and the escape\n // key closes it.\n handleKeyDown ({ key }) {\n const {\n handleClose,\n handleToggle,\n } = this.handlers;\n switch (key) {\n case 'Enter':\n handleToggle(key);\n break;\n case 'Escape':\n handleClose();\n break;\n }\n },\n\n // Creates an action modal object.\n handleMakeModal () {\n const component = this;\n const {\n items,\n onChange,\n onModalOpen,\n onModalClose,\n value,\n } = this.props;\n\n // Required props.\n if (!(onChange && onModalOpen && onModalClose && items)) {\n return null;\n }\n\n // The object.\n return {\n actions: items.map(\n ({\n name,\n ...rest\n }) => ({\n ...rest,\n active: value && name === value,\n name,\n onClick (e) {\n e.preventDefault(); // Prevents focus from changing\n onModalClose();\n onChange(name);\n },\n onPassiveClick (e) {\n e.preventDefault(); // Prevents focus from changing\n onChange(name);\n component.setState({ needsModalUpdate: true });\n },\n })\n ),\n };\n },\n\n // Toggles opening and closing the dropdown.\n handleToggle ({ target }) {\n const { handleMakeModal } = this.handlers;\n const { onModalOpen } = this.props;\n const { open } = this.state;\n\n // If this is a touch device, we open a modal instead of the\n // dropdown.\n if (isUserTouching()) {\n\n // This gets the modal to open.\n const modal = handleMakeModal();\n\n // If we can, we then open the modal.\n if (modal && onModalOpen) {\n onModalOpen(modal);\n return;\n }\n }\n\n const { top } = target.getBoundingClientRect();\n this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n // Otherwise, we just set our state to open.\n this.setState({ open: !open });\n },\n\n // If our modal is open and our props update, we need to also update\n // the modal.\n handleUpdate () {\n const { handleMakeModal } = this.handlers;\n const { onModalOpen } = this.props;\n const { needsModalUpdate } = this.state;\n\n // Gets our modal object.\n const modal = handleMakeModal();\n\n // Reopens the modal with the new object.\n if (needsModalUpdate && modal && onModalOpen) {\n onModalOpen(modal);\n }\n },\n};\n\n// The component.\nexport default class ComposerOptionsDropdown extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n this.state = {\n needsModalUpdate: false,\n open: false,\n placement: 'bottom',\n };\n }\n\n // Updates our modal as necessary.\n componentDidUpdate (prevProps) {\n const { handleUpdate } = this.handlers;\n const { items } = this.props;\n const { needsModalUpdate } = this.state;\n if (needsModalUpdate && items.find(\n (item, i) => item.on !== prevProps.items[i].on\n )) {\n handleUpdate();\n this.setState({ needsModalUpdate: false });\n }\n }\n\n // Rendering.\n render () {\n const {\n handleClose,\n handleKeyDown,\n handleToggle,\n } = this.handlers;\n const {\n active,\n disabled,\n title,\n icon,\n items,\n onChange,\n value,\n } = this.props;\n const { open, placement } = this.state;\n const computedClass = classNames('composer--options--dropdown', {\n active,\n open,\n top: placement === 'top',\n });\n\n // The result.\n return (\n <div\n className={computedClass}\n onKeyDown={handleKeyDown}\n >\n <IconButton\n active={open || active}\n className='value'\n disabled={disabled}\n icon={icon}\n onClick={handleToggle}\n size={18}\n style={{\n height: null,\n lineHeight: '27px',\n }}\n title={title}\n />\n <Overlay\n containerPadding={20}\n placement={placement}\n show={open}\n target={this}\n >\n <ComposerOptionsDropdownContent\n items={items}\n onChange={onChange}\n onClose={handleClose}\n value={value}\n />\n </Overlay>\n </div>\n );\n }\n\n}\n\n// Props.\nComposerOptionsDropdown.propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.shape({\n icon: PropTypes.string,\n meta: PropTypes.node,\n name: PropTypes.string.isRequired,\n on: PropTypes.bool,\n text: PropTypes.node,\n })).isRequired,\n onChange: PropTypes.func,\n onModalClose: PropTypes.func,\n onModalOpen: PropTypes.func,\n title: PropTypes.string,\n value: PropTypes.string,\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport {\n FormattedMessage,\n defineMessages,\n} from 'react-intl';\nimport spring from 'react-motion/lib/spring';\n\n// Components.\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport TextIconButton from 'flavours/glitch/components/text_icon_button';\nimport Dropdown from './dropdown';\n\n// Utils.\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport {\n assignHandlers,\n hiddenComponent,\n} from 'flavours/glitch/util/react_helpers';\n\n// Messages.\nconst messages = defineMessages({\n advanced_options_icon_title: {\n defaultMessage: 'Advanced options',\n id: 'advanced_options.icon_title',\n },\n attach: {\n defaultMessage: 'Attach...',\n id: 'compose.attach',\n },\n change_privacy: {\n defaultMessage: 'Adjust status privacy',\n id: 'privacy.change',\n },\n content_type: {\n defaultMessage: 'Content type',\n id: 'content-type.change',\n },\n direct_long: {\n defaultMessage: 'Post to mentioned users only',\n id: 'privacy.direct.long',\n },\n direct_short: {\n defaultMessage: 'Direct',\n id: 'privacy.direct.short',\n },\n doodle: {\n defaultMessage: 'Draw something',\n id: 'compose.attach.doodle',\n },\n html: {\n defaultMessage: 'HTML',\n id: 'compose.content-type.html',\n },\n local_only_long: {\n defaultMessage: 'Do not post to other instances',\n id: 'advanced_options.local-only.long',\n },\n local_only_short: {\n defaultMessage: 'Local-only',\n id: 'advanced_options.local-only.short',\n },\n markdown: {\n defaultMessage: 'Markdown',\n id: 'compose.content-type.markdown',\n },\n plain: {\n defaultMessage: 'Plain text',\n id: 'compose.content-type.plain',\n },\n private_long: {\n defaultMessage: 'Post to followers only',\n id: 'privacy.private.long',\n },\n private_short: {\n defaultMessage: 'Followers-only',\n id: 'privacy.private.short',\n },\n public_long: {\n defaultMessage: 'Post to public timelines',\n id: 'privacy.public.long',\n },\n public_short: {\n defaultMessage: 'Public',\n id: 'privacy.public.short',\n },\n sensitive: {\n defaultMessage: 'Mark media as sensitive',\n id: 'compose_form.sensitive',\n },\n spoiler: {\n defaultMessage: 'Hide text behind warning',\n id: 'compose_form.spoiler',\n },\n threaded_mode_long: {\n defaultMessage: 'Automatically opens a reply on posting',\n id: 'advanced_options.threaded_mode.long',\n },\n threaded_mode_short: {\n defaultMessage: 'Threaded mode',\n id: 'advanced_options.threaded_mode.short',\n },\n unlisted_long: {\n defaultMessage: 'Do not show in public timelines',\n id: 'privacy.unlisted.long',\n },\n unlisted_short: {\n defaultMessage: 'Unlisted',\n id: 'privacy.unlisted.short',\n },\n upload: {\n defaultMessage: 'Upload a file',\n id: 'compose.attach.upload',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // Handles file selection.\n handleChangeFiles ({ target: { files } }) {\n const { onUpload } = this.props;\n if (files.length && onUpload) {\n onUpload(files);\n }\n },\n\n // Handles attachment clicks.\n handleClickAttach (name) {\n const { fileElement } = this;\n const { onDoodleOpen } = this.props;\n\n // We switch over the name of the option.\n switch (name) {\n case 'upload':\n if (fileElement) {\n fileElement.click();\n }\n return;\n case 'doodle':\n if (onDoodleOpen) {\n onDoodleOpen();\n }\n return;\n }\n },\n\n // Handles a ref to the file input.\n handleRefFileElement (fileElement) {\n this.fileElement = fileElement;\n },\n};\n\n// The component.\nexport default class ComposerOptions extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n\n // Instance variables.\n this.fileElement = null;\n }\n\n // Rendering.\n render () {\n const {\n handleChangeFiles,\n handleClickAttach,\n handleRefFileElement,\n } = this.handlers;\n const {\n acceptContentTypes,\n advancedOptions,\n contentType,\n disabled,\n full,\n hasMedia,\n intl,\n onChangeAdvancedOption,\n onChangeSensitivity,\n onChangeVisibility,\n onChangeContentType,\n onModalClose,\n onModalOpen,\n onToggleSpoiler,\n privacy,\n resetFileKey,\n sensitive,\n spoiler,\n } = this.props;\n\n // We predefine our privacy items so that we can easily pick the\n // dropdown icon later.\n const privacyItems = {\n direct: {\n icon: 'envelope',\n meta: <FormattedMessage {...messages.direct_long} />,\n name: 'direct',\n text: <FormattedMessage {...messages.direct_short} />,\n },\n private: {\n icon: 'lock',\n meta: <FormattedMessage {...messages.private_long} />,\n name: 'private',\n text: <FormattedMessage {...messages.private_short} />,\n },\n public: {\n icon: 'globe',\n meta: <FormattedMessage {...messages.public_long} />,\n name: 'public',\n text: <FormattedMessage {...messages.public_short} />,\n },\n unlisted: {\n icon: 'unlock',\n meta: <FormattedMessage {...messages.unlisted_long} />,\n name: 'unlisted',\n text: <FormattedMessage {...messages.unlisted_short} />,\n },\n };\n\n const contentTypeItems = {\n plain: {\n icon: 'align-left',\n name: 'text/plain',\n text: <FormattedMessage {...messages.plain} />,\n },\n html: {\n icon: 'code',\n name: 'text/html',\n text: <FormattedMessage {...messages.html} />,\n },\n markdown: {\n icon: 'arrow-circle-down',\n name: 'text/markdown',\n text: <FormattedMessage {...messages.markdown} />,\n },\n };\n\n // The result.\n return (\n <div className='composer--options'>\n <input\n accept={acceptContentTypes}\n disabled={disabled || full}\n key={resetFileKey}\n onChange={handleChangeFiles}\n ref={handleRefFileElement}\n type='file'\n multiple\n {...hiddenComponent}\n />\n <Dropdown\n disabled={disabled || full}\n icon='paperclip'\n items={[\n {\n icon: 'cloud-upload',\n name: 'upload',\n text: <FormattedMessage {...messages.upload} />,\n },\n {\n icon: 'paint-brush',\n name: 'doodle',\n text: <FormattedMessage {...messages.doodle} />,\n },\n ]}\n onChange={handleClickAttach}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.attach)}\n />\n <Motion\n defaultStyle={{ scale: 0.87 }}\n style={{\n scale: spring(hasMedia ? 1 : 0.87, {\n stiffness: 200,\n damping: 3,\n }),\n }}\n >\n {({ scale }) => (\n <div\n style={{\n display: hasMedia ? null : 'none',\n transform: `scale(${scale})`,\n }}\n >\n <IconButton\n active={sensitive}\n className='sensitive'\n disabled={spoiler}\n icon={sensitive ? 'eye-slash' : 'eye'}\n inverted\n onClick={onChangeSensitivity}\n size={18}\n style={{\n height: null,\n lineHeight: null,\n }}\n title={intl.formatMessage(messages.sensitive)}\n />\n </div>\n )}\n </Motion>\n <hr />\n <Dropdown\n disabled={disabled}\n icon={(privacyItems[privacy] || {}).icon}\n items={[\n privacyItems.public,\n privacyItems.unlisted,\n privacyItems.private,\n privacyItems.direct,\n ]}\n onChange={onChangeVisibility}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.change_privacy)}\n value={privacy}\n />\n <Dropdown\n disabled={disabled}\n icon={(contentTypeItems[contentType.split('/')[1]] || {}).icon}\n items={[\n contentTypeItems.plain,\n contentTypeItems.html,\n contentTypeItems.markdown,\n ]}\n onChange={onChangeContentType}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.content_type)}\n value={contentType}\n />\n {onToggleSpoiler && (\n <TextIconButton\n active={spoiler}\n ariaControls='glitch.composer.spoiler.input'\n label='CW'\n onClick={onToggleSpoiler}\n title={intl.formatMessage(messages.spoiler)}\n />\n )}\n <Dropdown\n active={advancedOptions && advancedOptions.some(value => !!value)}\n disabled={disabled}\n icon='ellipsis-h'\n items={advancedOptions ? [\n {\n meta: <FormattedMessage {...messages.threaded_mode_long} />,\n name: 'threaded_mode',\n on: advancedOptions.get('threaded_mode'),\n text: <FormattedMessage {...messages.threaded_mode_short} />,\n },\n ] : null}\n onChange={onChangeAdvancedOption}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.advanced_options_icon_title)}\n />\n </div>\n );\n }\n\n}\n\n// Props.\nComposerOptions.propTypes = {\n acceptContentTypes: PropTypes.string,\n advancedOptions: ImmutablePropTypes.map,\n contentType: PropTypes.string,\n disabled: PropTypes.bool,\n full: PropTypes.bool,\n hasMedia: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChangeAdvancedOption: PropTypes.func,\n onChangeSensitivity: PropTypes.func,\n onChangeVisibility: PropTypes.func,\n onChangeContentType: PropTypes.func,\n onDoodleOpen: PropTypes.func,\n onModalClose: PropTypes.func,\n onModalOpen: PropTypes.func,\n onToggleSpoiler: PropTypes.func,\n onUpload: PropTypes.func,\n privacy: PropTypes.string,\n resetFileKey: PropTypes.number,\n sensitive: PropTypes.bool,\n spoiler: PropTypes.bool,\n};\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n defineMessages,\n FormattedMessage,\n} from 'react-intl';\nimport { length } from 'stringz';\n\n// Components.\nimport Button from 'flavours/glitch/components/button';\nimport Icon from 'flavours/glitch/components/icon';\n\n// Utils.\nimport { maxChars } from 'flavours/glitch/util/initial_state';\n\n// Messages.\nconst messages = defineMessages({\n publish: {\n defaultMessage: 'Toot',\n id: 'compose_form.publish',\n },\n publishLoud: {\n defaultMessage: '{publish}!',\n id: 'compose_form.publish_loud',\n },\n});\n\n// The component.\nexport default function ComposerPublisher ({\n countText,\n disabled,\n intl,\n onSecondarySubmit,\n onSubmit,\n privacy,\n sideArm,\n}) {\n const diff = maxChars - length(countText || '');\n const computedClass = classNames('composer--publisher', {\n disabled: disabled || diff < 0,\n over: diff < 0,\n });\n\n // The result.\n return (\n <div className={computedClass}>\n <span className='count'>{diff}</span>\n {sideArm && sideArm !== 'none' ? (\n <Button\n className='side_arm'\n disabled={disabled || diff < 0}\n onClick={onSecondarySubmit}\n style={{ padding: null }}\n text={\n <span>\n <Icon\n icon={{\n public: 'globe',\n unlisted: 'unlock',\n private: 'lock',\n direct: 'envelope',\n }[sideArm]}\n />\n </span>\n }\n title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${sideArm}.short` })}`}\n />\n ) : null}\n <Button\n className='primary'\n text={function () {\n switch (true) {\n case !!sideArm && sideArm !== 'none':\n case privacy === 'direct':\n case privacy === 'private':\n return (\n <span>\n <Icon\n icon={{\n direct: 'envelope',\n private: 'lock',\n public: 'globe',\n unlisted: 'unlock',\n }[privacy]}\n />\n {' '}\n <FormattedMessage {...messages.publish} />\n </span>\n );\n case privacy === 'public':\n return (\n <span>\n <FormattedMessage\n {...messages.publishLoud}\n values={{ publish: <FormattedMessage {...messages.publish} /> }}\n />\n </span>\n );\n default:\n return <span><FormattedMessage {...messages.publish} /></span>;\n }\n }()}\n title={`${intl.formatMessage(messages.publish)}: ${intl.formatMessage({ id: `privacy.${privacy}.short` })}`}\n onClick={onSubmit}\n disabled={disabled || diff < 0}\n />\n </div>\n );\n}\n\n// Props.\nComposerPublisher.propTypes = {\n countText: PropTypes.string,\n disabled: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onSecondarySubmit: PropTypes.func,\n onSubmit: PropTypes.func,\n privacy: PropTypes.oneOf(['direct', 'private', 'unlisted', 'public']),\n sideArm: PropTypes.oneOf(['none', 'direct', 'private', 'unlisted', 'public']),\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages } from 'react-intl';\n\n// Components.\nimport AccountContainer from 'flavours/glitch/containers/account_container';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport AttachmentList from 'flavours/glitch/components/attachment_list';\n\n// Utils.\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\nimport { isRtl } from 'flavours/glitch/util/rtl';\n\n// Messages.\nconst messages = defineMessages({\n cancel: {\n defaultMessage: 'Cancel',\n id: 'reply_indicator.cancel',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // Handles a click on the \"close\" button.\n handleClick () {\n const { onCancel } = this.props;\n if (onCancel) {\n onCancel();\n }\n },\n};\n\n// The component.\nexport default class ComposerReply extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n }\n\n // Rendering.\n render () {\n const { handleClick } = this.handlers;\n const {\n status,\n intl,\n } = this.props;\n\n const account = status.get('account');\n const content = status.get('content');\n const attachments = status.get('media_attachments');\n\n // The result.\n return (\n <article className='composer--reply'>\n <header>\n <IconButton\n className='cancel'\n icon='times'\n onClick={handleClick}\n title={intl.formatMessage(messages.cancel)}\n inverted\n />\n {account && (\n <AccountContainer\n id={account}\n small\n />\n )}\n </header>\n <div\n className='content'\n dangerouslySetInnerHTML={{ __html: content || '' }}\n style={{ direction: isRtl(content) ? 'rtl' : 'ltr' }}\n />\n {attachments.size > 0 && (\n <AttachmentList\n compact\n media={attachments}\n />\n )}\n </article>\n );\n }\n\n}\n\nComposerReply.propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n intl: PropTypes.object.isRequired,\n onCancel: PropTypes.func,\n};\n","// Package imports.\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, FormattedMessage } from 'react-intl';\n\n// Utils.\nimport {\n assignHandlers,\n hiddenComponent,\n} from 'flavours/glitch/util/react_helpers';\n\n// Messages.\nconst messages = defineMessages({\n placeholder: {\n defaultMessage: 'Write your warning here',\n id: 'compose_form.spoiler_placeholder',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // Handles a keypress.\n handleKeyDown ({\n ctrlKey,\n keyCode,\n metaKey,\n altKey,\n }) {\n const { onSubmit, onSecondarySubmit } = this.props;\n\n // We submit the status on control/meta + enter.\n if (onSubmit && keyCode === 13 && (ctrlKey || metaKey)) {\n onSubmit();\n }\n\n // Submit the status with secondary visibility on alt + enter.\n if (onSecondarySubmit && keyCode === 13 && altKey) {\n onSecondarySubmit();\n }\n },\n\n handleRefSpoilerText (spoilerText) {\n this.spoilerText = spoilerText;\n },\n\n // When the escape key is released, we focus the UI.\n handleKeyUp ({ key }) {\n if (key === 'Escape') {\n document.querySelector('.ui').parentElement.focus();\n }\n },\n};\n\n// The component.\nexport default class ComposerSpoiler extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n }\n\n // Rendering.\n render () {\n const { handleKeyDown, handleKeyUp, handleRefSpoilerText } = this.handlers;\n const {\n hidden,\n intl,\n onChange,\n text,\n } = this.props;\n\n // The result.\n return (\n <div className={`composer--spoiler ${hidden ? '' : 'composer--spoiler--visible'}`}>\n <label>\n <span {...hiddenComponent}>\n <FormattedMessage {...messages.placeholder} />\n </span>\n <input\n id='glitch.composer.spoiler.input'\n onChange={onChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n placeholder={intl.formatMessage(messages.placeholder)}\n type='text'\n value={text}\n ref={handleRefSpoilerText}\n disabled={hidden}\n />\n </label>\n </div>\n );\n }\n\n}\n\n// Props.\nComposerSpoiler.propTypes = {\n hidden: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n onSecondarySubmit: PropTypes.func,\n text: PropTypes.string,\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages } from 'react-intl';\n\n// Components.\nimport Icon from 'flavours/glitch/components/icon';\n\n// Messages.\nconst messages = defineMessages({\n localOnly: {\n defaultMessage: 'This post is local-only',\n id: 'advanced_options.local-only.tooltip',\n },\n threadedMode: {\n defaultMessage: 'Threaded mode enabled',\n id: 'advanced_options.threaded_mode.tooltip',\n },\n});\n\n// We use an array of tuples here instead of an object because it\n// preserves order.\nconst iconMap = [\n ['do_not_federate', 'home', messages.localOnly],\n ['threaded_mode', 'comments', messages.threadedMode],\n];\n\n// The component.\nexport default function ComposerTextareaIcons ({\n advancedOptions,\n intl,\n}) {\n\n // The result. We just map every active option to its icon.\n return (\n <div className='composer--textarea--icons'>\n {advancedOptions ? iconMap.map(\n ([key, icon, message]) => advancedOptions.get(key) ? (\n <span\n className='textarea_icon'\n key={key}\n title={intl.formatMessage(message)}\n >\n <Icon\n fullwidth\n icon={icon}\n />\n </span>\n ) : null\n ) : null}\n </div>\n );\n}\n\n// Props.\nComposerTextareaIcons.propTypes = {\n advancedOptions: ImmutablePropTypes.map,\n intl: PropTypes.object.isRequired,\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\n// Components.\nimport ComposerTextareaSuggestionsItem from './item';\n\n// The component.\nexport default function ComposerTextareaSuggestions ({\n hidden,\n onSuggestionClick,\n suggestions,\n value,\n}) {\n\n // The result.\n return (\n <div\n className='composer--textarea--suggestions'\n hidden={hidden || !suggestions || suggestions.isEmpty()}\n >\n {!hidden && suggestions ? suggestions.map(\n (suggestion, index) => (\n <ComposerTextareaSuggestionsItem\n index={index}\n key={typeof suggestion === 'object' ? suggestion.id : suggestion}\n onClick={onSuggestionClick}\n selected={index === value}\n suggestion={suggestion}\n />\n )\n ) : null}\n </div>\n );\n}\n\nComposerTextareaSuggestions.propTypes = {\n hidden: PropTypes.bool,\n onSuggestionClick: PropTypes.func,\n suggestions: ImmutablePropTypes.list,\n value: PropTypes.number,\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport {\n defineMessages,\n FormattedMessage,\n} from 'react-intl';\nimport Textarea from 'react-textarea-autosize';\n\n// Components.\nimport EmojiPicker from 'flavours/glitch/features/emoji_picker';\nimport ComposerTextareaIcons from './icons';\nimport ComposerTextareaSuggestions from './suggestions';\n\n// Utils.\nimport { isRtl } from 'flavours/glitch/util/rtl';\nimport {\n assignHandlers,\n hiddenComponent,\n} from 'flavours/glitch/util/react_helpers';\n\n// Messages.\nconst messages = defineMessages({\n placeholder: {\n defaultMessage: 'What is on your mind?',\n id: 'compose_form.placeholder',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // When blurring the textarea, suggestions are hidden.\n handleBlur () {\n this.setState({ suggestionsHidden: true });\n },\n\n // When the contents of the textarea change, we have to pull up new\n // autosuggest suggestions if applicable, and also change the value\n // of the textarea in our store.\n handleChange ({\n target: {\n selectionStart,\n value,\n },\n }) {\n const {\n onChange,\n onSuggestionsFetchRequested,\n onSuggestionsClearRequested,\n } = this.props;\n const { lastToken } = this.state;\n\n // This gets the token at the caret location, if it begins with an\n // `@` (mentions) or `:` (shortcodes).\n const left = value.slice(0, selectionStart).search(/[^\\s\\u200B]+$/);\n const right = value.slice(selectionStart).search(/[\\s\\u200B]/);\n const token = function () {\n switch (true) {\n case left < 0 || !/[@:#]/.test(value[left]):\n return null;\n case right < 0:\n return value.slice(left);\n default:\n return value.slice(left, right + selectionStart).trim().toLowerCase();\n }\n }();\n\n // We only request suggestions for tokens which are at least 3\n // characters long.\n if (onSuggestionsFetchRequested && token && token.length >= 3) {\n if (lastToken !== token) {\n this.setState({\n lastToken: token,\n selectedSuggestion: 0,\n tokenStart: left,\n });\n onSuggestionsFetchRequested(token);\n }\n } else {\n this.setState({ lastToken: null });\n if (onSuggestionsClearRequested) {\n onSuggestionsClearRequested();\n }\n }\n\n // Updates the value of the textarea.\n if (onChange) {\n onChange(value);\n }\n },\n\n // Handles a click on an autosuggestion.\n handleClickSuggestion (index) {\n const { textarea } = this;\n const {\n onSuggestionSelected,\n suggestions,\n } = this.props;\n const {\n lastToken,\n tokenStart,\n } = this.state;\n onSuggestionSelected(tokenStart, lastToken, suggestions.get(index));\n textarea.focus();\n },\n\n // Handles a keypress. If the autosuggestions are visible, we need\n // to allow keypresses to navigate and sleect them.\n handleKeyDown (e) {\n const {\n disabled,\n onSubmit,\n onSecondarySubmit,\n onSuggestionSelected,\n suggestions,\n } = this.props;\n const {\n lastToken,\n suggestionsHidden,\n selectedSuggestion,\n tokenStart,\n } = this.state;\n\n // Keypresses do nothing if the composer is disabled.\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n // We submit the status on control/meta + enter.\n if (onSubmit && e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {\n onSubmit();\n }\n\n // Submit the status with secondary visibility on alt + enter.\n if (onSecondarySubmit && e.keyCode === 13 && e.altKey) {\n onSecondarySubmit();\n }\n\n // Switches over the pressed key.\n switch(e.key) {\n\n // On arrow down, we pick the next suggestion.\n case 'ArrowDown':\n if (suggestions && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n return;\n\n // On arrow up, we pick the previous suggestion.\n case 'ArrowUp':\n if (suggestions && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n return;\n\n // On enter or tab, we select the suggestion.\n case 'Enter':\n case 'Tab':\n if (onSuggestionSelected && lastToken !== null && suggestions && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n onSuggestionSelected(tokenStart, lastToken, suggestions.get(selectedSuggestion));\n }\n return;\n }\n },\n\n // When the escape key is released, we either close the suggestions\n // window or focus the UI.\n handleKeyUp ({ key }) {\n const { suggestionsHidden } = this.state;\n if (key === 'Escape') {\n if (!suggestionsHidden) {\n this.setState({ suggestionsHidden: true });\n } else {\n document.querySelector('.ui').parentElement.focus();\n }\n }\n },\n\n // Handles the pasting of images into the composer.\n handlePaste (e) {\n const { onPaste } = this.props;\n let d;\n if (onPaste && (d = e.clipboardData) && (d = d.files).length === 1) {\n onPaste(d);\n e.preventDefault();\n }\n },\n\n // Saves a reference to the textarea.\n handleRefTextarea (textarea) {\n this.textarea = textarea;\n },\n};\n\n// The component.\nexport default class ComposerTextarea extends React.Component {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n this.state = {\n suggestionsHidden: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n // Instance variables.\n this.textarea = null;\n }\n\n // When we receive new suggestions, we unhide the suggestions window\n // if we didn't have any suggestions before.\n componentWillReceiveProps (nextProps) {\n const { suggestions } = this.props;\n const { suggestionsHidden } = this.state;\n if (nextProps.suggestions && nextProps.suggestions !== suggestions && nextProps.suggestions.size > 0 && suggestionsHidden) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n // Rendering.\n render () {\n const {\n handleBlur,\n handleChange,\n handleClickSuggestion,\n handleKeyDown,\n handleKeyUp,\n handlePaste,\n handleRefTextarea,\n } = this.handlers;\n const {\n advancedOptions,\n autoFocus,\n disabled,\n intl,\n onPickEmoji,\n suggestions,\n value,\n } = this.props;\n const {\n selectedSuggestion,\n suggestionsHidden,\n } = this.state;\n\n // The result.\n return (\n <div className='composer--textarea'>\n <label>\n <span {...hiddenComponent}><FormattedMessage {...messages.placeholder} /></span>\n <ComposerTextareaIcons\n advancedOptions={advancedOptions}\n intl={intl}\n />\n <Textarea\n aria-autocomplete='list'\n autoFocus={autoFocus}\n className='textarea'\n disabled={disabled}\n inputRef={handleRefTextarea}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onPaste={handlePaste}\n placeholder={intl.formatMessage(messages.placeholder)}\n value={value}\n style={{ direction: isRtl(value) ? 'rtl' : 'ltr' }}\n />\n </label>\n <EmojiPicker onPickEmoji={onPickEmoji} />\n <ComposerTextareaSuggestions\n hidden={suggestionsHidden}\n onSuggestionClick={handleClickSuggestion}\n suggestions={suggestions}\n value={selectedSuggestion}\n />\n </div>\n );\n }\n\n}\n\n// Props.\nComposerTextarea.propTypes = {\n advancedOptions: ImmutablePropTypes.map,\n autoFocus: PropTypes.bool,\n disabled: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func,\n onPaste: PropTypes.func,\n onPickEmoji: PropTypes.func,\n onSubmit: PropTypes.func,\n onSecondarySubmit: PropTypes.func,\n onSuggestionsClearRequested: PropTypes.func,\n onSuggestionsFetchRequested: PropTypes.func,\n onSuggestionSelected: PropTypes.func,\n suggestions: ImmutablePropTypes.list,\n value: PropTypes.string,\n};\n\n// Default props.\nComposerTextarea.defaultProps = { autoFocus: true };\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n FormattedMessage,\n defineMessages,\n} from 'react-intl';\nimport spring from 'react-motion/lib/spring';\n\n// Components.\nimport IconButton from 'flavours/glitch/components/icon_button';\n\n// Utils.\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\nimport { isUserTouching } from 'flavours/glitch/util/is_mobile';\n\n// Messages.\nconst messages = defineMessages({\n undo: {\n defaultMessage: 'Undo',\n id: 'upload_form.undo',\n },\n description: {\n defaultMessage: 'Describe for the visually impaired',\n id: 'upload_form.description',\n },\n crop: {\n defaultMessage: 'Crop',\n id: 'upload_form.focus',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // On blur, we save the description for the media item.\n handleBlur () {\n const {\n id,\n onChangeDescription,\n } = this.props;\n const { dirtyDescription } = this.state;\n\n this.setState({ dirtyDescription: null, focused: false });\n\n if (id && onChangeDescription && dirtyDescription !== null) {\n onChangeDescription(id, dirtyDescription);\n }\n },\n\n // When the value of our description changes, we store it in the\n // temp value `dirtyDescription` in our state.\n handleChange ({ target: { value } }) {\n this.setState({ dirtyDescription: value });\n },\n\n // Records focus on the media item.\n handleFocus () {\n this.setState({ focused: true });\n },\n\n // Records the start of a hover over the media item.\n handleMouseEnter () {\n this.setState({ hovered: true });\n },\n\n // Records the end of a hover over the media item.\n handleMouseLeave () {\n this.setState({ hovered: false });\n },\n\n // Removes the media item.\n handleRemove () {\n const {\n id,\n onRemove,\n } = this.props;\n if (id && onRemove) {\n onRemove(id);\n }\n },\n\n // Opens the focal point modal.\n handleFocalPointClick () {\n const {\n id,\n onOpenFocalPointModal,\n } = this.props;\n if (id && onOpenFocalPointModal) {\n onOpenFocalPointModal(id);\n }\n },\n};\n\n// The component.\nexport default class ComposerUploadFormItem extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n this.state = {\n hovered: false,\n focused: false,\n dirtyDescription: null,\n };\n }\n\n // Rendering.\n render () {\n const {\n handleBlur,\n handleChange,\n handleFocus,\n handleMouseEnter,\n handleMouseLeave,\n handleRemove,\n handleFocalPointClick,\n } = this.handlers;\n const {\n intl,\n preview,\n focusX,\n focusY,\n mediaType,\n } = this.props;\n const {\n focused,\n hovered,\n dirtyDescription,\n } = this.state;\n const active = hovered || focused || isUserTouching();\n const computedClass = classNames('composer--upload_form--item', { active });\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n const description = dirtyDescription || (dirtyDescription !== '' && this.props.description) || '';\n\n // The result.\n return (\n <div\n className={computedClass}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <Motion\n defaultStyle={{ scale: 0.8 }}\n style={{\n scale: spring(1, {\n stiffness: 180,\n damping: 12,\n }),\n }}\n >\n {({ scale }) => (\n <div\n style={{\n transform: `scale(${scale})`,\n backgroundImage: preview ? `url(${preview})` : null,\n backgroundPosition: `${x}% ${y}%`\n }}\n >\n <div className={classNames('composer--upload_form--actions', { active })}>\n <button className='icon-button' onClick={handleRemove}>\n <i className='fa fa-times' /> <FormattedMessage {...messages.undo} />\n </button>\n {mediaType === 'image' && <button className='icon-button' onClick={handleFocalPointClick}><i className='fa fa-crosshairs' /> <FormattedMessage {...messages.crop} /></button>}\n </div>\n <label>\n <span style={{ display: 'none' }}><FormattedMessage {...messages.description} /></span>\n <textarea\n maxLength={420}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={handleFocus}\n placeholder={intl.formatMessage(messages.description)}\n value={description}\n />\n </label>\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n\n// Props.\nComposerUploadFormItem.propTypes = {\n description: PropTypes.string,\n id: PropTypes.string,\n intl: PropTypes.object.isRequired,\n onChangeDescription: PropTypes.func.isRequired,\n onOpenFocalPointModal: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n focusX: PropTypes.number,\n focusY: PropTypes.number,\n mediaType: PropTypes.string,\n preview: PropTypes.string,\n};\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n defineMessages,\n FormattedMessage,\n} from 'react-intl';\nimport spring from 'react-motion/lib/spring';\n\n// Components.\nimport Icon from 'flavours/glitch/components/icon';\n\n// Utils.\nimport Motion from 'flavours/glitch/util/optional_motion';\n\n// Messages.\nconst messages = defineMessages({\n upload: {\n defaultMessage: 'Uploading...',\n id: 'upload_progress.label',\n },\n});\n\n// The component.\nexport default function ComposerUploadFormProgress ({ progress }) {\n\n // The result.\n return (\n <div className='composer--upload_form--progress'>\n <Icon icon='upload' />\n <div className='message'>\n <FormattedMessage {...messages.upload} />\n <div className='backdrop'>\n <Motion\n defaultStyle={{ width: 0 }}\n style={{ width: spring(progress) }}\n >\n {({ width }) =>\n (<div\n className='tracker'\n style={{ width: `${width}%` }}\n />)\n }\n </Motion>\n </div>\n </div>\n </div>\n );\n}\n\n// Props.\nComposerUploadFormProgress.propTypes = { progress: PropTypes.number };\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\n// Components.\nimport ComposerUploadFormItem from './item';\nimport ComposerUploadFormProgress from './progress';\n\n// The component.\nexport default function ComposerUploadForm ({\n intl,\n media,\n onChangeDescription,\n onOpenFocalPointModal,\n onRemove,\n progress,\n uploading,\n handleRef,\n}) {\n const computedClass = classNames('composer--upload_form', { uploading });\n\n // The result.\n return (\n <div className={computedClass} ref={handleRef}>\n {uploading ? <ComposerUploadFormProgress progress={progress} /> : null}\n {media ? (\n <div className='content'>\n {media.map(item => (\n <ComposerUploadFormItem\n description={item.get('description')}\n key={item.get('id')}\n id={item.get('id')}\n intl={intl}\n focusX={item.getIn(['meta', 'focus', 'x'])}\n focusY={item.getIn(['meta', 'focus', 'y'])}\n mediaType={item.get('type')}\n preview={item.get('preview_url')}\n onChangeDescription={onChangeDescription}\n onOpenFocalPointModal={onOpenFocalPointModal}\n onRemove={onRemove}\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n\n// Props.\nComposerUploadForm.propTypes = {\n intl: PropTypes.object.isRequired,\n media: ImmutablePropTypes.list,\n onChangeDescription: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n progress: PropTypes.number,\n uploading: PropTypes.bool,\n handleRef: PropTypes.func,\n};\n","import React from 'react';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { defineMessages, FormattedMessage } from 'react-intl';\nimport { profileLink } from 'flavours/glitch/util/backend_links';\n\n// This is the spring used with our motion.\nconst motionSpring = spring(1, { damping: 35, stiffness: 400 });\n\n// Messages.\nconst messages = defineMessages({\n disclaimer: {\n defaultMessage: 'Your account is not {locked}. Anyone can follow you to view your follower-only posts.',\n id: 'compose_form.lock_disclaimer',\n },\n locked: {\n defaultMessage: 'locked',\n id: 'compose_form.lock_disclaimer.lock',\n },\n});\n\n// The component.\nexport default function ComposerWarning () {\n let lockedLink = <FormattedMessage {...messages.locked} />;\n if (profileLink !== undefined) {\n lockedLink = <a href={profileLink}>{lockedLink}</a>;\n }\n return (\n <Motion\n defaultStyle={{\n opacity: 0,\n scaleX: 0.85,\n scaleY: 0.75,\n }}\n style={{\n opacity: motionSpring,\n scaleX: motionSpring,\n scaleY: motionSpring,\n }}\n >\n {({ opacity, scaleX, scaleY }) => (\n <div\n className='composer--warning'\n style={{\n opacity: opacity,\n transform: `scale(${scaleX}, ${scaleY})`,\n }}\n >\n <FormattedMessage\n {...messages.disclaimer}\n values={{ locked: lockedLink }}\n />\n </div>\n )}\n </Motion>\n );\n}\n\nComposerWarning.propTypes = {};\n","import React from 'react';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { defineMessages, FormattedMessage } from 'react-intl';\n\n// This is the spring used with our motion.\nconst motionSpring = spring(1, { damping: 35, stiffness: 400 });\n\n// Messages.\nconst messages = defineMessages({\n disclaimer: {\n defaultMessage: 'This toot won\\'t be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.',\n id: 'compose_form.hashtag_warning',\n },\n});\n\n// The component.\nexport default function ComposerHashtagWarning () {\n return (\n <Motion\n defaultStyle={{\n opacity: 0,\n scaleX: 0.85,\n scaleY: 0.75,\n }}\n style={{\n opacity: motionSpring,\n scaleX: motionSpring,\n scaleY: motionSpring,\n }}\n >\n {({ opacity, scaleX, scaleY }) => (\n <div\n className='composer--warning'\n style={{\n opacity: opacity,\n transform: `scale(${scaleX}, ${scaleY})`,\n }}\n >\n <FormattedMessage\n {...messages.disclaimer}\n />\n </div>\n )}\n </Motion>\n );\n}\n\nComposerHashtagWarning.propTypes = {};\n","import React from 'react';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { defineMessages, FormattedMessage } from 'react-intl';\nimport { termsLink} from 'flavours/glitch/util/backend_links';\n\n// This is the spring used with our motion.\nconst motionSpring = spring(1, { damping: 35, stiffness: 400 });\n\n// Messages.\nconst messages = defineMessages({\n disclaimer: {\n defaultMessage: 'This toot will only be sent to all the mentioned users.',\n id: 'compose_form.direct_message_warning',\n },\n learn_more: {\n defaultMessage: 'Learn more',\n id: 'compose_form.direct_message_warning_learn_more'\n }\n});\n\n// The component.\nexport default function ComposerDirectWarning () {\n return (\n <Motion\n defaultStyle={{\n opacity: 0,\n scaleX: 0.85,\n scaleY: 0.75,\n }}\n style={{\n opacity: motionSpring,\n scaleX: motionSpring,\n scaleY: motionSpring,\n }}\n >\n {({ opacity, scaleX, scaleY }) => (\n <div\n className='composer--warning'\n style={{\n opacity: opacity,\n transform: `scale(${scaleX}, ${scaleY})`,\n }}\n >\n <span>\n <FormattedMessage {...messages.disclaimer} />\n { termsLink !== undefined && <a href={termsLink} target='_blank'><FormattedMessage {...messages.learn_more} /></a> }\n </span>\n </div>\n )}\n </Motion>\n );\n}\n\nComposerDirectWarning.propTypes = {};\n","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","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages } from 'react-intl';\n\nconst APPROX_HASHTAG_RE = /(?:^|[^\\/\\)\\w])#(\\S+)/i;\n\n// Actions.\nimport {\n cancelReplyCompose,\n changeCompose,\n changeComposeAdvancedOption,\n changeComposeSensitivity,\n changeComposeSpoilerText,\n changeComposeSpoilerness,\n changeComposeVisibility,\n changeComposeContentType,\n changeUploadCompose,\n clearComposeSuggestions,\n fetchComposeSuggestions,\n insertEmojiCompose,\n mountCompose,\n selectComposeSuggestion,\n submitCompose,\n undoUploadCompose,\n unmountCompose,\n uploadCompose,\n} from 'flavours/glitch/actions/compose';\nimport {\n closeModal,\n openModal,\n} from 'flavours/glitch/actions/modal';\nimport { changeLocalSetting } from 'flavours/glitch/actions/local_settings';\n\n// Components.\nimport ComposerOptions from './options';\nimport ComposerPublisher from './publisher';\nimport ComposerReply from './reply';\nimport ComposerSpoiler from './spoiler';\nimport ComposerTextarea from './textarea';\nimport ComposerUploadForm from './upload_form';\nimport ComposerWarning from './warning';\nimport ComposerHashtagWarning from './hashtag_warning';\nimport ComposerDirectWarning from './direct_warning';\n\n// Utils.\nimport { countableText } from 'flavours/glitch/util/counter';\nimport { me } from 'flavours/glitch/util/initial_state';\nimport { isMobile } from 'flavours/glitch/util/is_mobile';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\nimport { wrap } from 'flavours/glitch/util/redux_helpers';\nimport { privacyPreference } from 'flavours/glitch/util/privacy_preference';\n\nconst messages = defineMessages({\n missingDescriptionMessage: { id: 'confirmations.missing_media_description.message',\n defaultMessage: 'At least one media attachment is lacking a description. Consider describing all media attachments for the visually impaired before sending your toot.' },\n missingDescriptionConfirm: { id: 'confirmations.missing_media_description.confirm',\n defaultMessage: 'Send anyway' },\n});\n\n// State mapping.\nfunction mapStateToProps (state) {\n const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']);\n const inReplyTo = state.getIn(['compose', 'in_reply_to']);\n const replyPrivacy = inReplyTo ? state.getIn(['statuses', inReplyTo, 'visibility']) : null;\n const sideArmBasePrivacy = state.getIn(['local_settings', 'side_arm']);\n const sideArmRestrictedPrivacy = replyPrivacy ? privacyPreference(replyPrivacy, sideArmBasePrivacy) : null;\n let sideArmPrivacy = null;\n switch (state.getIn(['local_settings', 'side_arm_reply_mode'])) {\n case 'copy':\n sideArmPrivacy = replyPrivacy;\n break;\n case 'restrict':\n sideArmPrivacy = sideArmRestrictedPrivacy;\n break;\n }\n sideArmPrivacy = sideArmPrivacy || sideArmBasePrivacy;\n return {\n acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']).toArray().join(','),\n advancedOptions: state.getIn(['compose', 'advanced_options']),\n amUnlocked: !state.getIn(['accounts', me, 'locked']),\n focusDate: state.getIn(['compose', 'focusDate']),\n caretPosition: state.getIn(['compose', 'caretPosition']),\n isSubmitting: state.getIn(['compose', 'is_submitting']),\n isChangingUpload: state.getIn(['compose', 'is_changing_upload']),\n isUploading: state.getIn(['compose', 'is_uploading']),\n layout: state.getIn(['local_settings', 'layout']),\n media: state.getIn(['compose', 'media_attachments']),\n preselectDate: state.getIn(['compose', 'preselectDate']),\n privacy: state.getIn(['compose', 'privacy']),\n contentType: state.getIn(['compose', 'content_type']),\n progress: state.getIn(['compose', 'progress']),\n inReplyTo: inReplyTo ? state.getIn(['statuses', inReplyTo]) : null,\n replyAccount: inReplyTo ? state.getIn(['statuses', inReplyTo, 'account']) : null,\n replyContent: inReplyTo ? state.getIn(['statuses', inReplyTo, 'contentHtml']) : null,\n resetFileKey: state.getIn(['compose', 'resetFileKey']),\n sideArm: sideArmPrivacy,\n sensitive: state.getIn(['compose', 'sensitive']),\n showSearch: state.getIn(['search', 'submitted']) && !state.getIn(['search', 'hidden']),\n spoiler: spoilersAlwaysOn || state.getIn(['compose', 'spoiler']),\n spoilerText: state.getIn(['compose', 'spoiler_text']),\n suggestionToken: state.getIn(['compose', 'suggestion_token']),\n suggestions: state.getIn(['compose', 'suggestions']),\n text: state.getIn(['compose', 'text']),\n anyMedia: state.getIn(['compose', 'media_attachments']).size > 0,\n spoilersAlwaysOn: spoilersAlwaysOn,\n mediaDescriptionConfirmation: state.getIn(['local_settings', 'confirm_missing_media_description']),\n preselectOnReply: state.getIn(['local_settings', 'preselect_on_reply']),\n };\n};\n\n// Dispatch mapping.\nconst mapDispatchToProps = (dispatch, { intl }) => ({\n onCancelReply() {\n dispatch(cancelReplyCompose());\n },\n onChangeAdvancedOption(option, value) {\n dispatch(changeComposeAdvancedOption(option, value));\n },\n onChangeContentType(value) {\n dispatch(changeComposeContentType(value));\n },\n onChangeDescription(id, description) {\n dispatch(changeUploadCompose(id, { description }));\n },\n onChangeSensitivity() {\n dispatch(changeComposeSensitivity());\n },\n onChangeSpoilerText(text) {\n dispatch(changeComposeSpoilerText(text));\n },\n onChangeSpoilerness() {\n dispatch(changeComposeSpoilerness());\n },\n onChangeText(text) {\n dispatch(changeCompose(text));\n },\n onChangeVisibility(value) {\n dispatch(changeComposeVisibility(value));\n },\n onClearSuggestions() {\n dispatch(clearComposeSuggestions());\n },\n onCloseModal() {\n dispatch(closeModal());\n },\n onFetchSuggestions(token) {\n dispatch(fetchComposeSuggestions(token));\n },\n onInsertEmoji(position, emoji) {\n dispatch(insertEmojiCompose(position, emoji));\n },\n onMount() {\n dispatch(mountCompose());\n },\n onOpenActionsModal(props) {\n dispatch(openModal('ACTIONS', props));\n },\n onOpenDoodleModal() {\n dispatch(openModal('DOODLE', { noEsc: true }));\n },\n onOpenFocalPointModal(id) {\n dispatch(openModal('FOCAL_POINT', { id }));\n },\n onSelectSuggestion(position, token, suggestion) {\n dispatch(selectComposeSuggestion(position, token, suggestion));\n },\n onMediaDescriptionConfirm(routerHistory) {\n dispatch(openModal('CONFIRM', {\n message: intl.formatMessage(messages.missingDescriptionMessage),\n confirm: intl.formatMessage(messages.missingDescriptionConfirm),\n onConfirm: () => dispatch(submitCompose(routerHistory)),\n onDoNotAsk: () => dispatch(changeLocalSetting(['confirm_missing_media_description'], false)),\n }));\n },\n onSubmit(routerHistory) {\n dispatch(submitCompose(routerHistory));\n },\n onUndoUpload(id) {\n dispatch(undoUploadCompose(id));\n },\n onUnmount() {\n dispatch(unmountCompose());\n },\n onUpload(files) {\n dispatch(uploadCompose(files));\n },\n});\n\n// Handlers.\nconst handlers = {\n\n // Changes the text value of the spoiler.\n handleChangeSpoiler ({ target: { value } }) {\n const { onChangeSpoilerText } = this.props;\n if (onChangeSpoilerText) {\n onChangeSpoilerText(value);\n }\n },\n\n // Inserts an emoji at the caret.\n handleEmoji (data) {\n const { textarea: { selectionStart } } = this;\n const { onInsertEmoji } = this.props;\n if (onInsertEmoji) {\n onInsertEmoji(selectionStart, data);\n }\n },\n\n // Handles the secondary submit button.\n handleSecondarySubmit () {\n const { handleSubmit } = this.handlers;\n const {\n onChangeVisibility,\n sideArm,\n } = this.props;\n if (sideArm !== 'none' && onChangeVisibility) {\n onChangeVisibility(sideArm);\n }\n handleSubmit();\n },\n\n // Selects a suggestion from the autofill.\n handleSelect (tokenStart, token, value) {\n const { onSelectSuggestion } = this.props;\n if (onSelectSuggestion) {\n onSelectSuggestion(tokenStart, token, value);\n }\n },\n\n // Submits the status.\n handleSubmit () {\n const { textarea: { value }, uploadForm } = this;\n const {\n onChangeText,\n onSubmit,\n isSubmitting,\n isChangingUpload,\n isUploading,\n media,\n anyMedia,\n text,\n mediaDescriptionConfirmation,\n onMediaDescriptionConfirm,\n } = this.props;\n\n // If something changes inside the textarea, then we update the\n // state before submitting.\n if (onChangeText && text !== value) {\n onChangeText(value);\n }\n\n // Submit disabled:\n if (isSubmitting || isUploading || isChangingUpload || (!text.trim().length && !anyMedia)) {\n return;\n }\n\n // Submit unless there are media with missing descriptions\n if (mediaDescriptionConfirmation && onMediaDescriptionConfirm && media && media.some(item => !item.get('description'))) {\n const firstWithoutDescription = media.findIndex(item => !item.get('description'));\n if (uploadForm) {\n const inputs = uploadForm.querySelectorAll('.composer--upload_form--item input');\n if (inputs.length == media.size && firstWithoutDescription !== -1) {\n inputs[firstWithoutDescription].focus();\n }\n }\n onMediaDescriptionConfirm(this.context.router ? this.context.router.history : null);\n } else if (onSubmit) {\n onSubmit(this.context.router ? this.context.router.history : null);\n }\n },\n\n // Sets a reference to the upload form.\n handleRefUploadForm (uploadFormComponent) {\n this.uploadForm = uploadFormComponent;\n },\n\n // Sets a reference to the textarea.\n handleRefTextarea (textareaComponent) {\n if (textareaComponent) {\n this.textarea = textareaComponent.textarea;\n }\n },\n\n // Sets a reference to the CW field.\n handleRefSpoilerText (spoilerComponent) {\n if (spoilerComponent) {\n this.spoilerText = spoilerComponent.spoilerText;\n }\n }\n};\n\n// The component.\nclass Composer extends React.Component {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n\n // Instance variables.\n this.textarea = null;\n this.spoilerText = null;\n }\n\n // Tells our state the composer has been mounted.\n componentDidMount () {\n const { onMount } = this.props;\n if (onMount) {\n onMount();\n }\n }\n\n // Tells our state the composer has been unmounted.\n componentWillUnmount () {\n const { onUnmount } = this.props;\n if (onUnmount) {\n onUnmount();\n }\n }\n\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\n // of the textbox.\n // - Replying to more than one user, selects any usernames past\n // the first; this provides a convenient shortcut to drop\n // everyone else from the conversation.\n componentDidUpdate (prevProps) {\n const {\n textarea,\n spoilerText,\n } = this;\n const {\n focusDate,\n caretPosition,\n isSubmitting,\n preselectDate,\n text,\n preselectOnReply,\n } = this.props;\n let selectionEnd, selectionStart;\n\n // Caret/selection handling.\n if (focusDate !== prevProps.focusDate) {\n switch (true) {\n case preselectDate !== prevProps.preselectDate && preselectOnReply:\n selectionStart = text.search(/\\s/) + 1;\n selectionEnd = text.length;\n break;\n case !isNaN(caretPosition) && caretPosition !== null:\n selectionStart = selectionEnd = caretPosition;\n break;\n default:\n selectionStart = selectionEnd = text.length;\n }\n if (textarea) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n textarea.focus();\n textarea.scrollIntoView();\n }\n\n // Refocuses the textarea after submitting.\n } else if (textarea && prevProps.isSubmitting && !isSubmitting) {\n textarea.focus();\n } else if (this.props.spoiler !== prevProps.spoiler) {\n if (this.props.spoiler) {\n if (spoilerText) {\n spoilerText.focus();\n }\n } else {\n if (textarea) {\n textarea.focus();\n }\n }\n }\n }\n\n render () {\n const {\n handleChangeSpoiler,\n handleEmoji,\n handleSecondarySubmit,\n handleSelect,\n handleSubmit,\n handleRefUploadForm,\n handleRefTextarea,\n handleRefSpoilerText,\n } = this.handlers;\n const {\n acceptContentTypes,\n advancedOptions,\n amUnlocked,\n anyMedia,\n contentType,\n intl,\n isSubmitting,\n isChangingUpload,\n isUploading,\n layout,\n media,\n onCancelReply,\n onChangeAdvancedOption,\n onChangeContentType,\n onChangeDescription,\n onChangeSensitivity,\n onChangeSpoilerness,\n onChangeText,\n onChangeVisibility,\n onClearSuggestions,\n onCloseModal,\n onFetchSuggestions,\n onOpenActionsModal,\n onOpenDoodleModal,\n onOpenFocalPointModal,\n onUndoUpload,\n onUpload,\n privacy,\n progress,\n inReplyTo,\n resetFileKey,\n sensitive,\n showSearch,\n sideArm,\n spoiler,\n spoilerText,\n suggestions,\n text,\n spoilersAlwaysOn,\n } = this.props;\n\n let disabledButton = isSubmitting || isUploading || isChangingUpload || (!text.trim().length && !anyMedia);\n\n return (\n <div className='composer'>\n {privacy === 'direct' ? <ComposerDirectWarning /> : null}\n {privacy === 'private' && amUnlocked ? <ComposerWarning /> : null}\n {privacy !== 'public' && APPROX_HASHTAG_RE.test(text) ? <ComposerHashtagWarning /> : null}\n {inReplyTo && (\n <ComposerReply\n status={inReplyTo}\n intl={intl}\n onCancel={onCancelReply}\n />\n )}\n <ComposerSpoiler\n hidden={!spoiler}\n intl={intl}\n onChange={handleChangeSpoiler}\n onSubmit={handleSubmit}\n onSecondarySubmit={handleSecondarySubmit}\n text={spoilerText}\n ref={handleRefSpoilerText}\n />\n <ComposerTextarea\n advancedOptions={advancedOptions}\n autoFocus={!showSearch && !isMobile(window.innerWidth, layout)}\n disabled={isSubmitting}\n intl={intl}\n onChange={onChangeText}\n onPaste={onUpload}\n onPickEmoji={handleEmoji}\n onSubmit={handleSubmit}\n onSecondarySubmit={handleSecondarySubmit}\n onSuggestionsClearRequested={onClearSuggestions}\n onSuggestionsFetchRequested={onFetchSuggestions}\n onSuggestionSelected={handleSelect}\n ref={handleRefTextarea}\n suggestions={suggestions}\n value={text}\n />\n {isUploading || media && media.size ? (\n <ComposerUploadForm\n intl={intl}\n media={media}\n onChangeDescription={onChangeDescription}\n onOpenFocalPointModal={onOpenFocalPointModal}\n onRemove={onUndoUpload}\n progress={progress}\n uploading={isUploading}\n handleRef={handleRefUploadForm}\n />\n ) : null}\n <ComposerOptions\n acceptContentTypes={acceptContentTypes}\n advancedOptions={advancedOptions}\n contentType={contentType}\n disabled={isSubmitting}\n full={media ? media.size >= 4 || media.some(\n item => item.get('type') === 'video'\n ) : false}\n hasMedia={media && !!media.size}\n intl={intl}\n onChangeAdvancedOption={onChangeAdvancedOption}\n onChangeContentType={onChangeContentType}\n onChangeSensitivity={onChangeSensitivity}\n onChangeVisibility={onChangeVisibility}\n onDoodleOpen={onOpenDoodleModal}\n onModalClose={onCloseModal}\n onModalOpen={onOpenActionsModal}\n onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness}\n onUpload={onUpload}\n privacy={privacy}\n resetFileKey={resetFileKey}\n sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)}\n spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler}\n />\n <ComposerPublisher\n countText={`${spoilerText}${countableText(text)}${advancedOptions && advancedOptions.get('do_not_federate') ? ' 👁️' : ''}`}\n disabled={disabledButton}\n intl={intl}\n onSecondarySubmit={handleSecondarySubmit}\n onSubmit={handleSubmit}\n privacy={privacy}\n sideArm={sideArm}\n />\n </div>\n );\n }\n\n}\n\n// Props.\nComposer.propTypes = {\n intl: PropTypes.object.isRequired,\n\n // State props.\n acceptContentTypes: PropTypes.string,\n advancedOptions: ImmutablePropTypes.map,\n amUnlocked: PropTypes.bool,\n focusDate: PropTypes.instanceOf(Date),\n caretPosition: PropTypes.number,\n isSubmitting: PropTypes.bool,\n isChangingUpload: PropTypes.bool,\n isUploading: PropTypes.bool,\n layout: PropTypes.string,\n media: ImmutablePropTypes.list,\n preselectDate: PropTypes.instanceOf(Date),\n privacy: PropTypes.string,\n contentType: PropTypes.string,\n progress: PropTypes.number,\n inReplyTo: ImmutablePropTypes.map,\n resetFileKey: PropTypes.number,\n sideArm: PropTypes.string,\n sensitive: PropTypes.bool,\n showSearch: PropTypes.bool,\n spoiler: PropTypes.bool,\n spoilerText: PropTypes.string,\n suggestionToken: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n text: PropTypes.string,\n anyMedia: PropTypes.bool,\n spoilersAlwaysOn: PropTypes.bool,\n mediaDescriptionConfirmation: PropTypes.bool,\n preselectOnReply: PropTypes.bool,\n\n // Dispatch props.\n onCancelReply: PropTypes.func,\n onChangeAdvancedOption: PropTypes.func,\n onChangeContentType: PropTypes.func,\n onChangeDescription: PropTypes.func,\n onChangeSensitivity: PropTypes.func,\n onChangeSpoilerText: PropTypes.func,\n onChangeSpoilerness: PropTypes.func,\n onChangeText: PropTypes.func,\n onChangeVisibility: PropTypes.func,\n onClearSuggestions: PropTypes.func,\n onCloseModal: PropTypes.func,\n onFetchSuggestions: PropTypes.func,\n onInsertEmoji: PropTypes.func,\n onMount: PropTypes.func,\n onOpenActionsModal: PropTypes.func,\n onOpenDoodleModal: PropTypes.func,\n onSelectSuggestion: PropTypes.func,\n onSubmit: PropTypes.func,\n onUndoUpload: PropTypes.func,\n onUnmount: PropTypes.func,\n onUpload: PropTypes.func,\n onMediaDescriptionConfirm: PropTypes.func,\n};\n\nComposer.contextTypes = {\n router: PropTypes.object,\n};\n\n// Connecting and export.\nexport { Composer as WrappedComponent };\nexport default wrap(Composer, mapStateToProps, mapDispatchToProps, true);\n","import { urlRegex } from './url_regex';\n\nconst urlPlaceholder = 'xxxxxxxxxxxxxxxxxxxxxxx';\n\nexport function countableText(inputText) {\n return inputText\n .replace(urlRegex, urlPlaceholder)\n .replace(/(^|[^\\/\\w])@(([a-z0-9_]+)@[a-z0-9\\.\\-]+[a-z0-9]+)/ig, '$1@$3');\n};\n","import { connect } from 'react-redux';\nimport { changeSetting } from 'flavours/glitch/actions/settings';\nimport { createSelector } from 'reselect';\nimport { Map as ImmutableMap } from 'immutable';\nimport { useEmoji } from 'flavours/glitch/actions/emojis';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { EmojiPicker as EmojiPickerAsync } from 'flavours/glitch/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 'flavours/glitch/util/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 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 emojis = emojis.concat(DEFAULTS.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\nconst assetHost = process.env.CDN_HOST || '';\nlet EmojiPicker, Emoji; // load asynchronously\n\nconst backgroundImageFn = () => `${assetHost}/emoji/sheet_10.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 autoFocus\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@connect(mapStateToProps, mapDispatchToProps)\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","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n// Components.\nimport AccountContainer from 'flavours/glitch/containers/account_container';\n\n// Utils.\nimport { unicodeMapping } from 'flavours/glitch/util/emoji';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\n\n// Gets our asset host from the environment, if available.\nconst assetHost = process.env.CDN_HOST || '';\n\n// Handlers.\nconst handlers = {\n\n // Handles a click on a suggestion.\n handleClick (e) {\n const {\n index,\n onClick,\n } = this.props;\n if (onClick) {\n e.preventDefault();\n e.stopPropagation(); // Prevents following account links\n onClick(index);\n }\n },\n\n // This prevents the focus from changing, which would mess with\n // our suggestion code.\n handleMouseDown (e) {\n e.preventDefault();\n },\n};\n\n// The component.\nexport default class ComposerTextareaSuggestionsItem extends React.Component {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n }\n\n // Rendering.\n render () {\n const {\n handleMouseDown,\n handleClick,\n } = this.handlers;\n const {\n selected,\n suggestion,\n } = this.props;\n const computedClass = classNames('composer--textarea--suggestions--item', { selected });\n\n // If the suggestion is an object, then we render an emoji.\n // Otherwise, we render a hashtag if it starts with #, or an account.\n let inner;\n if (typeof suggestion === 'object') {\n let url;\n if (suggestion.custom) {\n url = suggestion.imageUrl;\n } else {\n const mapping = unicodeMapping[suggestion.native] || unicodeMapping[suggestion.native.replace(/\\uFE0F$/, '')];\n if (mapping) {\n url = `${assetHost}/emoji/${mapping.filename}.svg`;\n }\n }\n if (url) {\n inner = (\n <div className='emoji'>\n <img\n alt={suggestion.native || suggestion.colons}\n className='emojione'\n src={url}\n />\n {suggestion.colons}\n </div>\n );\n }\n } else if (suggestion[0] === '#') {\n inner = suggestion;\n } else {\n inner = (\n <AccountContainer\n id={suggestion}\n small\n />\n );\n }\n\n // The result.\n return (\n <div\n className={computedClass}\n onMouseDown={handleMouseDown}\n onClickCapture={handleClick} // Jumps in front of contents\n role='button'\n tabIndex='0'\n >\n { inner }\n </div>\n );\n }\n\n}\n\n// Props.\nComposerTextareaSuggestionsItem.propTypes = {\n index: PropTypes.number,\n onClick: PropTypes.func,\n selected: PropTypes.bool,\n suggestion: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n};\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation } from './LocationUtils';\nimport { addLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from './DOMUtils';\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + createPath(location);\n };\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nvar NavLink = function NavLink(_ref) {\n var to = _ref.to,\n exact = _ref.exact,\n strict = _ref.strict,\n location = _ref.location,\n activeClassName = _ref.activeClassName,\n className = _ref.className,\n activeStyle = _ref.activeStyle,\n style = _ref.style,\n getIsActive = _ref.isActive,\n ariaCurrent = _ref[\"aria-current\"],\n rest = _objectWithoutProperties(_ref, [\"to\", \"exact\", \"strict\", \"location\", \"activeClassName\", \"className\", \"activeStyle\", \"style\", \"isActive\", \"aria-current\"]);\n\n var path = (typeof to === \"undefined\" ? \"undefined\" : _typeof(to)) === \"object\" ? to.pathname : to;\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n return React.createElement(Route, {\n path: escapedPath,\n exact: exact,\n strict: strict,\n location: location,\n children: function children(_ref2) {\n var location = _ref2.location,\n match = _ref2.match;\n\n var isActive = !!(getIsActive ? getIsActive(match, location) : match);\n\n return React.createElement(Link, _extends({\n to: to,\n className: isActive ? [className, activeClassName].filter(function (i) {\n return i;\n }).join(\" \") : className,\n style: isActive ? _extends({}, style, activeStyle) : style,\n \"aria-current\": isActive && ariaCurrent || null\n }, rest));\n }\n });\n};\n\nNavLink.propTypes = {\n to: Link.propTypes.to,\n exact: PropTypes.bool,\n strict: PropTypes.bool,\n location: PropTypes.object,\n activeClassName: PropTypes.string,\n className: PropTypes.string,\n activeStyle: PropTypes.object,\n style: PropTypes.object,\n isActive: PropTypes.func,\n \"aria-current\": PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"])\n};\n\nNavLink.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\n\nexport default NavLink;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport invariant from 'invariant';\nimport { createLocation, locationsAreEqual } from './LocationUtils';\nimport { addLeadingSlash, stripLeadingSlash, stripTrailingSlash, hasBasename, stripBasename, createPath } from './PathUtils';\nimport createTransitionManager from './createTransitionManager';\nimport { canUseDOM, addEventListener, removeEventListener, getConfirmation, supportsGoWithoutReloadUsingHash } from './DOMUtils';\n\nvar HashChangeEvent = 'hashchange';\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar createHashHistory = function createHashHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n invariant(canUseDOM, 'Hash history needs a DOM');\n\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n\n var _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? getConfirmation : _props$getUserConfirm,\n _props$hashType = props.hashType,\n hashType = _props$hashType === undefined ? 'slash' : _props$hashType;\n\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\n\n warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = stripBasename(path, basename);\n\n return createLocation(path);\n };\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var forceNextPop = false;\n var ignorePath = null;\n\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n\n handlePop(location);\n }\n };\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n // Ensure the hash is encoded properly before doing anything else.\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n };\n\n var push = function push(path, state) {\n warning(state === undefined, 'Hash history cannot push state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextPaths.push(path);\n allPaths = nextPaths;\n\n setState({ action: action, location: location });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\n\n setState();\n }\n });\n };\n\n var replace = function replace(path, state) {\n warning(state === undefined, 'Hash history cannot replace state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser');\n\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nimport warning from 'warning';\nimport { createPath } from './PathUtils';\nimport { createLocation } from './LocationUtils';\nimport createTransitionManager from './createTransitionManager';\n\nvar clamp = function clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n};\n\n/**\n * Creates a history object that stores locations in memory.\n */\nvar createMemoryHistory = function createMemoryHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var getUserConfirmation = props.getUserConfirmation,\n _props$initialEntries = props.initialEntries,\n initialEntries = _props$initialEntries === undefined ? ['/'] : _props$initialEntries,\n _props$initialIndex = props.initialIndex,\n initialIndex = _props$initialIndex === undefined ? 0 : _props$initialIndex,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n\n var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n });\n\n // Public interface\n\n var createHref = createPath;\n\n var push = function push(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n\n var nextEntries = history.entries.slice(0);\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n };\n\n var replace = function replace(path, state) {\n warning(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n history.entries[history.index] = location;\n\n setState({ action: action, location: location });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n\n var action = 'POP';\n var location = history.entries[nextIndex];\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var canGo = function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n };\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n return transitionManager.setPrompt(prompt);\n };\n\n var listen = function listen(listener) {\n return transitionManager.appendListener(listener);\n };\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexport default createMemoryHistory;","import _createBrowserHistory from './createBrowserHistory';\nexport { _createBrowserHistory as createBrowserHistory };\nimport _createHashHistory from './createHashHistory';\nexport { _createHashHistory as createHashHistory };\nimport _createMemoryHistory from './createMemoryHistory';\nexport { _createMemoryHistory as createMemoryHistory };\n\nexport { createLocation, locationsAreEqual } from './LocationUtils';\nexport { parsePath, createPath } from './PathUtils';","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","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\nexport default @injectIntl\nclass 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 actionIcon: PropTypes.string,\n actionTitle: PropTypes.string,\n onActionClick: PropTypes.func,\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 handleAction = () => {\n this.props.onActionClick(this.props.account);\n }\n\n render () {\n const { account, intl, hidden, onActionClick, actionIcon, actionTitle } = this.props;\n\n if (!account) {\n return <div />;\n }\n\n if (hidden) {\n return (\n <Fragment>\n {account.get('display_name')}\n {account.get('username')}\n </Fragment>\n );\n }\n\n let buttons;\n\n if (onActionClick && actionIcon) {\n buttons = <IconButton icon={actionIcon} title={actionTitle} onClick={this.handleAction} />;\n } else 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' 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' title={account.get('acct')} 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","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","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class ColumnBackButton extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n handleClick = () => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n this.context.router.history.goBack();\n } else {\n this.context.router.history.push('/');\n }\n }\n\n render () {\n return (\n <button onClick={this.handleClick} className='column-back-button'>\n <i className='fa fa-fw fa-chevron-left column-back-button__icon' />\n <FormattedMessage id='column_back_button.label' defaultMessage='Back' />\n </button>\n );\n }\n\n}\n","import _extends from '../../polyfills/extends';\nimport React from 'react';\n\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\n\nimport { EmojiPropTypes, EmojiDefaultProps } from '../../utils/shared-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_extends({}, props));\n};\n\nEmoji.propTypes = EmojiPropTypes;\nEmoji.defaultProps = _extends({}, EmojiDefaultProps, { data: data });\n\nexport default Emoji;","var _Object = Object;\n\nexport default _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};","var _String = String;\n\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};","import _Object$keys from 'babel-runtime/core-js/object/keys';\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\n\nvar _JSON = JSON;\n\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return '0x' + u;\n });\n\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name;\n var short_names = emoji.short_names;\n var skin_tone = emoji.skin_tone;\n var skin_variations = emoji.skin_variations;\n var emoticons = emoji.emoticons;\n var unified = emoji.unified;\n var custom = emoji.custom;\n var imageUrl = emoji.imageUrl;\n var id = emoji.id || short_names[0];\n var colons = ':' + id + ':';\n\n if (custom) {\n return {\n id: id,\n name: name,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += ':skin-tone-' + skin_tone + ':';\n }\n\n return {\n id: id,\n name: name,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n native: unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(undefined, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!_Object$keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1 && set) {\n emojiData = JSON.parse(_JSON.stringify(emojiData));\n\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (variationData['has_img_' + set] == undefined || variationData['has_img_' + set]) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(_JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (typeof value === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n}\n\n// https://github.com/sonicdoe/measure-scrollbar\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n\n return scrollbarWidth;\n}\n\nexport { getData, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar };","var core = module.exports = { version: '2.6.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_emojione: 'g',\n has_img_facebook: 'h',\n has_img_messenger: 'i',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;(Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;(split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n\n emoji.added_in = parseInt(emoji.added_in);\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n\n if (!emoji.text) emoji.text = '';\n\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n\n emoji.search = buildSearch(emoji);\n }\n};\n\nmodule.exports = { buildSearch: buildSearch, compress: compress, uncompress: uncompress };","import PropTypes from 'prop-types';\n\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n native: PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'emojione', 'messenger', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\n\nvar EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n native: false,\n forceSize: false,\n tooltip: false,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return 'https://unpkg.com/emoji-datasource-' + set + '@' + '4.0.4' + '/img/' + set + '/sheets-256/' + sheetSize + '.png';\n },\n onOver: function onOver() {},\n onLeave: function onLeave() {},\n onClick: function onClick() {}\n};\n\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n native: PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string.isRequired\n }))\n};\n\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n native: EmojiDefaultProps.native,\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n autoFocus: false,\n custom: []\n};\n\nexport { EmojiPropTypes, EmojiDefaultProps, PickerPropTypes, PickerDefaultProps };","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nconst MissingIndicator = () => (\n <div className='regeneration-indicator missing-indicator'>\n <div>\n <div className='regeneration-indicator__figure' />\n\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />\n <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />\n </div>\n </div>\n </div>\n);\n\nexport default MissingIndicator;\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nconst MissingIndicator = () => (\n <div className='regeneration-indicator missing-indicator'>\n <div>\n <div className='regeneration-indicator__figure' />\n\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />\n <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />\n </div>\n </div>\n </div>\n);\n\nexport default MissingIndicator;\n","var _Object = Object;\n\nexport default _Object.getPrototypeOf || function (O) {\n O = Object(O);\n\n if (typeof O.constructor === 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n\n return O instanceof Object ? Object.prototype : null;\n};","var _Object = Object;\n\nexport default (function createClass() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n _Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n})();","export default function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === 'object' || typeof call === 'function') ? call : self;\n}","var _Object = Object;\n\nexport default function inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = _Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) {\n _Object.setPrototypeOf ? _Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n}","var NAMESPACE = 'emoji-mart';\n\nvar _JSON = JSON;\n\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\n\nvar getter = void 0;\nvar setter = void 0;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n try {\n window.localStorage[NAMESPACE + '.' + key] = _JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n try {\n var value = window.localStorage[NAMESPACE + '.' + key];\n } catch (e) {\n return;\n }\n\n if (value) {\n return JSON.parse(value);\n }\n }\n}\n\nexport default { update: update, set: set, get: get, setNamespace: setNamespace, setHandlers: setHandlers };","import store from './store';\n\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\n\nvar frequently = void 0,\n initialized = void 0;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n\n\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n if (!frequently) {\n defaults = {};\n\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default { add: add, get: get };","var SVGs = {\n activity: \"<path d=\\\"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\\\"/>\",\n\n custom: \"<g transform=\\\"translate(2.000000, 1.000000)\\\"><rect id=\\\"Rectangle\\\" x=\\\"8\\\" y=\\\"0\\\" width=\\\"3\\\" height=\\\"21\\\" rx=\\\"1.5\\\"></rect><rect id=\\\"Rectangle\\\" transform=\\\"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \\\" x=\\\"8.343\\\" y=\\\"0.049\\\" width=\\\"3\\\" height=\\\"21\\\" rx=\\\"1.5\\\"></rect><rect id=\\\"Rectangle\\\" transform=\\\"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \\\" x=\\\"8.343\\\" y=\\\"0.049\\\" width=\\\"3\\\" height=\\\"21\\\" rx=\\\"1.5\\\"></rect></g>\",\n\n flags: \"<path d=\\\"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\\\"/>\",\n\n foods: \"<path d=\\\"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\\\"/>\",\n\n nature: \"<path d=\\\"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\\\"/><path d=\\\"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\\\"/>\",\n\n objects: \"<path d=\\\"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\\\"/><path d=\\\"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\\\"/>\",\n\n people: \"<path d=\\\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\\\"/><path d=\\\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\\\"/>\",\n\n places: \"<path d=\\\"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\\\"/><path d=\\\"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\\\"/>\",\n\n recent: \"<path d=\\\"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\\\"/><path d=\\\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\\\"/>\",\n\n symbols: \"<path d=\\\"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\\\"/>\"\n};\n\nexport default SVGs;","import _Object$getPrototypeOf from '../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../polyfills/createClass';\nimport _possibleConstructorReturn from '../polyfills/possibleConstructorReturn';\nimport _inherits from '../polyfills/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport SVGs from '../svgs';\n\nvar Anchors = function (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n _classCallCheck(this, Anchors);\n\n var _this = _possibleConstructorReturn(this, (Anchors.__proto__ || _Object$getPrototypeOf(Anchors)).call(this, props));\n\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n\n _this.state = {\n selected: defaultCategory.name\n };\n\n _this.handleClick = _this.handleClick.bind(_this);\n return _this;\n }\n\n _createClass(Anchors, [{\n key: 'getSVG',\n value: function getSVG(id) {\n this.SVGs || (this.SVGs = {});\n\n if (this.SVGs[id]) {\n return this.SVGs[id];\n } else {\n var svg = '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\\n ' + SVGs[id] + '\\n </svg>';\n\n this.SVGs[id] = svg;\n return svg;\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _props = this.props;\n var categories = _props.categories;\n var onAnchorClick = _props.onAnchorClick;\n\n\n onAnchorClick(categories[index], index);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props2 = this.props;\n var categories = _props2.categories;\n var onAnchorClick = _props2.onAnchorClick;\n var color = _props2.color;\n var i18n = _props2.i18n;\n var selected = this.state.selected;\n\n\n return React.createElement(\n 'div',\n { className: 'emoji-mart-anchors' },\n categories.map(function (category, i) {\n var id = category.id;\n var name = category.name;\n var anchor = category.anchor;\n var isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n return React.createElement(\n 'span',\n {\n key: id,\n title: i18n.categories[id],\n 'data-index': i,\n onClick: _this2.handleClick,\n className: 'emoji-mart-anchor ' + (isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: { color: isSelected ? color : null }\n },\n React.createElement('div', { dangerouslySetInnerHTML: { __html: _this2.getSVG(id) } }),\n React.createElement('span', {\n className: 'emoji-mart-anchor-bar',\n style: { backgroundColor: color }\n })\n );\n })\n );\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport default Anchors;\n\n\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {}\n};","import _extends from '../polyfills/extends';\nimport _Object$getPrototypeOf from '../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../polyfills/createClass';\nimport _possibleConstructorReturn from '../polyfills/possibleConstructorReturn';\nimport _inherits from '../polyfills/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport { NimbleEmoji } from '.';\n\nvar Category = function (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n _classCallCheck(this, Category);\n\n var _this = _possibleConstructorReturn(this, (Category.__proto__ || _Object$getPrototypeOf(Category)).call(this, props));\n\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_this);\n _this.setLabelRef = _this.setLabelRef.bind(_this);\n return _this;\n }\n\n _createClass(Category, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.parent = this.container.parentNode;\n\n this.margin = 0;\n this.minMargin = 0;\n\n this.memoizeSize();\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _props = this.props;\n var name = _props.name;\n var perLine = _props.perLine;\n var native = _props.native;\n var hasStickyPosition = _props.hasStickyPosition;\n var emojis = _props.emojis;\n var emojiProps = _props.emojiProps;\n var skin = emojiProps.skin;\n var size = emojiProps.size;\n var set = emojiProps.set;\n var nextPerLine = nextProps.perLine;\n var nextNative = nextProps.native;\n var nextHasStickyPosition = nextProps.hasStickyPosition;\n var nextEmojis = nextProps.emojis;\n var nextEmojiProps = nextProps.emojiProps;\n var nextSkin = nextEmojiProps.skin;\n var nextSize = nextEmojiProps.size;\n var nextSet = nextEmojiProps.set;\n var shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: 'memoizeSize',\n value: function memoizeSize() {\n var _container$getBoundin = this.container.getBoundingClientRect();\n\n var top = _container$getBoundin.top;\n var height = _container$getBoundin.height;\n\n var _parent$getBoundingCl = this.parent.getBoundingClientRect();\n\n var parentTop = _parent$getBoundingCl.top;\n\n var _label$getBoundingCli = this.label.getBoundingClientRect();\n\n var labelHeight = _label$getBoundingCli.height;\n\n\n this.top = top - parentTop + this.parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = margin + 'px';\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: 'getEmojis',\n value: function getEmojis() {\n var _this2 = this;\n\n var _props2 = this.props;\n var name = _props2.name;\n var emojis = _props2.emojis;\n var recent = _props2.recent;\n var perLine = _props2.perLine;\n\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: 'updateDisplay',\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: 'setContainerRef',\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: 'setLabelRef',\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props3 = this.props;\n var id = _props3.id;\n var name = _props3.name;\n var hasStickyPosition = _props3.hasStickyPosition;\n var emojiProps = _props3.emojiProps;\n var i18n = _props3.i18n;\n var emojis = this.getEmojis();\n var labelStyles = {};\n var labelSpanStyles = {};\n var containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n return React.createElement(\n 'div',\n {\n ref: this.setContainerRef,\n className: 'emoji-mart-category ' + (emojis && !emojis.length ? 'emoji-mart-no-results' : ''),\n style: containerStyles\n },\n React.createElement(\n 'div',\n {\n style: labelStyles,\n 'data-name': name,\n className: 'emoji-mart-category-label'\n },\n React.createElement(\n 'span',\n { style: labelSpanStyles, ref: this.setLabelRef },\n i18n.categories[id]\n )\n ),\n emojis && emojis.map(function (emoji) {\n return NimbleEmoji(_extends({ emoji: emoji, data: _this3.data }, emojiProps));\n }),\n emojis && !emojis.length && React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n null,\n NimbleEmoji(_extends({\n data: this.data\n }, emojiProps, {\n size: 38,\n emoji: 'sleuth_or_spy',\n onOver: null,\n onLeave: null,\n onClick: null\n }))\n ),\n React.createElement(\n 'div',\n { className: 'emoji-mart-no-results-label' },\n i18n.notfound\n )\n )\n );\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport default Category;\n\n\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _extends from '../polyfills/extends';\nimport _Object$getPrototypeOf from '../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../polyfills/createClass';\nimport _possibleConstructorReturn from '../polyfills/possibleConstructorReturn';\nimport _inherits from '../polyfills/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getData } from '../utils';\nimport { NimbleEmoji, Skins } from '.';\n\nvar Preview = function (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n _classCallCheck(this, Preview);\n\n var _this = _possibleConstructorReturn(this, (Preview.__proto__ || _Object$getPrototypeOf(Preview)).call(this, props));\n\n _this.data = props.data;\n _this.state = { emoji: null };\n return _this;\n }\n\n _createClass(Preview, [{\n key: 'render',\n value: function render() {\n var emoji = this.state.emoji;\n var _props = this.props;\n var emojiProps = _props.emojiProps;\n var skinsProps = _props.skinsProps;\n var showSkinTones = _props.showSkinTones;\n var title = _props.title;\n var idleEmoji = _props.emoji;\n\n\n if (emoji) {\n var emojiData = getData(emoji, null, null, this.data);\n var _emojiData$emoticons = emojiData.emoticons;\n var emoticons = _emojiData$emoticons === undefined ? [] : _emojiData$emoticons;\n var knownEmoticons = [];\n var listedEmoticons = [];\n\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n\n return React.createElement(\n 'div',\n { className: 'emoji-mart-preview' },\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-emoji' },\n NimbleEmoji(_extends({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))\n ),\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-data' },\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-name' },\n emoji.name\n ),\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-shortnames' },\n emojiData.short_names.map(function (short_name) {\n return React.createElement(\n 'span',\n { key: short_name, className: 'emoji-mart-preview-shortname' },\n ':',\n short_name,\n ':'\n );\n })\n ),\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-emoticons' },\n listedEmoticons.map(function (emoticon) {\n return React.createElement(\n 'span',\n { key: emoticon, className: 'emoji-mart-preview-emoticon' },\n emoticon\n );\n })\n )\n )\n );\n } else {\n return React.createElement(\n 'div',\n { className: 'emoji-mart-preview' },\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-emoji' },\n idleEmoji && idleEmoji.length && NimbleEmoji(_extends({ emoji: idleEmoji, data: this.data }, emojiProps))\n ),\n React.createElement(\n 'div',\n { className: 'emoji-mart-preview-data' },\n React.createElement(\n 'span',\n { className: 'emoji-mart-title-label' },\n title\n )\n ),\n showSkinTones && React.createElement(\n 'div',\n { className: 'emoji-mart-preview-skins' },\n React.createElement(Skins, skinsProps)\n )\n );\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport default Preview;\n\n\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../../polyfills/createClass';\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\n\nvar NimbleEmojiIndex = function () {\n function NimbleEmojiIndex(data) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: 'buildIndex',\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji];\n var short_names = emojiData.short_names;\n var emoticons = emojiData.emoticons;\n var id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n }\n\n _this.emojis[id] = getSanitizedData(id, null, null, _this.data);\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: 'clearCustomEmojis',\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: 'addCustomToPool',\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: 'search',\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var emojisToShowFilter = _ref.emojisToShowFilter;\n var maxResults = _ref.maxResults;\n var include = _ref.include;\n var exclude = _ref.exclude;\n var _ref$custom = _ref.custom;\n var custom = _ref$custom === undefined ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1']];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var char = value[charIndex];\n length++;\n\n aIndex[char] || (aIndex[char] = {});\n aIndex = aIndex[char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var _id in aPool) {\n var emoji = aPool[_id];\n var search = emoji.search;\n var sub = value.substr(0, length);\n var subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == _id) score = 0;\n\n aIndex.results.push(_this4.emojis[_id]);\n aIndex.pool[_id] = emoji;\n\n scores[_id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n return aScore - bScore;\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport default NimbleEmojiIndex;","import _Object$getPrototypeOf from '../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../polyfills/createClass';\nimport _possibleConstructorReturn from '../polyfills/possibleConstructorReturn';\nimport _inherits from '../polyfills/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\n\nvar Search = function (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n _classCallCheck(this, Search);\n\n var _this = _possibleConstructorReturn(this, (Search.__proto__ || _Object$getPrototypeOf(Search)).call(this, props));\n\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_this);\n _this.handleChange = _this.handleChange.bind(_this);\n return _this;\n }\n\n _createClass(Search, [{\n key: 'handleChange',\n value: function handleChange() {\n var value = this.input.value;\n\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: 'setRef',\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.input.value = '';\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props;\n var i18n = _props.i18n;\n var autoFocus = _props.autoFocus;\n\n\n return React.createElement(\n 'div',\n { className: 'emoji-mart-search' },\n React.createElement('input', {\n ref: this.setRef,\n type: 'text',\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n })\n );\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport default Search;\n\n\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _Object$getPrototypeOf from '../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../polyfills/createClass';\nimport _possibleConstructorReturn from '../polyfills/possibleConstructorReturn';\nimport _inherits from '../polyfills/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins = function (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n _classCallCheck(this, Skins);\n\n var _this = _possibleConstructorReturn(this, (Skins.__proto__ || _Object$getPrototypeOf(Skins)).call(this, props));\n\n _this.state = {\n opened: false\n };\n\n _this.handleClick = _this.handleClick.bind(_this);\n return _this;\n }\n\n _createClass(Skins, [{\n key: 'handleClick',\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n\n if (!this.state.opened) {\n this.setState({ opened: true });\n } else {\n this.setState({ opened: false });\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var skin = this.props.skin;\n var opened = this.state.opened;\n\n\n var skinToneNodes = [];\n\n for (var i = 0; i < 6; i++) {\n var skinTone = i + 1;\n var selected = skinTone == skin;\n\n skinToneNodes.push(React.createElement(\n 'span',\n {\n key: 'skin-tone-' + skinTone,\n className: 'emoji-mart-skin-swatch ' + (selected ? 'emoji-mart-skin-swatch-selected' : '')\n },\n React.createElement('span', {\n onClick: this.handleClick,\n 'data-skin': skinTone,\n className: 'emoji-mart-skin emoji-mart-skin-tone-' + skinTone\n })\n ));\n }\n\n return React.createElement(\n 'div',\n null,\n React.createElement(\n 'div',\n {\n className: 'emoji-mart-skin-swatches ' + (opened ? 'emoji-mart-skin-swatches-opened' : '')\n },\n skinToneNodes\n )\n );\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport default Skins;\n\n\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _extends from '../../polyfills/extends';\nimport _Object$getPrototypeOf from '../../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../../polyfills/createClass';\nimport _possibleConstructorReturn from '../../polyfills/possibleConstructorReturn';\nimport _inherits from '../../polyfills/inherits';\nimport '../../vendor/raf-polyfill';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes, PickerDefaultProps } from '../../utils/shared-props';\n\nimport { Anchors, Category, Preview, Search } from '..';\n\nvar I18N = {\n search: 'Search',\n notfound: 'No Emoji Found',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n }\n};\n\nvar NimblePicker = function (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n _classCallCheck(this, NimblePicker);\n\n var _this = _possibleConstructorReturn(this, (NimblePicker.__proto__ || _Object$getPrototypeOf(NimblePicker)).call(this, props));\n\n _this.RECENT_CATEGORY = { id: 'recent', name: 'Recent', emojis: null };\n _this.CUSTOM_CATEGORY = { id: 'custom', name: 'Custom', emojis: [] };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.state = {\n skin: props.skin || store.get('skin') || props.defaultSkin,\n firstRender: true\n };\n\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n _this.CUSTOM_CATEGORY.emojis = props.custom.map(function (emoji) {\n return _extends({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n });\n\n allCategories.push(_this.CUSTOM_CATEGORY);\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_this);\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_this);\n _this.setSearchRef = _this.setSearchRef.bind(_this);\n _this.handleSearch = _this.handleSearch.bind(_this);\n _this.setScrollRef = _this.setScrollRef.bind(_this);\n _this.handleScroll = _this.handleScroll.bind(_this);\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_this);\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_this);\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_this);\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_this);\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_this);\n _this.setPreviewRef = _this.setPreviewRef.bind(_this);\n _this.handleSkinChange = _this.handleSkinChange.bind(_this);\n _this.handleKeyDown = _this.handleKeyDown.bind(_this);\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(props) {\n if (props.skin) {\n this.setState({ skin: props.skin });\n } else if (props.defaultSkin && !store.get('skin')) {\n this.setState({ skin: props.defaultSkin });\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({ firstRender: false });\n }, 60);\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n }\n }, {\n key: 'testStickyPosition',\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = prefix + 'sticky';\n });\n\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: 'handleEmojiOver',\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n // Use Array.prototype.find() when it is more widely supported.\n var emojiData = this.CUSTOM_CATEGORY.emojis.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({ emoji: emoji });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: 'handleEmojiLeave',\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({ emoji: null });\n }, 16);\n }\n }, {\n key: 'handleEmojiClick',\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: 'handleEmojiSelect',\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n\n var component = this.categoryRefs['category-1'];\n if (component) {\n var maxMargin = component.maxMargin;\n component.forceUpdate();\n\n window.requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n window.requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: 'handleScrollPaint',\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs['category-' + ii];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors;\n var _activeCategory = activeCategory;\n var categoryName = _activeCategory.name;\n\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({ selected: categoryName });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: 'handleSearch',\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs['category-' + i];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n this.scroll.scrollTop = 0;\n this.handleScroll();\n }\n }, {\n key: 'handleAnchorClick',\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs['category-' + i];\n var scroll = this.scroll;\n var anchors = this.anchors;\n var scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n\n window.requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: 'handleSkinChange',\n value: function handleSkinChange(skin) {\n var newState = { skin: skin };\n var onSkinChange = this.props.onSkinChange;\n\n\n this.setState(newState);\n store.update(newState);\n\n onSkinChange(skin);\n }\n }, {\n key: 'handleKeyDown',\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji = void 0;\n\n if (this.SEARCH_CATEGORY.emojis && (emoji = this.SEARCH_CATEGORY.emojis[0])) {\n this.handleEmojiSelect(emoji);\n }\n\n handled = true;\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: 'updateCategoriesSize',\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs['category-' + i];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: 'getCategories',\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: 'setAnchorsRef',\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: 'setSearchRef',\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: 'setPreviewRef',\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: 'setScrollRef',\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: 'setCategoryRef',\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _props = this.props;\n var perLine = _props.perLine;\n var emojiSize = _props.emojiSize;\n var set = _props.set;\n var sheetSize = _props.sheetSize;\n var style = _props.style;\n var title = _props.title;\n var emoji = _props.emoji;\n var color = _props.color;\n var native = _props.native;\n var backgroundImageFn = _props.backgroundImageFn;\n var emojisToShowFilter = _props.emojisToShowFilter;\n var showPreview = _props.showPreview;\n var showSkinTones = _props.showSkinTones;\n var emojiTooltip = _props.emojiTooltip;\n var include = _props.include;\n var exclude = _props.exclude;\n var recent = _props.recent;\n var autoFocus = _props.autoFocus;\n var skin = this.state.skin;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n\n return React.createElement(\n 'div',\n {\n style: _extends({ width: width }, style),\n className: 'emoji-mart',\n onKeyDown: this.handleKeyDown\n },\n React.createElement(\n 'div',\n { className: 'emoji-mart-bar' },\n React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick\n })\n ),\n React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM_CATEGORY.emojis,\n autoFocus: autoFocus\n }),\n React.createElement(\n 'div',\n {\n ref: this.setScrollRef,\n className: 'emoji-mart-scroll',\n onScroll: this.handleScroll\n },\n this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, 'category-' + i),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n native: native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM_CATEGORY.emojis : undefined,\n emojiProps: {\n native: native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n forceSize: native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n }\n });\n })\n ),\n showPreview && React.createElement(\n 'div',\n { className: 'emoji-mart-bar' },\n React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n emojiProps: {\n native: native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange\n }\n })\n )\n );\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport default NimblePicker;\n\nNimblePicker.defaultProps = _extends({}, PickerDefaultProps);","import _extends from '../../polyfills/extends';\nimport _Object$getPrototypeOf from '../../polyfills/objectGetPrototypeOf';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from '../../polyfills/createClass';\nimport _possibleConstructorReturn from '../../polyfills/possibleConstructorReturn';\nimport _inherits from '../../polyfills/inherits';\nimport React from 'react';\n\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\n\nimport { PickerPropTypes, PickerDefaultProps } from '../../utils/shared-props';\n\nvar Picker = function (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, (Picker.__proto__ || _Object$getPrototypeOf(Picker)).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: 'render',\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport default Picker;\n\nPicker.defaultProps = _extends({}, PickerDefaultProps, { data: data });","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nimport Avatar from 'flavours/glitch/components/avatar';\nimport IconButton from 'flavours/glitch/components/icon_button';\n\nimport { autoPlayGif, me } from 'flavours/glitch/util/initial_state';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },\n link_verified_on: { id: 'account.link_verified_on', defaultMessage: 'Ownership of this link was checked on {date}' },\n});\n\nconst dateFormatOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n};\n\n@injectIntl\nexport default class Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n openEditProfile = () => {\n window.open('/settings/profile', '_blank');\n }\n\n render () {\n const { account, intl } = this.props;\n\n if (!account) {\n return null;\n }\n\n let displayName = account.get('display_name_html');\n let fields = account.get('fields');\n let badge = account.get('bot') ? (<div className='roles'><div className='account-role bot'><FormattedMessage id='account.badges.bot' defaultMessage='Bot' /></div></div>) : null;\n\n let info = '';\n let mutingInfo = '';\n let actionBtn = '';\n\n if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {\n info = <span className='account--follows-info'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>;\n }\n else if (me !== account.get('id') && account.getIn(['relationship', 'blocking'])) {\n info = <span className='account--follows-info'><FormattedMessage id='account.blocked' defaultMessage='Blocked' /></span>;\n }\n\n if (me !== account.get('id') && account.getIn(['relationship', 'muting'])) {\n mutingInfo = <span className='account--muting-info'><FormattedMessage id='account.muted' defaultMessage='Muted' /></span>;\n } else if (me !== account.get('id') && account.getIn(['relationship', 'domain_blocking'])) {\n mutingInfo = <span className='account--muting-info'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain hidden' /></span>;\n }\n\n if (me !== account.get('id')) {\n if (!account.get('relationship')) { // Wait until the relationship is loaded\n actionBtn = '';\n } else if (account.getIn(['relationship', 'requested'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} active icon='hourglass' title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />\n </div>\n );\n } else if (!account.getIn(['relationship', 'blocking'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon={account.getIn(['relationship', 'following']) ? 'user-times' : 'user-plus'} active={account.getIn(['relationship', 'following'])} title={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />\n </div>\n );\n } else if (account.getIn(['relationship', 'blocking'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon='unlock' title={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />\n </div>\n );\n }\n } else {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon='pencil' title={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />\n </div>\n );\n }\n\n if (account.get('moved') && !account.getIn(['relationship', 'following'])) {\n actionBtn = '';\n }\n\n const content = { __html: account.get('note_emojified') };\n\n return (\n <div className='account__header__wrapper'>\n <div className={classNames('account__header', { inactive: !!account.get('moved') })} style={{ backgroundImage: `url(${autoPlayGif ? account.get('header') : account.get('header_static')})` }}>\n <div>\n <a\n href={account.get('url')}\n className='account__header__avatar'\n role='presentation'\n target='_blank'\n rel='noopener'\n >\n <Avatar account={account} size={90} />\n </a>\n\n <span className='account__header__display-name' dangerouslySetInnerHTML={{ __html: displayName }} />\n <span className='account__header__username'>@{account.get('acct')} {account.get('locked') ? <i className='fa fa-lock' /> : null}</span>\n\n {badge}\n\n <div className='account__header__content' dangerouslySetInnerHTML={content} />\n\n {fields.size > 0 && (\n <div className='account__header__fields'>\n {fields.map((pair, i) => (\n <dl key={i}>\n <dt dangerouslySetInnerHTML={{ __html: pair.get('name_emojified') }} title={pair.get('name')} />\n <dd className={pair.get('verified_at') && 'verified'} title={pair.get('value_plain')}>\n {pair.get('verified_at') && <span title={intl.formatMessage(messages.link_verified_on, { date: intl.formatDate(pair.get('verified_at'), dateFormatOptions) })}><i className='fa fa-check verified__mark' /></span>} <span dangerouslySetInnerHTML={{ __html: pair.get('value_emojified') }} />\n </dd>\n </dl>\n ))}\n </div>\n )}\n\n {info}\n {mutingInfo}\n {actionBtn}\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';\nimport { NavLink } from 'react-router-dom';\nimport { defineMessages, injectIntl, FormattedMessage, FormattedNumber } from 'react-intl';\nimport { me, isStaff } from 'flavours/glitch/util/initial_state';\nimport { profileLink, accountAdminLink } from 'flavours/glitch/util/backend_links';\n\nconst messages = defineMessages({\n mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },\n direct: { id: 'account.direct', defaultMessage: 'Direct message @{name}' },\n edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },\n block: { id: 'account.block', defaultMessage: 'Block @{name}' },\n mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n report: { id: 'account.report', defaultMessage: 'Report @{name}' },\n share: { id: 'account.share', defaultMessage: 'Share @{name}\\'s profile' },\n media: { id: 'account.media', defaultMessage: 'Media' },\n blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },\n hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' },\n showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' },\n endorse: { id: 'account.endorse', defaultMessage: 'Feature on profile' },\n unendorse: { id: 'account.unendorse', defaultMessage: 'Don\\'t feature on profile' },\n add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n});\n\n@injectIntl\nexport default class ActionBar extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n onFollow: PropTypes.func,\n onBlock: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onReblogToggle: PropTypes.func.isRequired,\n onReport: PropTypes.func.isRequired,\n onMute: PropTypes.func.isRequired,\n onBlockDomain: PropTypes.func.isRequired,\n onUnblockDomain: PropTypes.func.isRequired,\n onEndorseToggle: PropTypes.func.isRequired,\n onAddToList: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleShare = () => {\n navigator.share({\n url: this.props.account.get('url'),\n });\n }\n\n isStatusesPageActive = (match, location) => {\n if (!match) {\n return false;\n }\n return !location.pathname.match(/\\/(followers|following)\\/?$/);\n }\n\n render () {\n const { account, intl } = this.props;\n\n let menu = [];\n let extraInfo = '';\n\n menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention });\n menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect });\n\n if ('share' in navigator) {\n menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });\n }\n\n menu.push(null);\n\n if (account.get('id') === me) {\n if (profileLink !== undefined) {\n menu.push({ text: intl.formatMessage(messages.edit_profile), href: profileLink });\n }\n } else {\n if (account.getIn(['relationship', 'following'])) {\n if (account.getIn(['relationship', 'showing_reblogs'])) {\n menu.push({ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });\n } else {\n menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });\n }\n\n menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle });\n menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList });\n menu.push(null);\n }\n\n if (account.getIn(['relationship', 'muting'])) {\n menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.props.onMute });\n } else {\n menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.props.onMute });\n }\n\n if (account.getIn(['relationship', 'blocking'])) {\n menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.props.onBlock });\n } else {\n menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.props.onBlock });\n }\n\n menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport });\n }\n\n if (account.get('acct') !== account.get('username')) {\n const domain = account.get('acct').split('@')[1];\n\n extraInfo = (\n <div className='account__disclaimer'>\n <FormattedMessage\n id='account.disclaimer_full'\n defaultMessage=\"Information below may reflect the user's profile incompletely.\"\n />\n {' '}\n <a target='_blank' rel='noopener' href={account.get('url')}>\n <FormattedMessage id='account.view_full_profile' defaultMessage='View full profile' />\n </a>\n </div>\n );\n\n menu.push(null);\n\n if (account.getIn(['relationship', 'domain_blocking'])) {\n menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain });\n } else {\n menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain });\n }\n }\n\n if (account.get('id') !== me && isStaff && (accountAdminLink !== undefined)) {\n menu.push(null);\n menu.push({\n text: intl.formatMessage(messages.admin_account, { name: account.get('username') }),\n href: accountAdminLink(account.get('id')),\n });\n }\n\n return (\n <div>\n {extraInfo}\n\n <div className='account__action-bar'>\n <div className='account__action-bar-dropdown'>\n <DropdownMenuContainer items={menu} icon='bars' size={24} direction='right' />\n </div>\n\n <div className='account__action-bar-links'>\n <NavLink isActive={this.isStatusesPageActive} activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}`}>\n <FormattedMessage id='account.posts' defaultMessage='Posts' />\n <strong><FormattedNumber value={account.get('statuses_count')} /></strong>\n </NavLink>\n\n <NavLink exact activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`}>\n <FormattedMessage id='account.follows' defaultMessage='Follows' />\n <strong><FormattedNumber value={account.get('following_count')} /></strong>\n </NavLink>\n\n <NavLink exact activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`}>\n <FormattedMessage id='account.followers' defaultMessage='Followers' />\n <strong>{ account.get('followers_count') < 0 ? '-' : <FormattedNumber value={account.get('followers_count')} /> }</strong>\n </NavLink>\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport AvatarOverlay from '../../../components/avatar_overlay';\nimport DisplayName from '../../../components/display_name';\n\nexport default class MovedNote extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n from: ImmutablePropTypes.map.isRequired,\n to: ImmutablePropTypes.map.isRequired,\n };\n\n handleAccountClick = e => {\n if (e.button === 0) {\n e.preventDefault();\n this.context.router.history.push(`/accounts/${this.props.to.get('id')}`);\n }\n\n e.stopPropagation();\n }\n\n render () {\n const { from, to } = this.props;\n const displayNameHtml = { __html: from.get('display_name_html') };\n\n return (\n <div className='account__moved-note'>\n <div className='account__moved-note__message'>\n <div className='account__moved-note__icon-wrapper'><i className='fa fa-fw fa-suitcase account__moved-note__icon' /></div>\n <FormattedMessage id='account.moved_to' defaultMessage='{name} has moved to:' values={{ name: <bdi><strong dangerouslySetInnerHTML={displayNameHtml} /></bdi> }} />\n </div>\n\n <a href={to.get('url')} onClick={this.handleAccountClick} className='detailed-status__display-name'>\n <div className='detailed-status__display-avatar'><AvatarOverlay account={to} friend={from} /></div>\n <DisplayName account={to} />\n </a>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport InnerHeader from 'flavours/glitch/features/account/components/header';\nimport ActionBar from 'flavours/glitch/features/account/components/action_bar';\nimport MissingIndicator from 'flavours/glitch/components/missing_indicator';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { FormattedMessage } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport MovedNote from './moved_note';\n\nexport default class Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onReblogToggle: PropTypes.func.isRequired,\n onReport: PropTypes.func.isRequired,\n onMute: PropTypes.func.isRequired,\n onBlockDomain: PropTypes.func.isRequired,\n onUnblockDomain: PropTypes.func.isRequired,\n onEndorseToggle: PropTypes.func.isRequired,\n onAddToList: PropTypes.func.isRequired,\n hideTabs: PropTypes.bool,\n };\n\n static contextTypes = {\n router: PropTypes.object,\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 handleMention = () => {\n this.props.onMention(this.props.account, this.context.router.history);\n }\n\n handleDirect = () => {\n this.props.onDirect(this.props.account, this.context.router.history);\n }\n\n handleReport = () => {\n this.props.onReport(this.props.account);\n }\n\n handleReblogToggle = () => {\n this.props.onReblogToggle(this.props.account);\n }\n\n handleMute = () => {\n this.props.onMute(this.props.account);\n }\n\n handleBlockDomain = () => {\n const domain = this.props.account.get('acct').split('@')[1];\n\n if (!domain) return;\n\n this.props.onBlockDomain(domain);\n }\n\n handleUnblockDomain = () => {\n const domain = this.props.account.get('acct').split('@')[1];\n\n if (!domain) return;\n\n this.props.onUnblockDomain(domain);\n }\n\n handleEndorseToggle = () => {\n this.props.onEndorseToggle(this.props.account);\n }\n\n handleAddToList = () => {\n this.props.onAddToList(this.props.account);\n }\n\n render () {\n const { account, hideTabs } = this.props;\n\n if (account === null) {\n return <MissingIndicator />;\n }\n\n return (\n <div className='account-timeline__header'>\n {account.get('moved') && <MovedNote from={account} to={account.get('moved')} />}\n\n <InnerHeader\n account={account}\n onFollow={this.handleFollow}\n onBlock={this.handleBlock}\n />\n\n <ActionBar\n account={account}\n onBlock={this.handleBlock}\n onMention={this.handleMention}\n onDirect={this.handleDirect}\n onReblogToggle={this.handleReblogToggle}\n onReport={this.handleReport}\n onMute={this.handleMute}\n onBlockDomain={this.handleBlockDomain}\n onUnblockDomain={this.handleUnblockDomain}\n onEndorseToggle={this.handleEndorseToggle}\n onAddToList={this.handleAddToList}\n />\n\n {!hideTabs && (\n <div className='account__section-headline'>\n <NavLink exact to={`/accounts/${account.get('id')}`}><FormattedMessage id='account.posts' defaultMessage='Toots' /></NavLink>\n <NavLink exact to={`/accounts/${account.get('id')}/with_replies`}><FormattedMessage id='account.posts_with_replies' defaultMessage='Toots with replies' /></NavLink>\n <NavLink exact to={`/accounts/${account.get('id')}/media`}><FormattedMessage id='account.media' defaultMessage='Media' /></NavLink>\n </div>\n )}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeGetAccount } from 'flavours/glitch/selectors';\nimport Header from '../components/header';\nimport {\n followAccount,\n unfollowAccount,\n blockAccount,\n unblockAccount,\n unmuteAccount,\n pinAccount,\n unpinAccount,\n} from 'flavours/glitch/actions/accounts';\nimport {\n mentionCompose,\n directCompose\n} from 'flavours/glitch/actions/compose';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { initReport } from 'flavours/glitch/actions/reports';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { blockDomain, unblockDomain } from 'flavours/glitch/actions/domain_blocks';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { unfollowModal } from 'flavours/glitch/util/initial_state';\n\nconst messages = defineMessages({\n unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },\n});\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { accountId }) => ({\n account: getAccount(state, accountId),\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(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\n onMention (account, router) {\n dispatch(mentionCompose(account, router));\n },\n\n onDirect (account, router) {\n dispatch(directCompose(account, router));\n },\n\n onDirect (account, router) {\n dispatch(directCompose(account, router));\n },\n\n onReblogToggle (account) {\n if (account.getIn(['relationship', 'showing_reblogs'])) {\n dispatch(followAccount(account.get('id'), false));\n } else {\n dispatch(followAccount(account.get('id'), true));\n }\n },\n\n onEndorseToggle (account) {\n if (account.getIn(['relationship', 'endorsed'])) {\n dispatch(unpinAccount(account.get('id')));\n } else {\n dispatch(pinAccount(account.get('id')));\n }\n },\n\n onReport (account) {\n dispatch(initReport(account));\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 onBlockDomain (domain) {\n dispatch(openModal('CONFIRM', {\n message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable.' values={{ domain: <strong>{domain}</strong> }} />,\n confirm: intl.formatMessage(messages.blockDomainConfirm),\n onConfirm: () => dispatch(blockDomain(domain)),\n }));\n },\n\n onUnblockDomain (domain) {\n dispatch(unblockDomain(domain));\n },\n\n onAddToList(account){\n dispatch(openModal('LIST_ADDER', {\n accountId: account.get('id'),\n }));\n },\n\n});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport IconButton from '../../../components/icon_button';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { autoPlayGif, me } from '../../../initial_state';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n requested: { id: 'account.requested', defaultMessage: 'Awaiting approval. Click to cancel follow request' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },\n linkVerifiedOn: { id: 'account.link_verified_on', defaultMessage: 'Ownership of this link was checked on {date}' },\n account_locked: { id: 'account.locked_info', defaultMessage: 'This account privacy status is set to locked. The owner manually reviews who can follow them.' },\n});\n\nconst dateFormatOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n};\n\nclass Avatar extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n state = {\n isHovered: false,\n };\n\n handleMouseOver = () => {\n if (this.state.isHovered) return;\n this.setState({ isHovered: true });\n }\n\n handleMouseOut = () => {\n if (!this.state.isHovered) return;\n this.setState({ isHovered: false });\n }\n\n render () {\n const { account } = this.props;\n const { isHovered } = this.state;\n\n return (\n <Motion defaultStyle={{ radius: 90 }} style={{ radius: spring(isHovered ? 30 : 90, { stiffness: 180, damping: 12 }) }}>\n {({ radius }) => (\n <a\n href={account.get('url')}\n className='account__header__avatar'\n role='presentation'\n target='_blank'\n rel='noopener'\n style={{ borderRadius: `${radius}px`, backgroundImage: `url(${autoPlayGif || isHovered ? account.get('avatar') : account.get('avatar_static')})` }}\n onMouseOver={this.handleMouseOver}\n onMouseOut={this.handleMouseOut}\n onFocus={this.handleMouseOver}\n onBlur={this.handleMouseOut}\n >\n <span style={{ display: 'none' }}>{account.get('acct')}</span>\n </a>\n )}\n </Motion>\n );\n }\n\n}\n\nexport default @injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n openEditProfile = () => {\n window.open('/user-settings', '_blank');\n }\n\n render () {\n const { account, intl } = this.props;\n\n if (!account) {\n return null;\n }\n\n let info = '';\n let mutingInfo = '';\n let actionBtn = '';\n let lockedIcon = '';\n\n if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {\n info = <span className='account--follows-info'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>;\n } else if (me !== account.get('id') && account.getIn(['relationship', 'blocking'])) {\n info = <span className='account--follows-info'><FormattedMessage id='account.blocked' defaultMessage='Blocked' /></span>;\n }\n\n if (me !== account.get('id') && account.getIn(['relationship', 'muting'])) {\n mutingInfo = <span className='account--muting-info'><FormattedMessage id='account.muted' defaultMessage='Muted' /></span>;\n } else if (me !== account.get('id') && account.getIn(['relationship', 'domain_blocking'])) {\n mutingInfo = <span className='account--muting-info'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain hidden' /></span>;\n }\n\n if (me !== account.get('id')) {\n if (!account.get('relationship')) { // Wait until the relationship is loaded\n actionBtn = '';\n } else if (account.getIn(['relationship', 'requested'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} active icon='hourglass' title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />\n </div>\n );\n } else if (!account.getIn(['relationship', 'blocking'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon={account.getIn(['relationship', 'following']) ? 'user-times' : 'user-plus'} active={account.getIn(['relationship', 'following'])} title={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />\n </div>\n );\n } else if (account.getIn(['relationship', 'blocking'])) {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon='unlock' title={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />\n </div>\n );\n }\n } else {\n actionBtn = (\n <div className='account--action-button'>\n <IconButton size={26} icon='pencil' title={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />\n </div>\n );\n }\n\n if (account.get('moved') && !account.getIn(['relationship', 'following'])) {\n actionBtn = '';\n }\n\n if (account.get('locked')) {\n lockedIcon = <Icon id='lock' title={intl.formatMessage(messages.account_locked)} />;\n }\n\n const content = { __html: account.get('note_emojified') };\n const displayNameHtml = { __html: account.get('display_name_html') };\n const fields = account.get('fields');\n const badge = account.get('bot') ? (<div className='roles'><div className='account-role bot'><FormattedMessage id='account.badges.bot' defaultMessage='Bot' /></div></div>) : null;\n\n return (\n <div className={classNames('account__header', { inactive: !!account.get('moved') })} style={{ backgroundImage: `url(${autoPlayGif ? account.get('header') : account.get('header_static')})` }}>\n <div>\n <Avatar account={account} />\n\n <span className='account__header__display-name' dangerouslySetInnerHTML={displayNameHtml} />\n <span className='account__header__username'>@{account.get('acct')} {lockedIcon}</span>\n\n {badge}\n\n <div className='account__header__content' dangerouslySetInnerHTML={content} />\n\n {fields.size > 0 && (\n <div className='account__header__fields'>\n {fields.map((pair, i) => (\n <dl key={i}>\n <dt dangerouslySetInnerHTML={{ __html: pair.get('name_emojified') }} title={pair.get('name')} />\n\n <dd className={pair.get('verified_at') && 'verified'} title={pair.get('value_plain')}>\n {pair.get('verified_at') && <span title={intl.formatMessage(messages.linkVerifiedOn, { date: intl.formatDate(pair.get('verified_at'), dateFormatOptions) })}><Icon id='check' className='verified__mark' /></span>} <span dangerouslySetInnerHTML={{ __html: pair.get('value_emojified') }} />\n </dd>\n </dl>\n ))}\n </div>\n )}\n\n {info}\n {mutingInfo}\n {actionBtn}\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport DropdownMenuContainer from '../../../containers/dropdown_menu_container';\nimport { NavLink } from 'react-router-dom';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { me, isStaff } from '../../../initial_state';\nimport { shortNumberFormat } from '../../../utils/numbers';\n\nconst messages = defineMessages({\n mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },\n direct: { id: 'account.direct', defaultMessage: 'Direct message @{name}' },\n edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },\n block: { id: 'account.block', defaultMessage: 'Block @{name}' },\n mute: { id: 'account.mute', defaultMessage: 'Mute @{name}' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n report: { id: 'account.report', defaultMessage: 'Report @{name}' },\n share: { id: 'account.share', defaultMessage: 'Share @{name}\\'s profile' },\n media: { id: 'account.media', defaultMessage: 'Media' },\n blockDomain: { id: 'account.block_domain', defaultMessage: 'Hide everything from {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unhide {domain}' },\n hideReblogs: { id: 'account.hide_reblogs', defaultMessage: 'Hide boosts from @{name}' },\n showReblogs: { id: 'account.show_reblogs', defaultMessage: 'Show boosts from @{name}' },\n pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },\n domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },\n mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },\n endorse: { id: 'account.endorse', defaultMessage: 'Feature on profile' },\n unendorse: { id: 'account.unendorse', defaultMessage: 'Don\\'t feature on profile' },\n add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' },\n admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },\n});\n\nexport default @injectIntl\nclass ActionBar extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n onFollow: PropTypes.func,\n onBlock: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onReblogToggle: PropTypes.func.isRequired,\n onReport: PropTypes.func.isRequired,\n onMute: PropTypes.func.isRequired,\n onBlockDomain: PropTypes.func.isRequired,\n onUnblockDomain: PropTypes.func.isRequired,\n onEndorseToggle: PropTypes.func.isRequired,\n onAddToList: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleShare = () => {\n navigator.share({\n url: this.props.account.get('url'),\n });\n }\n\n isStatusesPageActive = (match, location) => {\n if (!match) {\n return false;\n }\n return !location.pathname.match(/\\/(followers|following)\\/?$/);\n }\n\n render () {\n const { account, intl } = this.props;\n\n let menu = [];\n let extraInfo = '';\n\n if (account.get('id') !== me) {\n menu.push({ text: intl.formatMessage(messages.mention, { name: account.get('username') }), action: this.props.onMention });\n menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.props.onDirect });\n menu.push(null);\n }\n\n if ('share' in navigator) {\n menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });\n menu.push(null);\n }\n\n if (account.get('id') === me) {\n menu.push({ text: intl.formatMessage(messages.preferences), href: '/user-settings' });\n menu.push({ text: intl.formatMessage(messages.pins), to: '/pinned' });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.follow_requests), to: '/follow_requests' });\n menu.push({ text: intl.formatMessage(messages.favourites), to: '/favourites' });\n menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' });\n menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' });\n menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' });\n } else {\n if (account.getIn(['relationship', 'following'])) {\n if (account.getIn(['relationship', 'showing_reblogs'])) {\n menu.push({ text: intl.formatMessage(messages.hideReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });\n } else {\n menu.push({ text: intl.formatMessage(messages.showReblogs, { name: account.get('username') }), action: this.props.onReblogToggle });\n }\n\n menu.push({ text: intl.formatMessage(account.getIn(['relationship', 'endorsed']) ? messages.unendorse : messages.endorse), action: this.props.onEndorseToggle });\n menu.push({ text: intl.formatMessage(messages.add_or_remove_from_list), action: this.props.onAddToList });\n menu.push(null);\n }\n\n if (account.getIn(['relationship', 'muting'])) {\n menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.props.onMute });\n } else {\n menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.props.onMute });\n }\n\n if (account.getIn(['relationship', 'blocking'])) {\n menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.props.onBlock });\n } else {\n menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.props.onBlock });\n }\n\n menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport });\n }\n\n if (account.get('acct') !== account.get('username')) {\n const domain = account.get('acct').split('@')[1];\n\n extraInfo = (\n <div className='account__disclaimer'>\n <FormattedMessage\n id='account.disclaimer_full'\n defaultMessage=\"Information below may reflect the user's profile incompletely.\"\n />\n {' '}\n <a target='_blank' rel='noopener' href={account.get('url')}>\n <FormattedMessage id='account.view_full_profile' defaultMessage='View full profile' />\n </a>\n </div>\n );\n\n menu.push(null);\n\n if (account.getIn(['relationship', 'domain_blocking'])) {\n menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain });\n } else {\n menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain });\n }\n }\n\n if (account.get('id') !== me && isStaff) {\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: `/admin/accounts/${account.get('id')}` });\n }\n\n return (\n <div>\n {extraInfo}\n\n <div className='account__action-bar'>\n <div className='account__action-bar-links'>\n <NavLink isActive={this.isStatusesPageActive} activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}`} title={intl.formatNumber(account.get('statuses_count'))}>\n <FormattedMessage id='account.posts' defaultMessage='Toots' />\n <strong>{shortNumberFormat(account.get('statuses_count'))}</strong>\n </NavLink>\n\n <NavLink exact activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}/following`} title={intl.formatNumber(account.get('following_count'))}>\n <FormattedMessage id='account.follows' defaultMessage='Follows' />\n <strong>{shortNumberFormat(account.get('following_count'))}</strong>\n </NavLink>\n\n <NavLink exact activeClassName='active' className='account__action-bar__tab' to={`/accounts/${account.get('id')}/followers`} title={intl.formatNumber(account.get('followers_count'))}>\n <FormattedMessage id='account.followers' defaultMessage='Followers' />\n <strong>{shortNumberFormat(account.get('followers_count'))}</strong>\n </NavLink>\n </div>\n\n <div className='account__action-bar-dropdown'>\n <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport AvatarOverlay from '../../../components/avatar_overlay';\nimport DisplayName from '../../../components/display_name';\nimport Icon from 'mastodon/components/icon';\n\nexport default class MovedNote extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n from: ImmutablePropTypes.map.isRequired,\n to: ImmutablePropTypes.map.isRequired,\n };\n\n handleAccountClick = e => {\n if (e.button === 0) {\n e.preventDefault();\n this.context.router.history.push(`/accounts/${this.props.to.get('id')}`);\n }\n\n e.stopPropagation();\n }\n\n render () {\n const { from, to } = this.props;\n const displayNameHtml = { __html: from.get('display_name_html') };\n\n return (\n <div className='account__moved-note'>\n <div className='account__moved-note__message'>\n <div className='account__moved-note__icon-wrapper'><Icon id='suitcase' className='account__moved-note__icon' fixedWidth /></div>\n <FormattedMessage id='account.moved_to' defaultMessage='{name} has moved to:' values={{ name: <bdi><strong dangerouslySetInnerHTML={displayNameHtml} /></bdi> }} />\n </div>\n\n <a href={to.get('url')} onClick={this.handleAccountClick} className='detailed-status__display-name'>\n <div className='detailed-status__display-avatar'><AvatarOverlay account={to} friend={from} /></div>\n <DisplayName account={to} />\n </a>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport InnerHeader from '../../account/components/header';\nimport ActionBar from '../../account/components/action_bar';\nimport MissingIndicator from '../../../components/missing_indicator';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport MovedNote from './moved_note';\nimport { FormattedMessage } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nexport default class Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n onMention: PropTypes.func.isRequired,\n onDirect: PropTypes.func.isRequired,\n onReblogToggle: PropTypes.func.isRequired,\n onReport: PropTypes.func.isRequired,\n onMute: PropTypes.func.isRequired,\n onBlockDomain: PropTypes.func.isRequired,\n onUnblockDomain: PropTypes.func.isRequired,\n onEndorseToggle: PropTypes.func.isRequired,\n onAddToList: PropTypes.func.isRequired,\n hideTabs: PropTypes.bool,\n };\n\n static contextTypes = {\n router: PropTypes.object,\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 handleMention = () => {\n this.props.onMention(this.props.account, this.context.router.history);\n }\n\n handleDirect = () => {\n this.props.onDirect(this.props.account, this.context.router.history);\n }\n\n handleReport = () => {\n this.props.onReport(this.props.account);\n }\n\n handleReblogToggle = () => {\n this.props.onReblogToggle(this.props.account);\n }\n\n handleMute = () => {\n this.props.onMute(this.props.account);\n }\n\n handleBlockDomain = () => {\n const domain = this.props.account.get('acct').split('@')[1];\n\n if (!domain) return;\n\n this.props.onBlockDomain(domain);\n }\n\n handleUnblockDomain = () => {\n const domain = this.props.account.get('acct').split('@')[1];\n\n if (!domain) return;\n\n this.props.onUnblockDomain(domain);\n }\n\n handleEndorseToggle = () => {\n this.props.onEndorseToggle(this.props.account);\n }\n\n handleAddToList = () => {\n this.props.onAddToList(this.props.account);\n }\n\n render () {\n const { account, hideTabs } = this.props;\n\n if (account === null) {\n return <MissingIndicator />;\n }\n\n return (\n <div className='account-timeline__header'>\n {account.get('moved') && <MovedNote from={account} to={account.get('moved')} />}\n\n <InnerHeader\n account={account}\n onFollow={this.handleFollow}\n onBlock={this.handleBlock}\n />\n\n <ActionBar\n account={account}\n onBlock={this.handleBlock}\n onMention={this.handleMention}\n onDirect={this.handleDirect}\n onReblogToggle={this.handleReblogToggle}\n onReport={this.handleReport}\n onMute={this.handleMute}\n onBlockDomain={this.handleBlockDomain}\n onUnblockDomain={this.handleUnblockDomain}\n onEndorseToggle={this.handleEndorseToggle}\n onAddToList={this.handleAddToList}\n />\n\n {!hideTabs && (\n <div className='account__section-headline'>\n <NavLink exact to={`/accounts/${account.get('id')}`}><FormattedMessage id='account.posts' defaultMessage='Toots' /></NavLink>\n <NavLink exact to={`/accounts/${account.get('id')}/with_replies`}><FormattedMessage id='account.posts_with_replies' defaultMessage='Toots and replies' /></NavLink>\n <NavLink exact to={`/accounts/${account.get('id')}/media`}><FormattedMessage id='account.media' defaultMessage='Media' /></NavLink>\n </div>\n )}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { makeGetAccount } from '../../../selectors';\nimport Header from '../components/header';\nimport {\n followAccount,\n unfollowAccount,\n blockAccount,\n unblockAccount,\n unmuteAccount,\n pinAccount,\n unpinAccount,\n} from '../../../actions/accounts';\nimport {\n mentionCompose,\n directCompose,\n} from '../../../actions/compose';\nimport { initMuteModal } from '../../../actions/mutes';\nimport { initReport } from '../../../actions/reports';\nimport { openModal } from '../../../actions/modal';\nimport { blockDomain, unblockDomain } from '../../../actions/domain_blocks';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport { unfollowModal } from '../../../initial_state';\n\nconst messages = defineMessages({\n unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },\n blockConfirm: { id: 'confirmations.block.confirm', defaultMessage: 'Block' },\n blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },\n});\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { accountId }) => ({\n account: getAccount(state, accountId),\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(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\n onMention (account, router) {\n dispatch(mentionCompose(account, router));\n },\n\n onDirect (account, router) {\n dispatch(directCompose(account, router));\n },\n\n onReblogToggle (account) {\n if (account.getIn(['relationship', 'showing_reblogs'])) {\n dispatch(followAccount(account.get('id'), false));\n } else {\n dispatch(followAccount(account.get('id'), true));\n }\n },\n\n onEndorseToggle (account) {\n if (account.getIn(['relationship', 'endorsed'])) {\n dispatch(unpinAccount(account.get('id')));\n } else {\n dispatch(pinAccount(account.get('id')));\n }\n },\n\n onReport (account) {\n dispatch(initReport(account));\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 onBlockDomain (domain) {\n dispatch(openModal('CONFIRM', {\n message: <FormattedMessage id='confirmations.domain_block.message' defaultMessage='Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.' values={{ domain: <strong>{domain}</strong> }} />,\n confirm: intl.formatMessage(messages.blockDomainConfirm),\n onConfirm: () => dispatch(blockDomain(domain)),\n }));\n },\n\n onUnblockDomain (domain) {\n dispatch(unblockDomain(domain));\n },\n\n onAddToList(account){\n dispatch(openModal('LIST_ADDER', {\n accountId: account.get('id'),\n }));\n },\n\n});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes, EmojiDefaultProps } from '../../utils/shared-props';\n\nvar SHEET_COLUMNS = 52;\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji;\n var skin = props.skin;\n var set = props.set;\n var data = props.data;\n\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props);\n\n var sheet_x = _getData2.sheet_x;\n var sheet_y = _getData2.sheet_y;\n var multiply = 100 / (SHEET_COLUMNS - 1);\n\n return multiply * sheet_x + '% ' + multiply * sheet_y + '%';\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji;\n var skin = props.skin;\n var set = props.set;\n var data = props.data;\n\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n var onClick = props.onClick;\n var emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n var onOver = props.onOver;\n var emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n var onLeave = props.onLeave;\n var emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n if (!data) {\n return null;\n }\n\n var unified = data.unified;\n var custom = data.custom;\n var short_names = data.short_names;\n var colons = data.colons;\n var imageUrl = data.imageUrl;\n var style = {};\n var children = props.children;\n var className = 'emoji-mart-emoji';\n var title = null;\n\n if (!unified && !custom) {\n return null;\n }\n\n if (props.tooltip) {\n title = short_names ? ':' + short_names[0] + ':' : colons;\n }\n\n if (props.native && unified) {\n className += ' emoji-mart-emoji-native';\n style = { fontSize: props.size };\n children = unifiedToNative(unified);\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: 'url(' + imageUrl + ')',\n backgroundSize: 'contain'\n };\n } else {\n var setHasEmoji = data['has_img_' + props.set] == undefined || data['has_img_' + props.set];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: 'url(' + props.backgroundImageFn(props.set, props.sheetSize) + ')',\n backgroundSize: 100 * SHEET_COLUMNS + '%',\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return '<span style=\\'' + style + '\\' ' + (title ? 'title=\\'' + title + '\\'' : '') + ' class=\\'' + className + '\\'>' + (children || '') + '</span>';\n } else {\n return React.createElement(\n 'span',\n {\n key: props.emoji.id || props.emoji,\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n title: title,\n className: className\n },\n React.createElement(\n 'span',\n { style: style },\n children\n )\n );\n }\n};\n\nNimbleEmoji.defaultProps = EmojiDefaultProps;\n\nexport default NimbleEmoji;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Toggle from 'react-toggle';\n\nexport default class SettingToggle extends React.PureComponent {\n\n static propTypes = {\n prefix: PropTypes.string,\n settings: ImmutablePropTypes.map.isRequired,\n settingPath: PropTypes.array.isRequired,\n label: PropTypes.node.isRequired,\n meta: PropTypes.node,\n onChange: PropTypes.func.isRequired,\n }\n\n onChange = ({ target }) => {\n this.props.onChange(this.props.settingPath, target.checked);\n }\n\n render () {\n const { prefix, settings, settingPath, label, meta } = this.props;\n const id = ['setting-toggle', prefix, ...settingPath].filter(Boolean).join('-');\n\n return (\n <div className='setting-toggle'>\n <Toggle id={id} checked={settings.getIn(settingPath)} onChange={this.onChange} onKeyDown={this.onKeyDown} />\n <label htmlFor={id} className='setting-toggle__label'>{label}</label>\n {meta && <span className='setting-meta__label'>{meta}</span>}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\n\nexport default class SettingText extends React.PureComponent {\n\n static propTypes = {\n settings: ImmutablePropTypes.map.isRequired,\n settingPath: PropTypes.array.isRequired,\n label: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n };\n\n handleChange = (e) => {\n this.props.onChange(this.props.settingPath, e.target.value);\n }\n\n render () {\n const { settings, settingPath, label } = this.props;\n\n return (\n <label>\n <span style={{ display: 'none' }}>{label}</span>\n <input\n className='setting-text'\n value={settings.getIn(settingPath)}\n onChange={this.handleChange}\n placeholder={label}\n />\n </label>\n );\n }\n\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MenuPortal = exports.menuPortalCSS = exports.LoadingMessage = exports.NoOptionsMessage = exports.loadingMessageCSS = exports.noOptionsMessageCSS = exports.MenuList = exports.menuListCSS = exports.MenuPlacer = exports.menuCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports.getMenuPlacement = getMenuPlacement;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _utils = require('../utils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// ==============================\n// Menu\n// ==============================\n\n// Get Menu Placement\n// ------------------------------\n\nfunction getMenuPlacement(_ref) {\n var maxHeight = _ref.maxHeight,\n menuEl = _ref.menuEl,\n minHeight = _ref.minHeight,\n placement = _ref.placement,\n shouldScroll = _ref.shouldScroll,\n isFixedPosition = _ref.isFixedPosition,\n theme = _ref.theme;\n var spacing = theme.spacing;\n\n var scrollParent = (0, _utils.getScrollParent)(menuEl);\n var defaultState = { placement: 'bottom', maxHeight: maxHeight };\n\n // something went wrong, return default state\n if (!menuEl || !menuEl.offsetParent) return defaultState;\n\n // we can't trust `scrollParent.scrollHeight` --> it may increase when\n // the menu is rendered\n\n var _scrollParent$getBoun = scrollParent.getBoundingClientRect(),\n scrollHeight = _scrollParent$getBoun.height;\n\n var _menuEl$getBoundingCl = menuEl.getBoundingClientRect(),\n menuBottom = _menuEl$getBoundingCl.bottom,\n menuHeight = _menuEl$getBoundingCl.height,\n menuTop = _menuEl$getBoundingCl.top;\n\n // $FlowFixMe function returns above if there's no offsetParent\n\n\n var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = (0, _utils.getScrollTop)(scrollParent);\n\n var marginBottom = parseInt(getComputedStyle(menuEl).marginBottom, 10);\n var marginTop = parseInt(getComputedStyle(menuEl).marginTop, 10);\n var viewSpaceAbove = containerTop - marginTop;\n var viewSpaceBelow = viewHeight - menuTop;\n var scrollSpaceAbove = viewSpaceAbove + scrollTop;\n var scrollSpaceBelow = scrollHeight - scrollTop - menuTop;\n\n var scrollDown = menuBottom - viewHeight + scrollTop + marginBottom;\n var scrollUp = scrollTop + menuTop - marginTop;\n var scrollDuration = 160;\n\n switch (placement) {\n case 'auto':\n case 'bottom':\n // 1: the menu will fit, do nothing\n if (viewSpaceBelow >= menuHeight) {\n return { placement: 'bottom', maxHeight: maxHeight };\n }\n\n // 2: the menu will fit, if scrolled\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n (0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);\n }\n\n return { placement: 'bottom', maxHeight: maxHeight };\n }\n\n // 3: the menu will fit, if constrained\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n (0, _utils.animatedScrollTo)(scrollParent, scrollDown, scrollDuration);\n }\n\n // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n }\n\n // 4. Forked beviour when there isn't enough space below\n\n // AUTO: flip the menu, render above\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight = isFixedPosition ? viewSpaceAbove - marginBottom - spacing.controlHeight : scrollSpaceAbove - marginBottom - spacing.controlHeight;\n }\n\n return { placement: 'top', maxHeight: _constrainedHeight };\n }\n\n // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n if (placement === 'bottom') {\n (0, _utils.scrollTo)(scrollParent, scrollDown);\n return { placement: 'bottom', maxHeight: maxHeight };\n }\n break;\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return { placement: 'top', maxHeight: maxHeight };\n }\n\n // 2: the menu will fit, if scrolled\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n (0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);\n }\n\n return { placement: 'top', maxHeight: maxHeight };\n }\n\n // 3: the menu will fit, if constrained\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight;\n\n // we want to provide as much of the menu as possible to the user,\n // so give them whatever is available below rather than the minHeight.\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n (0, _utils.animatedScrollTo)(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\n };\n }\n\n // 4. not enough space, the browser WILL NOT increase scrollable area when\n // absolutely positioned element rendered above the viewport (only below).\n // Flip the menu, render below\n return { placement: 'bottom', maxHeight: maxHeight };\n default:\n throw new Error('Invalid placement provided \"' + placement + '\".');\n }\n\n // fulfil contract with flow: implicit return value of undefined\n return defaultState;\n}\n\n// Menu Component\n// ------------------------------\n\nfunction alignToControl(placement) {\n var placementToCSSProp = { bottom: 'top', top: 'bottom' };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar menuCSS = exports.menuCSS = function menuCSS(_ref2) {\n var _ref3;\n\n var placement = _ref2.placement,\n _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n spacing = _ref2$theme.spacing,\n colors = _ref2$theme.colors;\n return _ref3 = {}, _defineProperty(_ref3, alignToControl(placement), '100%'), _defineProperty(_ref3, 'backgroundColor', colors.neutral0), _defineProperty(_ref3, 'borderRadius', borderRadius), _defineProperty(_ref3, 'boxShadow', '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)'), _defineProperty(_ref3, 'marginBottom', spacing.menuGutter), _defineProperty(_ref3, 'marginTop', spacing.menuGutter), _defineProperty(_ref3, 'position', 'absolute'), _defineProperty(_ref3, 'width', '100%'), _defineProperty(_ref3, 'zIndex', 1), _ref3;\n};\n\n// NOTE: internal only\n\nvar MenuPlacer = exports.MenuPlacer = function (_Component) {\n _inherits(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _ref4;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, MenuPlacer);\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 = _possibleConstructorReturn(this, (_ref4 = MenuPlacer.__proto__ || Object.getPrototypeOf(MenuPlacer)).call.apply(_ref4, [this].concat(args))), _this), _this.state = {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n }, _this.getPlacement = function (ref) {\n var _this$props = _this.props,\n minMenuHeight = _this$props.minMenuHeight,\n maxMenuHeight = _this$props.maxMenuHeight,\n menuPlacement = _this$props.menuPlacement,\n menuPosition = _this$props.menuPosition,\n menuShouldScrollIntoView = _this$props.menuShouldScrollIntoView,\n theme = _this$props.theme;\n var getPortalPlacement = _this.context.getPortalPlacement;\n\n\n if (!ref) return;\n\n // DO NOT scroll if position is fixed\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\n\n var state = getMenuPlacement({\n maxHeight: maxMenuHeight,\n menuEl: ref,\n minHeight: minMenuHeight,\n placement: menuPlacement,\n shouldScroll: shouldScroll,\n isFixedPosition: isFixedPosition,\n theme: theme\n });\n\n if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n }, _this.getUpdatedProps = function () {\n var menuPlacement = _this.props.menuPlacement;\n\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n\n return _extends({}, _this.props, { placement: placement, maxHeight: _this.state.maxHeight });\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(MenuPlacer, [{\n key: 'render',\n value: function render() {\n var children = this.props.children;\n\n\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n }\n }]);\n\n return MenuPlacer;\n}(_react.Component);\n\nMenuPlacer.contextTypes = {\n getPortalPlacement: _propTypes2.default.func\n};\n\n\nvar Menu = function Menu(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n var cn = cx(emotion.css(getStyles('menu', props)), { menu: true }, className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: cn }, innerProps, { ref: innerRef }),\n children\n );\n};\n\nexports.default = Menu;\n\n// ==============================\n// Menu List\n// ==============================\n\nvar menuListCSS = exports.menuListCSS = function menuListCSS(_ref5) {\n var maxHeight = _ref5.maxHeight,\n baseUnit = _ref5.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative', // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\nvar MenuList = exports.MenuList = function MenuList(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isMulti = props.isMulti,\n innerRef = props.innerRef,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n {\n className: cx(emotion.css(getStyles('menuList', props)), {\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n },\n children\n );\n};\n\n// ==============================\n// Menu Notices\n// ==============================\n\nvar noticeCSS = function noticeCSS(_ref6) {\n var _ref6$theme = _ref6.theme,\n baseUnit = _ref6$theme.spacing.baseUnit,\n colors = _ref6$theme.colors;\n return {\n color: colors.neutral40,\n padding: baseUnit * 2 + 'px ' + baseUnit * 3 + 'px',\n textAlign: 'center'\n };\n};\nvar noOptionsMessageCSS = exports.noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = exports.loadingMessageCSS = noticeCSS;\n\nvar NoOptionsMessage = exports.NoOptionsMessage = function NoOptionsMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: cx(emotion.css(getStyles('noOptionsMessage', props)), {\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps),\n children\n );\n};\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\n\nvar LoadingMessage = exports.LoadingMessage = function LoadingMessage(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: cx(emotion.css(getStyles('loadingMessage', props)), {\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps),\n children\n );\n};\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n};\n\n// ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = exports.menuPortalCSS = function menuPortalCSS(_ref7) {\n var rect = _ref7.rect,\n offset = _ref7.offset,\n position = _ref7.position;\n return {\n left: rect.left,\n position: position,\n top: offset,\n width: rect.width,\n zIndex: 1\n };\n};\n\nvar MenuPortal = exports.MenuPortal = function (_Component2) {\n _inherits(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _ref8;\n\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, MenuPortal);\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 = _possibleConstructorReturn(this, (_ref8 = MenuPortal.__proto__ || Object.getPrototypeOf(MenuPortal)).call.apply(_ref8, [this].concat(args))), _this2), _this2.state = { placement: null }, _this2.getPortalPlacement = function (_ref9) {\n var placement = _ref9.placement;\n\n var initialPlacement = coercePlacement(_this2.props.menuPlacement);\n\n // avoid re-renders if the placement has not changed\n if (placement !== initialPlacement) {\n _this2.setState({ placement: placement });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n _createClass(MenuPortal, [{\n key: 'getChildContext',\n value: function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n }\n\n // callback for occassions where the menu must \"flip\"\n\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n appendTo = _props.appendTo,\n children = _props.children,\n controlElement = _props.controlElement,\n menuPlacement = _props.menuPlacement,\n position = _props.menuPosition,\n getStyles = _props.getStyles,\n emotion = _props.emotion;\n\n var isFixed = position === 'fixed';\n\n // bail early if required elements aren't present\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = (0, _utils.getBoundingClientObj)(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = { offset: offset, position: position, rect: rect };\n\n // same wrapper element whether fixed or portalled\n var menuWrapper = _react2.default.createElement(\n 'div',\n { className: emotion.css(getStyles('menuPortal', state)) },\n children\n );\n\n return appendTo ? (0, _reactDom.createPortal)(menuWrapper, appendTo) : menuWrapper;\n }\n }]);\n\n return MenuPortal;\n}(_react.Component);\n\nMenuPortal.childContextTypes = {\n getPortalPlacement: _propTypes2.default.func\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.cleanValue = exports.emptyString = exports.noop = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.classNames = classNames;\nexports.handleInputChange = handleInputChange;\nexports.isDocumentElement = isDocumentElement;\nexports.normalizedHeight = normalizedHeight;\nexports.getScrollTop = getScrollTop;\nexports.scrollTo = scrollTo;\nexports.getScrollParent = getScrollParent;\nexports.animatedScrollTo = animatedScrollTo;\nexports.scrollIntoView = scrollIntoView;\nexports.getBoundingClientObj = getBoundingClientObj;\nexports.toKey = toKey;\nexports.isTouchCapable = isTouchCapable;\nexports.isMobileDevice = isMobileDevice;\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nrequire('react');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// ==============================\n// NO OP\n// ==============================\n\nvar noop = exports.noop = function noop() {};\nvar emptyString = exports.emptyString = function emptyString() {\n return '';\n};\n\n// ==============================\n// Class Name Prefixer\n// ==============================\n\n/**\n String representation of component state for styling with class names.\n\n Expects an array of strings OR a string/object pair:\n - className(['comp', 'comp-arg', 'comp-arg-2'])\n @returns 'react-select__comp react-select__comp-arg react-select__comp-arg-2'\n - className('comp', { some: true, state: false })\n @returns 'react-select__comp react-select__comp--some'\n*/\nfunction applyPrefixToName(prefix, name) {\n if (!name) {\n return prefix;\n } else if (name[0] === '-') {\n return prefix + name;\n } else {\n return prefix + '__' + name;\n }\n}\n\nfunction classNames(prefix, cssKey, state, className) {\n var arr = [cssKey, className];\n if (state && prefix) {\n for (var key in state) {\n if (state.hasOwnProperty(key) && state[key]) {\n arr.push('' + applyPrefixToName(prefix, key));\n }\n }\n }\n\n return arr.filter(function (i) {\n return i;\n }).map(function (i) {\n return String(i).trim();\n }).join(' ');\n}\n// ==============================\n// Clean Value\n// ==============================\n\nvar cleanValue = exports.cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value !== null) return [value];\n return [];\n};\n\n// ==============================\n// Handle Input Change\n// ==============================\n\nfunction handleInputChange(inputValue, actionMeta, onInputChange) {\n if (onInputChange) {\n var newValue = onInputChange(inputValue, actionMeta);\n if (typeof newValue === 'string') return newValue;\n }\n return inputValue;\n}\n\n// ==============================\n// Scroll Helpers\n// ==============================\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n}\n\n// Normalized Scroll Top\n// ------------------------------\n\nfunction normalizedHeight(el) {\n if (isDocumentElement(el)) {\n return window.innerHeight;\n }\n\n return el.clientHeight;\n}\n\n// Normalized scrollTo & scrollTop\n// ------------------------------\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\n return el.scrollTop;\n}\n\nfunction scrollTo(el, top) {\n // with a scroll distance, we perform scroll on the element\n if (isDocumentElement(el)) {\n window.scrollTo(0, top);\n return;\n }\n\n el.scrollTop = top;\n}\n\n// Get Scroll Parent\n// ------------------------------\n\nfunction getScrollParent(element) {\n var style = getComputedStyle(element);\n var excludeStaticParent = style.position === 'absolute';\n var overflowRx = /(auto|scroll)/;\n var docEl = document.documentElement; // suck it, flow...\n\n if (style.position === 'fixed') return docEl;\n\n for (var parent = element; parent = parent.parentElement;) {\n style = getComputedStyle(parent);\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\n}\n\n// Animated Scroll To\n// ------------------------------\n\n/**\n @param t: time (elapsed)\n @param b: initial value\n @param c: amount of change\n @param d: duration\n*/\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to) {\n var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 200;\n var callback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;\n\n var start = getScrollTop(element);\n var change = to - start;\n var increment = 10;\n var currentTime = 0;\n\n function animateScroll() {\n currentTime += increment;\n var val = easeOutCubic(currentTime, start, change, duration);\n scrollTo(element, val);\n if (currentTime < duration) {\n (0, _raf2.default)(animateScroll);\n } else {\n callback(element);\n }\n }\n animateScroll();\n}\n\n// Scroll Into View\n// ------------------------------\n\nfunction scrollIntoView(menuEl, focusedEl) {\n var menuRect = menuEl.getBoundingClientRect();\n var focusedRect = focusedEl.getBoundingClientRect();\n var overScroll = focusedEl.offsetHeight / 3;\n\n if (focusedRect.bottom + overScroll > menuRect.bottom) {\n scrollTo(menuEl, Math.min(focusedEl.offsetTop + focusedEl.clientHeight - menuEl.offsetHeight + overScroll, menuEl.scrollHeight));\n } else if (focusedRect.top - overScroll < menuRect.top) {\n scrollTo(menuEl, Math.max(focusedEl.offsetTop - overScroll, 0));\n }\n}\n\n// ==============================\n// Get bounding client object\n// ==============================\n\n// cannot get keys using array notation with DOMRect\nfunction getBoundingClientObj(element) {\n var rect = element.getBoundingClientRect();\n return {\n bottom: rect.bottom,\n height: rect.height,\n left: rect.left,\n right: rect.right,\n top: rect.top,\n width: rect.width\n };\n}\n\n\n// ==============================\n// String to Key (kebabify)\n// ==============================\n\nfunction toKey(str) {\n return str.replace(/\\W/g, '-');\n}\n\n// ==============================\n// Touch Capability Detector\n// ==============================\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// ==============================\n// Mobile Device Detector\n// ==============================\n\nfunction isMobileDevice() {\n try {\n return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)\n );\n } catch (e) {\n return false;\n }\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _reactDom = require('react-dom');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NodeResolver = function (_Component) {\n _inherits(NodeResolver, _Component);\n\n function NodeResolver() {\n _classCallCheck(this, NodeResolver);\n\n return _possibleConstructorReturn(this, (NodeResolver.__proto__ || Object.getPrototypeOf(NodeResolver)).apply(this, arguments));\n }\n\n _createClass(NodeResolver, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.props.innerRef((0, _reactDom.findDOMNode)(this));\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.props.innerRef(null);\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return NodeResolver;\n}(_react.Component);\n\nexports.default = NodeResolver;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LoadingIndicator = exports.loadingIndicatorCSS = exports.IndicatorSeparator = exports.indicatorSeparatorCSS = exports.ClearIndicator = exports.clearIndicatorCSS = exports.DropdownIndicator = exports.dropdownIndicatorCSS = exports.DownChevron = exports.CrossIcon = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _templateObject = _taggedTemplateLiteral(['@keyframes ', ' {\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n };'], ['@keyframes ', ' {\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n };']);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nrequire('create-emotion');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n// ==============================\n// Dropdown & Clear Icons\n// ==============================\n\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n emotion = _ref.emotion,\n props = _objectWithoutProperties(_ref, ['size', 'emotion']);\n\n return _react2.default.createElement('svg', _extends({\n height: size,\n width: size,\n viewBox: '0 0 20 20',\n 'aria-hidden': 'true',\n focusable: 'false',\n className: emotion.css({\n display: 'inline-block',\n fill: 'currentColor',\n lineHeight: 1,\n stroke: 'currentColor',\n strokeWidth: 0\n })\n }, props));\n};\n\nvar CrossIcon = exports.CrossIcon = function CrossIcon(props) {\n return _react2.default.createElement(\n Svg,\n _extends({ size: 20 }, props),\n _react2.default.createElement('path', { d: 'M14.348 14.849c-0.469 0.469-1.229 0.469-1.697 0l-2.651-3.030-2.651 3.029c-0.469 0.469-1.229 0.469-1.697 0-0.469-0.469-0.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-0.469-0.469-0.469-1.228 0-1.697s1.228-0.469 1.697 0l2.652 3.031 2.651-3.031c0.469-0.469 1.228-0.469 1.697 0s0.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c0.469 0.469 0.469 1.229 0 1.698z' })\n );\n};\nvar DownChevron = exports.DownChevron = function DownChevron(props) {\n return _react2.default.createElement(\n Svg,\n _extends({ size: 20 }, props),\n _react2.default.createElement('path', { d: 'M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z' })\n );\n};\n\n// ==============================\n// Dropdown & Clear Buttons\n// ==============================\n\nvar baseCSS = function baseCSS(_ref2) {\n var isFocused = _ref2.isFocused,\n _ref2$theme = _ref2.theme,\n baseUnit = _ref2$theme.spacing.baseUnit,\n colors = _ref2$theme.colors;\n return {\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = exports.dropdownIndicatorCSS = baseCSS;\nvar DropdownIndicator = exports.DropdownIndicator = function DropdownIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({}, innerProps, {\n className: cx(emotion.css(getStyles('dropdownIndicator', props)), {\n 'indicator': true,\n 'dropdown-indicator': true\n }, className)\n }),\n children || _react2.default.createElement(DownChevron, { emotion: emotion })\n );\n};\n\nvar clearIndicatorCSS = exports.clearIndicatorCSS = baseCSS;\nvar ClearIndicator = exports.ClearIndicator = function ClearIndicator(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({}, innerProps, {\n className: cx(emotion.css(getStyles('clearIndicator', props)), {\n 'indicator': true,\n 'clear-indicator': true\n }, className)\n }),\n children || _react2.default.createElement(CrossIcon, { emotion: emotion })\n );\n};\n\n// ==============================\n// Separator\n// ==============================\n\nvar indicatorSeparatorCSS = exports.indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref3) {\n var isDisabled = _ref3.isDisabled,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n alignSelf: 'stretch',\n backgroundColor: isDisabled ? colors.neutral10 : colors.neutral20,\n marginBottom: baseUnit * 2,\n marginTop: baseUnit * 2,\n width: 1\n };\n};\n\nvar IndicatorSeparator = exports.IndicatorSeparator = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement('span', _extends({}, innerProps, {\n className: cx(emotion.css(getStyles('indicatorSeparator', props)), { 'indicator-separator': true }, className)\n }));\n};\n\n// ==============================\n// Loading\n// ==============================\n\nvar keyframesName = 'react-select-loading-indicator';\nvar keyframesInjected = false;\n\nvar loadingIndicatorCSS = exports.loadingIndicatorCSS = function loadingIndicatorCSS(_ref4) {\n var isFocused = _ref4.isFocused,\n size = _ref4.size,\n _ref4$theme = _ref4.theme,\n colors = _ref4$theme.colors,\n baseUnit = _ref4$theme.spacing.baseUnit;\n return {\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n alignSelf: 'center',\n fontSize: size,\n lineHeight: 1,\n marginRight: size,\n textAlign: 'center',\n verticalAlign: 'middle'\n };\n};\n\nvar LoadingDot = function LoadingDot(_ref5) {\n var color = _ref5.color,\n delay = _ref5.delay,\n offset = _ref5.offset,\n emotion = _ref5.emotion;\n return _react2.default.createElement('span', {\n className: emotion.css({\n animationDuration: '1s',\n animationDelay: delay + 'ms',\n animationIterationCount: 'infinite',\n animationName: keyframesName,\n animationTimingFunction: 'ease-in-out',\n backgroundColor: color,\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n })\n });\n};\n\nvar LoadingIndicator = exports.LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isFocused = props.isFocused,\n isRtl = props.isRtl,\n emotion = props.emotion,\n colors = props.theme.colors;\n\n var color = isFocused ? colors.neutral80 : colors.neutral20;\n\n if (!keyframesInjected) {\n // eslint-disable-next-line no-unused-expressions\n emotion.injectGlobal(_templateObject, keyframesName);\n keyframesInjected = true;\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({}, innerProps, {\n className: cx(emotion.css(getStyles('loadingIndicator', props)), {\n 'indicator': true,\n 'loading-indicator': true\n }, className)\n }),\n _react2.default.createElement(LoadingDot, { emotion: emotion, color: color, delay: 0, offset: isRtl }),\n _react2.default.createElement(LoadingDot, { emotion: emotion, color: color, delay: 160, offset: true }),\n _react2.default.createElement(LoadingDot, { emotion: emotion, color: color, delay: 320, offset: !isRtl })\n );\n};\nLoadingIndicator.defaultProps = { size: 4 };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\n\nconst ColumnLink = ({ icon, text, to, onClick, href, method, badge }) => {\n const badgeElement = typeof badge !== 'undefined' ? <span className='column-link__badge'>{badge}</span> : null;\n\n if (href) {\n return (\n <a href={href} className='column-link' data-method={method}>\n <i className={`fa fa-fw fa-${icon} column-link__icon`} />\n {text}\n {badgeElement}\n </a>\n );\n } else if (to) {\n return (\n <Link to={to} className='column-link'>\n <i className={`fa fa-fw fa-${icon} column-link__icon`} />\n {text}\n {badgeElement}\n </Link>\n );\n } else {\n const handleOnClick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n return onClick(e);\n }\n return (\n <a href='#' onClick={onClick && handleOnClick} className='column-link' tabIndex='0'>\n <i className={`fa fa-fw fa-${icon} column-link__icon`} />\n {text}\n {badgeElement}\n </a>\n );\n }\n};\n\nColumnLink.propTypes = {\n icon: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n to: PropTypes.string,\n onClick: PropTypes.func,\n href: PropTypes.string,\n method: PropTypes.string,\n badge: PropTypes.node,\n};\n\nexport default ColumnLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ColumnSubheading = ({ text }) => {\n return (\n <div className='column-subheading'>\n {text}\n </div>\n );\n};\n\nColumnSubheading.propTypes = {\n text: PropTypes.string.isRequired,\n};\n\nexport default ColumnSubheading;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Toggle from 'react-toggle';\n\nexport default class SettingToggle extends React.PureComponent {\n\n static propTypes = {\n prefix: PropTypes.string,\n settings: ImmutablePropTypes.map.isRequired,\n settingPath: PropTypes.array.isRequired,\n label: PropTypes.node.isRequired,\n onChange: PropTypes.func.isRequired,\n }\n\n onChange = ({ target }) => {\n this.props.onChange(this.props.settingPath, target.checked);\n }\n\n render () {\n const { prefix, settings, settingPath, label } = this.props;\n const id = ['setting-toggle', prefix, ...settingPath].filter(Boolean).join('-');\n\n return (\n <div className='setting-toggle'>\n <Toggle id={id} checked={settings.getIn(settingPath)} onChange={this.onChange} onKeyDown={this.onKeyDown} />\n <label htmlFor={id} className='setting-toggle__label'>{label}</label>\n </div>\n );\n }\n\n}\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// Package imports.\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport {\n FormattedMessage,\n defineMessages,\n} from 'react-intl';\n\n// Components.\nimport Avatar from 'flavours/glitch/components/avatar';\nimport Permalink from 'flavours/glitch/components/permalink';\n\n// Utils.\nimport { hiddenComponent } from 'flavours/glitch/util/react_helpers';\nimport { profileLink } from 'flavours/glitch/util/backend_links';\n\n// Messages.\nconst messages = defineMessages({\n edit: {\n defaultMessage: 'Edit profile',\n id: 'navigation_bar.edit_profile',\n },\n});\n\n// The component.\nexport default function DrawerAccount ({ account }) {\n\n // We need an account to render.\n if (!account) {\n return (\n <div className='drawer--account'>\n { profileLink !== undefined && (\n <a\n className='edit'\n href={ profileLink }\n >\n <FormattedMessage {...messages.edit} />\n </a>\n )}\n </div>\n );\n }\n\n // The result.\n return (\n <div className='drawer--account'>\n <Permalink\n className='avatar'\n href={account.get('url')}\n to={`/accounts/${account.get('id')}`}\n >\n <span {...hiddenComponent}>{account.get('acct')}</span>\n <Avatar\n account={account}\n size={40}\n />\n </Permalink>\n <Permalink\n className='acct'\n href={account.get('url')}\n to={`/accounts/${account.get('id')}`}\n >\n <strong>@{account.get('acct')}</strong>\n </Permalink>\n { profileLink !== undefined && (\n <a\n className='edit'\n href={ profileLink }\n ><FormattedMessage {...messages.edit} /></a>\n )}\n </div>\n );\n}\n\n// Props.\nDrawerAccount.propTypes = { account: ImmutablePropTypes.map };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactSparklines\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReactSparklines\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 11);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(14)(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(16)();\n}\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (data) {\n return data.reduce(function (a, b) {\n return a + b;\n }) / data.length;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (data) {\n return Math.min.apply(Math, data);\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n\n\nvar emptyFunction = __webpack_require__(4);\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (data) {\n return Math.max.apply(Math, data);\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mean = __webpack_require__(3);\n\nvar _mean2 = _interopRequireDefault(_mean);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (data) {\n var dataMean = (0, _mean2.default)(data);\n var sqDiff = data.map(function (n) {\n return Math.pow(n - dataMean, 2);\n });\n var avgSqDiff = (0, _mean2.default)(sqDiff);\n return Math.sqrt(avgSqDiff);\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(12);\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(13);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SparklinesText = exports.SparklinesNormalBand = exports.SparklinesReferenceLine = exports.SparklinesSpots = exports.SparklinesBars = exports.SparklinesCurve = exports.SparklinesLine = exports.Sparklines = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _SparklinesText = __webpack_require__(17);\n\nvar _SparklinesText2 = _interopRequireDefault(_SparklinesText);\n\nvar _SparklinesLine = __webpack_require__(18);\n\nvar _SparklinesLine2 = _interopRequireDefault(_SparklinesLine);\n\nvar _SparklinesCurve = __webpack_require__(19);\n\nvar _SparklinesCurve2 = _interopRequireDefault(_SparklinesCurve);\n\nvar _SparklinesBars = __webpack_require__(20);\n\nvar _SparklinesBars2 = _interopRequireDefault(_SparklinesBars);\n\nvar _SparklinesSpots = __webpack_require__(21);\n\nvar _SparklinesSpots2 = _interopRequireDefault(_SparklinesSpots);\n\nvar _SparklinesReferenceLine = __webpack_require__(22);\n\nvar _SparklinesReferenceLine2 = _interopRequireDefault(_SparklinesReferenceLine);\n\nvar _SparklinesNormalBand = __webpack_require__(27);\n\nvar _SparklinesNormalBand2 = _interopRequireDefault(_SparklinesNormalBand);\n\nvar _dataToPoints = __webpack_require__(28);\n\nvar _dataToPoints2 = _interopRequireDefault(_dataToPoints);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Sparklines = function (_PureComponent) {\n _inherits(Sparklines, _PureComponent);\n\n function Sparklines(props) {\n _classCallCheck(this, Sparklines);\n\n return _possibleConstructorReturn(this, (Sparklines.__proto__ || Object.getPrototypeOf(Sparklines)).call(this, props));\n }\n\n _createClass(Sparklines, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n data = _props.data,\n limit = _props.limit,\n width = _props.width,\n height = _props.height,\n svgWidth = _props.svgWidth,\n svgHeight = _props.svgHeight,\n preserveAspectRatio = _props.preserveAspectRatio,\n margin = _props.margin,\n style = _props.style,\n max = _props.max,\n min = _props.min;\n\n\n if (data.length === 0) return null;\n\n var points = (0, _dataToPoints2.default)({ data: data, limit: limit, width: width, height: height, margin: margin, max: max, min: min });\n\n var svgOpts = { style: style, viewBox: '0 0 ' + width + ' ' + height, preserveAspectRatio: preserveAspectRatio };\n if (svgWidth > 0) svgOpts.width = svgWidth;\n if (svgHeight > 0) svgOpts.height = svgHeight;\n\n return _react2.default.createElement(\n 'svg',\n svgOpts,\n _react2.default.Children.map(this.props.children, function (child) {\n return _react2.default.cloneElement(child, { data: data, points: points, width: width, height: height, margin: margin });\n })\n );\n }\n }]);\n\n return Sparklines;\n}(_react.PureComponent);\n\nSparklines.propTypes = {\n data: _propTypes2.default.array,\n limit: _propTypes2.default.number,\n width: _propTypes2.default.number,\n height: _propTypes2.default.number,\n svgWidth: _propTypes2.default.number,\n svgHeight: _propTypes2.default.number,\n preserveAspectRatio: _propTypes2.default.string,\n margin: _propTypes2.default.number,\n style: _propTypes2.default.object,\n min: _propTypes2.default.number,\n max: _propTypes2.default.number,\n onMouseMove: _propTypes2.default.func\n};\nSparklines.defaultProps = {\n data: [],\n width: 240,\n height: 60,\n //Scale the graphic content of the given element non-uniformly if necessary such that the element's bounding box exactly matches the viewport rectangle.\n preserveAspectRatio: 'none', //https://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n margin: 2\n};\nexports.Sparklines = Sparklines;\nexports.SparklinesLine = _SparklinesLine2.default;\nexports.SparklinesCurve = _SparklinesCurve2.default;\nexports.SparklinesBars = _SparklinesBars2.default;\nexports.SparklinesSpots = _SparklinesSpots2.default;\nexports.SparklinesReferenceLine = _SparklinesReferenceLine2.default;\nexports.SparklinesNormalBand = _SparklinesNormalBand2.default;\nexports.SparklinesText = _SparklinesText2.default;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar emptyFunction = __webpack_require__(4);\nvar invariant = __webpack_require__(5);\nvar warning = __webpack_require__(8);\n\nvar ReactPropTypesSecret = __webpack_require__(6);\nvar checkPropTypes = __webpack_require__(15);\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = __webpack_require__(5);\n var warning = __webpack_require__(8);\n var ReactPropTypesSecret = __webpack_require__(6);\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n\n\nvar emptyFunction = __webpack_require__(4);\nvar invariant = __webpack_require__(5);\nvar ReactPropTypesSecret = __webpack_require__(6);\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesText = function (_React$Component) {\n _inherits(SparklinesText, _React$Component);\n\n function SparklinesText() {\n _classCallCheck(this, SparklinesText);\n\n return _possibleConstructorReturn(this, (SparklinesText.__proto__ || Object.getPrototypeOf(SparklinesText)).apply(this, arguments));\n }\n\n _createClass(SparklinesText, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n point = _props.point,\n text = _props.text,\n fontSize = _props.fontSize,\n fontFamily = _props.fontFamily;\n var x = point.x,\n y = point.y;\n\n return _react2.default.createElement(\n 'g',\n null,\n _react2.default.createElement(\n 'text',\n { x: x, y: y, fontFamily: fontFamily || \"Verdana\", fontSize: fontSize || 10 },\n text\n )\n );\n }\n }]);\n\n return SparklinesText;\n}(_react2.default.Component);\n\nSparklinesText.propTypes = {\n text: _propTypes2.default.string,\n point: _propTypes2.default.object,\n fontSize: _propTypes2.default.number,\n fontFamily: _propTypes2.default.string\n};\nSparklinesText.defaultProps = {\n text: '',\n point: { x: 0, y: 0 }\n};\nexports.default = SparklinesText;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesLine = function (_React$Component) {\n _inherits(SparklinesLine, _React$Component);\n\n function SparklinesLine() {\n _classCallCheck(this, SparklinesLine);\n\n return _possibleConstructorReturn(this, (SparklinesLine.__proto__ || Object.getPrototypeOf(SparklinesLine)).apply(this, arguments));\n }\n\n _createClass(SparklinesLine, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n data = _props.data,\n points = _props.points,\n width = _props.width,\n height = _props.height,\n margin = _props.margin,\n color = _props.color,\n style = _props.style,\n onMouseMove = _props.onMouseMove;\n\n\n var linePoints = points.map(function (p) {\n return [p.x, p.y];\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n\n var closePolyPoints = [points[points.length - 1].x, height - margin, margin, height - margin, margin, points[0].y];\n\n var fillPoints = linePoints.concat(closePolyPoints);\n\n var lineStyle = {\n stroke: color || style.stroke || 'slategray',\n strokeWidth: style.strokeWidth || '1',\n strokeLinejoin: style.strokeLinejoin || 'round',\n strokeLinecap: style.strokeLinecap || 'round',\n fill: 'none'\n };\n var fillStyle = {\n stroke: style.stroke || 'none',\n strokeWidth: '0',\n fillOpacity: style.fillOpacity || '.1',\n fill: style.fill || color || 'slategray',\n pointerEvents: 'auto'\n };\n\n var tooltips = points.map(function (p, i) {\n return _react2.default.createElement('circle', {\n key: i,\n cx: p.x,\n cy: p.y,\n r: 2,\n style: fillStyle,\n onMouseEnter: function onMouseEnter(e) {\n return onMouseMove('enter', data[i], p);\n },\n onClick: function onClick(e) {\n return onMouseMove('click', data[i], p);\n }\n });\n });\n\n return _react2.default.createElement(\n 'g',\n null,\n tooltips,\n _react2.default.createElement('polyline', { points: fillPoints.join(' '), style: fillStyle }),\n _react2.default.createElement('polyline', { points: linePoints.join(' '), style: lineStyle })\n );\n }\n }]);\n\n return SparklinesLine;\n}(_react2.default.Component);\n\nSparklinesLine.propTypes = {\n color: _propTypes2.default.string,\n style: _propTypes2.default.object\n};\nSparklinesLine.defaultProps = {\n style: {},\n onMouseMove: function onMouseMove() {}\n};\nexports.default = SparklinesLine;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesCurve = function (_React$Component) {\n _inherits(SparklinesCurve, _React$Component);\n\n function SparklinesCurve() {\n _classCallCheck(this, SparklinesCurve);\n\n return _possibleConstructorReturn(this, (SparklinesCurve.__proto__ || Object.getPrototypeOf(SparklinesCurve)).apply(this, arguments));\n }\n\n _createClass(SparklinesCurve, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n points = _props.points,\n width = _props.width,\n height = _props.height,\n margin = _props.margin,\n color = _props.color,\n style = _props.style,\n _props$divisor = _props.divisor,\n divisor = _props$divisor === undefined ? 0.25 : _props$divisor;\n\n var prev = void 0;\n var curve = function curve(p) {\n var res = void 0;\n if (!prev) {\n res = [p.x, p.y];\n } else {\n var len = (p.x - prev.x) * divisor;\n res = [\"C\",\n //x1\n prev.x + len,\n //y1\n prev.y,\n //x2,\n p.x - len,\n //y2,\n p.y,\n //x,\n p.x,\n //y\n p.y];\n }\n prev = p;\n return res;\n };\n var linePoints = points.map(function (p) {\n return curve(p);\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n var closePolyPoints = [\"L\" + points[points.length - 1].x, height - margin, margin, height - margin, margin, points[0].y];\n var fillPoints = linePoints.concat(closePolyPoints);\n\n var lineStyle = {\n stroke: color || style.stroke || 'slategray',\n strokeWidth: style.strokeWidth || '1',\n strokeLinejoin: style.strokeLinejoin || 'round',\n strokeLinecap: style.strokeLinecap || 'round',\n fill: 'none'\n };\n var fillStyle = {\n stroke: style.stroke || 'none',\n strokeWidth: '0',\n fillOpacity: style.fillOpacity || '.1',\n fill: style.fill || color || 'slategray'\n };\n\n return _react2.default.createElement(\n 'g',\n null,\n _react2.default.createElement('path', { d: \"M\" + fillPoints.join(' '), style: fillStyle }),\n _react2.default.createElement('path', { d: \"M\" + linePoints.join(' '), style: lineStyle })\n );\n }\n }]);\n\n return SparklinesCurve;\n}(_react2.default.Component);\n\nSparklinesCurve.propTypes = {\n color: _propTypes2.default.string,\n style: _propTypes2.default.object\n};\nSparklinesCurve.defaultProps = {\n style: {}\n};\nexports.default = SparklinesCurve;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesBars = function (_React$Component) {\n _inherits(SparklinesBars, _React$Component);\n\n function SparklinesBars() {\n _classCallCheck(this, SparklinesBars);\n\n return _possibleConstructorReturn(this, (SparklinesBars.__proto__ || Object.getPrototypeOf(SparklinesBars)).apply(this, arguments));\n }\n\n _createClass(SparklinesBars, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n points = _props.points,\n height = _props.height,\n style = _props.style,\n barWidth = _props.barWidth,\n margin = _props.margin,\n onMouseMove = _props.onMouseMove;\n\n var strokeWidth = 1 * (style && style.strokeWidth || 0);\n var marginWidth = margin ? 2 * margin : 0;\n var width = barWidth || (points && points.length >= 2 ? Math.max(0, points[1].x - points[0].x - strokeWidth - marginWidth) : 0);\n\n return _react2.default.createElement(\n 'g',\n { transform: 'scale(1,-1)' },\n points.map(function (p, i) {\n return _react2.default.createElement('rect', {\n key: i,\n x: p.x - (width + strokeWidth) / 2,\n y: -height,\n width: width,\n height: Math.max(0, height - p.y),\n style: style,\n onMouseMove: onMouseMove && onMouseMove.bind(_this2, p)\n });\n })\n );\n }\n }]);\n\n return SparklinesBars;\n}(_react2.default.Component);\n\nSparklinesBars.propTypes = {\n points: _propTypes2.default.arrayOf(_propTypes2.default.object),\n height: _propTypes2.default.number,\n style: _propTypes2.default.object,\n barWidth: _propTypes2.default.number,\n margin: _propTypes2.default.number,\n onMouseMove: _propTypes2.default.func\n};\nSparklinesBars.defaultProps = {\n style: { fill: 'slategray' }\n};\nexports.default = SparklinesBars;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesSpots = function (_React$Component) {\n _inherits(SparklinesSpots, _React$Component);\n\n function SparklinesSpots() {\n _classCallCheck(this, SparklinesSpots);\n\n return _possibleConstructorReturn(this, (SparklinesSpots.__proto__ || Object.getPrototypeOf(SparklinesSpots)).apply(this, arguments));\n }\n\n _createClass(SparklinesSpots, [{\n key: 'lastDirection',\n value: function lastDirection(points) {\n\n Math.sign = Math.sign || function (x) {\n return x > 0 ? 1 : -1;\n };\n\n return points.length < 2 ? 0 : Math.sign(points[points.length - 2].y - points[points.length - 1].y);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n points = _props.points,\n width = _props.width,\n height = _props.height,\n size = _props.size,\n style = _props.style,\n spotColors = _props.spotColors;\n\n\n var startSpot = _react2.default.createElement('circle', {\n cx: points[0].x,\n cy: points[0].y,\n r: size,\n style: style });\n\n var endSpot = _react2.default.createElement('circle', {\n cx: points[points.length - 1].x,\n cy: points[points.length - 1].y,\n r: size,\n style: style || { fill: spotColors[this.lastDirection(points)] } });\n\n return _react2.default.createElement(\n 'g',\n null,\n style && startSpot,\n endSpot\n );\n }\n }]);\n\n return SparklinesSpots;\n}(_react2.default.Component);\n\nSparklinesSpots.propTypes = {\n size: _propTypes2.default.number,\n style: _propTypes2.default.object,\n spotColors: _propTypes2.default.object\n};\nSparklinesSpots.defaultProps = {\n size: 2,\n spotColors: {\n '-1': 'red',\n '0': 'black',\n '1': 'green'\n }\n};\nexports.default = SparklinesSpots;\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _dataProcessing = __webpack_require__(23);\n\nvar dataProcessing = _interopRequireWildcard(_dataProcessing);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesReferenceLine = function (_React$Component) {\n _inherits(SparklinesReferenceLine, _React$Component);\n\n function SparklinesReferenceLine() {\n _classCallCheck(this, SparklinesReferenceLine);\n\n return _possibleConstructorReturn(this, (SparklinesReferenceLine.__proto__ || Object.getPrototypeOf(SparklinesReferenceLine)).apply(this, arguments));\n }\n\n _createClass(SparklinesReferenceLine, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n points = _props.points,\n margin = _props.margin,\n type = _props.type,\n style = _props.style,\n value = _props.value;\n\n\n var ypoints = points.map(function (p) {\n return p.y;\n });\n var y = type == 'custom' ? value : dataProcessing[type](ypoints);\n\n return _react2.default.createElement('line', {\n x1: points[0].x, y1: y + margin,\n x2: points[points.length - 1].x, y2: y + margin,\n style: style });\n }\n }]);\n\n return SparklinesReferenceLine;\n}(_react2.default.Component);\n\nSparklinesReferenceLine.propTypes = {\n type: _propTypes2.default.oneOf(['max', 'min', 'mean', 'avg', 'median', 'custom']),\n value: _propTypes2.default.number,\n style: _propTypes2.default.object\n};\nSparklinesReferenceLine.defaultProps = {\n type: 'mean',\n style: { stroke: 'red', strokeOpacity: .75, strokeDasharray: '2, 2' }\n};\nexports.default = SparklinesReferenceLine;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.variance = exports.stdev = exports.median = exports.midRange = exports.avg = exports.mean = exports.max = exports.min = undefined;\n\nvar _min2 = __webpack_require__(7);\n\nvar _min3 = _interopRequireDefault(_min2);\n\nvar _mean2 = __webpack_require__(3);\n\nvar _mean3 = _interopRequireDefault(_mean2);\n\nvar _midRange2 = __webpack_require__(24);\n\nvar _midRange3 = _interopRequireDefault(_midRange2);\n\nvar _median2 = __webpack_require__(25);\n\nvar _median3 = _interopRequireDefault(_median2);\n\nvar _stdev2 = __webpack_require__(10);\n\nvar _stdev3 = _interopRequireDefault(_stdev2);\n\nvar _variance2 = __webpack_require__(26);\n\nvar _variance3 = _interopRequireDefault(_variance2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.min = _min3.default;\nexports.max = _min3.default;\nexports.mean = _mean3.default;\nexports.avg = _mean3.default;\nexports.midRange = _midRange3.default;\nexports.median = _median3.default;\nexports.stdev = _stdev3.default;\nexports.variance = _variance3.default;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _min = __webpack_require__(7);\n\nvar _min2 = _interopRequireDefault(_min);\n\nvar _max = __webpack_require__(9);\n\nvar _max2 = _interopRequireDefault(_max);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (data) {\n return (0, _max2.default)(data) - (0, _min2.default)(data) / 2;\n};\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (data) {\n return data.sort(function (a, b) {\n return a - b;\n })[Math.floor(data.length / 2)];\n};\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mean = __webpack_require__(3);\n\nvar _mean2 = _interopRequireDefault(_mean);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (data) {\n var dataMean = (0, _mean2.default)(data);\n var sq = data.map(function (n) {\n return Math.pow(n - dataMean, 2);\n });\n return (0, _mean2.default)(sq);\n};\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _propTypes = __webpack_require__(0);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = __webpack_require__(1);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _mean = __webpack_require__(3);\n\nvar _mean2 = _interopRequireDefault(_mean);\n\nvar _stdev = __webpack_require__(10);\n\nvar _stdev2 = _interopRequireDefault(_stdev);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SparklinesNormalBand = function (_React$Component) {\n _inherits(SparklinesNormalBand, _React$Component);\n\n function SparklinesNormalBand() {\n _classCallCheck(this, SparklinesNormalBand);\n\n return _possibleConstructorReturn(this, (SparklinesNormalBand.__proto__ || Object.getPrototypeOf(SparklinesNormalBand)).apply(this, arguments));\n }\n\n _createClass(SparklinesNormalBand, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n points = _props.points,\n margin = _props.margin,\n style = _props.style;\n\n\n var ypoints = points.map(function (p) {\n return p.y;\n });\n var dataMean = (0, _mean2.default)(ypoints);\n var dataStdev = (0, _stdev2.default)(ypoints);\n\n return _react2.default.createElement('rect', { x: points[0].x, y: dataMean - dataStdev + margin,\n width: points[points.length - 1].x - points[0].x, height: _stdev2.default * 2,\n style: style });\n }\n }]);\n\n return SparklinesNormalBand;\n}(_react2.default.Component);\n\nSparklinesNormalBand.propTypes = {\n style: _propTypes2.default.object\n};\nSparklinesNormalBand.defaultProps = {\n style: { fill: 'red', fillOpacity: .1 }\n};\nexports.default = SparklinesNormalBand;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _min = __webpack_require__(7);\n\nvar _min2 = _interopRequireDefault(_min);\n\nvar _max = __webpack_require__(9);\n\nvar _max2 = _interopRequireDefault(_max);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (_ref) {\n var data = _ref.data,\n limit = _ref.limit,\n _ref$width = _ref.width,\n width = _ref$width === undefined ? 1 : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === undefined ? 1 : _ref$height,\n _ref$margin = _ref.margin,\n margin = _ref$margin === undefined ? 0 : _ref$margin,\n _ref$max = _ref.max,\n max = _ref$max === undefined ? (0, _max2.default)(data) : _ref$max,\n _ref$min = _ref.min,\n min = _ref$min === undefined ? (0, _min2.default)(data) : _ref$min;\n\n\n var len = data.length;\n\n if (limit && limit < len) {\n data = data.slice(len - limit);\n }\n\n var vfactor = (height - margin * 2) / (max - min || 2);\n var hfactor = (width - margin * 2) / ((limit || len) - (len > 1 ? 1 : 0));\n\n return data.map(function (d, i) {\n return {\n x: i * hfactor + margin,\n y: (max === min ? 1 : max - d) * vfactor + margin\n };\n });\n};\n\n/***/ })\n/******/ ]);\n});","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport SettingText from 'flavours/glitch/components/setting_text';\nimport SettingToggle from 'flavours/glitch/features/notifications/components/setting_toggle';\n\nconst messages = defineMessages({\n filter_regex: { id: 'home.column_settings.filter_regex', defaultMessage: 'Filter out by regular expressions' },\n settings: { id: 'home.settings', defaultMessage: 'Column settings' },\n});\n\n@injectIntl\nexport default class ColumnSettings extends React.PureComponent {\n\n static propTypes = {\n settings: ImmutablePropTypes.map.isRequired,\n onChange: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n columnId: PropTypes.string,\n };\n\n render () {\n const { settings, onChange, intl } = this.props;\n\n return (\n <div>\n <div className='column-settings__row'>\n <SettingToggle settings={settings} settingPath={['other', 'onlyMedia']} onChange={onChange} label={<FormattedMessage id='community.column_settings.media_only' defaultMessage='Media Only' />} />\n </div>\n\n <span className='column-settings__section'><FormattedMessage id='home.column_settings.advanced' defaultMessage='Advanced' /></span>\n\n <div className='column-settings__row'>\n <SettingText settings={settings} settingPath={['regex', 'body']} onChange={onChange} label={intl.formatMessage(messages.filter_regex)} />\n </div>\n </div>\n );\n }\n\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.makeAsyncSelect = exports.defaultProps = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Select = require('./Select');\n\nvar _Select2 = _interopRequireDefault(_Select);\n\nvar _utils = require('./utils');\n\nvar _stateManager = require('./stateManager');\n\nvar _stateManager2 = _interopRequireDefault(_stateManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultProps = exports.defaultProps = {\n cacheOptions: false,\n defaultOptions: false\n};\n\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = function (_Component) {\n _inherits(Async, _Component);\n\n function Async(props) {\n _classCallCheck(this, Async);\n\n var _this = _possibleConstructorReturn(this, (Async.__proto__ || Object.getPrototypeOf(Async)).call(this));\n\n _this.mounted = false;\n _this.optionsCache = {};\n\n _this.handleInputChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n cacheOptions = _this$props.cacheOptions,\n onInputChange = _this$props.onInputChange;\n // TODO\n\n var inputValue = (0, _utils.handleInputChange)(newValue, actionMeta, onInputChange);\n if (!inputValue) {\n delete _this.lastRequest;\n _this.setState({\n inputValue: '',\n loadedInputValue: '',\n loadedOptions: [],\n isLoading: false,\n passEmptyOptions: false\n });\n return;\n }\n if (cacheOptions && _this.optionsCache[inputValue]) {\n _this.setState({\n inputValue: inputValue,\n loadedInputValue: inputValue,\n loadedOptions: _this.optionsCache[inputValue],\n isLoading: false,\n passEmptyOptions: false\n });\n } else {\n var request = _this.lastRequest = {};\n _this.setState({\n inputValue: inputValue,\n isLoading: true,\n passEmptyOptions: !_this.state.loadedInputValue\n }, function () {\n _this.loadOptions(inputValue, function (options) {\n if (!_this.mounted) return;\n if (options) {\n _this.optionsCache[inputValue] = options;\n }\n if (request !== _this.lastRequest) return;\n delete _this.lastRequest;\n _this.setState({\n isLoading: false,\n loadedInputValue: inputValue,\n loadedOptions: options || [],\n passEmptyOptions: false\n });\n });\n });\n }\n return inputValue;\n };\n\n _this.state = {\n defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n inputValue: props.inputValue,\n isLoading: props.defaultOptions === true ? true : false,\n loadedOptions: [],\n passEmptyOptions: false\n };\n return _this;\n }\n\n _createClass(Async, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n this.mounted = true;\n var defaultOptions = this.props.defaultOptions;\n var inputValue = this.state.inputValue;\n\n if (defaultOptions === true) {\n this.loadOptions(inputValue, function (options) {\n if (!_this2.mounted) return;\n var isLoading = !!_this2.lastRequest;\n _this2.setState({ defaultOptions: options || [], isLoading: isLoading });\n });\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n // if the cacheOptions prop changes, clear the cache\n if (nextProps.cacheOptions !== this.props.cacheOptions) {\n this.optionsCache = {};\n }\n if (nextProps.defaultOptions !== this.props.defaultOptions) {\n this.setState({\n defaultOptions: Array.isArray(nextProps.defaultOptions) ? nextProps.defaultOptions : undefined\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.select.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.select.blur();\n }\n }, {\n key: 'loadOptions',\n value: function loadOptions(inputValue, callback) {\n var loadOptions = this.props.loadOptions;\n\n if (!loadOptions) return callback();\n var loader = loadOptions(inputValue, callback);\n if (loader && typeof loader.then === 'function') {\n loader.then(callback, function () {\n return callback();\n });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props = this.props,\n loadOptions = _props.loadOptions,\n props = _objectWithoutProperties(_props, ['loadOptions']);\n\n var _state = this.state,\n defaultOptions = _state.defaultOptions,\n inputValue = _state.inputValue,\n isLoading = _state.isLoading,\n loadedInputValue = _state.loadedInputValue,\n loadedOptions = _state.loadedOptions,\n passEmptyOptions = _state.passEmptyOptions;\n\n var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n return (\n // $FlowFixMe\n _react2.default.createElement(SelectComponent, _extends({}, props, {\n filterOption: this.props.filterOption || null,\n ref: function ref(_ref) {\n _this3.select = _ref;\n },\n options: options,\n isLoading: isLoading,\n onInputChange: this.handleInputChange\n }))\n );\n }\n }]);\n\n return Async;\n }(_react.Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexports.makeAsyncSelect = makeAsyncSelect;\nexports.default = makeAsyncSelect((0, _stateManager2.default)(_Select2.default));","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndicatorsContainer = exports.indicatorsContainerCSS = exports.ValueContainer = exports.valueContainerCSS = exports.SelectContainer = exports.containerCSS = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// ==============================\n// Root Container\n// ==============================\n\nvar containerCSS = exports.containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null, // cancel mouse events when disabled\n position: 'relative'\n };\n};\nvar SelectContainer = exports.SelectContainer = function SelectContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n isRtl = props.isRtl,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: cx(emotion.css(getStyles('container', props)), {\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps),\n children\n );\n};\n\n// ==============================\n// Value Container\n// ==============================\n\nvar valueContainerCSS = exports.valueContainerCSS = function valueContainerCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n alignItems: 'center',\n display: 'flex',\n flex: 1,\n flexWrap: 'wrap',\n padding: spacing.baseUnit / 2 + 'px ' + spacing.baseUnit * 2 + 'px',\n WebkitOverflowScrolling: 'touch',\n position: 'relative',\n overflow: 'hidden'\n };\n};\n\nvar ValueContainer = exports.ValueContainer = function (_Component) {\n _inherits(ValueContainer, _Component);\n\n function ValueContainer() {\n _classCallCheck(this, ValueContainer);\n\n return _possibleConstructorReturn(this, (ValueContainer.__proto__ || Object.getPrototypeOf(ValueContainer)).apply(this, arguments));\n }\n\n _createClass(ValueContainer, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n cx = _props.cx,\n isMulti = _props.isMulti,\n getStyles = _props.getStyles,\n hasValue = _props.hasValue,\n emotion = _props.emotion;\n\n\n return _react2.default.createElement(\n 'div',\n {\n className: cx(emotion.css(getStyles('valueContainer', this.props)), {\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n },\n children\n );\n }\n }]);\n\n return ValueContainer;\n}(_react.Component);\n\n// ==============================\n// Indicator Container\n// ==============================\n\nvar indicatorsContainerCSS = exports.indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\nvar IndicatorsContainer = exports.IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n emotion = props.emotion;\n\n\n return _react2.default.createElement(\n 'div',\n {\n className: cx(emotion.css(getStyles('indicatorsContainer', props)), {\n 'indicators': true\n }, className)\n },\n children\n );\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar css = exports.css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n _ref$theme = _ref.theme,\n colors = _ref$theme.colors,\n borderRadius = _ref$theme.borderRadius,\n spacing = _ref$theme.spacing;\n return {\n alignItems: 'center',\n backgroundColor: isDisabled ? colors.neutral5 : colors.neutral0,\n borderColor: isDisabled ? colors.neutral10 : isFocused ? colors.primary : colors.neutral20,\n borderRadius: borderRadius,\n borderStyle: 'solid',\n borderWidth: 1,\n boxShadow: isFocused ? '0 0 0 1px ' + colors.primary : null,\n cursor: 'default',\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'space-between',\n minHeight: spacing.controlHeight,\n outline: '0 !important',\n position: 'relative',\n transition: 'all 100ms',\n\n '&:hover': {\n borderColor: isFocused ? colors.primary : colors.neutral30\n }\n };\n};\n\nvar Control = function Control(props) {\n var children = props.children,\n cx = props.cx,\n getStyles = props.getStyles,\n className = props.className,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n ref: innerRef,\n className: cx(emotion.css(getStyles('control', props)), {\n 'control': true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused\n }, className)\n }, innerProps),\n children\n );\n};\n\nexports.default = Control;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GroupHeading = exports.groupHeadingCSS = exports.groupCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar groupCSS = exports.groupCSS = function groupCSS(_ref) {\n var spacing = _ref.theme.spacing;\n return {\n paddingBottom: spacing.baseUnit * 2,\n paddingTop: spacing.baseUnit * 2\n };\n};\n\nvar Group = function Group(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n Heading = props.Heading,\n headingProps = props.headingProps,\n label = props.label,\n theme = props.theme,\n emotion = props.emotion,\n selectProps = props.selectProps;\n\n return _react2.default.createElement(\n 'div',\n {\n className: cx(emotion.css(getStyles('group', props)), { 'group': true }, className)\n },\n _react2.default.createElement(\n Heading,\n _extends({}, headingProps, {\n selectProps: selectProps,\n emotion: emotion,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }),\n label\n ),\n _react2.default.createElement(\n 'div',\n null,\n children\n )\n );\n};\n\nvar groupHeadingCSS = exports.groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n color: '#999',\n cursor: 'default',\n display: 'block',\n fontSize: '75%',\n fontWeight: '500',\n marginBottom: '0.25em',\n paddingLeft: spacing.baseUnit * 3,\n paddingRight: spacing.baseUnit * 3,\n textTransform: 'uppercase'\n };\n};\n\nvar GroupHeading = function GroupHeading(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n theme = props.theme,\n emotion = props.emotion,\n selectProps = props.selectProps,\n cleanProps = _objectWithoutProperties(props, ['className', 'cx', 'getStyles', 'theme', 'emotion', 'selectProps']);\n\n return _react2.default.createElement('div', _extends({\n className: cx(emotion.css(getStyles('groupHeading', _extends({ theme: theme }, cleanProps))), { 'group-heading': true }, className)\n }, cleanProps));\n};\n\nexports.GroupHeading = GroupHeading;\nexports.default = Group;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.inputCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactInputAutosize = require('react-input-autosize');\n\nvar _reactInputAutosize2 = _interopRequireDefault(_reactInputAutosize);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar inputCSS = exports.inputCSS = function inputCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n margin: spacing.baseUnit / 2,\n paddingBottom: spacing.baseUnit / 2,\n paddingTop: spacing.baseUnit / 2,\n visibility: isDisabled ? 'hidden' : 'visible',\n color: colors.neutral80\n };\n};\nvar inputStyle = function inputStyle(isHidden) {\n return {\n background: 0,\n border: 0,\n fontSize: 'inherit',\n opacity: isHidden ? 0 : 1,\n outline: 0,\n padding: 0,\n color: 'inherit'\n };\n};\n\nvar Input = function Input(_ref2) {\n var className = _ref2.className,\n cx = _ref2.cx,\n getStyles = _ref2.getStyles,\n innerRef = _ref2.innerRef,\n isHidden = _ref2.isHidden,\n isDisabled = _ref2.isDisabled,\n theme = _ref2.theme,\n emotion = _ref2.emotion,\n selectProps = _ref2.selectProps,\n props = _objectWithoutProperties(_ref2, ['className', 'cx', 'getStyles', 'innerRef', 'isHidden', 'isDisabled', 'theme', 'emotion', 'selectProps']);\n\n return _react2.default.createElement(\n 'div',\n { className: emotion.css(getStyles('input', _extends({ theme: theme }, props))) },\n _react2.default.createElement(_reactInputAutosize2.default, _extends({\n className: cx(null, { 'input': true }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props))\n );\n};\n\nexports.default = Input;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MultiValueRemove = exports.MultiValueLabel = exports.MultiValueContainer = exports.MultiValueGeneric = exports.multiValueRemoveCSS = exports.multiValueLabelCSS = exports.multiValueCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _indicators = require('./indicators');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar multiValueCSS = exports.multiValueCSS = function multiValueCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n borderRadius = _ref$theme.borderRadius,\n colors = _ref$theme.colors;\n return {\n backgroundColor: colors.neutral10,\n borderRadius: borderRadius / 2,\n display: 'flex',\n margin: spacing.baseUnit / 2,\n minWidth: 0 // resolves flex/text-overflow bug\n };\n};\n\nvar multiValueLabelCSS = exports.multiValueLabelCSS = function multiValueLabelCSS(_ref2) {\n var _ref2$theme = _ref2.theme,\n borderRadius = _ref2$theme.borderRadius,\n colors = _ref2$theme.colors,\n cropWithEllipsis = _ref2.cropWithEllipsis;\n return {\n borderRadius: borderRadius / 2,\n color: colors.neutral80,\n fontSize: '85%',\n overflow: 'hidden',\n padding: 3,\n paddingLeft: 6,\n textOverflow: cropWithEllipsis ? 'ellipsis' : null,\n whiteSpace: 'nowrap'\n };\n};\n\nvar multiValueRemoveCSS = exports.multiValueRemoveCSS = function multiValueRemoveCSS(_ref3) {\n var _ref3$theme = _ref3.theme,\n spacing = _ref3$theme.spacing,\n borderRadius = _ref3$theme.borderRadius,\n colors = _ref3$theme.colors,\n isFocused = _ref3.isFocused;\n return {\n alignItems: 'center',\n borderRadius: borderRadius / 2,\n backgroundColor: isFocused && colors.dangerLight,\n display: 'flex',\n paddingLeft: spacing.baseUnit,\n paddingRight: spacing.baseUnit,\n ':hover': {\n backgroundColor: colors.dangerLight,\n color: colors.danger\n }\n };\n};\n\nvar MultiValueGeneric = exports.MultiValueGeneric = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return _react2.default.createElement(\n 'div',\n innerProps,\n children\n );\n};\n\nvar MultiValueContainer = exports.MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = exports.MultiValueLabel = MultiValueGeneric;\n\nvar MultiValueRemove = exports.MultiValueRemove = function (_Component) {\n _inherits(MultiValueRemove, _Component);\n\n function MultiValueRemove() {\n _classCallCheck(this, MultiValueRemove);\n\n return _possibleConstructorReturn(this, (MultiValueRemove.__proto__ || Object.getPrototypeOf(MultiValueRemove)).apply(this, arguments));\n }\n\n _createClass(MultiValueRemove, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n innerProps = _props.innerProps,\n emotion = _props.emotion;\n\n return _react2.default.createElement(\n 'div',\n innerProps,\n children || _react2.default.createElement(_indicators.CrossIcon, { size: 14, emotion: emotion })\n );\n }\n }]);\n\n return MultiValueRemove;\n}(_react.Component);\n\nvar MultiValue = function (_Component2) {\n _inherits(MultiValue, _Component2);\n\n function MultiValue() {\n _classCallCheck(this, MultiValue);\n\n return _possibleConstructorReturn(this, (MultiValue.__proto__ || Object.getPrototypeOf(MultiValue)).apply(this, arguments));\n }\n\n _createClass(MultiValue, [{\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n children = _props2.children,\n className = _props2.className,\n components = _props2.components,\n cx = _props2.cx,\n data = _props2.data,\n getStyles = _props2.getStyles,\n innerProps = _props2.innerProps,\n isDisabled = _props2.isDisabled,\n removeProps = _props2.removeProps,\n selectProps = _props2.selectProps,\n emotion = _props2.emotion;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n\n\n var containerInnerProps = _extends({\n className: cx(emotion.css(getStyles('multiValue', this.props)), {\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className)\n }, innerProps);\n\n var labelInnerProps = {\n className: cx(emotion.css(getStyles('multiValueLabel', this.props)), {\n 'multi-value__label': true\n }, className)\n };\n\n var removeInnerProps = _extends({\n className: cx(emotion.css(getStyles('multiValueRemove', this.props)), {\n 'multi-value__remove': true\n }, className)\n }, removeProps);\n\n return _react2.default.createElement(\n Container,\n {\n data: data,\n innerProps: containerInnerProps,\n selectProps: selectProps\n },\n _react2.default.createElement(\n Label,\n {\n data: data,\n innerProps: labelInnerProps,\n selectProps: selectProps\n },\n children\n ),\n _react2.default.createElement(Remove, {\n data: data,\n innerProps: removeInnerProps,\n selectProps: selectProps,\n emotion: emotion\n })\n );\n }\n }]);\n\n return MultiValue;\n}(_react.Component);\n\nMultiValue.defaultProps = {\n cropWithEllipsis: true\n};\nexports.default = MultiValue;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.optionCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar optionCSS = exports.optionCSS = function optionCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isFocused = _ref.isFocused,\n isSelected = _ref.isSelected,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n backgroundColor: isSelected ? colors.primary : isFocused ? colors.primary25 : 'transparent',\n color: isDisabled ? colors.neutral20 : isSelected ? colors.neutral0 : 'inherit',\n cursor: 'default',\n display: 'block',\n fontSize: 'inherit',\n padding: spacing.baseUnit * 2 + 'px ' + spacing.baseUnit * 3 + 'px',\n width: '100%',\n userSelect: 'none',\n WebkitTapHighlightColor: 'rgba(0, 0, 0, 0)',\n\n // provide some affordance on touch devices\n ':active': {\n backgroundColor: isSelected ? colors.primary : colors.primary50\n }\n };\n};\n\nvar Option = function Option(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n isFocused = props.isFocused,\n isSelected = props.isSelected,\n innerRef = props.innerRef,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n ref: innerRef,\n className: cx(emotion.css(getStyles('option', props)), {\n 'option': true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className)\n }, innerProps),\n children\n );\n};\n\nexports.default = Option;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.placeholderCSS = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar placeholderCSS = exports.placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n color: colors.neutral50,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar Placeholder = function Placeholder(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: cx(emotion.css(getStyles('placeholder', props)), {\n 'placeholder': true\n }, className)\n }, innerProps),\n children\n );\n};\n\nexports.default = Placeholder;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar css = exports.css = function css(_ref) {\n var isDisabled = _ref.isDisabled,\n _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n color: isDisabled ? colors.neutral40 : colors.neutral80,\n marginLeft: spacing.baseUnit / 2,\n marginRight: spacing.baseUnit / 2,\n maxWidth: 'calc(100% - ' + spacing.baseUnit * 2 + 'px)',\n overflow: 'hidden',\n position: 'absolute',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n top: '50%',\n transform: 'translateY(-50%)'\n };\n};\n\nvar SingleValue = function SingleValue(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n isDisabled = props.isDisabled,\n innerProps = props.innerProps,\n emotion = props.emotion;\n\n return _react2.default.createElement(\n 'div',\n _extends({\n className: cx(emotion.css(getStyles('singleValue', props)), {\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps),\n children\n );\n};\n\nexports.default = SingleValue;","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { changeListEditorTitle, submitListEditor } from 'flavours/glitch/actions/lists';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n label: { id: 'lists.new.title_placeholder', defaultMessage: 'New list title' },\n title: { id: 'lists.new.create', defaultMessage: 'Add list' },\n});\n\nconst mapStateToProps = state => ({\n value: state.getIn(['listEditor', 'title']),\n disabled: state.getIn(['listEditor', 'isSubmitting']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onChange: value => dispatch(changeListEditorTitle(value)),\n onSubmit: () => dispatch(submitListEditor(true)),\n});\n\n@connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nexport default class NewListForm extends React.PureComponent {\n\n static propTypes = {\n value: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n };\n\n handleChange = e => {\n this.props.onChange(e.target.value);\n }\n\n handleSubmit = e => {\n e.preventDefault();\n this.props.onSubmit();\n }\n\n handleClick = () => {\n this.props.onSubmit();\n }\n\n render () {\n const { value, disabled, intl } = this.props;\n\n const label = intl.formatMessage(messages.label);\n const title = intl.formatMessage(messages.title);\n\n return (\n <form className='column-inline-form' onSubmit={this.handleSubmit}>\n <label>\n <span style={{ display: 'none' }}>{label}</span>\n\n <input\n className='setting-text'\n value={value}\n disabled={disabled}\n onChange={this.handleChange}\n placeholder={label}\n />\n </label>\n\n <IconButton\n disabled={disabled}\n icon='plus'\n title={title}\n onClick={this.handleClick}\n />\n </form>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport DisplayName from 'flavours/glitch/components/display_name';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport { defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n remove: { id: 'lists.account.remove', defaultMessage: 'Remove from list' },\n add: { id: 'lists.account.add', defaultMessage: 'Add to list' },\n});\n\nexport default class Account extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n intl: PropTypes.object.isRequired,\n onRemove: PropTypes.func.isRequired,\n onAdd: PropTypes.func.isRequired,\n added: PropTypes.bool,\n };\n\n static defaultProps = {\n added: false,\n };\n\n render () {\n const { account, intl, onRemove, onAdd, added } = this.props;\n\n let button;\n\n if (added) {\n button = <IconButton icon='times' title={intl.formatMessage(messages.remove)} onClick={onRemove} />;\n } else {\n button = <IconButton icon='plus' title={intl.formatMessage(messages.add)} onClick={onAdd} />;\n }\n\n return (\n <div className='account'>\n <div className='account__wrapper'>\n <div className='account__display-name'>\n <div className='account__avatar-wrapper'><Avatar account={account} size={36} /></div>\n <DisplayName account={account} />\n </div>\n\n <div className='account__relationship'>\n {button}\n </div>\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages } from 'react-intl';\nimport classNames from 'classnames';\n\nconst messages = defineMessages({\n search: { id: 'lists.search', defaultMessage: 'Search among people you follow' },\n});\n\nexport default class Search extends React.PureComponent {\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n value: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n };\n\n handleChange = e => {\n this.props.onChange(e.target.value);\n }\n\n handleKeyUp = e => {\n if (e.keyCode === 13) {\n this.props.onSubmit(this.props.value);\n }\n }\n\n handleClear = () => {\n this.props.onClear();\n }\n\n render () {\n const { value, intl } = this.props;\n const hasValue = value.length > 0;\n\n return (\n <div className='list-editor__search search'>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.search)}</span>\n\n <input\n className='search__input'\n type='text'\n value={value}\n onChange={this.handleChange}\n onKeyUp={this.handleKeyUp}\n placeholder={intl.formatMessage(messages.search)}\n />\n </label>\n\n <div role='button' tabIndex='0' className='search__icon' onClick={this.handleClear}>\n <i className={classNames('fa fa-search', { active: !hasValue })} />\n <i aria-label={intl.formatMessage(messages.search)} className={classNames('fa fa-times-circle', { active: hasValue })} />\n </div>\n </div>\n );\n }\n\n}\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","import React, { Fragment } from 'react';\nimport { FormattedNumber } from 'react-intl';\n\nexport const shortNumberFormat = number => {\n if (number < 1000) {\n return <FormattedNumber value={number} />;\n } else {\n return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</Fragment>;\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { injectIntl, FormattedMessage } from 'react-intl';\nimport SettingToggle from '../../notifications/components/setting_toggle';\n\nexport default @injectIntl\nclass ColumnSettings extends React.PureComponent {\n\n static propTypes = {\n settings: ImmutablePropTypes.map.isRequired,\n onChange: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n columnId: PropTypes.string,\n };\n\n render () {\n const { settings, onChange } = this.props;\n\n return (\n <div>\n <div className='column-settings__row'>\n <SettingToggle settings={settings} settingPath={['other', 'onlyMedia']} onChange={onChange} label={<FormattedMessage id='community.column_settings.media_only' defaultMessage='Media Only' />} />\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport Icon from 'mastodon/components/icon';\n\nconst ColumnLink = ({ icon, text, to, href, method, badge }) => {\n const badgeElement = typeof badge !== 'undefined' ? <span className='column-link__badge'>{badge}</span> : null;\n\n if (href) {\n return (\n <a href={href} className='column-link' data-method={method}>\n <Icon id={icon} fixedWidth className='column-link__icon' />\n {text}\n {badgeElement}\n </a>\n );\n } else {\n return (\n <Link to={to} className='column-link'>\n <Icon id={icon} fixedWidth className='column-link__icon' />\n {text}\n {badgeElement}\n </Link>\n );\n }\n};\n\nColumnLink.propTypes = {\n icon: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n to: PropTypes.string,\n href: PropTypes.string,\n method: PropTypes.string,\n badge: PropTypes.node,\n};\n\nexport default ColumnLink;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ColumnSubheading = ({ text }) => {\n return (\n <div className='column-subheading'>\n {text}\n </div>\n );\n};\n\nColumnSubheading.propTypes = {\n text: PropTypes.string.isRequired,\n};\n\nexport default ColumnSubheading;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport { changeListEditorTitle, submitListEditor } from '../../../actions/lists';\nimport IconButton from '../../../components/icon_button';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n label: { id: 'lists.new.title_placeholder', defaultMessage: 'New list title' },\n title: { id: 'lists.new.create', defaultMessage: 'Add list' },\n});\n\nconst mapStateToProps = state => ({\n value: state.getIn(['listEditor', 'title']),\n disabled: state.getIn(['listEditor', 'isSubmitting']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onChange: value => dispatch(changeListEditorTitle(value)),\n onSubmit: () => dispatch(submitListEditor(true)),\n});\n\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass NewListForm extends React.PureComponent {\n\n static propTypes = {\n value: PropTypes.string.isRequired,\n disabled: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n };\n\n handleChange = e => {\n this.props.onChange(e.target.value);\n }\n\n handleSubmit = e => {\n e.preventDefault();\n this.props.onSubmit();\n }\n\n handleClick = () => {\n this.props.onSubmit();\n }\n\n render () {\n const { value, disabled, intl } = this.props;\n\n const label = intl.formatMessage(messages.label);\n const title = intl.formatMessage(messages.title);\n\n return (\n <form className='column-inline-form' onSubmit={this.handleSubmit}>\n <label>\n <span style={{ display: 'none' }}>{label}</span>\n\n <input\n className='setting-text'\n value={value}\n disabled={disabled}\n onChange={this.handleChange}\n placeholder={label}\n />\n </label>\n\n <IconButton\n disabled={disabled}\n icon='plus'\n title={title}\n onClick={this.handleClick}\n />\n </form>\n );\n }\n\n}\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n return tag;\n}\n\nvar StyleSheet =\n/*#__PURE__*/\nfunction () {\n function StyleSheet(options) {\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n var _tag = createStyleElement(this);\n\n var before;\n\n if (this.tags.length === 0) {\n before = this.before;\n } else {\n before = this.tags[this.tags.length - 1].nextSibling;\n }\n\n this.container.insertBefore(_tag, before);\n this.tags.push(_tag);\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is a really hot path\n // we check the second character first because having \"i\"\n // as the second character will happen less often than\n // having \"@\" as the first character\n var isImportRule = rule.charCodeAt(1) === 105 && rule.charCodeAt(0) === 64; // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n\n sheet.insertRule(rule, // we need to insert @import rules before anything else\n // otherwise there will be an error\n // technically this means that the @import rules will\n // _usually_(not always since there could be multiple style tags)\n // be the first ones in prod and generally later in dev\n // this shouldn't really matter in the real world though\n // @import is generally only used for font faces from google fonts and etc.\n // so while this could be technically correct then it would be slower and larger\n // for a tiny bit of correctness that won't matter in the real world\n isImportRule ? 0 : sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e, m).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e, m).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize';\n\n// https://github.com/thysultan/stylis.js/tree/master/plugins/rule-sheet\n// inlined to avoid umd wrapper and peerDep warnings/installing stylis\n// since we use stylis after closure compiler\nvar delimiter = '/*|*/';\nvar needle = delimiter + '}';\n\nfunction toSheet(block) {\n if (block) {\n Sheet.current.insert(block + '}');\n }\n}\n\nvar Sheet = {\n current: null\n};\nvar ruleSheet = function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) {\n switch (context) {\n // property\n case 1:\n {\n switch (content.charCodeAt(0)) {\n case 64:\n {\n // @import\n Sheet.current.insert(content + ';');\n return '';\n }\n // charcode for l\n\n case 108:\n {\n // charcode for b\n // this ignores label\n if (content.charCodeAt(2) === 98) {\n return '';\n }\n }\n }\n\n break;\n }\n // selector\n\n case 2:\n {\n if (ns === 0) return content + delimiter;\n break;\n }\n // at-rule\n\n case 3:\n {\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n {\n Sheet.current.insert(selectors[0] + content);\n return '';\n }\n\n default:\n {\n return content + (at === 0 ? delimiter : '');\n }\n }\n }\n\n case -2:\n {\n content.split(needle).forEach(toSheet);\n }\n }\n};\n\nvar createCache = function createCache(options) {\n if (options === undefined) options = {};\n var key = options.key || 'css';\n var stylisOptions;\n\n if (options.prefix !== undefined) {\n stylisOptions = {\n prefix: options.prefix\n };\n }\n\n var stylis = new Stylis(stylisOptions);\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {}; // $FlowFixMe\n\n var container;\n\n {\n container = options.container || document.head;\n var nodes = document.querySelectorAll(\"style[data-emotion-\" + key + \"]\");\n Array.prototype.forEach.call(nodes, function (node) {\n var attrib = node.getAttribute(\"data-emotion-\" + key); // $FlowFixMe\n\n attrib.split(' ').forEach(function (id) {\n inserted[id] = true;\n });\n\n if (node.parentNode !== container) {\n container.appendChild(node);\n }\n });\n }\n\n var _insert;\n\n {\n stylis.use(options.stylisPlugins)(ruleSheet);\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n var name = serialized.name;\n Sheet.current = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n var map = serialized.map;\n Sheet.current = {\n insert: function insert(rule) {\n sheet.insert(rule + map);\n }\n };\n }\n\n stylis(selector, serialized.styles);\n\n if (shouldCache) {\n cache.inserted[name] = true;\n }\n };\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // https://esbench.com/bench/5bf7371a4cd7e6009ef61d0a\n var commentStart = /\\/\\*/g;\n var commentEnd = /\\*\\//g;\n stylis.use(function (context, content) {\n switch (context) {\n case -1:\n {\n while (commentStart.test(content)) {\n commentEnd.lastIndex = commentStart.lastIndex;\n\n if (commentEnd.test(content)) {\n commentStart.lastIndex = commentEnd.lastIndex;\n continue;\n }\n\n throw new Error('Your styles have an unterminated comment (\"/*\" without corresponding \"*/\").');\n }\n\n commentStart.lastIndex = 0;\n break;\n }\n }\n });\n stylis.use(function (context, content, selectors) {\n switch (context) {\n case 2:\n {\n for (var i = 0, len = selectors.length; len > i; i++) {\n // :last-child isn't included here since it's safe\n // because a style element will never be the last element\n var match = selectors[i].match(/:(first|nth|nth-last)-child/);\n\n if (match !== null) {\n console.error(\"The pseudo class \\\"\" + match[0] + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + match[1] + \"-of-type\\\"\");\n }\n }\n\n break;\n }\n }\n });\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n return cache;\n};\n\nexport default createCache;\n","/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n var l = str.length,\n h = l ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\nvar processStyleName = memoize(function (styleName) {\n return styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n if (value == null || typeof value === 'boolean') {\n return '';\n }\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n value = value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && key.charCodeAt(1) !== 45 && // custom properties\n typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(attr|calc|counters?|url)\\(/;\n var contentValues = ['normal', 'none', 'counter', 'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n console.error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n if (key.charCodeAt(1) !== 45 && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, char) {\n return char.toUpperCase();\n }) + \"?\");\n }\n\n return oldProcessStyleValue(key, value);\n };\n}\n\nvar shouldWarnAboutInterpolatingClassNameFromCss = true;\n\nfunction handleInterpolation(mergedProps, registered, interpolation, couldBeSelectorInterpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles;\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result, couldBeSelectorInterpolation);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n }\n // eslint-disable-next-line no-fallthrough\n\n default:\n {\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n\n if (process.env.NODE_ENV !== 'production' && couldBeSelectorInterpolation && shouldWarnAboutInterpolatingClassNameFromCss && cached !== undefined) {\n console.error('Interpolating a className from css`` is not recommended and will cause problems with composition.\\n' + 'Interpolating a className from css`` will be completely unsupported in a future major version of Emotion');\n shouldWarnAboutInterpolatingClassNameFromCss = false;\n }\n\n return cached !== undefined && !couldBeSelectorInterpolation ? cached : interpolation;\n }\n }\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i], false);\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error('Component selectors can only be used in conjunction with babel-plugin-emotion.');\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n } else {\n string += _key + \"{\" + handleInterpolation(mergedProps, registered, value, false) + \"}\";\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*;/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings, false);\n } else {\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i], styles.charCodeAt(styles.length - 1) === 46);\n\n if (stringMode) {\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className]);\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false && cache.compat !== undefined) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(\".\" + className, current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };\n","import createCache from '@emotion/cache';\nimport { serializeStyles } from '@emotion/serialize';\nimport { insertStyles, getRegisteredStyles } from '@emotion/utils';\n\nfunction insertWithoutScoping(cache, serialized) {\n if (cache.inserted[serialized.name] === undefined) {\n return cache.insert('', serialized, cache.sheet, true);\n }\n}\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar createEmotion = function createEmotion(options) {\n var cache = createCache(options); // $FlowFixMe\n\n cache.sheet.speedy = function (value) {\n if (process.env.NODE_ENV !== 'production' && this.ctr !== 0) {\n throw new Error('speedy must be changed before any rules are inserted');\n }\n\n this.isSpeedy = value;\n };\n\n cache.compat = true;\n\n var css = function css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered, this !== undefined ? this.mergedProps : undefined);\n insertStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var keyframes = function keyframes() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n var animation = \"animation-\" + serialized.name;\n insertWithoutScoping(cache, {\n name: serialized.name,\n styles: \"@keyframes \" + animation + \"{\" + serialized.styles + \"}\"\n });\n return animation;\n };\n\n var injectGlobal = function injectGlobal() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n insertWithoutScoping(cache, serialized);\n };\n\n var cx = function cx() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n return {\n css: css,\n cx: cx,\n injectGlobal: injectGlobal,\n keyframes: keyframes,\n hydrate: function hydrate(ids) {\n ids.forEach(function (key) {\n cache.inserted[key] = true;\n });\n },\n flush: function flush() {\n cache.registered = {};\n cache.inserted = {};\n cache.sheet.flush();\n },\n // $FlowFixMe\n sheet: cache.sheet,\n cache: cache,\n getRegisteredStyles: getRegisteredStyles.bind(null, cache.registered),\n merge: merge.bind(null, cache.registered, css)\n };\n};\n\nvar classnames = function classnames(args) {\n var cls = '';\n\n for (var i = 0; i < args.length; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nexport default createEmotion;\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n FormattedMessage,\n defineMessages,\n} from 'react-intl';\nimport spring from 'react-motion/lib/spring';\n\n// Utils.\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport { searchEnabled } from 'flavours/glitch/util/initial_state';\n\n// Messages.\nconst messages = defineMessages({\n format: {\n defaultMessage: 'Advanced search format',\n id: 'search_popout.search_format',\n },\n hashtag: {\n defaultMessage: 'hashtag',\n id: 'search_popout.tips.hashtag',\n },\n status: {\n defaultMessage: 'status',\n id: 'search_popout.tips.status',\n },\n text: {\n defaultMessage: 'Simple text returns matching display names, usernames and hashtags',\n id: 'search_popout.tips.text',\n },\n 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 id: 'search_popout.tips.full_text',\n },\n user: {\n defaultMessage: 'user',\n id: 'search_popout.tips.user',\n },\n});\n\n// The spring used by our motion.\nconst motionSpring = spring(1, { damping: 35, stiffness: 400 });\n\n// The component.\nexport default function DrawerSearchPopout ({ style }) {\n\n // The result.\n return (\n <div\n className='drawer--search--popout'\n style={{\n ...style,\n position: 'absolute',\n width: 285,\n }}\n >\n <Motion\n defaultStyle={{\n opacity: 0,\n scaleX: 0.85,\n scaleY: 0.75,\n }}\n style={{\n opacity: motionSpring,\n scaleX: motionSpring,\n scaleY: motionSpring,\n }}\n >\n {({ opacity, scaleX, scaleY }) => (\n <div\n style={{\n opacity: opacity,\n transform: `scale(${scaleX}, ${scaleY})`,\n }}\n >\n <h4><FormattedMessage {...messages.format} /></h4>\n <ul>\n <li>\n <em>#example</em>\n {' '}\n <FormattedMessage {...messages.hashtag} />\n </li>\n <li>\n <em>@username@domain</em>\n {' '}\n <FormattedMessage {...messages.user} />\n </li>\n <li>\n <em>URL</em>\n {' '}\n <FormattedMessage {...messages.user} />\n </li>\n <li>\n <em>URL</em>\n {' '}\n <FormattedMessage {...messages.status} />\n </li>\n </ul>\n { searchEnabled ? <FormattedMessage {...messages.full_text} /> : <FormattedMessage {...messages.text} /> }\n </div>\n )}\n </Motion>\n </div>\n );\n}\n\n// Props.\nDrawerSearchPopout.propTypes = { style: PropTypes.object };\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport {\n FormattedMessage,\n defineMessages,\n} from 'react-intl';\nimport Overlay from 'react-overlays/lib/Overlay';\n\n// Components.\nimport Icon from 'flavours/glitch/components/icon';\nimport DrawerSearchPopout from './popout';\n\n// Utils.\nimport { focusRoot } from 'flavours/glitch/util/dom_helpers';\nimport {\n assignHandlers,\n hiddenComponent,\n} from 'flavours/glitch/util/react_helpers';\n\n// Messages.\nconst messages = defineMessages({\n placeholder: {\n defaultMessage: 'Search',\n id: 'search.placeholder',\n },\n});\n\n// Handlers.\nconst handlers = {\n\n handleBlur () {\n this.setState({ expanded: false });\n },\n\n handleChange ({ target: { value } }) {\n const { onChange } = this.props;\n if (onChange) {\n onChange(value);\n }\n },\n\n handleClear (e) {\n const {\n onClear,\n submitted,\n value,\n } = this.props;\n e.preventDefault(); // Prevents focus change ??\n if (onClear && (submitted || value && value.length)) {\n onClear();\n }\n },\n\n handleFocus () {\n const { onShow } = this.props;\n this.setState({ expanded: true });\n if (onShow) {\n onShow();\n }\n },\n\n handleKeyUp (e) {\n const { onSubmit } = this.props;\n switch (e.key) {\n case 'Enter':\n if (onSubmit) {\n onSubmit();\n }\n break;\n case 'Escape':\n focusRoot();\n }\n },\n};\n\n// The component.\nexport default class DrawerSearch extends React.PureComponent {\n\n // Constructor.\n constructor (props) {\n super(props);\n assignHandlers(this, handlers);\n this.state = { expanded: false };\n }\n\n // Rendering.\n render () {\n const {\n handleBlur,\n handleChange,\n handleClear,\n handleFocus,\n handleKeyUp,\n } = this.handlers;\n const {\n intl,\n submitted,\n value,\n } = this.props;\n const { expanded } = this.state;\n const active = value && value.length || submitted;\n const computedClass = classNames('drawer--search', { active });\n\n return (\n <div className={computedClass}>\n <label>\n <span {...hiddenComponent}>\n <FormattedMessage {...messages.placeholder} />\n </span>\n <input\n type='text'\n placeholder={intl.formatMessage(messages.placeholder)}\n value={value || ''}\n onChange={handleChange}\n onKeyUp={handleKeyUp}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </label>\n <div\n aria-label={intl.formatMessage(messages.placeholder)}\n className='icon'\n onClick={handleClear}\n role='button'\n tabIndex='0'\n >\n <Icon icon='search' />\n <Icon icon='times-circle' />\n </div>\n <Overlay\n placement='bottom'\n show={expanded && !active}\n target={this}\n ><DrawerSearchPopout /></Overlay>\n </div>\n );\n }\n\n}\n\n// Props.\nDrawerSearch.propTypes = {\n value: PropTypes.string,\n submitted: PropTypes.bool,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n onClear: PropTypes.func,\n onShow: PropTypes.func,\n intl: PropTypes.object,\n};\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport DropdownMenuContainer from '../../../containers/dropdown_menu_container';\nimport { defineMessages, injectIntl } from 'react-intl';\n\nconst messages = defineMessages({\n edit_profile: { id: 'account.edit_profile', defaultMessage: 'Edit profile' },\n pins: { id: 'navigation_bar.pins', defaultMessage: 'Pinned toots' },\n preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },\n follow_requests: { id: 'navigation_bar.follow_requests', defaultMessage: 'Follow requests' },\n favourites: { id: 'navigation_bar.favourites', defaultMessage: 'Favourites' },\n lists: { id: 'navigation_bar.lists', defaultMessage: 'Lists' },\n blocks: { id: 'navigation_bar.blocks', defaultMessage: 'Blocked users' },\n domain_blocks: { id: 'navigation_bar.domain_blocks', defaultMessage: 'Hidden domains' },\n mutes: { id: 'navigation_bar.mutes', defaultMessage: 'Muted users' },\n filters: { id: 'navigation_bar.filters', defaultMessage: 'Muted words' },\n});\n\nexport default @injectIntl\nclass ActionBar extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { intl } = this.props;\n\n let menu = [];\n\n menu.push({ text: intl.formatMessage(messages.preferences), href: '/user-settings' });\n menu.push({ text: intl.formatMessage(messages.pins), to: '/pinned' });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.follow_requests), to: '/follow_requests' });\n menu.push({ text: intl.formatMessage(messages.favourites), to: '/favourites' });\n menu.push({ text: intl.formatMessage(messages.lists), to: '/lists' });\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.mutes), to: '/mutes' });\n menu.push({ text: intl.formatMessage(messages.blocks), to: '/blocks' });\n menu.push({ text: intl.formatMessage(messages.domain_blocks), to: '/domain_blocks' });\n menu.push({ text: intl.formatMessage(messages.filters), href: '/filters' });\n\n return (\n <div className='compose__action-bar'>\n <div className='compose__action-bar-dropdown'>\n <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ActionBar from './action_bar';\nimport Avatar from '../../../components/avatar';\nimport Permalink from '../../../components/permalink';\nimport IconButton from '../../../components/icon_button';\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 </div>\n\n <div className='navigation-bar__actions'>\n <IconButton className='close' title='' icon='close' onClick={this.props.onClose} />\n <ActionBar account={this.props.account} />\n </div>\n </div>\n );\n }\n\n}\n"],"sourceRoot":""} |