akkoma/priv/static/packs/common.js.map
FloatingGhost 0d012ebea1 Revert "Merge branch 'remove/mastofe' into 'develop'"
This reverts commit 6b3842cf50, reversing
changes made to 6b1282a829.
2022-01-08 21:44:37 +00:00

1 line
1.8 MiB

{"version":3,"sources":["webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/get_rect_from_entry.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/intersection_observer_article.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/containers/intersection_observer_article_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/load_pending.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/intersection_observer_wrapper.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/scrollable_list.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/util/get_rect_from_entry.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/intersection_observer_article.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/containers/intersection_observer_article_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/load_pending.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/util/intersection_observer_wrapper.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/scrollable_list.js","webpack:///./node_modules/babel-runtime/helpers/classCallCheck.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/containers/account_container.js","webpack:///./node_modules/core-js/library/modules/_core.js","webpack:///./node_modules/core-js/library/modules/_wks.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/missing_indicator.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/missing_indicator.js","webpack:///./node_modules/emoji-mart/dist-es/components/emoji/emoji.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/containers/status_list_container.js","webpack:///./node_modules/emoji-mart/dist-es/polyfills/extends.js","webpack:///./node_modules/core-js/library/modules/_global.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/containers/status_list_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/regeneration_indicator.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_list.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/regeneration_indicator.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/status_list.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/_export.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/_descriptors.js","webpack:///./node_modules/core-js/library/modules/_has.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/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/load_more.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account/components/profile_column_header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/containers/status_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/load_more.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/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account/components/header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account/components/action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/components/moved_note.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/components/header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/account/components/header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/components/moved_note.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/components/header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/account_timeline/containers/header_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/spoilers.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/containers/status_container.js","webpack:///./node_modules/core-js/library/modules/_is-object.js","webpack:///./node_modules/core-js/library/modules/_fails.js","webpack:///./node_modules/core-js/library/modules/_property-desc.js","webpack:///./node_modules/core-js/library/modules/_object-keys.js","webpack:///./node_modules/core-js/library/modules/_to-iobject.js","webpack:///./node_modules/core-js/library/modules/_defined.js","webpack:///./node_modules/core-js/library/modules/_to-integer.js","webpack:///./node_modules/core-js/library/modules/_shared-key.js","webpack:///./node_modules/core-js/library/modules/_iterators.js","webpack:///./node_modules/core-js/library/modules/_to-object.js","webpack:///./node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/setting_toggle.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/setting_text.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_link.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_subheading.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/notifications/components/setting_toggle.js","webpack:///./node_modules/core-js/library/modules/_ctx.js","webpack:///./node_modules/core-js/library/modules/_dom-create.js","webpack:///./node_modules/core-js/library/modules/_cof.js","webpack:///./node_modules/core-js/library/modules/_to-length.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/_set-to-string-tag.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/load_gap.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/community_timeline/components/column_settings.js","webpack:///./node_modules/lodash/isEqual.js","webpack:///./node_modules/react-input-autosize/lib/AutosizeInput.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/lists/components/new_list_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/list_editor/components/account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/list_editor/components/search.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/column_back_button.js","webpack:///./node_modules/lodash/noop.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/load_gap.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/community_timeline/components/column_settings.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_link.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_subheading.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/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/utils/dist/utils.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/css/dist/css.browser.esm.js","webpack:///./node_modules/@emotion/core/dist/core.browser.esm.js","webpack:///./node_modules/react-select/dist/utils-06b0d5a4.browser.esm.js","webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js","webpack:///./node_modules/react-select/dist/index-4322c0ed.browser.esm.js","webpack:///./node_modules/react-select/dist/Select-9fdb8cd0.browser.esm.js","webpack:///./node_modules/react-select/dist/stateManager-04f734a2.browser.esm.js","webpack:///./node_modules/react-select/async/dist/react-select.browser.esm.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/search_results.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/search_results_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/search_results.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/search_results_container.js","webpack:///./node_modules/react-overlays/lib/Overlay.js","webpack:///./node_modules/babel-runtime/core-js/object/values.js","webpack:///./node_modules/core-js/library/fn/object/values.js","webpack:///./node_modules/core-js/library/modules/es7.object.values.js","webpack:///./node_modules/core-js/library/modules/_a-function.js","webpack:///./node_modules/core-js/library/modules/_ie8-dom-define.js","webpack:///./node_modules/core-js/library/modules/_to-primitive.js","webpack:///./node_modules/core-js/library/modules/_object-to-array.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/_array-includes.js","webpack:///./node_modules/core-js/library/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/library/modules/_object-pie.js","webpack:///./node_modules/babel-runtime/helpers/toConsumableArray.js","webpack:///./node_modules/babel-runtime/core-js/array/from.js","webpack:///./node_modules/core-js/library/fn/array/from.js","webpack:///./node_modules/core-js/library/modules/es6.string.iterator.js","webpack:///./node_modules/core-js/library/modules/_string-at.js","webpack:///./node_modules/core-js/library/modules/_iter-define.js","webpack:///./node_modules/core-js/library/modules/_redefine.js","webpack:///./node_modules/core-js/library/modules/_iter-create.js","webpack:///./node_modules/core-js/library/modules/_object-create.js","webpack:///./node_modules/core-js/library/modules/_object-dps.js","webpack:///./node_modules/core-js/library/modules/_html.js","webpack:///./node_modules/core-js/library/modules/_object-gpo.js","webpack:///./node_modules/dom-helpers/util/inDOM.js","webpack:///./node_modules/core-js/library/modules/es6.array.from.js","webpack:///./node_modules/core-js/library/modules/_iter-call.js","webpack:///./node_modules/core-js/library/modules/_is-array-iter.js","webpack:///./node_modules/core-js/library/modules/_create-property.js","webpack:///./node_modules/core-js/library/modules/core.get-iterator-method.js","webpack:///./node_modules/core-js/library/modules/_classof.js","webpack:///./node_modules/core-js/library/modules/_iter-detect.js","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/_object-sap.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/backend_links.js","webpack:///./node_modules/react-overlays/lib/utils/ownerDocument.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/dom-helpers/query/isWindow.js","webpack:///./node_modules/prop-types-extra/lib/componentOrElement.js","webpack:///./node_modules/react-overlays/lib/utils/getContainer.js","webpack:///./node_modules/dom-helpers/ownerDocument.js","webpack:///./node_modules/react-router-dom/node_modules/resolve-pathname/index.js","webpack:///./node_modules/react-router-dom/node_modules/value-equal/index.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/PathUtils.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/LocationUtils.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/createTransitionManager.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/DOMUtils.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/createHashHistory.js","webpack:///./node_modules/react-router-dom/node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/dom-helpers/query/scrollTop.js","webpack:///./node_modules/react-hotkeys/index.es.js","webpack:///./node_modules/react-toggle/dist/component/index.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/prop-types-extra/lib/utils/createChainableTypeChecker.js","webpack:///./node_modules/dom-helpers/query/offset.js","webpack:///./node_modules/dom-helpers/query/contains.js","webpack:///./node_modules/dom-helpers/style/index.js","webpack:///./node_modules/dom-helpers/util/camelizeStyle.js","webpack:///./node_modules/dom-helpers/events/off.js","webpack:///./node_modules/dom-helpers/events/on.js","webpack:///./node_modules/dom-helpers/query/scrollLeft.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/autosuggest_emoji.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/dom_helpers.js","webpack:///./node_modules/lodash.isequal/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/numbers.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/utils/numbers.js","webpack:///./node_modules/react-router-dom/node_modules/history/node_modules/warning/browser.js","webpack:///./node_modules/prop-types-extra/lib/elementType.js","webpack:///./node_modules/react-overlays/lib/Portal.js","webpack:///./node_modules/react-overlays/lib/LegacyPortal.js","webpack:///./node_modules/react-overlays/lib/Position.js","webpack:///./node_modules/react-overlays/lib/utils/calculatePosition.js","webpack:///./node_modules/dom-helpers/query/position.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/dom-helpers/query/offsetParent.js","webpack:///./node_modules/dom-helpers/util/camelize.js","webpack:///./node_modules/dom-helpers/util/hyphenateStyle.js","webpack:///./node_modules/dom-helpers/util/hyphenate.js","webpack:///./node_modules/dom-helpers/style/getComputedStyle.js","webpack:///./node_modules/dom-helpers/style/removeStyle.js","webpack:///./node_modules/dom-helpers/transition/properties.js","webpack:///./node_modules/dom-helpers/transition/isTransform.js","webpack:///./node_modules/react-overlays/lib/RootCloseWrapper.js","webpack:///./node_modules/react-overlays/lib/utils/addEventListener.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/scroll.js","webpack:///./node_modules/react-sparklines/build/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/scroll.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/containers/account_container.js","webpack:///./node_modules/react-router-scroll-4/lib/react-router-scroll-4.es.js","webpack:///./node_modules/react-motion/lib/TransitionMotion.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/media_gallery.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/status/components/card.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/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/media_gallery.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/status/components/card.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_visibility_icon.js","webpack:///./node_modules/tiny-queue/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/containers/poll_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/emoji_picker/index.js","webpack:///./node_modules/@gamestdio/websocket/lib/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/reply_indicator.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/reply_indicator_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/autosuggest_account.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/autosuggest_account_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/autosuggest_hashtag.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/autosuggest_textarea.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/autosuggest_input.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/poll_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/poll_form_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/upload_progress_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/upload.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/upload_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/sensitive_button_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/upload_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/upload_form_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/warning.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/warning_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/text_icon_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/dropdown_menu.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/dropdown.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/options.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/options_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/publisher.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/textarea_icons.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/compose_form.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/actions/polls.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/poll.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/scroll-behavior/lib/index.js","webpack:///./node_modules/react-router/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./node_modules/lodash.isboolean/index.js","webpack:///./node_modules/lodash.isobject/index.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/animated_number.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/animated_number.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/dropdown_menu.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/containers/dropdown_menu_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/utils/log_out.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column_header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column_header.js","webpack:///./node_modules/react-motion/lib/mergeDiff.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/react-hotkeys/es/react-hotkeys.production.min.js","webpack:///./node_modules/mousetrap/mousetrap.js","webpack:///./node_modules/@gamestdio/websocket/lib/backoff.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/ui/components/column.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/components/column.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/column_header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/column_header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/column.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/column_back_button_slim.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/column.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/column_back_button_slim.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/column_back_button.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/stream.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/actions/streaming.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/stream.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/actions/streaming.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/dropdown_menu.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/containers/dropdown_menu_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/navigation_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/hashtag.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/hashtag.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/components/overlay.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/notifications/containers/overlay_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/schedule_idle_task.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/containers/search_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/features/compose/components/search.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/avatar_overlay.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/avatar_composite.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/util/content_warning.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/ui/util/schedule_idle_task.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/avatar_overlay.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/avatar_composite.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/search.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/containers/search_container.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/features/compose/components/navigation_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_prepend.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_header.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_icons.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status_action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/flavours/glitch/components/status.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/status_action_bar.js","webpack:///app/javascript/tank/sources/git/git.pleroma.social/pleroma/mastofe/app/javascript/mastodon/components/status.js","webpack:///./node_modules/react-router-dom/es/NavLink.js"],"names":["hasBoundingRectBug","getRectFromEntry","entry","boundingRect","target","getBoundingClientRect","observerRect","boundingClientRect","height","top","width","bottom","left","right","updateOnPropsForUnrendered","IntersectionObserverArticle","isHidden","scheduleIdleTask","calculateHeight","setState","updateStateAfterIntersection","prevState","isIntersecting","hideIfNotIntersecting","props","onHeightChange","saveHeightKey","id","componentMounted","node","shouldComponentUpdate","nextProps","nextState","isUnrendered","this","state","cachedHeight","every","prop","componentDidMount","intersectionObserverWrapper","observe","handleIntersection","componentWillUnmount","unobserve","render","children","index","listLength","style","opacity","overflow","ref","handleRef","aria-posinset","aria-setsize","data-id","tabIndex","React","cloneElement","hidden","Component","connect","getIn","dispatch","key","setHeight","LoadPending","count","className","onClick","defaultMessage","values","PureComponent","IntersectionObserverWrapper","options","observer","IntersectionObserver","entries","forEach","getAttribute","callbacks","observerBacklog","callback","push","disconnect","MOUSE_IDLE_DELAY","ScrollableList","fullscreen","cachedMediaWidth","scrollTop","getScrollTop","getScrollHeight","getClientHeight","onLoadMore","hasMore","isLoading","onScrollToTop","onScroll","lastScrollWasSynthetic","scrollToTopOnMouseIdle","trailing","newScrollTop","bindToDocument","document","scrollingElement","mouseIdleTimer","clearTimeout","clearMouseIdleTimer","setTimeout","handleMouseIdle","mouseMovedRecently","setScrollTop","scrollHeight","clientHeight","snapshot","isFullscreen","c","e","preventDefault","prevRouterProps","location","mastodonModalOpen","onLoadPending","attachScrollListener","attachIntersectionObserver","attachFullscreenListener","onFullScreenChange","handleScroll","getSnapshotBeforeUpdate","prevProps","someItemInserted","Children","getFirstChildKey","numPending","componentDidUpdate","updateScrollBottom","detachScrollListener","detachIntersectionObserver","detachFullscreenListener","root","rootMargin","addEventListener","handleWheel","removeEventListener","firstChild","ImmutableList","get","Array","isArray","scrollKey","trackScroll","shouldUpdateScroll","showLoading","prepend","alwaysPrepend","emptyMessage","childrenCount","loadMore","visible","handleLoadMore","loadPending","handleLoadPending","scrollableArea","setRef","role","classNames","onMouseMove","handleMouseMove","map","child","context","router","route","getScrollPosition","cacheMediaWidth","defaultShouldUpdateScroll","PropTypes","object","updateOnPropsForRendered","is","body","_getScrollingElement","nodeOptions","exports","__esModule","default","instance","Constructor","TypeError","messages","defineMessages","follow","unfollow","requested","unblock","unmute","mute_notifications","unmute_notifications","Account","injectIntl","onFollow","account","onBlock","onMute","onMuteNotifications","onActionClick","buttons","intl","actionIcon","actionTitle","icon","title","handleAction","me","following","blocking","muting","disabled","formatMessage","active","name","handleBlock","hidingNotificationsButton","handleUnmuteNotifications","handleMuteNotifications","handleMute","handleFollow","href","to","size","ImmutablePureComponent","ImmutablePropTypes","isRequired","func","bool","string","unfollowConfirm","getAccount","makeGetAccount","unfollowModal","openModal","message","confirm","onConfirm","unfollowAccount","followAccount","unblockAccount","blockAccount","unmuteAccount","initMuteModal","notifications","muteAccount","core","module","version","__e","store","uid","Symbol","USE_SYMBOL","MissingIndicator","fullPage","tagName","Emoji","k","defaultProps","undefined","propTypes","data","getRegex","createSelector","type","rawRegex","regex","RegExp","trim","makeGetStatusIds","pending","ImmutableMap","columnSettings","statusIds","statuses","filter","statusForId","showStatus","searchIndex","test","getStatusIds","getPendingStatusIds","timelineId","isPartial","scrollTopTimeline","StatusList","_Object","Object","i","arguments","length","source","prototype","hasOwnProperty","call","global","window","Math","self","Function","__g","featuredStatusIds","featured","indexOf","getFeaturedStatusCount","elementIndex","getCurrentStatusIndex","_selectChild","last","leading","align_top","container","element","querySelector","offsetTop","scrollIntoView","offsetHeight","focus","other","scrollableContent","statusId","maxId","onMoveUp","handleMoveUp","onMoveDown","handleMoveDown","contextType","concat","handleLoadOlder","list","showThread","String","highSurrogate","lowSurrogate","MAX_SIZE","codeUnits","result","codePoint","Number","isFinite","floor","RangeError","fromCharCode","apply","_JSON","JSON","COLONS_REGEX","SKINS","unifiedToNative","unified","codePoints","split","u","stringFromCodePoint","getSanitizedData","emoji","getData","short_names","skin_tone","skin_variations","emoticons","custom","customCategory","imageUrl","colons","toLowerCase","skin","native","set","emojiData","matches","match","parseInt","aliases","emojis","search","variations","parse","stringify","skinKey","variationData","v","shift","uniq","arr","reduce","acc","item","intersect","a","b","uniqA","uniqB","deepMerge","o","originalValue","value","measureScrollbar","div","createElement","position","appendChild","scrollbarWidth","offsetWidth","clientWidth","removeChild","ctx","hide","has","$export","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","C","virtual","R","U","dP","createDesc","f","anObject","IE8_DOM_DEFINE","toPrimitive","defineProperty","O","Attributes","isObject","it","mapping","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_emojione","has_img_facebook","has_img_messenger","keywords","sheet","text","added_in","buildSearch","addToSearch","strings","s","join","compress","short_name","sheet_x","sheet_y","_key","uncompress","compressed","unshift","toFixed","EmojiPropTypes","onOver","onLeave","fallback","backgroundImageFn","forceSize","tooltip","oneOf","sheetSize","number","oneOfType","EmojiDefaultProps","PickerDefaultProps","arrayOf","shape","onSelect","onSkinChange","emojiSize","perLine","i18n","color","defaultSkin","emojisToShowFilter","showPreview","showSkinTones","emojiTooltip","autoFocus","LoadMore","visibility","profile","ProfileColumnHeader","multiColumn","showBackButton","deleteConfirm","deleteMessage","redraftConfirm","redraftMessage","replyConfirm","replyMessage","blockDomainConfirm","getStatus","makeGetStatus","status","onReply","_","getState","replyCompose","onModalReblog","unreblog","reblog","onReblog","shiftKey","boostModal","onFavourite","unfavourite","favourite","onBookmark","unbookmark","bookmark","onPin","unpin","pin","onEmbed","url","onError","error","showAlertForError","onDelete","history","withRedraft","deleteModal","deleteStatus","onDirect","directCompose","onMention","mentionCompose","onOpenMedia","media","onOpenVideo","time","initBlockModal","onUnblock","onReport","initReport","onUnmute","onMuteConversation","unmuteStatus","muteStatus","onToggleHidden","revealStatus","hideStatus","onToggleCollapsed","isCollapsed","toggleStatusCollapse","onBlockDomain","domain","blockDomain","onUnblockDomain","unblockDomain","Status","constructor","defineProperties","descriptor","enumerable","configurable","writable","protoProps","staticProps","possibleConstructorReturn","ReferenceError","inherits","subClass","superClass","create","setPrototypeOf","__proto__","NAMESPACE","isLocalStorageSupported","getter","setter","localStorage","update","setNamespace","namespace","setHandlers","handlers","DEFAULTS","frequently","initialized","defaults","init","add","quantity","frequentlyKeys","sliced","sort","reverse","slice","pop","activity","flags","foods","nature","objects","people","places","recent","symbols","_React$PureComponent","Anchors","_this","defaultCategory","categories","category","first","selected","handleClick","bind","SVGs","svg","currentTarget","_props","onAnchorClick","_this2","_props2","anchor","isSelected","iconId","startsWith","dangerouslySetInnerHTML","__html","getSVG","backgroundColor","_React$Component","Category","setContainerRef","setLabelRef","parent","parentNode","margin","minMargin","memoizeSize","hasStickyPosition","emojiProps","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSize","nextSet","shouldUpdate","_container$getBoundin","parentTop","labelHeight","label","maxMargin","frequentlyUsed","display","getEmojis","_this3","_props3","labelStyles","labelSpanStyles","containerStyles","notfound","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","emoticon","onChange","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_loop","pool","emojiId","clearCustomEmojis","_this4","_ref","maxResults","include","exclude","_ref$custom","addCustomToPool","results","allResults","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","char","scores","_id","sub","substr","subIndex","score","Search","emojiIndex","handleChange","input","onSearch","placeholder","Skins","opened","skinToneNodes","skinTone","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleKeyDown","testStickyPosition","firstRenderTimeout","updateCategoriesSize","leaveTimeout","stickyTestElement","prefix","preview","component","categoryRefs","forceUpdate","requestAnimationFrame","scroll","updateDisplay","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","anchors","categoryName","scrollToComponent","clear","newState","handled","keyCode","onKeyDown","getCategories","setCategoryRef","Picker","cancel_follow_request","edit_profile","linkVerifiedOn","account_locked","mention","direct","block","mute","report","share","hideReblogs","showReblogs","pins","preferences","follow_requests","favourites","lists","blocks","domain_blocks","mutes","endorse","unendorse","add_or_remove_from_list","admin_account","dateFormatOptions","month","day","year","hour12","hour","minute","Header","open","profileLink","src","_updateEmojis","autoPlayGif","querySelectorAll","classList","contains","handleEmojiMouseEnter","handleEmojiMouseLeave","identity_proofs","info","actionBtn","lockedIcon","menu","openEditProfile","action","navigator","handleShare","preferencesLink","onReblogToggle","onEndorseToggle","onAddToList","isStaff","accountAdminLink","badge","content","displayNameHtml","fields","acct","inactive","alt","rel","items","direction","proof","date","formatDate","pair","identity_props","ActionBar","pathname","extraInfo","fixedWidth","NavLink","isActive","isStatusesPageActive","activeClassName","exact","MovedNote","button","mastodonBackSteps","stopPropagation","from","handleAccountClick","friend","hideTabs","handleMention","handleDirect","handleReblogToggle","handleReport","handleBlockDomain","handleUnblockDomain","handleEndorseToggle","handleAddToList","accountId","unpinAccount","pinAccount","formatNumber","shortNumberFormat","Spoilers","spoilerText","toggleText","handleSpoilerClick","unfilterConfirm","author","matchingFilters","editFilter","reblogStatus","containerId","settings","onDoNotAsk","changeLocalSetting","some","missingMediaDescription","onModalFavourite","favouriteModal","onUnfilter","serverSideType","toServerSideType","enabledFilters","includes","Date","toArray","regexFromFilters","filterEditLink","exec","bitmap","$keys","enumBugKeys","keys","IObject","defined","ceil","isNaN","shared","_getData","_getPosition","_getData2","_getSanitizedData","_isNumeric","parseFloat","NimbleEmoji","fontSize","backgroundImage","backgroundSize","backgroundPosition","html","_convertStyleToCSS","_handleClick","onMouseEnter","_handleOver","onMouseLeave","_handleLeave","SettingToggle","settingPath","checked","meta","defaultValue","Boolean","htmlFor","SettingText","ColumnLink","method","badgeElement","data-method","ColumnSubheading","aFunction","fn","that","toString","toInteger","min","mode","copyright","px","random","def","TAG","tag","stat","load_more","LoadGap","aria-label","filter_regex","ColumnSettings","baseIsEqual","_extends","assign","_createClass","_react","_react2","_interopRequireDefault","_propTypes2","obj","sizerStyle","whiteSpace","INPUT_PROPS_BLACKLIST","copyStyles","styles","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","userAgent","generateId","AutosizeInput","_Component","_classCallCheck","_possibleConstructorReturn","getPrototypeOf","inputRef","el","placeHolderSizerRef","placeHolderSizer","sizerRef","sizer","inputWidth","minWidth","inputId","_inherits","mounted","copyInputStyles","updateInputWidth","onAutosize","getComputedStyle","inputStyles","scrollWidth","newInputWidth","placeholderIsMinWidth","max","extraWidth","blur","select","injectStyles","sizerValue","previousValue","currentValue","wrapperStyle","inputStyle","boxSizing","inputProps","_objectWithoutProperties","field","cleanInputProps","inputClassName","renderStyles","any","NewListForm","changeListEditorTitle","onSubmit","submitListEditor","handleSubmit","remove","onRemove","onAdd","added","onClear","hasValue","onKeyUp","handleKeyUp","handleClear","ColumnBackButton","event","go","goBack","getElementById","createPortal","StyleSheet","isSpeedy","speedy","tags","ctr","nonce","before","_proto","insert","rule","_tag","setAttribute","createTextNode","createStyleElement","nextSibling","insertBefore","styleSheets","ownerNode","sheetForTag","isImportRule","charCodeAt","insertRule","cssRules","flush","X","d","h","ia","m","Z","n","replace","substring","w","L","ja","ka","aa","ba","la","ma","na","ea","oa","H","q","g","x","A","D","z","M","y","K","r","I","t","J","p","N","charAt","ca","da","fa","Y","E","ha","Q","use","T","toSheet","Sheet","current","ruleSheet","selectors","parents","line","column","ns","depth","at","stylisOptions","stylis","inserted","head","_insert","nodes","stylisPlugins","selector","serialized","shouldCache","cache","registered","getRegisteredStyles","registeredStyles","rawClassName","insertStyles","isStringTag","next","str","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","lineHeight","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","property","processStyleName","arg","styleName","p1","p2","cursor","handleInterpolation","mergedProps","interpolation","couldBeSelectorInterpolation","__emotion_styles","anim","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","args","stringMode","raw","lastIndex","identifierName","_len","EmotionCacheContext","HTMLElement","ThemeContext","Provider","Consumer","typePropName","theme","cssProp","css","newProps","Emotion","argsLength","createElementArgArray","classnames","len","cls","toAdd","merge","ClassNames","cx","_len2","_key2","ele","noop","applyPrefixToName","cleanValue","isDocumentElement","documentElement","pageYOffset","scrollTo","animatedScrollTo","duration","start","change","increment","currentTime","animateScroll","val","isTouchCapable","createEvent","areInputsEqual","newInputs","lastInputs","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_inheritsLoose","getMenuPlacement","maxHeight","menuEl","minHeight","placement","shouldScroll","isFixedPosition","spacing","scrollParent","excludeStaticParent","overflowRx","docEl","parentElement","overflowY","overflowX","getScrollParent","defaultState","offsetParent","_menuEl$getBoundingCl","menuBottom","menuHeight","menuTop","containerTop","viewHeight","innerHeight","marginBottom","marginTop","viewSpaceAbove","viewSpaceBelow","scrollSpaceAbove","scrollSpaceBelow","scrollDown","scrollUp","_constrainedHeight","spaceAbove","controlHeight","_constrainedHeight2","Error","coercePlacement","MenuPlacer","maxMenuHeight","getPlacement","_this$props","minMenuHeight","menuPlacement","menuPosition","menuShouldScrollIntoView","getPortalPlacement","getUpdatedProps","placerProps","contextTypes","noticeCSS","_ref5","_ref5$theme","baseUnit","colors","neutral40","padding","textAlign","noOptionsMessageCSS","loadingMessageCSS","getStyles","innerProps","_Component2","MenuPortal","_ref7","_proto2","getChildContext","_this$props2","appendTo","controlElement","isFixed","rect","getBoundingClientObj","scrollDistance","offset","menuWrapper","childContextTypes","keyList","hasProp","exportedEqual","equal","arrA","arrB","dateA","dateB","getTime","regexpA","regexpB","$$typeof","console","warn","_extends$1","_templateObject","_taggedTemplateLiteralLoose","_extends$2","excluded","sourceKeys","_objectWithoutPropertiesLoose","viewBox","focusable","baseCSS","_ref3","isFocused","_ref3$theme","neutral60","neutral20","transition","neutral80","dropdownIndicatorCSS","clearIndicatorCSS","loadingDotAnimations","insertable","_ref6","delay","animation","borderRadius","marginLeft","verticalAlign","isRtl","indicator","_extends$3","_extends$4","_extends$5","background","border","outline","_extends$6","_ref4","components","isDisabled","removeProps","selectProps","Container","Label","Remove","emotionCx","_extends$7","cropWithEllipsis","_extends$8","_extends$9","_extends$a","ClearIndicator","Control","innerRef","menuIsOpen","control","DropdownIndicator","DownChevron","CrossIcon","Group","Heading","headingProps","group","GroupHeading","cleanProps","_objectWithoutPropertiesLoose$1","IndicatorsContainer","indicators","IndicatorSeparator","Input","_ref2","_objectWithoutPropertiesLoose$2","LoadingIndicator","Menu","MenuList","isMulti","LoadingMessage","NoOptionsMessage","MultiValue","MultiValueContainer","MultiValueLabel","MultiValueRemove","Option","option","Placeholder","SelectContainer","SingleValue","ValueContainer","defaultComponents","diacritics","base","letters","stripDiacritics","trimString","defaultStringify","DummyInput","in","onExited","appear","enter","exit","emotion","transform","NodeResolver","STYLE_KEYS","LOCK_STYLES","preventTouchMove","allowTouchMove","preventInertiaScroll","totalScroll","currentScroll","isTouchDevice","maxTouchPoints","canUseDOM","activeScrollLocks","ScrollLock","originalStyles","listenerOptions","capture","passive","accountForScrollbars","touchScrollTarget","targetStyle","currentPadding","paddingRight","adjustedPadding","innerWidth","_ref$1","_PureComponent","ScrollBlock","getScrollTarget","blurSelectInput","activeElement","isEnabled","ScrollCaptor","isBottom","isTop","scrollTarget","touchStart","cancelScroll","handleEventDelta","delta","onBottomArrive","onBottomLeave","onTopArrive","onTopLeave","_this$scrollTarget","isDeltaPositive","availableScroll","shouldCancelScroll","onWheel","deltaY","onTouchStart","changedTouches","clientY","onTouchMove","startListening","stopListening","ScrollCaptorSwitch","_ref$isEnabled","instructionsAriaMessage","_context","isSearchable","valueEventAriaMessage","isOptionDisabled","defaultStyles","clearIndicator","pointerEvents","_ref$theme","alignItems","neutral5","neutral0","borderColor","neutral10","primary","borderStyle","borderWidth","boxShadow","flexWrap","justifyContent","neutral30","dropdownIndicator","paddingBottom","paddingTop","groupHeading","paddingLeft","indicatorsContainer","alignSelf","indicatorSeparator","_ref4$theme","loadingIndicator","marginRight","loadingMessage","_ref2$theme","alignToControl","menuGutter","menuList","WebkitOverflowScrolling","menuPortal","multiValue","multiValueLabel","textOverflow","multiValueRemove","dangerLight","danger","noOptionsMessage","primary25","userSelect","WebkitTapHighlightColor","primary50","neutral50","singleValue","maxWidth","valueContainer","defaultTheme","primary75","neutral70","neutral90","_assertThisInitialized","config","backspaceRemovesValue","blurInputOnSelect","captureMenuScroll","closeMenuOnSelect","closeMenuOnScroll","controlShouldRenderValue","escapeClearsValue","filterOption","rawInput","_ignoreCase$ignoreAcc","ignoreCase","ignoreAccents","matchFrom","candidate","formatGroupLabel","getOptionLabel","getOptionValue","menuShouldBlockScroll","isMobileDevice","openMenuOnFocus","openMenuOnClick","pageSize","screenReaderStatus","tabSelectsValue","instanceId","Select","ariaLiveSelection","ariaLiveContext","focusedOption","focusedValue","inputIsHidden","menuOptions","selectValue","blockOptionHover","isComposing","clearFocusValueOnUpdate","commonProps","hasGroups","initialTouchX","initialTouchY","inputIsHiddenAfterUpdate","instancePrefix","openAfterFocus","scrollToFocusedOptionOnUpdate","userIsDragging","controlRef","getControlRef","focusedOptionRef","getFocusedOptionRef","menuListRef","getMenuListRef","getInputRef","cacheComponents","focusInput","blurInput","newValue","actionMeta","setValue","onInputChange","onMenuClose","selectOption","_this$props3","isOptionSelected","announceAriaLiveSelection","removeValue","removedValue","clearValue","popValue","lastSelectedValue","getElementId","getActiveDescendentId","_this$state","announceAriaLiveContext","onMenuMouseDown","onMenuMouseMove","onControlMouseDown","openMenu","onDropdownIndicatorMouseDown","_this$props4","onClearIndicatorMouseDown","onCompositionStart","onCompositionEnd","touch","touches","clientX","deltaX","abs","onTouchEnd","onControlTouchEnd","onClearIndicatorTouchEnd","onDropdownIndicatorTouchEnd","handleInputChange","inputValue","onMenuOpen","onInputFocus","_this$props5","onFocus","onInputBlur","onBlur","onOptionHover","shouldHideSelectedOptions","_this$props6","hideSelectedOptions","_this$props7","isClearable","_this$state2","defaultPrevented","focusValue","focusOption","buildMenuOptions","_props$inputValue","toOption","onHover","optionId","onMouseOver","itemIndex","groupId","_value","_selectValue","newSelectValue","lastProps","_menuOptions","startListeningComposition","startListeningToTouch","UNSAFE_componentWillReceiveProps","_this$props8","getNextFocusedValue","getNextFocusedOption","focusedEl","menuRect","focusedRect","overScroll","_this$props9","stopListeningComposition","stopListeningToTouch","_this$props10","_this$state3","openAtIndex","selectedIndex","_this$props11","_this$state4","focusedIndex","nextFocus","_this$state5","getTheme","getCommonProps","classNamePrefix","getValue","nextSelectValue","_this$state6","lastFocusedIndex","lastFocusedOption","hasOptions","countOptions","_this$props12","formatOptionLabel","constructAriaLiveMessage","_this$state7","_this$props13","valueFocusAriaMessage","optionFocusAriaMessage","screenReaderMessage","resultsAriaMessage","renderInput","_this$props14","ariaAttributes","readOnly","_this$commonProps","autoCapitalize","autoComplete","autoCorrect","spellCheck","renderPlaceholderOrValue","_this$components","_this$props15","_this$state8","opt","isOptionFocused","onMouseDown","renderClearIndicator","_this$props16","renderLoadingIndicator","_this$props17","renderIndicatorSeparator","_this$components2","renderDropdownIndicator","renderMenu","_this5","_this$components3","_this$state9","_this$props18","menuPortalTarget","onMenuScrollToTop","onMenuScrollToBottom","menuUI","headingId","_message","menuPlacementProps","menuElement","_ref8","_ref8$placerProps","renderFormField","_this6","_this$props19","delimiter","_value2","renderLiveRegion","_this$components4","_this$props20","defaultInputValue","defaultMenuIsOpen","SelectComponent","_class","_temp","cacheOptions","defaultOptions","Async","lastRequest","optionsCache","loadedInputValue","loadedOptions","passEmptyOptions","request","loadOptions","loader","then","isLoadingProp","StateManager","callProp","getProp","dismissSuggestion","SearchResults","expandSearch","searchTerm","fetchSuggestions","accounts","hashtags","suggestions","isEmpty","searchEnabled","handleLoadMoreAccounts","handleLoadMoreStatuses","hashtag","handleLoadMoreHashtags","_elementType2","_Portal2","_Position2","_RootCloseWrapper2","Overlay","handleHidden","exited","show","onHiddenListener","containerPadding","shouldUpdatePosition","rootClose","Transition","onExit","onExiting","onEnter","onEntering","onEntered","onRootClose","onHide","rootCloseEvent","propType","$values","valueOf","getKeys","toIObject","isEnum","isEntries","arrayIndexOf","IE_PROTO","names","cof","propertyIsEnumerable","toLength","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","_from","_from2","arr2","$at","iterated","_t","point","done","TO_STRING","pos","LIBRARY","redefine","Iterators","$iterCreate","setToStringTag","ITERATOR","BUGGY","returnThis","Base","NAME","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","proto","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","dPs","Empty","_createDict","iframeDocument","iframe","contentWindow","write","lt","close","Properties","toObject","ObjectProto","_default","isArrayIter","createProperty","getIterFn","iter","arrayLike","step","iterator","aLen","mapfn","iterFn","ret","ArrayProto","$defineProperty","classof","getIteratorMethod","ARG","tryGet","callee","SAFE_CLOSING","riter","skipClosing","safe","lastTime","vendors","cancelAnimationFrame","currTime","timeToCall","fails","KEY","exp","signOutLink","termsLink","statusAdminLink","account_id","status_id","relationshipsLink","componentOrElement","_ownerDocument2","_reactDom2","findDOMNode","webpackPolyfill","deprecate","paths","nodeType","freeGlobal","punycode","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","array","mapDomain","parts","ucs2decode","extra","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","numPoints","firstTime","decode","basic","j","oldi","baseMinusT","inputLength","bias","lastIndexOf","splice","encode","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","defaultView","parentWindow","_typeof","_createChainableTypeChecker2","propName","componentName","propFullName","propValue","isValidElement","defaultContainer","_reactDom","ownerDocument","isAbsolute","spliceOne","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","up","part","addLeadingSlash","path","hasBasename","stripBasename","stripTrailingSlash","createPath","hash","currentLocation","hashIndex","parsePath","decodeURI","URIError","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","listener","notifyListeners","attachEvent","detachEvent","getConfirmation","supportsHistory","ua","supportsPopStateOnHashChange","isExtraneousPopstateEvent","getHistoryState","globalHistory","canUseHistory","needsHashChangeListener","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","handlePop","handleHashChange","forceNextPop","ok","revertPop","fromLocation","toLocation","toIndex","allKeys","initialLocation","createHref","pushState","prevIndex","nextKeys","replaceState","goForward","listenerCount","checkDOMListeners","isBlocked","listen","unlisten","win","_isWindow","pageXOffset","scrollLeft","_classnames2","_check2","_x2","_util","Toggle","handleTouchStart","handleTouchMove","handleTouchEnd","handleFocus","handleBlur","previouslyChecked","defaultChecked","hasFocus","checkbox","moved","click","startX","pointerCoord","activated","currentX","endX","icons","classes","getIcon","displayName","unchecked","isModifiedEvent","metaKey","altKey","ctrlKey","Link","validate","checkType","componentNameSafe","propFullNameSafe","chainedCheckType","doc","_ownerDocument","docElem","box","_contains","clientTop","clientLeft","compareDocumentPosition","transforms","_camelizeStyle","_getComputedStyle2","getPropertyValue","_hyphenateStyle","_isTransform","_removeStyle","_properties","cssText","_camelize","msPattern","off","eventName","handler","on","srcElement","isEmptyChildren","Route","computeMatch","computedMatch","strict","sensitive","componentWillMount","componentWillReceiveProps","nextContext","_context$router","staticContext","only","assetHost","process","env","CDN_HOST","AutosuggestEmoji","unicodeMapping","filename","patternCache","cacheCount","compilePath","pattern","cacheKey","end","compiledPattern","re","_options","_options$exact","_options$strict","_options$sensitive","_compilePath","isExact","params","memo","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","res","tokens","defaultDelimiter","escaped","modifier","asterisk","partial","repeat","optional","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","toUpperCase","opts","pretty","encodeURIComponent","token","segment","attachKeys","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","withPassive","detectPassiveEvents","hasSupport","focusRoot","LARGE_ARRAY_SIZE","HASH_UNDEFINED","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","MAX_SAFE_INTEGER","argsTag","arrayTag","asyncTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","arraySome","predicate","mapToArray","setToArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","nativeObjectToString","reIsNative","Buffer","Uint8Array","symToStringTag","toStringTag","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","Map","Promise","Set","WeakMap","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","eq","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseIsArguments","isObjectLike","bitmask","customizer","stack","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","isFunction","baseKeys","Ctor","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","pairs","resIndex","arrayFilter","symbol","ArrayBuffer","resolve","ctorString","isLength","baseUnary","maximumFractionDigits","_reactIs","isValidElementType","_inDOM2","_componentOrElement2","_getContainer2","_LegacyPortal2","Portal","getMountNode","_portalContainerNode","UNSAFE_componentWillMount","setContainer","onRendered","_mountOverlayTarget","_overlayTarget","_unmountOverlayTarget","_renderOverlay","overlay","initialRender","_overlayInstance","unstable_renderSubtreeIntoContainer","_unrenderOverlay","unmountComponentAtNode","_isMounted","_calculatePosition2","Position","getTarget","targetElement","maybeUpdatePosition","placementChanged","_lastTarget","updatePosition","positionLeft","positionTop","arrowOffsetLeft","arrowOffsetTop","_needsFlush","_state","arrowPosition","overlayNode","childOffset","_offset2","_position2","_getOffset2","overlayHeight","overlayWidth","topDelta","containerDimensions","getContainerDimensions","containerScroll","containerHeight","topEdgeOffset","bottomEdgeOffset","getTopDelta","leftDelta","containerWidth","leftEdgeOffset","rightEdgeOffset","getLeftDelta","_scrollTop2","containerNode","_getOffset","parentOffset","_style","_offsetParent","_offset","nodeName","_scrollTop","_scrollLeft","_extends2","rHyphen","chr","_hyphenate","rUpper","opener","currentStyle","rnumnonpx","rposition","runStyle","runtimeStyle","rsLeft","pixelLeft","removeProperty","removeAttribute","animationEnd","animationDelay","animationTiming","animationDuration","animationName","transitionEnd","transitionDuration","transitionDelay","transitionTiming","transitionProperty","_inDOM","_getTransitionPropert","vendorMap","Moz","Webkit","ms","vendor","getTransitionProperties","timing","supportedTransforms","_contains2","_addEventListener2","escapeKeyCode","RootCloseWrapper","addEventListeners","documentMouseCaptureListener","handleMouseCapture","documentMouseListener","handleMouse","documentKeyupListener","removeEventListeners","preventMouseRootClose","isLeftClickEvent","_on2","_off2","startTime","now","gap","interrupt","elapsed","isScrollBehaviorSupported","scrollRight","behavior","factory","__WEBPACK_EXTERNAL_MODULE_1__","modules","installedModules","__webpack_require__","moduleId","NODE_ENV","REACT_ELEMENT_TYPE","for","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","nextTick","browser","argv","versions","addListener","once","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","dir","umask","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","validateFormat","format","condition","argIndex","framesToPop","warning","printWarning","_mean","_mean2","dataMean","sqDiff","pow","avgSqDiff","sqrt","SparklinesText","SparklinesNormalBand","SparklinesReferenceLine","SparklinesSpots","SparklinesBars","SparklinesCurve","SparklinesLine","Sparklines","_SparklinesText2","_SparklinesLine2","_SparklinesCurve2","_SparklinesBars2","_SparklinesSpots2","_SparklinesReferenceLine2","_SparklinesNormalBand2","_dataToPoints2","limit","svgWidth","svgHeight","preserveAspectRatio","points","svgOpts","invariant","ReactPropTypesSecret","checkPropTypes","throwOnDirectAccess","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","ANONYMOUS","ReactPropTypes","createPrimitiveTypeChecker","createChainableTypeChecker","typeChecker","PropTypeError","getPropType","instanceOf","expectedClass","expectedClassName","isNode","objectOf","expectedValues","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","shapeTypes","manualPropTypeCallCache","manualPropTypeWarningCount","secret","expectedType","getPreciseType","iteratorFn","maybeIterable","getIteratorFn","isSymbol","loggedTypeFailures","typeSpecs","getStack","typeSpecName","ex","shim","getShim","linePoints","closePolyPoints","fillPoints","lineStyle","stroke","strokeLinejoin","strokeLinecap","fill","fillStyle","tooltips","cy","_props$divisor","divisor","prev","curve","barWidth","marginWidth","sign","spotColors","startSpot","endSpot","lastDirection","dataProcessing","newObj","_interopRequireWildcard","ypoints","x1","y1","x2","y2","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","small","inline","classCallCheck","AwaitValue","AsyncGenerator","gen","front","back","resume","settle","err","reject","_invoke","return","asyncIterator","throw","createClass","scrollBehavior","ScrollContainer","routerProps","registerElement","unregisterElement","SessionStorage","stateKey","getStateKey","sessionStorage","getItem","storedValue","setItem","stateKeyBase","propTypes$1","ScrollContext","getRouterProps","ScrollBehaviorConstructor","addTransitionHook","stateStorage","getCurrentLocation","updateScroll","stop","ScrollBehaviorContext","_mapToZero2","_stripStyle2","_stepper4","_mergeDiff2","_performanceNow2","_raf2","_shouldStopAnimation2","msPerFrame","rehydrateStyles","mergedPropsStyles","unreadPropStyles","plainStyles","cUnreadPropStyles","mergedPropsStyle","mergeAndSync","willEnter","willLeave","didLeave","oldMergedPropsStyles","destStyles","oldCurrentStyles","oldCurrentVelocities","oldLastIdealStyles","oldLastIdealVelocities","newMergedPropsStyles","oldIndex","oldMergedPropsStyle","leavingStyle","newCurrentStyles","newCurrentVelocities","newLastIdealStyles","newLastIdealVelocities","newMergedPropsStyleCell","foundOldIndex","plainStyle","velocity","TransitionMotion","unmounting","animationID","prevTime","accumulatedTime","clearUnreadPropStyle","_mergeAndSync","currentStyles","currentVelocities","lastIdealStyles","lastIdealVelocities","unreadPropStyle","dirty","styleValue","startAnimationIfNecessary","timestamp","propStyles","shouldStopAnimationAll","timeDelta","currentFrameCompletion","framesToCatchUp","_mergeAndSync2","newMergedPropsStyle","newCurrentStyle","newCurrentVelocity","newLastIdealStyle","newLastIdealVelocity","newLastIdealStyleValue","newLastIdealVelocityValue","_stepper","stiffness","damping","precision","_stepper2","nextIdealX","nextIdealV","styleThatEntered","defaultStyleCell","_mergeAndSync3","cancel","hydratedStyles","renderedChildren","toggle","toggle_visible","loaded","hoverToPlay","play","pause","canvas","getAutoPlay","autoplay","attachment","_decode","useBlurhash","pixels","getContext","imageData","ImageData","putImageData","standalone","letterbox","displayWidth","thumbnail","setCanvasRef","previewUrl","previewWidth","originalUrl","originalWidth","hasSize","srcSet","sizes","objectPosition","onLoad","handleImageLoad","controls","autoPlay","isIOS","handleMouseEnter","handleMouseLeave","loop","muted","MediaGallery","displayMedia","defaultWidth","onToggleVisibility","cacheWidth","isStandaloneEligible","spoilerButton","fullwidth","take","uncached","computedClass","handleOpen","domParser","DOMParser","addAutoPlay","parseFromString","innerHTML","Card","embedded","card","Immutable","fromJS","description","original","handlePhotoClick","renderVideo","maxDescription","compact","parser","cut","provider","decodeIDNA","hostname","horizontal","interactive","ratio","embed","iconVariant","handleEmbedClick","fillRule","pageX","pageY","isFullSizeEligible","cropImages","public","unlisted","private","VisibilityIcon","withLabel","visibilityIcon","aria-hidden","Queue","Infinity","pollId","poll","Poll","EmojiPicker","emoji_search","emoji_not_found","search_results","food","travel","getFrequentlyUsedEmojis","emojiCounters","keySeq","getCustomEmojis","aShort","bShort","ModifierPickerMenu","onClose","attachListeners","removeListeners","handleDocumentClick","data-index","useSystemEmojiFont","ModifierPicker","onOpen","handleSelect","EmojiPickerMenu","modifierOpen","onPick","onSkinTone","loading","custom_emojis","frequentlyUsedEmojis","categoriesSort","categoriesFromEmojis","selecting","buildCustomEmojis","getI18n","handleModifierOpen","handleModifierClose","handleModifierChange","EmojiPickerDropdown","onPickEmoji","changeSetting","useEmoji","dropdown","EmojiPickerAsync","EmojiMart","catch","onHideDropdown","onShowDropdown","setTargetRef","aria-expanded","onToggle","findTarget","createBackoff","WebSocketImpl","WebSocket","WebSocketClient","protocols","reconnectEnabled","backoff","onReady","onBackoffReady","reconnect","isReconnect","binaryType","ws","onclose","onCloseCallback","onerror","onErrorCallback","onmessage","onMessageCallback","onopen","onOpenCallback","code","reason","send","bufferedAmount","readyState","extensions","protocol","CONNECTING","OPEN","CLOSING","CLOSED","uniqueDefaults","ReplyIndicator","onCancel","attachments","inverted","inReplyTo","cancelReplyCompose","AutosuggestAccount","AutosuggestHashtag","weeklyUses","total","uses","textAtCursorMatchesToken","caretPosition","word","AutosuggestTextarea","suggestionsHidden","focused","selectedSuggestion","lastToken","tokenStart","selectionStart","onSuggestionsFetchRequested","onSuggestionsClearRequested","which","onSuggestionSelected","suggestion","textarea","clipboardData","files","onPaste","inner","onSuggestionClick","setTextarea","aria-autocomplete","renderSuggestion","searchTokens","AutosuggestInput","maxLength","setInput","option_placeholder","add_option","remove_option","poll_duration","single_choice","multiple_choices","minutes","hours","days","onClearSuggestions","onFetchSuggestions","isPollMultiple","pollLimits","max_option_chars","handleOptionTitleChange","handleOptionRemove","PollForm","onAddOption","onChangeSettings","isMultiple","expiresIn","onChangeOption","onRemoveOption","max_options","handleAddOption","handleSelectMultiple","handleSelectDuration","addPollOption","removePollOption","changePollOption","changePollSettings","clearComposeSuggestions","fetchComposeSuggestions","selectComposeSuggestion","progress","UploadProgress","Upload","onUndo","onOpenFocalPoint","focusX","focusY","defaultStyle","scale","spring","handleUndoClick","handleFocalPointClick","find","undoUploadCompose","submitCompose","marked","unmarked","SensitiveButton","spoilersAlwaysOn","changeComposeSensitivity","UploadForm","mediaIds","Warning","scaleX","scaleY","APPROX_HASHTAG_RE","needsLockWarning","hashtagWarning","directMessageWarning","locked","iconStyle","TextIconButton","ariaControls","aria-controls","springMotion","ComposerOptionsDropdownContent","openedViaKeyboard","findIndex","childNodes","lastChild","focusedItem","lengthy","setFocusRef","renderItem","ComposerOptionsDropdown","needsModalUpdate","onModalOpen","isUserTouching","onModalClose","modal","handleMakeModal","handleClose","handleMouseDown","handleToggle","actions","rest","onPassiveClick","handleUpdate","handleButtonKeyDown","onKeyPress","handleKeyPress","advanced_options_icon_title","attach","change_privacy","content_type","direct_long","direct_short","doodle","local_only_long","local_only_short","markdown","bbcode","plain","private_long","private_short","public_long","public_short","spoiler","threaded_mode_long","threaded_mode_short","unlisted_long","unlisted_short","upload","add_poll","remove_poll","ComposerOptions","onUpload","fileElement","onDoodleOpen","advancedOptions","acceptContentTypes","contentType","allowMedia","allowPoll","hasMedia","hasPoll","onChangeAdvancedOption","onChangeContentType","onChangeVisibility","onTogglePoll","onToggleSpoiler","privacy","resetFileKey","showContentTypeChoice","privacyItems","contentTypeItems","handleChangeFiles","handleRefFileElement","multiple","handleClickAttach","pending_media","changeComposeAdvancedOption","changeComposeContentType","removePoll","addPoll","noEsc","closeModal","Options","publish","publishLoud","Publisher","countText","onSecondarySubmit","sideArm","diff","maxChars","over","localOnly","threadedMode","iconMap","TextareaIcons","missingDescriptionMessage","missingDescriptionConfirm","spoiler_placeholder","ComposeForm","overriddenVisibility","uploadForm","isSubmitting","isChangingUpload","isUploading","anyMedia","mediaDescriptionConfirmation","onMediaDescriptionConfirm","firstWithoutDescription","onChangeSpoilerText","composeForm","handleSecondarySubmit","textareaComponent","spoilerComponent","singleColumn","selectionEnd","focusDate","preselectDate","preselectOnReply","setSelectionRange","handleEmoji","handleRefTextarea","layout","onChangeSpoilerness","showSearch","disabledButton","handleChangeSpoiler","handleRefSpoilerText","onSpoilerSuggestionSelected","setAutosuggestTextarea","isMobile","vote","choices","voteRequest","api","post","importFetchedPoll","voteSuccess","voteFail","fetchPoll","fetchPollRequest","fetchPollSuccess","fetchPollFail","closed","voted","expired","tmp","_toggleOption","getDerivedStateFromProps","expires_at","_setupTimer","_timer","renderOption","optionIndex","showResults","pollVotesCount","percent","filterNot","titleEmojified","emojiMap","toJS","emojify","escapeTextContentForBrowser","selectable","handleOptionChange","handleOptionKeyPress","aria-checked","round","timeRemaining","futureDate","votesCount","handleVote","handleRefresh","_scrollLeft2","_requestAnimationFrame2","_invariant2","_utils","MAX_SCROLL_ATTEMPTS","ScrollBehavior","_onWindowScroll","_saveWindowPositionHandle","_saveWindowPosition","_windowScrollTarget","xTarget","yTarget","_cancelCheckWindowScroll","_savePosition","_checkWindowScrollPosition","_checkWindowScrollHandle","scrollToTarget","_numWindowScrollAttempts","_stateStorage","_getCurrentLocation","_shouldUpdateScroll","isMobileSafari","_oldScrollRestoration","scrollRestoration","_scrollElements","_removeTransitionHook","scrollElement","savePositionHandle","_saveElementPosition","saveElementPosition","_updateElementScroll","_scrollElements$key","prevContext","_updateWindowScroll","save","_getScrollTarget","_scrollElements$key2","_getDefaultScrollTarget","_getSavedScrollTarget","read","getElementsByName","_target","REACT_STATICS","getDefaultProps","mixins","KNOWN_STATICS","caller","arity","getOwnPropertyNames","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","AnimatedNumber","reduceMotion","DropdownMenu","getElementsByTagName","handleItemKeyPress","Dropdown","openDropdownId","handleItemClick","dropdownPlacement","isModalOpen","modalType","onItemClick","keyboard","fetchRelationships","openDropdownMenu","closeDropdownMenu","logOut","form","methodInput","csrfToken","Rails","csrfParam","csrfInput","submitButton","ColumnHeader","columnHeaderId","iconElement","prevKeyIndex","nextKeyIndex","nextOrderA","nextOrderB","prevOrderA","prevOrderB","pivot","compatRaf","raf","curr","req","getKey","rafKey","cb","platform","objectWithoutProperties","FocusTrap","hasChanged","HotKeys","hotKeyParent","hotKeyMap","__hotKeyMap__","updateMap","buildMap","keyMap","__mousetrap__","updateHotKeys","childHandledSequence","reset","syncHandlersToMousetrap","getMap","sequencesFromKeyMap","sequence","__isFocused__","__lastChildSequence__","withHotKeys","_setRef","hotKeyHandlers","HotKeyMapMixin","_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","Mousetrap","_bindMultiple","unbind","trigger","_directMap","_callbacks","stopCallback","_belongsTo","ancestor","isContentEditable","handleKey","_handleKey","addKeycodes","documentMousetrap","_addEvent","_characterFromEvent","character","_isModifier","_pickBestAction","modifiers","_getReverseMap","_getKeyInfo","combination","_keysFromString","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","modifiers1","modifiers2","seq","deleteCombo","combo","deleteSequence","_fireCallback","returnValue","_preventDefault","cancelBubble","_stopPropagation","_handleKeyEvent","_eventModifiers","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","wrappedCallback","_bindSingle","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","Backoff","exponential","attempt","fibonacci","attempts","initialDelay","wrappedComponentRef","remainingProps","routeComponentProps","WrappedComponent","Column","scrollable","_interruptScrollAnimation","heading","hideHeadingOnMobile","showHeading","header","handleHeaderClick","data-column","aria-labelledby","moveLeft","moveRight","collapsed","animating","skip","onMove","historyBack","pinned","extraContent","pinButton","moveButtons","backButton","collapseButton","extraButton","appendContent","wrapperClassName","buttonClassName","collapsibleClassName","collapsibleButtonClassName","handlePin","handleMoveLeft","handleMoveRight","handleBackClick","collapsedContent","aria-pressed","handleToggleClick","hasTitle","handleTitleClick","onTransitionEnd","handleTransitionEnd","extraClasses","ColumnBackButtonSlim","randomIntUpTo","knownEventTypes","connectStream","pollingRefresh","onConnect","onDisconnect","onReceive","streamingAPIBaseURL","accessToken","polling","clearPolling","subscription","stream","connected","received","disconnected","reconnected","onreconnect","es","EventSource","firstConnect","payload","getStream","setupPolling","getLocale","connectTimelineStream","accept","locale","connectTimeline","disconnectTimeline","updateTimeline","deleteFromTimelines","updateNotifications","updateConversations","fetchFilters","updateAnnouncements","updateAnnouncementsReaction","deleteAnnouncement","refreshHomeTimelineAndNotification","expandHomeTimeline","expandNotifications","fetchAnnouncements","connectUserStream","connectCommunityStream","onlyMedia","connectPublicStream","connectHashtagStream","connectDirectStream","connectListStream","NavigationBar","Hashtag","rawCount","markForDeletion","NotificationOverlay","mark","notification","onMarkForDelete","onToggleMark","yes","markNotificationForDelete","taskQueue","runningRequestIdleCallback","runTasks","deadline","requestIdleCallback","task","submitted","changeSearch","clearSearch","submitSearch","onShow","SearchPopout","extraInformation","expanded","searchForm","openInRoute","AvatarOverlay","animate","baseStyle","overlayStyle","data-avatar-of","AvatarComposite","onAccountClick","autoUnfoldCW","filters","logout","bookmarks","onLogout","handleLogout","StatusPrepend","parseClick","link","Message","StatusHeader","statusAvatar","otherAccounts","others","collapse","uncollapse","previewCard","pictures","video","audio","StatusIcons","setCollapsed","mediaIconTitleText","mediaIcon","collapsible","directMessage","handleCollapsedClick","delete","redraft","reply","more","replyAll","reblog_private","cannot_reblog","muteConversation","unmuteConversation","admin_status","copy","StatusActionBar","_openInteractionDialog","textContent","execCommand","onFilter","replyIcon","replyTitle","withDismiss","showReplyCount","mutingConversation","anonymousAccess","publicStatus","reblogDisabled","reblogMessage","handleCopy","handleEmbed","handleConversationMuteClick","handlePinClick","handleDeleteClick","handleMentionClick","handleDirectClick","handleMuteClick","handleBlockClick","deleteOthersNotice","shareButton","handleShareClick","filterButton","handleFilterClick","replyButton","handleReplyClick","pressed","handleReblogClick","handleFavouriteClick","handleBookmarkClick","ariaLabel","textForScreenReader","rebloggedByText","defaultMediaVisibility","autoCollapsed","isExpanded","showMedia","revealBehindCW","showCard","forceFilter","setExpansion","destination","getSelection","removeAllRanges","handleToggleMediaVisibility","updated","collapseProp","expandedProp","autoCollapseSettings","doShowCard","renderLoadingMediaGallery","renderLoadingVideoPlayer","renderLoadingAudioPlayer","unread","handleHotkeyReply","handleHotkeyFavourite","boost","handleHotkeyBoost","handleHotkeyMention","handleHotkeyOpen","openProfile","handleHotkeyOpenProfile","moveUp","handleHotkeyMoveUp","moveDown","handleHotkeyMoveDown","toggleSpoiler","handleExpandedToggle","handleHotkeyBookmark","toggleCollapse","handleHotkeyCollapse","toggleSensitive","handleHotkeyToggleSensitive","openMedia","handleHotkeyOpenMedia","filtered","minHandlers","handleUnfilterClick","fetchComponent","Audio","peaks","Video","blurhash","preventPlayback","handleOpenVideo","selectorAttribs","reblogged_by","data-featured","notificationId","onExpandedToggle","tagLinks","rewriteMentions","cancel_reblog_private","removeBookmark","relationship","reblogIcon","_properStatus","toggleHidden","handleHotkeyToggleHidden","display_name_html","handleExpandClick","collapsable","onCollapsedToggle","handleCollapsedToggle","activeStyle","getIsActive","ariaCurrent","escapedPath"],"mappings":"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CACDD,KAAM,KACNC,QAAS,mBACR,CACDD,KAAM,IACNC,QAAS,2LACR,CACDD,KAAM,IACNC,QAAS,2CACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,IACNC,QAAS,+HACR,CACDD,KAAM,IACNC,QAAS,qCACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,IACNC,QAAS,mHACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,uDACR,CACDD,KAAM,IACNC,QAAS,uGACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,yQACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mEACR,CACDD,KAAM,IACNC,QAAS,2CACR,CACDD,KAAM,IACNC,QAAS,6GACR,CACDD,KAAM,IACNC,QAAS,6GACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mNACR,CACDD,KAAM,IACNC,QAAS,uDACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,mEACR,CACDD,KAAM,IACNC,QAAS,qCACR,CACDD,KAAM,IACNC,QAAS,iGACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,IACNC,QAAS,yNACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,yBACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,KACNC,QAAS,mBACR,CACDD,KAAM,KACNC,QAAS,aACR,CACDD,KAAM,IACNC,QAAS,6DACR,CACDD,KAAM,IACNC,QAAS,qFACR,CACDD,KAAM,IACNC,QAAS,2FACR,CACDD,KAAM,KACNC,QAAS,mBACR,CACDD,KAA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","file":"common.js","sourcesContent":["\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 'flavours/glitch/util/schedule_idle_task';\nimport getRectFromEntry from 'flavours/glitch/util/get_rect_from_entry';\n\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 // If we are and remain hidden, diff based on props\n if (isUnrendered) {\n return !updateOnPropsForUnrendered.every(prop => nextProps[prop] === this.props[prop]);\n }\n // Else, assume the children have changed\n return true;\n }\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","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class LoadPending extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n count: PropTypes.number,\n }\n\n render() {\n const { count } = this.props;\n\n return (\n <button className='load-more load-gap' onClick={this.props.onClick}>\n <FormattedMessage id='load_pending' defaultMessage='{count, plural, one {# new item} other {# new items}}' values={{ count }} />\n </button>\n );\n }\n\n}\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 LoadPending from './load_pending';\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 onLoadPending: 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 numPending: PropTypes.number,\n prepend: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n emptyMessage: PropTypes.node,\n children: PropTypes.node,\n bindToDocument: PropTypes.bool,\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 = this.getScrollTop();\n const scrollHeight = this.getScrollHeight();\n const clientHeight = this.getClientHeight();\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.getScrollTop() !== newScrollTop) {\n this.lastScrollWasSynthetic = true;\n\n if (this.props.bindToDocument) {\n document.scrollingElement.scrollTop = newScrollTop;\n } else {\n this.node.scrollTop = newScrollTop;\n }\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.getScrollTop() === 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.getScrollTop() > 0 || this.mouseMovedRecently)) {\n return { height: this.getScrollHeight(), top: this.getScrollTop() };\n } else {\n return null;\n }\n }\n\n getScrollTop = () => {\n return this.props.bindToDocument ? document.scrollingElement.scrollTop : this.node.scrollTop;\n }\n\n getScrollHeight = () => {\n return this.props.bindToDocument ? document.scrollingElement.scrollHeight : this.node.scrollHeight;\n }\n\n getClientHeight = () => {\n return this.props.bindToDocument ? document.scrollingElement.clientHeight : this.node.clientHeight;\n }\n\n updateScrollBottom = (snapshot) => {\n const newScrollTop = this.getScrollHeight() - 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 const pendingChanged = (prevProps.numPending > 0) !== (this.props.numPending > 0);\n\n if (pendingChanged || someItemInserted && (this.getScrollTop() > 0 || this.mouseMovedRecently)) {\n return this.getScrollHeight() - this.getScrollTop();\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.updateScrollBottom(snapshot);\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 if (this.props.bindToDocument) {\n document.addEventListener('scroll', this.handleScroll);\n document.addEventListener('wheel', this.handleWheel);\n } else {\n this.node.addEventListener('scroll', this.handleScroll);\n this.node.addEventListener('wheel', this.handleWheel);\n }\n }\n\n detachScrollListener () {\n if (this.props.bindToDocument) {\n document.removeEventListener('scroll', this.handleScroll);\n document.removeEventListener('wheel', this.handleWheel);\n } else {\n this.node.removeEventListener('scroll', this.handleScroll);\n this.node.removeEventListener('wheel', this.handleWheel);\n }\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 handleLoadPending = e => {\n e.preventDefault();\n this.props.onLoadPending();\n // Prevent the weird scroll-jumping behavior, as we explicitly don't want to\n // scroll to top, and we know the scroll height is going to change\n this.scrollToTopOnMouseIdle = false;\n this.lastScrollWasSynthetic = false;\n this.clearMouseIdleTimer();\n this.mouseIdleTimer = setTimeout(this.handleMouseIdle, MOUSE_IDLE_DELAY);\n this.mouseMovedRecently = true;\n }\n\n render () {\n const { children, scrollKey, trackScroll, shouldUpdateScroll, showLoading, isLoading, hasMore, numPending, 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 const loadPending = (numPending > 0) ? <LoadPending count={numPending} onClick={this.handleLoadPending} /> : 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 {loadPending}\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","\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","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\n\nexport default class LoadPending extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n count: PropTypes.number,\n }\n\n render() {\n const { count } = this.props;\n\n return (\n <button className='load-more load-gap' onClick={this.props.onClick}>\n <FormattedMessage id='load_pending' defaultMessage='{count, plural, one {# new item} other {# new items}}' values={{ count }} />\n </button>\n );\n }\n\n}\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 LoadPending from './load_pending';\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 onLoadPending: 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 numPending: PropTypes.number,\n prepend: PropTypes.node,\n alwaysPrepend: PropTypes.bool,\n emptyMessage: PropTypes.node,\n children: PropTypes.node,\n bindToDocument: PropTypes.bool,\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 = this.getScrollTop();\n const scrollHeight = this.getScrollHeight();\n const clientHeight = this.getClientHeight();\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 _getScrollingElement = () => {\n if (this.props.bindToDocument) {\n return (document.scrollingElement || document.body);\n } else {\n return this.node;\n }\n }\n\n setScrollTop = newScrollTop => {\n if (this.getScrollTop() !== newScrollTop) {\n this.lastScrollWasSynthetic = true;\n\n this._getScrollingElement().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.getScrollTop() === 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.getScrollTop() > 0 || this.mouseMovedRecently)) {\n return { height: this.getScrollHeight(), top: this.getScrollTop() };\n } else {\n return null;\n }\n }\n\n getScrollTop = () => {\n return this._getScrollingElement().scrollTop;\n }\n\n getScrollHeight = () => {\n return this._getScrollingElement().scrollHeight;\n }\n\n getClientHeight = () => {\n return this._getScrollingElement().clientHeight;\n }\n\n updateScrollBottom = (snapshot) => {\n const newScrollTop = this.getScrollHeight() - 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 const pendingChanged = (prevProps.numPending > 0) !== (this.props.numPending > 0);\n\n if (pendingChanged || someItemInserted && (this.getScrollTop() > 0 || this.mouseMovedRecently)) {\n return this.getScrollHeight() - this.getScrollTop();\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.getScrollHeight() - 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\n detachFullscreenListener(this.onFullScreenChange);\n }\n\n onFullScreenChange = () => {\n this.setState({ fullscreen: isFullscreen() });\n }\n\n attachIntersectionObserver () {\n let nodeOptions = {\n root: this.node,\n rootMargin: '300% 0px',\n };\n\n this.intersectionObserverWrapper\n .connect(this.props.bindToDocument ? {} : nodeOptions);\n }\n\n detachIntersectionObserver () {\n this.intersectionObserverWrapper.disconnect();\n }\n\n attachScrollListener () {\n if (this.props.bindToDocument) {\n document.addEventListener('scroll', this.handleScroll);\n document.addEventListener('wheel', this.handleWheel);\n } else {\n this.node.addEventListener('scroll', this.handleScroll);\n this.node.addEventListener('wheel', this.handleWheel);\n }\n }\n\n detachScrollListener () {\n if (this.props.bindToDocument) {\n document.removeEventListener('scroll', this.handleScroll);\n document.removeEventListener('wheel', this.handleWheel);\n } else {\n this.node.removeEventListener('scroll', this.handleScroll);\n this.node.removeEventListener('wheel', this.handleWheel);\n }\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 handleLoadPending = e => {\n e.preventDefault();\n this.props.onLoadPending();\n // Prevent the weird scroll-jumping behavior, as we explicitly don't want to\n // scroll to top, and we know the scroll height is going to change\n this.scrollToTopOnMouseIdle = false;\n this.lastScrollWasSynthetic = false;\n this.clearMouseIdleTimer();\n this.mouseIdleTimer = setTimeout(this.handleMouseIdle, MOUSE_IDLE_DELAY);\n this.mouseMovedRecently = true;\n }\n\n render () {\n const { children, scrollKey, trackScroll, shouldUpdateScroll, showLoading, isLoading, hasMore, numPending, 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 const loadPending = (numPending > 0) ? <LoadPending count={numPending} onClick={this.handleLoadPending} /> : 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 || numPending > 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 {loadPending}\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","\"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","var core = module.exports = {\n version: '2.6.1'\n};\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef","var store = require('./_shared')('wks');\n\nvar uid = require('./_uid');\n\nvar Symbol = require('./_global').Symbol;\n\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\n\nconst MissingIndicator = ({ fullPage }) => (\n <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>\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);\n\nMissingIndicator.propTypes = {\n fullPage: PropTypes.bool,\n};\n\nexport default MissingIndicator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\n\nconst MissingIndicator = ({ fullPage }) => (\n <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>\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);\n\nMissingIndicator.propTypes = {\n fullPage: PropTypes.bool,\n};\n\nexport default MissingIndicator;\n","import _extends from '../../polyfills/extends';\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\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, {\n data: data\n});\nexport default Emoji;","import { connect } from 'react-redux';\nimport StatusList from 'flavours/glitch/components/status_list';\nimport { scrollTopTimeline, loadPending } 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 getRegex = createSelector([\n (state, { type }) => state.getIn(['settings', type, 'regex', 'body']),\n], (rawRegex) => {\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 return regex;\n});\n\nconst makeGetStatusIds = (pending = false) => createSelector([\n (state, { type }) => state.getIn(['settings', type], ImmutableMap()),\n (state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : 'items'], ImmutableList()),\n (state) => state.get('statuses'),\n getRegex,\n], (columnSettings, statusIds, statuses, regex) => {\n const rawRegex = columnSettings.getIn(['regex', 'body'], '').trim();\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 const getPendingStatusIds = makeGetStatusIds(true);\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 numPending: getPendingStatusIds(state, { type: timelineId }).size,\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 onLoadPending: () => dispatch(loadPending(timelineId)),\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(StatusList);\n","var _Object = Object;\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};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func\n: Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef","import { connect } from 'react-redux';\nimport StatusList from '../../../components/status_list';\nimport { scrollTopTimeline, loadPending } 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 = (pending = false) => createSelector([\n (state, { type }) => state.getIn(['settings', type], ImmutableMap()),\n (state, { type }) => state.getIn(['timelines', type, pending ? 'pendingItems' : '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 const getPendingStatusIds = makeGetStatusIds(true);\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 numPending: getPendingStatusIds(state, { type: timelineId }).size,\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 onLoadPending: () => dispatch(loadPending(timelineId)),\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(StatusList);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nconst MissingIndicator = () => (\n <div className='regeneration-indicator'>\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading&hellip;' />\n <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />\n </div>\n </div>\n);\n\nexport default MissingIndicator;\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 RegenerationIndicator from 'flavours/glitch/components/regeneration_indicator';\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, true);\n }\n\n handleMoveDown = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) + 1;\n this._selectChild(elementIndex, false);\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, align_top) {\n const container = this.node.node;\n const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n if (align_top && container.scrollTop > element.offsetTop) {\n element.scrollIntoView(true);\n } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {\n element.scrollIntoView(false);\n }\n element.focus();\n }\n }\n\n 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 <RegenerationIndicator />;\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';\n\nconst MissingIndicator = () => (\n <div className='regeneration-indicator'>\n <div className='regeneration-indicator__label'>\n <FormattedMessage id='regeneration_indicator.label' tagName='strong' defaultMessage='Loading&hellip;' />\n <FormattedMessage id='regeneration_indicator.sublabel' defaultMessage='Your home feed is being prepared!' />\n </div>\n </div>\n);\n\nexport default MissingIndicator;\n","import { debounce } from 'lodash';\nimport React from 'react';\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';\nimport RegenerationIndicator from 'mastodon/components/regeneration_indicator';\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, true);\n }\n\n handleMoveDown = (id, featured) => {\n const elementIndex = this.getCurrentStatusIndex(id, featured) + 1;\n this._selectChild(elementIndex, false);\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, align_top) {\n const container = this.node.node;\n const element = container.querySelector(`article:nth-of-type(${index + 1}) .focusable`);\n\n if (element) {\n if (align_top && container.scrollTop > element.offsetTop) {\n element.scrollIntoView(true);\n } else if (!align_top && container.scrollTop + container.clientHeight < element.offsetTop + element.offsetHeight) {\n element.scrollIntoView(false);\n }\n element.focus();\n }\n }\n\n 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 <RegenerationIndicator />;\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","var _String = String;\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\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\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\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\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\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';\nvar _JSON = JSON;\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 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 customCategory = emoji.customCategory;\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 customCategory: customCategory,\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 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\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\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} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\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 document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n}\n\nexport { getData, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar };","var global = require('./_global');\n\nvar core = require('./_core');\n\nvar ctx = require('./_ctx');\n\nvar hide = require('./_hide');\n\nvar has = require('./_has');\n\nvar PROTOTYPE = 'prototype';\n\nvar $export = function $export(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\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue; // export native or passed\n\n out = own ? target[key] : source[key]; // prevent global pollution for namespaces\n\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? function (C) {\n var F = function F(a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0:\n return new C();\n\n case 1:\n return new C(a);\n\n case 2:\n return new C(a, b);\n }\n\n return new C(a, b, c);\n }\n\n return C.apply(this, arguments);\n };\n\n F[PROTOTYPE] = C[PROTOTYPE];\n return F; // make static versions for prototype methods\n }(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n}; // type bitmap\n\n\n$export.F = 1; // forced\n\n$export.G = 2; // global\n\n$export.S = 4; // static\n\n$export.P = 8; // proto\n\n$export.B = 16; // bind\n\n$export.W = 32; // wrap\n\n$export.U = 64; // safe\n\n$export.R = 128; // real proto method for `library`\n\nmodule.exports = $export;","var dP = require('./_object-dp');\n\nvar createDesc = require('./_property-desc');\n\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};","var anObject = require('./_an-object');\n\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\n\nvar toPrimitive = require('./_to-primitive');\n\nvar dP = Object.defineProperty;\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) {\n /* empty */\n }\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};","var isObject = require('./_is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n});","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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 ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\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 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 emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\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 emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nmodule.exports = {\n buildSearch: buildSearch,\n compress: compress,\n uncompress: uncompress\n};","import PropTypes from 'prop-types';\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};\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};\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};\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};\nexport { EmojiPropTypes, EmojiDefaultProps, PickerPropTypes, PickerDefaultProps };","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';\nimport ColumnHeader from '../../../components/column_header';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nconst messages = defineMessages({\n profile: { id: 'column_header.profile', defaultMessage: 'Profile' },\n});\n\nexport default @injectIntl\nclass ProfileColumnHeader extends React.PureComponent {\n\n static propTypes = {\n onClick: PropTypes.func,\n multiColumn: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n };\n\n render() {\n const { onClick, intl, multiColumn } = this.props;\n\n return (\n <ColumnHeader\n icon='user-circle'\n title={intl.formatMessage(messages.profile)}\n onClick={onClick}\n showBackButton\n multiColumn={multiColumn}\n />\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 bookmark,\n unreblog,\n unfavourite,\n unbookmark,\n pin,\n unpin,\n} from '../actions/interactions';\nimport {\n muteStatus,\n unmuteStatus,\n deleteStatus,\n hideStatus,\n revealStatus,\n toggleStatusCollapse,\n} from '../actions/statuses';\nimport {\n unmuteAccount,\n unblockAccount,\n} from '../actions/accounts';\nimport {\n blockDomain,\n unblockDomain,\n} from '../actions/domain_blocks';\nimport { initMuteModal } from '../actions/mutes';\nimport { initBlockModal } from '../actions/blocks';\nimport { initReport } from '../actions/reports';\nimport { 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 replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },\n replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },\n blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },\n});\n\nconst makeMapStateToProps = () => {\n const getStatus = makeGetStatus();\n\n const 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\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 if (status.get('reblogged')) {\n dispatch(unreblog(status));\n } else {\n dispatch(reblog(status));\n }\n },\n\n onReblog (status, e) {\n if ((e && e.shiftKey) || !boostModal) {\n this.onModalReblog(status);\n } else {\n dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog }));\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 onBookmark (status) {\n if (status.get('bookmarked')) {\n dispatch(unbookmark(status));\n } else {\n dispatch(bookmark(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 (status) {\n const account = status.get('account');\n dispatch(initBlockModal(account));\n },\n\n onUnblock (account) {\n dispatch(unblockAccount(account.get('id')));\n },\n\n onReport (status) {\n dispatch(initReport(status.get('account'), status));\n },\n\n onMute (account) {\n dispatch(initMuteModal(account));\n },\n\n onUnmute (account) {\n dispatch(unmuteAccount(account.get('id')));\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 onToggleCollapsed (status, isCollapsed) {\n dispatch(toggleStatusCollapse(status.get('id'), isCollapsed));\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});\n\nexport default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Status));\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","var _Object = Object;\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;\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\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;\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\n if (superClass) {\n _Object.setPrototypeOf ? _Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n}","var NAMESPACE = 'emoji-mart';\nvar _JSON = JSON;\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter = void 0;\nvar setter = void 0;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\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\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\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 {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import store from './store';\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'];\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 frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\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 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 {\n add: add,\n get: get\n};","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 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 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 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 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 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 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 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 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 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};\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';\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 _this.state = {\n selected: defaultCategory.name\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 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 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 return React.createElement('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 var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement('span', {\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: {\n color: isSelected ? color : null\n }\n }, React.createElement('div', {\n dangerouslySetInnerHTML: {\n __html: _this2.getSVG(iconId)\n }\n }), React.createElement('span', {\n className: 'emoji-mart-anchor-bar',\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport default Anchors;\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';\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 this.margin = 0;\n this.minMargin = 0;\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 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 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 if (name == 'Recent') {\n var custom = this.props.custom;\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\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 labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement('div', {\n ref: this.setContainerRef,\n className: 'emoji-mart-category ' + (emojis && !emojis.length ? 'emoji-mart-no-results' : ''),\n style: containerStyles\n }, React.createElement('div', {\n style: labelStyles,\n 'data-name': name,\n className: 'emoji-mart-category-label'\n }, React.createElement('span', {\n style: labelSpanStyles,\n ref: this.setLabelRef\n }, label)), emojis && emojis.map(function (emoji) {\n return NimbleEmoji(_extends({\n emoji: emoji,\n data: _this3.data\n }, emojiProps));\n }), emojis && !emojis.length && React.createElement('div', null, React.createElement('div', null, 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 }))), React.createElement('div', {\n className: 'emoji-mart-no-results-label'\n }, i18n.notfound)));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport default Category;\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';\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 = {\n emoji: null\n };\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 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 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 return React.createElement('div', {\n className: 'emoji-mart-preview'\n }, React.createElement('div', {\n className: 'emoji-mart-preview-emoji'\n }, NimbleEmoji(_extends({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement('div', {\n className: 'emoji-mart-preview-data'\n }, React.createElement('div', {\n className: 'emoji-mart-preview-name'\n }, emoji.name), React.createElement('div', {\n className: 'emoji-mart-preview-shortnames'\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement('span', {\n key: short_name,\n className: 'emoji-mart-preview-shortname'\n }, ':', short_name, ':');\n })), React.createElement('div', {\n className: 'emoji-mart-preview-emoticons'\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement('span', {\n key: emoticon,\n className: 'emoji-mart-preview-emoticon'\n }, emoticon);\n }))));\n } else {\n return React.createElement('div', {\n className: 'emoji-mart-preview'\n }, React.createElement('div', {\n className: 'emoji-mart-preview-emoji'\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_extends({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement('div', {\n className: 'emoji-mart-preview-data'\n }, React.createElement('span', {\n className: 'emoji-mart-title-label'\n }, title)), showSkinTones && React.createElement('div', {\n className: 'emoji-mart-preview-skins'\n }, React.createElement(Skins, skinsProps)));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport default Preview;\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 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 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 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 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 if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\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 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\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\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 aIndex[char] || (aIndex[char] = {});\n aIndex = aIndex[char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\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 aIndex.results.push(_this4.emojis[_id]);\n aIndex.pool[_id] = emoji;\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 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';\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 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 return React.createElement('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 return Search;\n}(React.PureComponent);\n\nexport default Search;\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 _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 if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\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 var skinToneNodes = [];\n\n for (var i = 0; i < 6; i++) {\n var skinTone = i + 1;\n var selected = skinTone == skin;\n skinToneNodes.push(React.createElement('span', {\n key: 'skin-tone-' + skinTone,\n className: 'emoji-mart-skin-swatch ' + (selected ? 'emoji-mart-skin-swatch-selected' : '')\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 return React.createElement('div', null, React.createElement('div', {\n className: 'emoji-mart-skin-swatches ' + (opened ? 'emoji-mart-skin-swatches-opened' : '')\n }, skinToneNodes));\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport default Skins;\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _Object$values from 'babel-runtime/core-js/object/values';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _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';\nimport React from 'react';\nimport PropTypes from 'prop-types';\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';\nimport { Anchors, Category, Preview, Search } from '..';\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.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\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 _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? 'custom-' + emoji.customCategory : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _extends({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories.push.apply(allCategories, _toConsumableArray(_Object$values(customCategories)));\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\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\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\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\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({\n skin: props.skin\n });\n } else if (props.defaultSkin && !store.get('skin')) {\n this.setState({\n skin: props.defaultSkin\n });\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({\n firstRender: false\n });\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 clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n }\n }, {\n key: 'testStickyPosition',\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = prefix + 'sticky';\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 } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\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({\n emoji: null\n });\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 var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n component.forceUpdate();\n window.requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\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 if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\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 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 window.requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: 'handleSkinChange',\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n };\n var onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\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 return React.createElement('div', {\n style: _extends({\n width: width\n }, style),\n className: 'emoji-mart',\n onKeyDown: this.handleKeyDown\n }, React.createElement('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 })), 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,\n autoFocus: autoFocus\n }), React.createElement('div', {\n ref: this.setScrollRef,\n className: 'emoji-mart-scroll',\n onScroll: this.handleScroll\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 : 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 })), showPreview && React.createElement('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 return NimblePicker;\n}(React.PureComponent);\n\nexport default NimblePicker;\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';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\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;\nPicker.defaultProps = _extends({}, PickerDefaultProps, {\n data: data\n});","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';\nimport { autoPlayGif, me, isStaff } from 'flavours/glitch/util/initial_state';\nimport { preferencesLink, profileLink, accountAdminLink } from 'flavours/glitch/util/backend_links';\nimport classNames from 'classnames';\nimport Icon from 'flavours/glitch/components/icon';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport Button from 'flavours/glitch/components/button';\nimport { shortNumberFormat } from 'flavours/glitch/util/numbers';\nimport { NavLink } from 'react-router-dom';\nimport DropdownMenuContainer from 'flavours/glitch/containers/dropdown_menu_container';\n\nconst messages = defineMessages({\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' },\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 mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },\n direct: { id: 'account.direct', defaultMessage: 'Direct message @{name}' },\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 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: 'Block domain {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {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: 'Blocked 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\nconst dateFormatOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n};\n\nexport default @injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n identity_props: ImmutablePropTypes.list,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n domain: PropTypes.string.isRequired,\n };\n\n openEditProfile = () => {\n window.open(profileLink, '_blank');\n }\n\n _updateEmojis () {\n const node = this.node;\n\n if (!node || autoPlayGif) {\n return;\n }\n\n const emojis = node.querySelectorAll('.custom-emoji');\n\n for (var i = 0; i < emojis.length; i++) {\n let emoji = emojis[i];\n if (emoji.classList.contains('status-emoji')) {\n continue;\n }\n emoji.classList.add('status-emoji');\n\n emoji.addEventListener('mouseenter', this.handleEmojiMouseEnter, false);\n emoji.addEventListener('mouseleave', this.handleEmojiMouseLeave, false);\n }\n }\n\n componentDidMount () {\n this._updateEmojis();\n }\n\n componentDidUpdate () {\n this._updateEmojis();\n }\n\n handleEmojiMouseEnter = ({ target }) => {\n target.src = target.getAttribute('data-original');\n }\n\n handleEmojiMouseLeave = ({ target }) => {\n target.src = target.getAttribute('data-static');\n }\n\n setRef = (c) => {\n this.node = c;\n }\n\n render () {\n const { account, intl, domain, identity_proofs } = this.props;\n\n if (!account) {\n return null;\n }\n\n let info = [];\n let actionBtn = '';\n let lockedIcon = '';\n let menu = [];\n\n if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {\n info.push(<span className='relationship-tag'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>);\n }\n else if (me !== account.get('id') && account.getIn(['relationship', 'blocking'])) {\n info.push(<span className='relationship-tag'><FormattedMessage id='account.blocked' defaultMessage='Blocked' /></span>);\n }\n\n if (me !== account.get('id') && account.getIn(['relationship', 'muting'])) {\n info.push(<span className='relationship-tag'><FormattedMessage id='account.muted' defaultMessage='Muted' /></span>);\n } else if (me !== account.get('id') && account.getIn(['relationship', 'domain_blocking'])) {\n info.push(<span className='relationship-tag'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain blocked' /></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 = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;\n } else if (!account.getIn(['relationship', 'blocking'])) {\n actionBtn = <Button className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;\n } else if (account.getIn(['relationship', 'blocking'])) {\n actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />;\n }\n } else if (profileLink) {\n actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />;\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 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 if (profileLink) menu.push({ text: intl.formatMessage(messages.edit_profile), href: profileLink });\n if (preferencesLink) menu.push({ text: intl.formatMessage(messages.preferences), href: preferencesLink });\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 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) {\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('username') }), href: accountAdminLink(account.get('id')) });\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 acct = account.get('acct').indexOf('@') === -1 && domain ? `${account.get('acct')}@${domain}` : account.get('acct');\n\n let badge;\n\n if (account.get('bot')) {\n badge = (<div className='account-role bot'><FormattedMessage id='account.badges.bot' defaultMessage='Bot' /></div>);\n } else if (account.get('group')) {\n badge = (<div className='account-role group'><FormattedMessage id='account.badges.group' defaultMessage='Group' /></div>);\n } else {\n badge = null;\n }\n\n return (\n <div className={classNames('account__header', { inactive: !!account.get('moved') })} ref={this.setRef}>\n <div className='account__header__image'>\n <div className='account__header__info'>\n {info}\n </div>\n\n <img src={autoPlayGif ? account.get('header') : account.get('header_static')} alt='' className='parallax' />\n </div>\n\n <div className='account__header__bar'>\n <div className='account__header__tabs'>\n <a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>\n <Avatar account={account} size={90} />\n </a>\n\n <div className='spacer' />\n\n <div className='account__header__tabs__buttons'>\n {actionBtn}\n\n <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />\n </div>\n </div>\n\n <div className='account__header__tabs__name'>\n <h1>\n <span dangerouslySetInnerHTML={displayNameHtml} /> {badge}\n <small>@{acct} {lockedIcon}</small>\n </h1>\n </div>\n\n <div className='account__header__extra'>\n <div className='account__header__bio'>\n { (fields.size > 0 || identity_proofs.size > 0) && (\n <div className='account__header__fields'>\n {identity_proofs.map((proof, i) => (\n <dl key={i}>\n <dt dangerouslySetInnerHTML={{ __html: proof.get('provider') }} />\n\n <dd className='verified'>\n <a href={proof.get('proof_url')} target='_blank' rel='noopener noreferrer'><span title={intl.formatMessage(messages.linkVerifiedOn, { date: intl.formatDate(proof.get('updated_at'), dateFormatOptions) })}>\n <Icon id='check' className='verified__mark' />\n </span></a>\n <a href={proof.get('profile_url')} target='_blank' rel='noopener noreferrer'><span dangerouslySetInnerHTML={{ __html: ' '+proof.get('provider_username') }} /></a>\n </dd>\n </dl>\n ))}\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 {account.get('note').length > 0 && account.get('note') !== '<p></p>' && <div className='account__header__content' dangerouslySetInnerHTML={content} />}\n </div>\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 { injectIntl, FormattedMessage, FormattedNumber } from 'react-intl';\nimport { me, isStaff } from 'flavours/glitch/util/initial_state';\nimport { profileLink, accountAdminLink } from 'flavours/glitch/util/backend_links';\nimport Icon from 'flavours/glitch/components/icon';\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 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 extraInfo = '';\n\n if (account.get('acct') !== account.get('username')) {\n extraInfo = (\n <div className='account__disclaimer'>\n <Icon id='info-circle' fixedWidth /> <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\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')}`}>\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';\nimport Icon from 'flavours/glitch/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 let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/accounts/${this.props.to.get('id')}`, state);\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 'flavours/glitch/features/account/components/header';\nimport ActionBar from 'flavours/glitch/features/account/components/action_bar';\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 identity_proofs: ImmutablePropTypes.list,\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 domain: PropTypes.string.isRequired,\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, identity_proofs } = this.props;\n\n if (account === null) {\n return null;\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 identity_proofs={identity_proofs}\n onFollow={this.handleFollow}\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 domain={this.props.domain}\n />\n\n <ActionBar\n account={account}\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 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 { initBlockModal } from 'flavours/glitch/actions/blocks';\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';\nimport { List as ImmutableList } from 'immutable';\n\nconst messages = defineMessages({\n unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },\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 domain: state.getIn(['meta', 'domain']),\n identity_proofs: state.getIn(['identity_proofs', accountId], ImmutableList()),\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(initBlockModal(account));\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 Button from 'mastodon/components/button';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { autoPlayGif, me, isStaff } from 'mastodon/initial_state';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\nimport Avatar from 'mastodon/components/avatar';\nimport { shortNumberFormat } from 'mastodon/utils/numbers';\nimport { NavLink } from 'react-router-dom';\nimport DropdownMenuContainer from 'mastodon/containers/dropdown_menu_container';\n\nconst messages = defineMessages({\n unfollow: { id: 'account.unfollow', defaultMessage: 'Unfollow' },\n follow: { id: 'account.follow', defaultMessage: 'Follow' },\n cancel_follow_request: { id: 'account.cancel_follow_request', defaultMessage: 'Cancel follow request' },\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 mention: { id: 'account.mention', defaultMessage: 'Mention @{name}' },\n direct: { id: 'account.direct', defaultMessage: 'Direct message @{name}' },\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 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: 'Block domain {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {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: 'Blocked 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\nconst dateFormatOptions = {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour12: false,\n hour: '2-digit',\n minute: '2-digit',\n};\n\nexport default @injectIntl\nclass Header extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map,\n identity_props: ImmutablePropTypes.list,\n onFollow: PropTypes.func.isRequired,\n onBlock: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n domain: PropTypes.string.isRequired,\n };\n\n openEditProfile = () => {\n window.open('/settings/profile', '_blank');\n }\n\n isStatusesPageActive = (match, location) => {\n if (!match) {\n return false;\n }\n\n return !location.pathname.match(/\\/(followers|following)\\/?$/);\n }\n\n _updateEmojis () {\n const node = this.node;\n\n if (!node || autoPlayGif) {\n return;\n }\n\n const emojis = node.querySelectorAll('.custom-emoji');\n\n for (var i = 0; i < emojis.length; i++) {\n let emoji = emojis[i];\n if (emoji.classList.contains('status-emoji')) {\n continue;\n }\n emoji.classList.add('status-emoji');\n\n emoji.addEventListener('mouseenter', this.handleEmojiMouseEnter, false);\n emoji.addEventListener('mouseleave', this.handleEmojiMouseLeave, false);\n }\n }\n\n componentDidMount () {\n this._updateEmojis();\n }\n\n componentDidUpdate () {\n this._updateEmojis();\n }\n\n handleEmojiMouseEnter = ({ target }) => {\n target.src = target.getAttribute('data-original');\n }\n\n handleEmojiMouseLeave = ({ target }) => {\n target.src = target.getAttribute('data-static');\n }\n\n setRef = (c) => {\n this.node = c;\n }\n\n render () {\n const { account, intl, domain, identity_proofs } = this.props;\n\n if (!account) {\n return null;\n }\n\n let info = [];\n let actionBtn = '';\n let lockedIcon = '';\n let menu = [];\n\n if (me !== account.get('id') && account.getIn(['relationship', 'followed_by'])) {\n info.push(<span key='followed_by' className='relationship-tag'><FormattedMessage id='account.follows_you' defaultMessage='Follows you' /></span>);\n } else if (me !== account.get('id') && account.getIn(['relationship', 'blocking'])) {\n info.push(<span key='blocked' className='relationship-tag'><FormattedMessage id='account.blocked' defaultMessage='Blocked' /></span>);\n }\n\n if (me !== account.get('id') && account.getIn(['relationship', 'muting'])) {\n info.push(<span key='muted' className='relationship-tag'><FormattedMessage id='account.muted' defaultMessage='Muted' /></span>);\n } else if (me !== account.get('id') && account.getIn(['relationship', 'domain_blocking'])) {\n info.push(<span key='domain_blocked' className='relationship-tag'><FormattedMessage id='account.domain_blocked' defaultMessage='Domain blocked' /></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 = <Button className='logo-button' text={intl.formatMessage(messages.cancel_follow_request)} title={intl.formatMessage(messages.requested)} onClick={this.props.onFollow} />;\n } else if (!account.getIn(['relationship', 'blocking'])) {\n actionBtn = <Button disabled={account.getIn(['relationship', 'blocked_by'])} className={classNames('logo-button', { 'button--destructive': account.getIn(['relationship', 'following']) })} text={intl.formatMessage(account.getIn(['relationship', 'following']) ? messages.unfollow : messages.follow)} onClick={this.props.onFollow} />;\n } else if (account.getIn(['relationship', 'blocking'])) {\n actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.unblock, { name: account.get('username') })} onClick={this.props.onBlock} />;\n }\n } else {\n actionBtn = <Button className='logo-button' text={intl.formatMessage(messages.edit_profile)} onClick={this.openEditProfile} />;\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 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.edit_profile), href: '/settings/profile' });\n menu.push({ text: intl.formatMessage(messages.preferences), href: '/settings/preferences' });\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 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 const content = { __html: account.get('note_emojified') };\n const displayNameHtml = { __html: account.get('display_name_html') };\n const fields = account.get('fields');\n const acct = account.get('acct').indexOf('@') === -1 && domain ? `${account.get('acct')}@${domain}` : account.get('acct');\n\n let badge;\n\n if (account.get('bot')) {\n badge = (<div className='account-role bot'><FormattedMessage id='account.badges.bot' defaultMessage='Bot' /></div>);\n } else if (account.get('group')) {\n badge = (<div className='account-role group'><FormattedMessage id='account.badges.group' defaultMessage='Group' /></div>);\n } else {\n badge = null;\n }\n\n return (\n <div className={classNames('account__header', { inactive: !!account.get('moved') })} ref={this.setRef}>\n <div className='account__header__image'>\n <div className='account__header__info'>\n {info}\n </div>\n\n <img src={autoPlayGif ? account.get('header') : account.get('header_static')} alt='' className='parallax' />\n </div>\n\n <div className='account__header__bar'>\n <div className='account__header__tabs'>\n <a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>\n <Avatar account={account} size={90} />\n </a>\n\n <div className='spacer' />\n\n <div className='account__header__tabs__buttons'>\n {actionBtn}\n\n <DropdownMenuContainer items={menu} icon='ellipsis-v' size={24} direction='right' />\n </div>\n </div>\n\n <div className='account__header__tabs__name'>\n <h1>\n <span dangerouslySetInnerHTML={displayNameHtml} /> {badge}\n <small>@{acct} {lockedIcon}</small>\n </h1>\n </div>\n\n <div className='account__header__extra'>\n <div className='account__header__bio'>\n { (fields.size > 0 || identity_proofs.size > 0) && (\n <div className='account__header__fields'>\n {identity_proofs.map((proof, i) => (\n <dl key={i}>\n <dt dangerouslySetInnerHTML={{ __html: proof.get('provider') }} />\n\n <dd className='verified'>\n <a href={proof.get('proof_url')} target='_blank' rel='noopener noreferrer'><span title={intl.formatMessage(messages.linkVerifiedOn, { date: intl.formatDate(proof.get('updated_at'), dateFormatOptions) })}>\n <Icon id='check' className='verified__mark' />\n </span></a>\n <a href={proof.get('profile_url')} target='_blank' rel='noopener noreferrer'><span dangerouslySetInnerHTML={{ __html: ' '+proof.get('provider_username') }} /></a>\n </dd>\n </dl>\n ))}\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 {account.get('note').length > 0 && account.get('note') !== '<p></p>' && <div className='account__header__content' dangerouslySetInnerHTML={content} />}\n </div>\n\n <div className='account__header__extra__links'>\n <NavLink isActive={this.isStatusesPageActive} activeClassName='active' to={`/accounts/${account.get('id')}`} title={intl.formatNumber(account.get('statuses_count'))}>\n <strong>{shortNumberFormat(account.get('statuses_count'))}</strong> <FormattedMessage id='account.posts' defaultMessage='Toots' />\n </NavLink>\n\n <NavLink exact activeClassName='active' to={`/accounts/${account.get('id')}/following`} title={intl.formatNumber(account.get('following_count'))}>\n <strong>{shortNumberFormat(account.get('following_count'))}</strong> <FormattedMessage id='account.follows' defaultMessage='Follows' />\n </NavLink>\n\n <NavLink exact activeClassName='active' to={`/accounts/${account.get('id')}/followers`} title={intl.formatNumber(account.get('followers_count'))}>\n <strong>{shortNumberFormat(account.get('followers_count'))}</strong> <FormattedMessage id='account.followers' defaultMessage='Followers' />\n </NavLink>\n </div>\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 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 identity_proofs: ImmutablePropTypes.list,\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 domain: PropTypes.string.isRequired,\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, identity_proofs } = this.props;\n\n if (account === null) {\n return null;\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 identity_proofs={identity_proofs}\n onFollow={this.handleFollow}\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 domain={this.props.domain}\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 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 { initBlockModal } from '../../../actions/blocks';\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';\nimport { List as ImmutableList } from 'immutable';\n\nconst messages = defineMessages({\n unfollowConfirm: { id: 'confirmations.unfollow.confirm', defaultMessage: 'Unfollow' },\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 domain: state.getIn(['meta', 'domain']),\n identity_proofs: state.getIn(['identity_proofs', accountId], ImmutableList()),\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(initBlockModal(account));\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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\n\nexport default\nclass Spoilers extends React.PureComponent {\n static propTypes = {\n spoilerText: PropTypes.string,\n children: PropTypes.node,\n };\n\n state = {\n hidden: true,\n }\n\n handleSpoilerClick = () => {\n this.setState({ hidden: !this.state.hidden });\n }\n\n render () {\n const { spoilerText, children } = this.props;\n const { hidden } = this.state;\n\n const toggleText = hidden ?\n <FormattedMessage\n id='status.show_more'\n defaultMessage='Show more'\n key='0'\n /> :\n <FormattedMessage\n id='status.show_less'\n defaultMessage='Show less'\n key='0'\n />;\n\n return ([\n <p className='spoiler__text'>\n {spoilerText}\n {' '}\n <button tabIndex='0' className='status__content__spoiler-link' onClick={this.handleSpoilerClick}>\n {toggleText}\n </button>\n </p>,\n <div className={`status__content__spoiler ${!hidden ? 'status__content__spoiler--visible' : ''}`}>\n {children}\n </div>\n ]);\n }\n}\n\n","import { connect } from 'react-redux';\nimport Status from 'flavours/glitch/components/status';\nimport { List as ImmutableList } from 'immutable';\nimport { makeGetStatus, regexFromFilters, toServerSideType } 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 { muteStatus, unmuteStatus, deleteStatus } from 'flavours/glitch/actions/statuses';\nimport { initMuteModal } from 'flavours/glitch/actions/mutes';\nimport { initBlockModal } from 'flavours/glitch/actions/blocks';\nimport { initReport } from 'flavours/glitch/actions/reports';\nimport { 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 { filterEditLink } from 'flavours/glitch/util/backend_links';\nimport { showAlertForError } from '../actions/alerts';\nimport AccountContainer from 'flavours/glitch/containers/account_container';\nimport Spoilers from '../components/spoilers';\nimport Icon from 'flavours/glitch/components/icon';\n\nconst messages = defineMessages({\n deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },\n deleteMessage: { id: 'confirmations.delete.message', defaultMessage: 'Are you sure you want to delete this status?' },\n redraftConfirm: { id: 'confirmations.redraft.confirm', defaultMessage: 'Delete & redraft' },\n redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },\n 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 unfilterConfirm: { id: 'confirmations.unfilter.confirm', defaultMessage: 'Show' },\n author: { id: 'confirmations.unfilter.author', defaultMessage: 'Author' },\n matchingFilters: { id: 'confirmations.unfilter.filters', defaultMessage: 'Matching {count, plural, one {filter} other {filters}}' },\n editFilter: { id: 'confirmations.unfilter.edit_filter', defaultMessage: 'Edit filter' },\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, contextType }) => ({\n\n onReply (status, router) {\n dispatch((_, getState) => {\n let state = getState();\n\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 if (status.get('reblogged')) {\n dispatch(unreblog(status));\n } else {\n dispatch(reblog(status));\n }\n },\n\n onReblog (status, e) {\n dispatch((_, getState) => {\n let state = getState();\n if (state.getIn(['local_settings', 'confirm_boost_missing_media_description']) && status.get('media_attachments').some(item => !item.get('description')) && !status.get('reblogged')) {\n dispatch(openModal('BOOST', { status, onReblog: this.onModalReblog, missingMediaDescription: true }));\n } else 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 (status) {\n const account = status.get('account');\n dispatch(initBlockModal(account));\n },\n\n onUnfilter (status, onConfirm) {\n dispatch((_, getState) => {\n let state = getState();\n const serverSideType = toServerSideType(contextType);\n const enabledFilters = state.get('filters', ImmutableList()).filter(filter => filter.get('context').includes(serverSideType) && (filter.get('expires_at') === null || Date.parse(filter.get('expires_at')) > (new Date()))).toArray();\n const searchIndex = status.get('search_index');\n const matchingFilters = enabledFilters.filter(filter => regexFromFilters([filter]).test(searchIndex));\n dispatch(openModal('CONFIRM', {\n message: [\n <FormattedMessage id='confirmations.unfilter' defaultMessage='Information about this filtered toot' />,\n <div className='filtered-status-info'>\n <Spoilers spoilerText={intl.formatMessage(messages.author)}>\n <AccountContainer id={status.getIn(['account', 'id'])} />\n </Spoilers>\n <Spoilers spoilerText={intl.formatMessage(messages.matchingFilters, {count: matchingFilters.size})}>\n <ul>\n {matchingFilters.map(filter => (\n <li>\n {filter.get('phrase')}\n {!!filterEditLink && ' '}\n {!!filterEditLink && (\n <a\n target='_blank'\n className='filtered-status-edit-link'\n title={intl.formatMessage(messages.editFilter)}\n href={filterEditLink(filter.get('id'))}\n >\n <Icon id='pencil' />\n </a>\n )}\n </li>\n ))}\n </ul>\n </Spoilers>\n </div>\n ],\n confirm: intl.formatMessage(messages.unfilterConfirm),\n onConfirm: onConfirm,\n }));\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","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\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};","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\n\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\n\nvar defined = require('./_defined');\n\nmodule.exports = function (it) {\n return IObject(defined(it));\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};","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","var shared = require('./_shared')('keys');\n\nvar uid = require('./_uid');\n\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};","module.exports = {};","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\n\nmodule.exports = function (it) {\n return Object(defined(it));\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes, EmojiDefaultProps } from '../../utils/shared-props';\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 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 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 return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick;\n\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\n var onOver = props.onOver;\n\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\n var onLeave = props.onLeave;\n\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\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 = {\n fontSize: props.size\n };\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('span', {\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 }, React.createElement('span', {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.defaultProps = EmojiDefaultProps;\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 defaultValue: PropTypes.bool,\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, defaultValue } = 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, defaultValue)} 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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Link } from 'react-router-dom';\nimport Icon from 'flavours/glitch/components/icon';\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 <Icon id={icon} fixedWidth className='column-link__icon' />\n {text}\n {badgeElement}\n </a>\n );\n } else if (to) {\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 } 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 <Icon id={icon} fixedWidth className='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 defaultValue: PropTypes.bool,\n }\n\n onChange = ({ target }) => {\n this.props.onChange(this.props.settingPath, target.checked);\n }\n\n render () {\n const { prefix, settings, settingPath, label, defaultValue } = 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, defaultValue)} onChange={this.onChange} onKeyDown={this.onKeyDown} />\n <label htmlFor={id} className='setting-toggle__label'>{label}</label>\n </div>\n );\n }\n\n}\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\n\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n\n switch (length) {\n case 1:\n return function (a) {\n return fn.call(that, a);\n };\n\n case 2:\n return function (a, b) {\n return fn.call(that, a, b);\n };\n\n case 3:\n return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n\n return function ()\n /* ...args */\n {\n return fn.apply(that, arguments);\n };\n};","var isObject = require('./_is-object');\n\nvar document = require('./_global').document; // typeof document.createElement is 'object' in old IE\n\n\nvar is = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\n\nvar min = Math.min;\n\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};","var core = require('./_core');\n\nvar global = require('./_global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\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});","module.exports = true;","var id = 0;\nvar px = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","// IE 8- don't enum bug keys\nmodule.exports = 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'.split(',');","var def = require('./_object-dp').f;\n\nvar has = require('./_has');\n\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, {\n configurable: true,\n value: tag\n });\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl, defineMessages } from 'react-intl';\nimport Icon from 'flavours/glitch/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 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\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, 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","var baseIsEqual = require('./_baseIsEqual');\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 */\n\n\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar sizerStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre'\n};\nvar INPUT_PROPS_BLACKLIST = ['extraWidth', 'injectStyles', 'inputClassName', 'inputRef', 'inputStyle', 'minWidth', 'onAutosize', 'placeholderIsMinWidth'];\n\nvar cleanInputProps = function cleanInputProps(inputProps) {\n INPUT_PROPS_BLACKLIST.forEach(function (field) {\n return delete inputProps[field];\n });\n return inputProps;\n};\n\nvar copyStyles = function copyStyles(styles, node) {\n node.style.fontSize = styles.fontSize;\n node.style.fontFamily = styles.fontFamily;\n node.style.fontWeight = styles.fontWeight;\n node.style.fontStyle = styles.fontStyle;\n node.style.letterSpacing = styles.letterSpacing;\n node.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 // we only need an auto-generated ID for stylesheet injection, which is only\n // used for IE. so if the browser is not IE, this should return undefined.\n return isIE ? '_' + Math.random().toString(36).substr(2, 12) : undefined;\n};\n\nvar AutosizeInput = function (_Component) {\n _inherits(AutosizeInput, _Component);\n\n function AutosizeInput(props) {\n _classCallCheck(this, AutosizeInput);\n\n var _this = _possibleConstructorReturn(this, (AutosizeInput.__proto__ || Object.getPrototypeOf(AutosizeInput)).call(this, props));\n\n _this.inputRef = function (el) {\n _this.input = el;\n\n if (typeof _this.props.inputRef === 'function') {\n _this.props.inputRef(el);\n }\n };\n\n _this.placeHolderSizerRef = function (el) {\n _this.placeHolderSizer = el;\n };\n\n _this.sizerRef = function (el) {\n _this.sizer = el;\n };\n\n _this.state = {\n inputWidth: props.minWidth,\n inputId: props.id || generateId()\n };\n return _this;\n }\n\n _createClass(AutosizeInput, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.mounted = true;\n this.copyInputStyles();\n this.updateInputWidth();\n }\n }, {\n key: 'UNSAFE_componentWillReceiveProps',\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var id = nextProps.id;\n\n if (id !== this.props.id) {\n this.setState({\n inputId: id || generateId()\n });\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (prevState.inputWidth !== this.state.inputWidth) {\n if (typeof this.props.onAutosize === 'function') {\n this.props.onAutosize(this.state.inputWidth);\n }\n }\n\n this.updateInputWidth();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.mounted = false;\n }\n }, {\n key: 'copyInputStyles',\n value: function copyInputStyles() {\n if (!this.mounted || !window.getComputedStyle) {\n return;\n }\n\n var inputStyles = this.input && window.getComputedStyle(this.input);\n\n if (!inputStyles) {\n return;\n }\n\n copyStyles(inputStyles, this.sizer);\n\n if (this.placeHolderSizer) {\n copyStyles(inputStyles, this.placeHolderSizer);\n }\n }\n }, {\n key: 'updateInputWidth',\n value: function updateInputWidth() {\n if (!this.mounted || !this.sizer || typeof this.sizer.scrollWidth === 'undefined') {\n return;\n }\n\n var newInputWidth = void 0;\n\n if (this.props.placeholder && (!this.props.value || this.props.value && this.props.placeholderIsMinWidth)) {\n newInputWidth = Math.max(this.sizer.scrollWidth, this.placeHolderSizer.scrollWidth) + 2;\n } else {\n newInputWidth = this.sizer.scrollWidth + 2;\n } // add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n\n\n var extraWidth = this.props.type === 'number' && this.props.extraWidth === undefined ? 16 : parseInt(this.props.extraWidth) || 0;\n newInputWidth += extraWidth;\n\n if (newInputWidth < this.props.minWidth) {\n newInputWidth = this.props.minWidth;\n }\n\n if (newInputWidth !== this.state.inputWidth) {\n this.setState({\n inputWidth: newInputWidth\n });\n }\n }\n }, {\n key: 'getInput',\n value: function getInput() {\n return this.input;\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.input.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.input.blur();\n }\n }, {\n key: 'select',\n value: function select() {\n this.input.select();\n }\n }, {\n key: 'renderStyles',\n value: function renderStyles() {\n // this method injects styles to hide IE's clear indicator, which messes\n // with input size detection. the stylesheet is only injected when the\n // browser is IE, and can also be disabled by the `injectStyles` prop.\n var injectStyles = this.props.injectStyles;\n return isIE && injectStyles ? _react2.default.createElement('style', {\n dangerouslySetInnerHTML: {\n __html: 'input#' + this.state.inputId + '::-ms-clear {display: none;}'\n }\n }) : null;\n }\n }, {\n key: 'render',\n value: function render() {\n var sizerValue = [this.props.defaultValue, this.props.value, ''].reduce(function (previousValue, currentValue) {\n if (previousValue !== null && previousValue !== undefined) {\n return previousValue;\n }\n\n return currentValue;\n });\n\n var wrapperStyle = _extends({}, this.props.style);\n\n if (!wrapperStyle.display) wrapperStyle.display = 'inline-block';\n\n var inputStyle = _extends({\n boxSizing: 'content-box',\n width: this.state.inputWidth + 'px'\n }, this.props.inputStyle);\n\n var inputProps = _objectWithoutProperties(this.props, []);\n\n cleanInputProps(inputProps);\n inputProps.className = this.props.inputClassName;\n inputProps.id = this.state.inputId;\n inputProps.style = inputStyle;\n return _react2.default.createElement('div', {\n className: this.props.className,\n style: wrapperStyle\n }, this.renderStyles(), _react2.default.createElement('input', _extends({}, inputProps, {\n ref: this.inputRef\n })), _react2.default.createElement('div', {\n ref: this.sizerRef,\n style: sizerStyle\n }, sizerValue), this.props.placeholder ? _react2.default.createElement('div', {\n ref: this.placeHolderSizerRef,\n style: sizerStyle\n }, this.props.placeholder) : null);\n }\n }]);\n\n return AutosizeInput;\n}(_react.Component);\n\nAutosizeInput.propTypes = {\n className: _propTypes2.default.string,\n // className for the outer element\n defaultValue: _propTypes2.default.any,\n // default field value\n extraWidth: _propTypes2.default.oneOfType([// additional width for input element\n _propTypes2.default.number, _propTypes2.default.string]),\n id: _propTypes2.default.string,\n // id to use for the input, can be set for consistent snapshots\n injectStyles: _propTypes2.default.bool,\n // inject the custom stylesheet to hide clear UI, defaults to true\n inputClassName: _propTypes2.default.string,\n // className for the input element\n inputRef: _propTypes2.default.func,\n // ref callback for the input element\n inputStyle: _propTypes2.default.object,\n // css styles for the input element\n minWidth: _propTypes2.default.oneOfType([// minimum width for input element\n _propTypes2.default.number, _propTypes2.default.string]),\n onAutosize: _propTypes2.default.func,\n // onAutosize handler: function(newWidth) {}\n onChange: _propTypes2.default.func,\n // onChange handler: function(event) {}\n placeholder: _propTypes2.default.string,\n // placeholder text\n placeholderIsMinWidth: _propTypes2.default.bool,\n // don't collapse size to less than the placeholder\n style: _propTypes2.default.object,\n // css styles for the outer element\n value: _propTypes2.default.any // field value\n\n};\nAutosizeInput.defaultProps = {\n minWidth: 1,\n injectStyles: true\n};\nexports.default = AutosizeInput;","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\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 || !value}\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';\nimport Icon from 'flavours/glitch/components/icon';\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 <Icon id='search' className={classNames({ active: !hasValue })} />\n <Icon id='times-circle' aria-label={intl.formatMessage(messages.search)} className={classNames({ active: hasValue })} />\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\nimport Icon from 'flavours/glitch/components/icon';\nimport { createPortal } from 'react-dom';\n\nexport default class ColumnBackButton extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n multiColumn: PropTypes.bool,\n };\n\n handleClick = (event) => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n const state = this.context.router.history.location.state;\n if (event.shiftKey && state && state.mastodonBackSteps) {\n this.context.router.history.go(-state.mastodonBackSteps);\n } else {\n this.context.router.history.goBack();\n }\n } else {\n this.context.router.history.push('/');\n }\n }\n\n render () {\n const { multiColumn } = this.props;\n\n const component = (\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 if (multiColumn) {\n return component;\n } else {\n // The portal container and the component may be rendered to the DOM in\n // the same React render pass, so the container might not be available at\n // the time `render()` is called.\n const container = document.getElementById('tabs-bar__portal');\n if (container === null) {\n // The container wasn't available, force a re-render so that the\n // component can eventually be inserted in the container and not scroll\n // with the rest of the area.\n this.forceUpdate();\n return component;\n } else {\n return createPortal(component, container);\n }\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() {// No operation performed.\n}\n\nmodule.exports = noop;","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 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 || !value}\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 = /*#__PURE__*/function () {\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 };","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 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).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).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;","import { StyleSheet } from '@emotion/sheet';\nimport Stylis from '@emotion/stylis';\nimport '@emotion/weak-memoize'; // 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\n\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};\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 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 -1:\n {\n var flag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n var unsafePseudoClasses = content.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses && cache.compat !== true) {\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n var ignoreRegExp = new RegExp(unsafePseudoClass + \".*\\\\/\\\\* \" + flag + \" \\\\*\\\\/\");\n var ignore = ignoreRegExp.test(content);\n\n if (unsafePseudoClass && !ignore) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n }\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;","var isBrowser = \"object\" !== 'undefined';\n\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}\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 current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles };","/* 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;","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};\nexport default unitlessKeys;","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;","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar processStyleName = memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : 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 return 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 && !isCustomProperty(key) && 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 var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && 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 processed;\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 var interpolated = handleInterpolation(mergedProps, registered, value, false);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\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;\n\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 if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\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 if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\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 };","import { serializeStyles } from '@emotion/serialize';\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nexport default css;","import _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport { createContext, forwardRef, createElement, Component } from 'react';\nimport createCache from '@emotion/cache';\nimport { getRegisteredStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { StyleSheet } from '@emotion/sheet';\nimport css from '@emotion/css';\nexport { default as css } from '@emotion/css';\nvar EmotionCacheContext = createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? createCache() : null);\nvar ThemeContext = createContext({});\nvar CacheProvider = EmotionCacheContext.Provider;\n\nvar withEmotionCache = function withEmotionCache(func) {\n var render = function render(props, ref) {\n return createElement(EmotionCacheContext.Consumer, null, function (cache) {\n return func(props, cache, ref);\n });\n }; // $FlowFixMe\n\n\n return forwardRef(render);\n}; // thus we only need to replace what is a valid character for JS, but not for CSS\n\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar render = function render(cache, props, theme, ref) {\n var type = props[typePropName];\n var registeredStyles = [];\n var className = '';\n var cssProp = theme === null ? props.css : props.css(theme); // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n registeredStyles.push(cssProp);\n\n if (props.className !== undefined) {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n }\n\n var serialized = serializeStyles(registeredStyles);\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n var rules = insertStyles(cache, serialized, typeof type === 'string');\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n var ele = createElement(type, newProps);\n return ele;\n};\n\nvar Emotion = withEmotionCache(function (props, cache, ref) {\n // use Context.read for the theme when it's stable\n if (typeof props.css === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n return render(cache, props, theme, ref);\n });\n }\n\n return render(cache, props, null, ref);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n} // $FlowFixMe\n\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || props.css == null) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/css' like this: css`\" + props.css + \"`\");\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type;\n\n if (process.env.NODE_ENV !== 'production') {\n var error = new Error();\n\n if (error.stack) {\n // chrome\n var match = error.stack.match(/at (?:Object\\.|)jsx.*\\n\\s+at ([A-Z][A-Za-z$]+) /);\n\n if (!match) {\n // safari and firefox\n match = error.stack.match(/^.*\\n([A-Z][A-Za-z$]+)@/);\n }\n\n if (match) {\n newProps[labelPropName] = sanitizeIdentifier(match[1]);\n }\n }\n }\n\n createElementArgArray[1] = newProps;\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false;\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var serialized = serializeStyles([styles(theme)]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n });\n }\n\n var serialized = serializeStyles([styles]);\n return createElement(InnerGlobal, {\n serialized: serialized,\n cache: cache\n });\n}); // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar InnerGlobal = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(InnerGlobal, _React$Component);\n\n function InnerGlobal(props, context, updater) {\n return _React$Component.call(this, props, context, updater) || this;\n }\n\n var _proto = InnerGlobal.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.sheet = new StyleSheet({\n key: this.props.cache.key + \"-global\",\n nonce: this.props.cache.sheet.nonce,\n container: this.props.cache.sheet.container\n }); // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion-\" + this.props.cache.key + \"=\\\"\" + this.props.serialized.name + \"\\\"]\");\n\n if (node !== null) {\n this.sheet.tags.push(node);\n }\n\n if (this.props.cache.sheet.tags.length) {\n this.sheet.before = this.props.cache.sheet.tags[0];\n }\n\n this.insertStyles();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (prevProps.serialized.name !== this.props.serialized.name) {\n this.insertStyles();\n }\n };\n\n _proto.insertStyles = function insertStyles$1() {\n if (this.props.serialized.next !== undefined) {\n // insert keyframes\n insertStyles(this.props.cache, this.props.serialized.next, true);\n }\n\n if (this.sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = this.sheet.tags[this.sheet.tags.length - 1].nextElementSibling;\n this.sheet.before = element;\n this.sheet.flush();\n }\n\n this.props.cache.insert(\"\", this.props.serialized, this.sheet, false);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.sheet.flush();\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return InnerGlobal;\n}(Component);\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; 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\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 ClassNames = withEmotionCache(function (props, context) {\n return createElement(ThemeContext.Consumer, null, function (theme) {\n var hasRendered = false;\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\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, context.registered);\n {\n insertStyles(context, serialized, false);\n }\n return context.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(context.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: theme\n };\n var ele = props.children(content);\n hasRendered = true;\n return ele;\n });\n});\nexport { CacheProvider, ClassNames, Global, ThemeContext, jsx, keyframes, withEmotionCache };","// ==============================\n// NO OP\n// ==============================\nvar noop = function noop() {}; // 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*/\n\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, state, className) {\n var arr = [className];\n\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// Clean Value\n// ==============================\n\n\nvar cleanValue = function cleanValue(value) {\n if (Array.isArray(value)) return value.filter(Boolean);\n if (typeof value === 'object' && value !== null) return [value];\n return [];\n}; // ==============================\n// Handle Input Change\n// ==============================\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\n return inputValue;\n} // ==============================\n// Scroll Helpers\n// ==============================\n\n\nfunction isDocumentElement(el) {\n return [document.documentElement, document.body, window].indexOf(el) > -1;\n} // Normalized Scroll Top\n// ------------------------------\n\n\nfunction getScrollTop(el) {\n if (isDocumentElement(el)) {\n return window.pageYOffset;\n }\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} // Get Scroll Parent\n// ------------------------------\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\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n\n if (overflowRx.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent;\n }\n }\n\n return docEl;\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*/\n\n\nfunction easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n}\n\nfunction animatedScrollTo(element, to, duration, callback) {\n if (duration === void 0) {\n duration = 200;\n }\n\n if (callback === void 0) {\n callback = noop;\n }\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\n if (currentTime < duration) {\n window.requestAnimationFrame(animateScroll);\n } else {\n callback(element);\n }\n }\n\n animateScroll();\n} // Scroll Into View\n// ------------------------------\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// Get bounding client object\n// ==============================\n// cannot get keys using array notation with DOMRect\n\n\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} // Touch Capability Detector\n// ==============================\n\n\nfunction isTouchCapable() {\n try {\n document.createEvent('TouchEvent');\n return true;\n } catch (e) {\n return false;\n }\n} // ==============================\n// Mobile Device Detector\n// ==============================\n\n\nfunction isMobileDevice() {\n try {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n } catch (e) {\n return false;\n }\n}\n\nexport { getScrollParent as a, getScrollTop as b, animatedScrollTo as c, isMobileDevice as d, cleanValue as e, scrollIntoView as f, getBoundingClientObj as g, classNames as h, isTouchCapable as i, isDocumentElement as j, handleInputChange as k, noop as n, scrollTo as s };","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction index(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = areInputsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\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 && isEqual(newArgs, lastArgs)) {\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;","import { Component } from 'react';\nimport { jsx, keyframes, ClassNames } from '@emotion/core';\nimport { createPortal } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { g as getBoundingClientObj, a as getScrollParent, b as getScrollTop, c as animatedScrollTo, s as scrollTo } from './utils-06b0d5a4.browser.esm.js';\nimport _css from '@emotion/css';\nimport AutosizeInput from 'react-input-autosize';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction 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 var scrollParent = getScrollParent(menuEl);\n var defaultState = {\n placement: 'bottom',\n maxHeight: maxHeight\n }; // something went wrong, return default state\n\n if (!menuEl || !menuEl.offsetParent) return defaultState; // 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 var _menuEl$offsetParent$ = menuEl.offsetParent.getBoundingClientRect(),\n containerTop = _menuEl$offsetParent$.top;\n\n var viewHeight = window.innerHeight;\n var scrollTop = getScrollTop(scrollParent);\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 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 {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceBelow >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\n }\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceBelow >= minHeight || isFixedPosition && viewSpaceBelow >= minHeight) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollDown, scrollDuration);\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\n\n var constrainedHeight = isFixedPosition ? viewSpaceBelow - marginBottom : scrollSpaceBelow - marginBottom;\n return {\n placement: 'bottom',\n maxHeight: constrainedHeight\n };\n } // 4. Forked beviour when there isn't enough space below\n // AUTO: flip the menu, render above\n\n\n if (placement === 'auto' || isFixedPosition) {\n // may need to be constrained after flipping\n var _constrainedHeight = maxHeight;\n var spaceAbove = isFixedPosition ? viewSpaceAbove : scrollSpaceAbove;\n\n if (spaceAbove >= minHeight) {\n _constrainedHeight = Math.min(spaceAbove - marginBottom - spacing.controlHeight, maxHeight);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight\n };\n } // BOTTOM: allow browser to increase scrollable area and immediately set scroll\n\n\n if (placement === 'bottom') {\n scrollTo(scrollParent, scrollDown);\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n }\n\n break;\n\n case 'top':\n // 1: the menu will fit, do nothing\n if (viewSpaceAbove >= menuHeight) {\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 2: the menu will fit, if scrolled\n\n\n if (scrollSpaceAbove >= menuHeight && !isFixedPosition) {\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: maxHeight\n };\n } // 3: the menu will fit, if constrained\n\n\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n var _constrainedHeight2 = maxHeight; // 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\n if (!isFixedPosition && scrollSpaceAbove >= minHeight || isFixedPosition && viewSpaceAbove >= minHeight) {\n _constrainedHeight2 = isFixedPosition ? viewSpaceAbove - marginTop : scrollSpaceAbove - marginTop;\n }\n\n if (shouldScroll) {\n animatedScrollTo(scrollParent, scrollUp, scrollDuration);\n }\n\n return {\n placement: 'top',\n maxHeight: _constrainedHeight2\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\n\n return {\n placement: 'bottom',\n maxHeight: maxHeight\n };\n\n default:\n throw new Error(\"Invalid placement provided \\\"\" + placement + \"\\\".\");\n } // fulfil contract with flow: implicit return value of undefined\n\n\n return defaultState;\n} // Menu Component\n// ------------------------------\n\n\nfunction alignToControl(placement) {\n var placementToCSSProp = {\n bottom: 'top',\n top: 'bottom'\n };\n return placement ? placementToCSSProp[placement] : 'bottom';\n}\n\nvar coercePlacement = function coercePlacement(p) {\n return p === 'auto' ? 'bottom' : p;\n};\n\nvar 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 = {\n label: 'menu'\n }, _ref3[alignToControl(placement)] = '100%', _ref3.backgroundColor = colors.neutral0, _ref3.borderRadius = borderRadius, _ref3.boxShadow = '0 0 0 1px hsla(0, 0%, 0%, 0.1), 0 4px 11px hsla(0, 0%, 0%, 0.1)', _ref3.marginBottom = spacing.menuGutter, _ref3.marginTop = spacing.menuGutter, _ref3.position = 'absolute', _ref3.width = '100%', _ref3.zIndex = 1, _ref3;\n}; // NOTE: internal only\n\n\nvar MenuPlacer = /*#__PURE__*/function (_Component) {\n _inheritsLoose(MenuPlacer, _Component);\n\n function MenuPlacer() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {\n maxHeight: _this.props.maxMenuHeight,\n placement: null\n };\n\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 if (!ref) return; // DO NOT scroll if position is fixed\n\n var isFixedPosition = menuPosition === 'fixed';\n var shouldScroll = menuShouldScrollIntoView && !isFixedPosition;\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 if (getPortalPlacement) getPortalPlacement(state);\n\n _this.setState(state);\n };\n\n _this.getUpdatedProps = function () {\n var menuPlacement = _this.props.menuPlacement;\n var placement = _this.state.placement || coercePlacement(menuPlacement);\n return _extends({}, _this.props, {\n placement: placement,\n maxHeight: _this.state.maxHeight\n });\n };\n\n return _this;\n }\n\n var _proto = MenuPlacer.prototype;\n\n _proto.render = function render() {\n var children = this.props.children;\n return children({\n ref: this.getPlacement,\n placerProps: this.getUpdatedProps()\n });\n };\n\n return MenuPlacer;\n}(Component);\n\nMenuPlacer.contextTypes = {\n getPortalPlacement: PropTypes.func\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 return jsx(\"div\", _extends({\n css: getStyles('menu', props),\n className: cx({\n menu: true\n }, className)\n }, innerProps, {\n ref: innerRef\n }), children);\n}; // Menu List\n// ==============================\n\n\nvar menuListCSS = function menuListCSS(_ref4) {\n var maxHeight = _ref4.maxHeight,\n baseUnit = _ref4.theme.spacing.baseUnit;\n return {\n maxHeight: maxHeight,\n overflowY: 'auto',\n paddingBottom: baseUnit,\n paddingTop: baseUnit,\n position: 'relative',\n // required for offset[Height, Top] > keyboard scroll\n WebkitOverflowScrolling: 'touch'\n };\n};\n\nvar 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 return jsx(\"div\", {\n css: getStyles('menuList', props),\n className: cx({\n 'menu-list': true,\n 'menu-list--is-multi': isMulti\n }, className),\n ref: innerRef\n }, children);\n}; // ==============================\n// Menu Notices\n// ==============================\n\n\nvar noticeCSS = function noticeCSS(_ref5) {\n var _ref5$theme = _ref5.theme,\n baseUnit = _ref5$theme.spacing.baseUnit,\n colors = _ref5$theme.colors;\n return {\n color: colors.neutral40,\n padding: baseUnit * 2 + \"px \" + baseUnit * 3 + \"px\",\n textAlign: 'center'\n };\n};\n\nvar noOptionsMessageCSS = noticeCSS;\nvar loadingMessageCSS = noticeCSS;\n\nvar 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 return jsx(\"div\", _extends({\n css: getStyles('noOptionsMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--no-options': true\n }, className)\n }, innerProps), children);\n};\n\nNoOptionsMessage.defaultProps = {\n children: 'No options'\n};\n\nvar 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 return jsx(\"div\", _extends({\n css: getStyles('loadingMessage', props),\n className: cx({\n 'menu-notice': true,\n 'menu-notice--loading': true\n }, className)\n }, innerProps), children);\n};\n\nLoadingMessage.defaultProps = {\n children: 'Loading...'\n}; // ==============================\n// Menu Portal\n// ==============================\n\nvar menuPortalCSS = function menuPortalCSS(_ref6) {\n var rect = _ref6.rect,\n offset = _ref6.offset,\n position = _ref6.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 = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(MenuPortal, _Component2);\n\n function MenuPortal() {\n var _this2;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this2 = _Component2.call.apply(_Component2, [this].concat(args)) || this;\n _this2.state = {\n placement: null\n };\n\n _this2.getPortalPlacement = function (_ref7) {\n var placement = _ref7.placement;\n var initialPlacement = coercePlacement(_this2.props.menuPlacement); // avoid re-renders if the placement has not changed\n\n if (placement !== initialPlacement) {\n _this2.setState({\n placement: placement\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = MenuPortal.prototype;\n\n _proto2.getChildContext = function getChildContext() {\n return {\n getPortalPlacement: this.getPortalPlacement\n };\n } // callback for occassions where the menu must \"flip\"\n ;\n\n _proto2.render = function render() {\n var _this$props2 = this.props,\n appendTo = _this$props2.appendTo,\n children = _this$props2.children,\n controlElement = _this$props2.controlElement,\n menuPlacement = _this$props2.menuPlacement,\n position = _this$props2.menuPosition,\n getStyles = _this$props2.getStyles;\n var isFixed = position === 'fixed'; // bail early if required elements aren't present\n\n if (!appendTo && !isFixed || !controlElement) {\n return null;\n }\n\n var placement = this.state.placement || coercePlacement(menuPlacement);\n var rect = getBoundingClientObj(controlElement);\n var scrollDistance = isFixed ? 0 : window.pageYOffset;\n var offset = rect[placement] + scrollDistance;\n var state = {\n offset: offset,\n position: position,\n rect: rect\n }; // same wrapper element whether fixed or portalled\n\n var menuWrapper = jsx(\"div\", {\n css: getStyles('menuPortal', state)\n }, children);\n return appendTo ? createPortal(menuWrapper, appendTo) : menuWrapper;\n };\n\n return MenuPortal;\n}(Component);\n\nMenuPortal.childContextTypes = {\n getPortalPlacement: PropTypes.func\n};\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 == 'object' && 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\n for (i = length; i-- !== 0;) {\n if (!equal(a[i], b[i])) return false;\n }\n\n return true;\n }\n\n if (arrA != arrB) return false;\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 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 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 } // end fast-deep-equal\n // Custom handling for React\n\n\n for (i = length; i-- !== 0;) {\n key = keys[i];\n\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 } // fast-deep-equal index.js 2.0.1\n\n\n return true;\n }\n\n return a !== a && b !== b;\n} // end fast-deep-equal\n\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 } // some other error. we should definitely know about these\n\n\n throw error;\n }\n}\n\nfunction _extends$1() {\n _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$1.apply(this, arguments);\n}\n\nvar containerCSS = function containerCSS(_ref) {\n var isDisabled = _ref.isDisabled,\n isRtl = _ref.isRtl;\n return {\n label: 'container',\n direction: isRtl ? 'rtl' : null,\n pointerEvents: isDisabled ? 'none' : null,\n // cancel mouse events when disabled\n position: 'relative'\n };\n};\n\nvar 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 return jsx(\"div\", _extends$1({\n css: getStyles('container', props),\n className: cx({\n '--is-disabled': isDisabled,\n '--is-rtl': isRtl\n }, className)\n }, innerProps), children);\n}; // ==============================\n// Value Container\n// ==============================\n\n\nvar 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 = function ValueContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n isMulti = props.isMulti,\n getStyles = props.getStyles,\n hasValue = props.hasValue;\n return jsx(\"div\", {\n css: getStyles('valueContainer', props),\n className: cx({\n 'value-container': true,\n 'value-container--is-multi': isMulti,\n 'value-container--has-value': hasValue\n }, className)\n }, children);\n}; // ==============================\n// Indicator Container\n// ==============================\n\n\nvar indicatorsContainerCSS = function indicatorsContainerCSS() {\n return {\n alignItems: 'center',\n alignSelf: 'stretch',\n display: 'flex',\n flexShrink: 0\n };\n};\n\nvar IndicatorsContainer = function IndicatorsContainer(props) {\n var children = props.children,\n className = props.className,\n cx = props.cx,\n getStyles = props.getStyles;\n return jsx(\"div\", {\n css: getStyles('indicatorsContainer', props),\n className: cx({\n indicators: true\n }, className)\n }, children);\n};\n\nfunction _templateObject() {\n var data = _taggedTemplateLiteralLoose([\"\\n 0%, 80%, 100% { opacity: 0; }\\n 40% { opacity: 1; }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}\n\nfunction _extends$2() {\n _extends$2 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$2.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar _ref2 = process.env.NODE_ENV === \"production\" ? {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\"\n} : {\n name: \"19bqh2r\",\n styles: \"display:inline-block;fill:currentColor;line-height:1;stroke:currentColor;stroke-width:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0JJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\"\n}; // ==============================\n// Dropdown & Clear Icons\n// ==============================\n\n\nvar Svg = function Svg(_ref) {\n var size = _ref.size,\n props = _objectWithoutPropertiesLoose(_ref, [\"size\"]);\n\n return jsx(\"svg\", _extends$2({\n height: size,\n width: size,\n viewBox: \"0 0 20 20\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n css: _ref2\n }, props));\n};\n\nvar CrossIcon = function CrossIcon(props) {\n return jsx(Svg, _extends$2({\n size: 20\n }, props), jsx(\"path\", {\n 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};\n\nvar DownChevron = function DownChevron(props) {\n return jsx(Svg, _extends$2({\n size: 20\n }, props), jsx(\"path\", {\n 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// Dropdown & Clear Buttons\n// ==============================\n\n\nvar baseCSS = function baseCSS(_ref3) {\n var isFocused = _ref3.isFocused,\n _ref3$theme = _ref3.theme,\n baseUnit = _ref3$theme.spacing.baseUnit,\n colors = _ref3$theme.colors;\n return {\n label: 'indicatorContainer',\n color: isFocused ? colors.neutral60 : colors.neutral20,\n display: 'flex',\n padding: baseUnit * 2,\n transition: 'color 150ms',\n ':hover': {\n color: isFocused ? colors.neutral80 : colors.neutral40\n }\n };\n};\n\nvar dropdownIndicatorCSS = baseCSS;\n\nvar 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 return jsx(\"div\", _extends$2({}, innerProps, {\n css: getStyles('dropdownIndicator', props),\n className: cx({\n indicator: true,\n 'dropdown-indicator': true\n }, className)\n }), children || jsx(DownChevron, null));\n};\n\nvar clearIndicatorCSS = baseCSS;\n\nvar 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 return jsx(\"div\", _extends$2({}, innerProps, {\n css: getStyles('clearIndicator', props),\n className: cx({\n indicator: true,\n 'clear-indicator': true\n }, className)\n }), children || jsx(CrossIcon, null));\n}; // ==============================\n// Separator\n// ==============================\n\n\nvar indicatorSeparatorCSS = function indicatorSeparatorCSS(_ref4) {\n var isDisabled = _ref4.isDisabled,\n _ref4$theme = _ref4.theme,\n baseUnit = _ref4$theme.spacing.baseUnit,\n colors = _ref4$theme.colors;\n return {\n label: 'indicatorSeparator',\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 = function IndicatorSeparator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps;\n return jsx(\"span\", _extends$2({}, innerProps, {\n css: getStyles('indicatorSeparator', props),\n className: cx({\n 'indicator-separator': true\n }, className)\n }));\n}; // ==============================\n// Loading\n// ==============================\n\n\nvar loadingDotAnimations = keyframes(_templateObject());\n\nvar loadingIndicatorCSS = function loadingIndicatorCSS(_ref5) {\n var isFocused = _ref5.isFocused,\n size = _ref5.size,\n _ref5$theme = _ref5.theme,\n colors = _ref5$theme.colors,\n baseUnit = _ref5$theme.spacing.baseUnit;\n return {\n label: 'loadingIndicator',\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(_ref6) {\n var delay = _ref6.delay,\n offset = _ref6.offset;\n return jsx(\"span\", {\n css: /*#__PURE__*/_css({\n animation: loadingDotAnimations + \" 1s ease-in-out \" + delay + \"ms infinite;\",\n backgroundColor: 'currentColor',\n borderRadius: '1em',\n display: 'inline-block',\n marginLeft: offset ? '1em' : null,\n height: '1em',\n verticalAlign: 'top',\n width: '1em'\n }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGljYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0xJIiwiZmlsZSI6ImluZGljYXRvcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyB0eXBlIE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBqc3gsIGtleWZyYW1lcyB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuXG5pbXBvcnQgdHlwZSB7IENvbW1vblByb3BzLCBUaGVtZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEcm9wZG93biAmIENsZWFyIEljb25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgU3ZnID0gKHsgc2l6ZSwgLi4ucHJvcHMgfTogeyBzaXplOiBudW1iZXIgfSkgPT4gKFxuICA8c3ZnXG4gICAgaGVpZ2h0PXtzaXplfVxuICAgIHdpZHRoPXtzaXplfVxuICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgZm9jdXNhYmxlPVwiZmFsc2VcIlxuICAgIGNzcz17e1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgIGxpbmVIZWlnaHQ6IDEsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLFxuICAgICAgc3Ryb2tlV2lkdGg6IDAsXG4gICAgfX1cbiAgICB7Li4ucHJvcHN9XG4gIC8+XG4pO1xuXG5leHBvcnQgY29uc3QgQ3Jvc3NJY29uID0gKHByb3BzOiBhbnkpID0+IChcbiAgPFN2ZyBzaXplPXsyMH0gey4uLnByb3BzfT5cbiAgICA8cGF0aCBkPVwiTTE0LjM0OCAxNC44NDljLTAuNDY5IDAuNDY5LTEuMjI5IDAuNDY5LTEuNjk3IDBsLTIuNjUxLTMuMDMwLTIuNjUxIDMuMDI5Yy0wLjQ2OSAwLjQ2OS0xLjIyOSAwLjQ2OS0xLjY5NyAwLTAuNDY5LTAuNDY5LTAuNDY5LTEuMjI5IDAtMS42OTdsMi43NTgtMy4xNS0yLjc1OS0zLjE1MmMtMC40NjktMC40NjktMC40NjktMS4yMjggMC0xLjY5N3MxLjIyOC0wLjQ2OSAxLjY5NyAwbDIuNjUyIDMuMDMxIDIuNjUxLTMuMDMxYzAuNDY5LTAuNDY5IDEuMjI4LTAuNDY5IDEuNjk3IDBzMC40NjkgMS4yMjkgMCAxLjY5N2wtMi43NTggMy4xNTIgMi43NTggMy4xNWMwLjQ2OSAwLjQ2OSAwLjQ2OSAxLjIyOSAwIDEuNjk4elwiIC8+XG4gIDwvU3ZnPlxuKTtcbmV4cG9ydCBjb25zdCBEb3duQ2hldnJvbiA9IChwcm9wczogYW55KSA9PiAoXG4gIDxTdmcgc2l6ZT17MjB9IHsuLi5wcm9wc30+XG4gICAgPHBhdGggZD1cIk00LjUxNiA3LjU0OGMwLjQzNi0wLjQ0NiAxLjA0My0wLjQ4MSAxLjU3NiAwbDMuOTA4IDMuNzQ3IDMuOTA4LTMuNzQ3YzAuNTMzLTAuNDgxIDEuMTQxLTAuNDQ2IDEuNTc0IDAgMC40MzYgMC40NDUgMC40MDggMS4xOTcgMCAxLjYxNS0wLjQwNiAwLjQxOC00LjY5NSA0LjUwMi00LjY5NSA0LjUwMi0wLjIxNyAwLjIyMy0wLjUwMiAwLjMzNS0wLjc4NyAwLjMzNXMtMC41Ny0wLjExMi0wLjc4OS0wLjMzNWMwIDAtNC4yODctNC4wODQtNC42OTUtNC41MDJzLTAuNDM2LTEuMTcgMC0xLjYxNXpcIiAvPlxuICA8L1N2Zz5cbik7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRHJvcGRvd24gJiBDbGVhciBCdXR0b25zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgSW5kaWNhdG9yUHJvcHMgPSBDb21tb25Qcm9wcyAmIHtcbiAgLyoqIFRoZSBjaGlsZHJlbiB0byBiZSByZW5kZXJlZCBpbnNpZGUgdGhlIGluZGljYXRvci4gKi9cbiAgY2hpbGRyZW46IE5vZGUsXG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufTtcblxuY29uc3QgYmFzZUNTUyA9ICh7XG4gIGlzRm9jdXNlZCxcbiAgdGhlbWU6IHtcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gICAgY29sb3JzLFxuICB9LFxufTogSW5kaWNhdG9yUHJvcHMpID0+ICh7XG4gIGxhYmVsOiAnaW5kaWNhdG9yQ29udGFpbmVyJyxcbiAgY29sb3I6IGlzRm9jdXNlZCA/IGNvbG9ycy5uZXV0cmFsNjAgOiBjb2xvcnMubmV1dHJhbDIwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHBhZGRpbmc6IGJhc2VVbml0ICogMixcbiAgdHJhbnNpdGlvbjogJ2NvbG9yIDE1MG1zJyxcblxuICAnOmhvdmVyJzoge1xuICAgIGNvbG9yOiBpc0ZvY3VzZWQgPyBjb2xvcnMubmV1dHJhbDgwIDogY29sb3JzLm5ldXRyYWw0MCxcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgZHJvcGRvd25JbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duSW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2Ryb3Bkb3duSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnZHJvcGRvd24taW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8RG93bkNoZXZyb24gLz59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYXJJbmRpY2F0b3JDU1MgPSBiYXNlQ1NTO1xuZXhwb3J0IGNvbnN0IENsZWFySW5kaWNhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIGN4LCBnZXRTdHlsZXMsIGlubmVyUHJvcHMgfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2NsZWFySW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnY2xlYXItaW5kaWNhdG9yJzogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3NOYW1lXG4gICAgICApfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbiB8fCA8Q3Jvc3NJY29uIC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTZXBhcmF0b3Jcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50eXBlIFNlcGFyYXRvclN0YXRlID0geyBpc0Rpc2FibGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBpbmRpY2F0b3JTZXBhcmF0b3JDU1MgPSAoe1xuICBpc0Rpc2FibGVkLFxuICB0aGVtZToge1xuICAgIHNwYWNpbmc6IHsgYmFzZVVuaXQgfSxcbiAgICBjb2xvcnMsXG4gIH0sXG59OiBDb21tb25Qcm9wcyAmIFNlcGFyYXRvclN0YXRlKSA9PiAoe1xuICBsYWJlbDogJ2luZGljYXRvclNlcGFyYXRvcicsXG4gIGFsaWduU2VsZjogJ3N0cmV0Y2gnLFxuICBiYWNrZ3JvdW5kQ29sb3I6IGlzRGlzYWJsZWQgPyBjb2xvcnMubmV1dHJhbDEwIDogY29sb3JzLm5ldXRyYWwyMCxcbiAgbWFyZ2luQm90dG9tOiBiYXNlVW5pdCAqIDIsXG4gIG1hcmdpblRvcDogYmFzZVVuaXQgKiAyLFxuICB3aWR0aDogMSxcbn0pO1xuXG5leHBvcnQgY29uc3QgSW5kaWNhdG9yU2VwYXJhdG9yID0gKHByb3BzOiBJbmRpY2F0b3JQcm9wcykgPT4ge1xuICBjb25zdCB7IGNsYXNzTmFtZSwgY3gsIGdldFN0eWxlcywgaW5uZXJQcm9wcyB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIHsuLi5pbm5lclByb3BzfVxuICAgICAgY3NzPXtnZXRTdHlsZXMoJ2luZGljYXRvclNlcGFyYXRvcicsIHByb3BzKX1cbiAgICAgIGNsYXNzTmFtZT17Y3goeyAnaW5kaWNhdG9yLXNlcGFyYXRvcic6IHRydWUgfSwgY2xhc3NOYW1lKX1cbiAgICAvPlxuICApO1xufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMb2FkaW5nXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuY29uc3QgbG9hZGluZ0RvdEFuaW1hdGlvbnMgPSBrZXlmcmFtZXNgXG4gIDAlLCA4MCUsIDEwMCUgeyBvcGFjaXR5OiAwOyB9XG4gIDQwJSB7IG9wYWNpdHk6IDE7IH1cbmA7XG5cbmV4cG9ydCBjb25zdCBsb2FkaW5nSW5kaWNhdG9yQ1NTID0gKHtcbiAgaXNGb2N1c2VkLFxuICBzaXplLFxuICB0aGVtZToge1xuICAgIGNvbG9ycyxcbiAgICBzcGFjaW5nOiB7IGJhc2VVbml0IH0sXG4gIH0sXG59OiB7XG4gIGlzRm9jdXNlZDogYm9vbGVhbixcbiAgc2l6ZTogbnVtYmVyLFxuICB0aGVtZTogVGhlbWUsXG59KSA9PiAoe1xuICBsYWJlbDogJ2xvYWRpbmdJbmRpY2F0b3InLFxuICBjb2xvcjogaXNGb2N1c2VkID8gY29sb3JzLm5ldXRyYWw2MCA6IGNvbG9ycy5uZXV0cmFsMjAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgcGFkZGluZzogYmFzZVVuaXQgKiAyLFxuICB0cmFuc2l0aW9uOiAnY29sb3IgMTUwbXMnLFxuICBhbGlnblNlbGY6ICdjZW50ZXInLFxuICBmb250U2l6ZTogc2l6ZSxcbiAgbGluZUhlaWdodDogMSxcbiAgbWFyZ2luUmlnaHQ6IHNpemUsXG4gIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIHZlcnRpY2FsQWxpZ246ICdtaWRkbGUnLFxufSk7XG5cbnR5cGUgRG90UHJvcHMgPSB7IGRlbGF5OiBudW1iZXIsIG9mZnNldDogYm9vbGVhbiB9O1xuY29uc3QgTG9hZGluZ0RvdCA9ICh7IGRlbGF5LCBvZmZzZXQgfTogRG90UHJvcHMpID0+IChcbiAgPHNwYW5cbiAgICBjc3M9e3tcbiAgICAgIGFuaW1hdGlvbjogYCR7bG9hZGluZ0RvdEFuaW1hdGlvbnN9IDFzIGVhc2UtaW4tb3V0ICR7ZGVsYXl9bXMgaW5maW5pdGU7YCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ2N1cnJlbnRDb2xvcicsXG4gICAgICBib3JkZXJSYWRpdXM6ICcxZW0nLFxuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBtYXJnaW5MZWZ0OiBvZmZzZXQgPyAnMWVtJyA6IG51bGwsXG4gICAgICBoZWlnaHQ6ICcxZW0nLFxuICAgICAgdmVydGljYWxBbGlnbjogJ3RvcCcsXG4gICAgICB3aWR0aDogJzFlbScsXG4gICAgfX1cbiAgLz5cbik7XG5cbmV4cG9ydCB0eXBlIExvYWRpbmdJY29uUHJvcHMgPSB7XG4gIC8qKiBQcm9wcyB0aGF0IHdpbGwgYmUgcGFzc2VkIG9uIHRvIHRoZSBjaGlsZHJlbi4gKi9cbiAgaW5uZXJQcm9wczogYW55LFxuICAvKiogVGhlIGZvY3VzZWQgc3RhdGUgb2YgdGhlIHNlbGVjdC4gKi9cbiAgaXNGb2N1c2VkOiBib29sZWFuLFxuICAvKiogV2hldGhlciB0aGUgdGV4dCBpcyByaWdodCB0byBsZWZ0ICovXG4gIGlzUnRsOiBib29sZWFuLFxufSAmIENvbW1vblByb3BzICYge1xuICAgIC8qKiBTZXQgc2l6ZSBvZiB0aGUgY29udGFpbmVyLiAqL1xuICAgIHNpemU6IG51bWJlcixcbiAgfTtcbmV4cG9ydCBjb25zdCBMb2FkaW5nSW5kaWNhdG9yID0gKHByb3BzOiBMb2FkaW5nSWNvblByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjeCwgZ2V0U3R5bGVzLCBpbm5lclByb3BzLCBpc1J0bCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4uaW5uZXJQcm9wc31cbiAgICAgIGNzcz17Z2V0U3R5bGVzKCdsb2FkaW5nSW5kaWNhdG9yJywgcHJvcHMpfVxuICAgICAgY2xhc3NOYW1lPXtjeChcbiAgICAgICAge1xuICAgICAgICAgIGluZGljYXRvcjogdHJ1ZSxcbiAgICAgICAgICAnbG9hZGluZy1pbmRpY2F0b3InOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBjbGFzc05hbWVcbiAgICAgICl9XG4gICAgPlxuICAgICAgPExvYWRpbmdEb3QgZGVsYXk9ezB9IG9mZnNldD17aXNSdGx9IC8+XG4gICAgICA8TG9hZGluZ0RvdCBkZWxheT17MTYwfSBvZmZzZXQgLz5cbiAgICAgIDxMb2FkaW5nRG90IGRlbGF5PXszMjB9IG9mZnNldD17IWlzUnRsfSAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvYWRpbmdJbmRpY2F0b3IuZGVmYXVsdFByb3BzID0geyBzaXplOiA0IH07XG4iXX0= */\")\n });\n};\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n var className = props.className,\n cx = props.cx,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isRtl = props.isRtl;\n return jsx(\"div\", _extends$2({}, innerProps, {\n css: getStyles('loadingIndicator', props),\n className: cx({\n indicator: true,\n 'loading-indicator': true\n }, className)\n }), jsx(LoadingDot, {\n delay: 0,\n offset: isRtl\n }), jsx(LoadingDot, {\n delay: 160,\n offset: true\n }), jsx(LoadingDot, {\n delay: 320,\n offset: !isRtl\n }));\n};\n\nLoadingIndicator.defaultProps = {\n size: 4\n};\n\nfunction _extends$3() {\n _extends$3 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$3.apply(this, arguments);\n}\n\nvar 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 label: 'control',\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 '&: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 menuIsOpen = props.menuIsOpen;\n return jsx(\"div\", _extends$3({\n ref: innerRef,\n css: getStyles('control', props),\n className: cx({\n control: true,\n 'control--is-disabled': isDisabled,\n 'control--is-focused': isFocused,\n 'control--menu-is-open': menuIsOpen\n }, className)\n }, innerProps), children);\n};\n\nfunction _objectWithoutPropertiesLoose$1(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends$4() {\n _extends$4 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$4.apply(this, arguments);\n}\n\nvar 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 selectProps = props.selectProps;\n return jsx(\"div\", {\n css: getStyles('group', props),\n className: cx({\n group: true\n }, className)\n }, jsx(Heading, _extends$4({}, headingProps, {\n selectProps: selectProps,\n theme: theme,\n getStyles: getStyles,\n cx: cx\n }), label), jsx(\"div\", null, children));\n};\n\nvar groupHeadingCSS = function groupHeadingCSS(_ref2) {\n var spacing = _ref2.theme.spacing;\n return {\n label: 'group',\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 selectProps = props.selectProps,\n cleanProps = _objectWithoutPropertiesLoose$1(props, [\"className\", \"cx\", \"getStyles\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", _extends$4({\n css: getStyles('groupHeading', _extends$4({\n theme: theme\n }, cleanProps)),\n className: cx({\n 'group-heading': true\n }, className)\n }, cleanProps));\n};\n\nfunction _extends$5() {\n _extends$5 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$5.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose$2(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar 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};\n\nvar inputStyle = function inputStyle(isHidden) {\n return {\n label: 'input',\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 selectProps = _ref2.selectProps,\n props = _objectWithoutPropertiesLoose$2(_ref2, [\"className\", \"cx\", \"getStyles\", \"innerRef\", \"isHidden\", \"isDisabled\", \"theme\", \"selectProps\"]);\n\n return jsx(\"div\", {\n css: getStyles('input', _extends$5({\n theme: theme\n }, props))\n }, jsx(AutosizeInput, _extends$5({\n className: cx({\n input: true\n }, className),\n inputRef: innerRef,\n inputStyle: inputStyle(isHidden),\n disabled: isDisabled\n }, props)));\n};\n\nfunction _extends$6() {\n _extends$6 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$6.apply(this, arguments);\n}\n\nvar 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 label: 'multiValue',\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};\n\nvar 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 = 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 = function MultiValueGeneric(_ref4) {\n var children = _ref4.children,\n innerProps = _ref4.innerProps;\n return jsx(\"div\", innerProps, children);\n};\n\nvar MultiValueContainer = MultiValueGeneric;\nvar MultiValueLabel = MultiValueGeneric;\n\nfunction MultiValueRemove(_ref5) {\n var children = _ref5.children,\n innerProps = _ref5.innerProps;\n return jsx(\"div\", innerProps, children || jsx(CrossIcon, {\n size: 14\n }));\n}\n\nvar MultiValue = function MultiValue(props) {\n var children = props.children,\n className = props.className,\n components = props.components,\n cx = props.cx,\n data = props.data,\n getStyles = props.getStyles,\n innerProps = props.innerProps,\n isDisabled = props.isDisabled,\n removeProps = props.removeProps,\n selectProps = props.selectProps;\n var Container = components.Container,\n Label = components.Label,\n Remove = components.Remove;\n return jsx(ClassNames, null, function (_ref6) {\n var css = _ref6.css,\n emotionCx = _ref6.cx;\n return jsx(Container, {\n data: data,\n innerProps: _extends$6({}, innerProps, {\n className: emotionCx(css(getStyles('multiValue', props)), cx({\n 'multi-value': true,\n 'multi-value--is-disabled': isDisabled\n }, className))\n }),\n selectProps: selectProps\n }, jsx(Label, {\n data: data,\n innerProps: {\n className: emotionCx(css(getStyles('multiValueLabel', props)), cx({\n 'multi-value__label': true\n }, className))\n },\n selectProps: selectProps\n }, children), jsx(Remove, {\n data: data,\n innerProps: _extends$6({\n className: emotionCx(css(getStyles('multiValueRemove', props)), cx({\n 'multi-value__remove': true\n }, className))\n }, removeProps),\n selectProps: selectProps\n }));\n });\n};\n\nMultiValue.defaultProps = {\n cropWithEllipsis: true\n};\n\nfunction _extends$7() {\n _extends$7 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$7.apply(this, arguments);\n}\n\nvar 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 label: 'option',\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 // provide some affordance on touch devices\n ':active': {\n backgroundColor: !isDisabled && (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 return jsx(\"div\", _extends$7({\n css: getStyles('option', props),\n className: cx({\n option: true,\n 'option--is-disabled': isDisabled,\n 'option--is-focused': isFocused,\n 'option--is-selected': isSelected\n }, className),\n ref: innerRef\n }, innerProps), children);\n};\n\nfunction _extends$8() {\n _extends$8 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$8.apply(this, arguments);\n}\n\nvar placeholderCSS = function placeholderCSS(_ref) {\n var _ref$theme = _ref.theme,\n spacing = _ref$theme.spacing,\n colors = _ref$theme.colors;\n return {\n label: 'placeholder',\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 return jsx(\"div\", _extends$8({\n css: getStyles('placeholder', props),\n className: cx({\n placeholder: true\n }, className)\n }, innerProps), children);\n};\n\nfunction _extends$9() {\n _extends$9 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$9.apply(this, arguments);\n}\n\nvar css$1 = 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 label: 'singleValue',\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 return jsx(\"div\", _extends$9({\n css: getStyles('singleValue', props),\n className: cx({\n 'single-value': true,\n 'single-value--is-disabled': isDisabled\n }, className)\n }, innerProps), children);\n};\n\nfunction _extends$a() {\n _extends$a = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$a.apply(this, arguments);\n}\n\nvar components = {\n ClearIndicator: ClearIndicator,\n Control: Control,\n DropdownIndicator: DropdownIndicator,\n DownChevron: DownChevron,\n CrossIcon: CrossIcon,\n Group: Group,\n GroupHeading: GroupHeading,\n IndicatorsContainer: IndicatorsContainer,\n IndicatorSeparator: IndicatorSeparator,\n Input: Input,\n LoadingIndicator: LoadingIndicator,\n Menu: Menu,\n MenuList: MenuList,\n MenuPortal: MenuPortal,\n LoadingMessage: LoadingMessage,\n NoOptionsMessage: NoOptionsMessage,\n MultiValue: MultiValue,\n MultiValueContainer: MultiValueContainer,\n MultiValueLabel: MultiValueLabel,\n MultiValueRemove: MultiValueRemove,\n Option: Option,\n Placeholder: Placeholder,\n SelectContainer: SelectContainer,\n SingleValue: SingleValue,\n ValueContainer: ValueContainer\n};\n\nvar defaultComponents = function defaultComponents(props) {\n return _extends$a({}, components, props.components);\n};\n\nexport { MenuPlacer as M, containerCSS as a, css as b, clearIndicatorCSS as c, dropdownIndicatorCSS as d, groupHeadingCSS as e, indicatorSeparatorCSS as f, groupCSS as g, inputCSS as h, indicatorsContainerCSS as i, loadingMessageCSS as j, menuListCSS as k, loadingIndicatorCSS as l, menuCSS as m, menuPortalCSS as n, multiValueCSS as o, multiValueLabelCSS as p, multiValueRemoveCSS as q, noOptionsMessageCSS as r, optionCSS as s, placeholderCSS as t, css$1 as u, valueContainerCSS as v, defaultComponents as w, exportedEqual as x, components as y };","import React, { Component, PureComponent } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { jsx } from '@emotion/core';\nimport { findDOMNode } from 'react-dom';\nimport { i as isTouchCapable, d as isMobileDevice, e as cleanValue, f as scrollIntoView, h as classNames, n as noop, j as isDocumentElement } from './utils-06b0d5a4.browser.esm.js';\nimport { c as clearIndicatorCSS, a as containerCSS, b as css, d as dropdownIndicatorCSS, g as groupCSS, e as groupHeadingCSS, i as indicatorsContainerCSS, f as indicatorSeparatorCSS, h as inputCSS, l as loadingIndicatorCSS, j as loadingMessageCSS, m as menuCSS, k as menuListCSS, n as menuPortalCSS, o as multiValueCSS, p as multiValueLabelCSS, q as multiValueRemoveCSS, r as noOptionsMessageCSS, s as optionCSS, t as placeholderCSS, u as css$1, v as valueContainerCSS, M as MenuPlacer, w as defaultComponents, x as exportedEqual } from './index-4322c0ed.browser.esm.js';\nimport _css from '@emotion/css';\nvar diacritics = [{\n base: 'A',\n 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\n}, {\n base: 'AA',\n letters: /[\\uA732]/g\n}, {\n base: 'AE',\n letters: /[\\u00C6\\u01FC\\u01E2]/g\n}, {\n base: 'AO',\n letters: /[\\uA734]/g\n}, {\n base: 'AU',\n letters: /[\\uA736]/g\n}, {\n base: 'AV',\n letters: /[\\uA738\\uA73A]/g\n}, {\n base: 'AY',\n letters: /[\\uA73C]/g\n}, {\n base: 'B',\n letters: /[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]/g\n}, {\n base: 'C',\n letters: /[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]/g\n}, {\n base: 'D',\n letters: /[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]/g\n}, {\n base: 'DZ',\n letters: /[\\u01F1\\u01C4]/g\n}, {\n base: 'Dz',\n letters: /[\\u01F2\\u01C5]/g\n}, {\n base: 'E',\n 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\n}, {\n base: 'F',\n letters: /[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]/g\n}, {\n base: 'G',\n letters: /[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]/g\n}, {\n base: 'H',\n letters: /[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]/g\n}, {\n base: 'I',\n letters: /[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]/g\n}, {\n base: 'J',\n letters: /[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]/g\n}, {\n base: 'K',\n letters: /[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]/g\n}, {\n base: 'L',\n letters: /[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]/g\n}, {\n base: 'LJ',\n letters: /[\\u01C7]/g\n}, {\n base: 'Lj',\n letters: /[\\u01C8]/g\n}, {\n base: 'M',\n letters: /[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]/g\n}, {\n base: 'N',\n letters: /[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]/g\n}, {\n base: 'NJ',\n letters: /[\\u01CA]/g\n}, {\n base: 'Nj',\n letters: /[\\u01CB]/g\n}, {\n base: 'O',\n 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\n}, {\n base: 'OI',\n letters: /[\\u01A2]/g\n}, {\n base: 'OO',\n letters: /[\\uA74E]/g\n}, {\n base: 'OU',\n letters: /[\\u0222]/g\n}, {\n base: 'P',\n letters: /[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]/g\n}, {\n base: 'Q',\n letters: /[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]/g\n}, {\n base: 'R',\n letters: /[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]/g\n}, {\n base: 'S',\n letters: /[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]/g\n}, {\n base: 'T',\n letters: /[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]/g\n}, {\n base: 'TZ',\n letters: /[\\uA728]/g\n}, {\n base: 'U',\n 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\n}, {\n base: 'V',\n letters: /[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]/g\n}, {\n base: 'VY',\n letters: /[\\uA760]/g\n}, {\n base: 'W',\n letters: /[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]/g\n}, {\n base: 'X',\n letters: /[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]/g\n}, {\n base: 'Y',\n letters: /[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]/g\n}, {\n base: 'Z',\n letters: /[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]/g\n}, {\n base: 'a',\n 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\n}, {\n base: 'aa',\n letters: /[\\uA733]/g\n}, {\n base: 'ae',\n letters: /[\\u00E6\\u01FD\\u01E3]/g\n}, {\n base: 'ao',\n letters: /[\\uA735]/g\n}, {\n base: 'au',\n letters: /[\\uA737]/g\n}, {\n base: 'av',\n letters: /[\\uA739\\uA73B]/g\n}, {\n base: 'ay',\n letters: /[\\uA73D]/g\n}, {\n base: 'b',\n letters: /[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]/g\n}, {\n base: 'c',\n letters: /[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]/g\n}, {\n base: 'd',\n letters: /[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]/g\n}, {\n base: 'dz',\n letters: /[\\u01F3\\u01C6]/g\n}, {\n base: 'e',\n 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\n}, {\n base: 'f',\n letters: /[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]/g\n}, {\n base: 'g',\n letters: /[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]/g\n}, {\n base: 'h',\n letters: /[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]/g\n}, {\n base: 'hv',\n letters: /[\\u0195]/g\n}, {\n base: 'i',\n letters: /[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]/g\n}, {\n base: 'j',\n letters: /[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]/g\n}, {\n base: 'k',\n letters: /[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]/g\n}, {\n base: 'l',\n letters: /[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]/g\n}, {\n base: 'lj',\n letters: /[\\u01C9]/g\n}, {\n base: 'm',\n letters: /[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]/g\n}, {\n base: 'n',\n letters: /[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]/g\n}, {\n base: 'nj',\n letters: /[\\u01CC]/g\n}, {\n base: 'o',\n 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\n}, {\n base: 'oi',\n letters: /[\\u01A3]/g\n}, {\n base: 'ou',\n letters: /[\\u0223]/g\n}, {\n base: 'oo',\n letters: /[\\uA74F]/g\n}, {\n base: 'p',\n letters: /[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]/g\n}, {\n base: 'q',\n letters: /[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]/g\n}, {\n base: 'r',\n letters: /[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]/g\n}, {\n base: 's',\n letters: /[\\u0073\\u24E2\\uFF53\\u00DF\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]/g\n}, {\n base: 't',\n letters: /[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]/g\n}, {\n base: 'tz',\n letters: /[\\uA729]/g\n}, {\n base: 'u',\n 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\n}, {\n base: 'v',\n letters: /[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]/g\n}, {\n base: 'vy',\n letters: /[\\uA761]/g\n}, {\n base: 'w',\n letters: /[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]/g\n}, {\n base: 'x',\n letters: /[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]/g\n}, {\n base: 'y',\n letters: /[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]/g\n}, {\n base: 'z',\n letters: /[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]/g\n}];\n\nvar stripDiacritics = function stripDiacritics(str) {\n for (var i = 0; i < diacritics.length; i++) {\n str = str.replace(diacritics[i].letters, diacritics[i].base);\n }\n\n return str;\n};\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar trimString = function trimString(str) {\n return str.replace(/^\\s+|\\s+$/g, '');\n};\n\nvar defaultStringify = function defaultStringify(option) {\n return option.label + \" \" + option.value;\n};\n\nvar 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\n if (ignoreCase) {\n input = input.toLowerCase();\n candidate = candidate.toLowerCase();\n }\n\n if (ignoreAccents) {\n input = stripDiacritics(input);\n candidate = stripDiacritics(candidate);\n }\n\n return matchFrom === 'start' ? candidate.substr(0, input.length) === input : candidate.indexOf(input) > -1;\n };\n};\n\nfunction _extends$1() {\n _extends$1 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$1.apply(this, arguments);\n}\n\nvar _ref = process.env.NODE_ENV === \"production\" ? {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\"\n} : {\n name: \"1laao21-a11yText\",\n styles: \"label:a11yText;z-index:9999;border:0;clip:rect(1px, 1px, 1px, 1px);height:1px;width:1px;position:absolute;overflow:hidden;padding:0;white-space:nowrap;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkExMXlUZXh0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFNIiwiZmlsZSI6IkExMXlUZXh0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQGZsb3dcbi8qKiBAanN4IGpzeCAqL1xuaW1wb3J0IHsgdHlwZSBFbGVtZW50Q29uZmlnIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsganN4IH0gZnJvbSAnQGVtb3Rpb24vY29yZSc7XG5cbi8vIEFzc2lzdGl2ZSB0ZXh0IHRvIGRlc2NyaWJlIHZpc3VhbCBlbGVtZW50cy4gSGlkZGVuIGZvciBzaWdodGVkIHVzZXJzLlxuY29uc3QgQTExeVRleHQgPSAocHJvcHM6IEVsZW1lbnRDb25maWc8J3NwYW4nPikgPT4gKFxuICAgIDxzcGFuXG4gICAgICBjc3M9e3tcbiAgICAgICAgbGFiZWw6ICdhMTF5VGV4dCcsXG4gICAgICAgIHpJbmRleDogOTk5OSxcbiAgICAgICAgYm9yZGVyOiAwLFxuICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCwgMXB4LCAxcHgpJyxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMSxcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9fVxuICAgICAgey4uLnByb3BzfVxuICAgIC8+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBBMTF5VGV4dDtcbiJdfQ== */\"\n};\n\nvar A11yText = function A11yText(props) {\n return jsx(\"span\", _extends$1({\n css: _ref\n }, props));\n};\n\nfunction _extends$2() {\n _extends$2 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$2.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction DummyInput(_ref) {\n var inProp = _ref.in,\n out = _ref.out,\n onExited = _ref.onExited,\n appear = _ref.appear,\n enter = _ref.enter,\n exit = _ref.exit,\n innerRef = _ref.innerRef,\n emotion = _ref.emotion,\n props = _objectWithoutPropertiesLoose(_ref, [\"in\", \"out\", \"onExited\", \"appear\", \"enter\", \"exit\", \"innerRef\", \"emotion\"]);\n\n return jsx(\"input\", _extends$2({\n ref: innerRef\n }, props, {\n css: /*#__PURE__*/_css({\n label: 'dummyInput',\n // get rid of any default styles\n background: 0,\n border: 0,\n fontSize: 'inherit',\n outline: 0,\n padding: 0,\n // important! without `width` browsers won't allow focus\n width: 1,\n // remove cursor on desktop\n color: 'transparent',\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 }, process.env.NODE_ENV === \"production\" ? \"\" : \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkR1bW15SW5wdXQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJNIiwiZmlsZSI6IkR1bW15SW5wdXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAZmxvd1xuLyoqIEBqc3gganN4ICovXG5pbXBvcnQgeyBqc3ggfSBmcm9tICdAZW1vdGlvbi9jb3JlJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRHVtbXlJbnB1dCh7XG4gIGluOiBpblByb3AsXG4gIG91dCxcbiAgb25FeGl0ZWQsXG4gIGFwcGVhcixcbiAgZW50ZXIsXG4gIGV4aXQsXG4gIGlubmVyUmVmLFxuICBlbW90aW9uLFxuICAuLi5wcm9wc1xufTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgPGlucHV0XG4gICAgICByZWY9e2lubmVyUmVmfVxuICAgICAgey4uLnByb3BzfVxuICAgICAgY3NzPXt7XG4gICAgICAgIGxhYmVsOiAnZHVtbXlJbnB1dCcsXG4gICAgICAgIC8vIGdldCByaWQgb2YgYW55IGRlZmF1bHQgc3R5bGVzXG4gICAgICAgIGJhY2tncm91bmQ6IDAsXG4gICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgZm9udFNpemU6ICdpbmhlcml0JyxcbiAgICAgICAgb3V0bGluZTogMCxcbiAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgLy8gaW1wb3J0YW50ISB3aXRob3V0IGB3aWR0aGAgYnJvd3NlcnMgd29uJ3QgYWxsb3cgZm9jdXNcbiAgICAgICAgd2lkdGg6IDEsXG5cbiAgICAgICAgLy8gcmVtb3ZlIGN1cnNvciBvbiBkZXNrdG9wXG4gICAgICAgIGNvbG9yOiAndHJhbnNwYXJlbnQnLFxuXG4gICAgICAgIC8vIHJlbW92ZSBjdXJzb3Igb24gbW9iaWxlIHdoaWxzdCBtYWludGFpbmluZyBcInNjcm9sbCBpbnRvIHZpZXdcIiBiZWhhdmlvdXJcbiAgICAgICAgbGVmdDogLTEwMCxcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKDApJyxcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn1cbiJdfQ== */\")\n }));\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar NodeResolver = /*#__PURE__*/function (_Component) {\n _inheritsLoose(NodeResolver, _Component);\n\n function NodeResolver() {\n return _Component.apply(this, arguments) || this;\n }\n\n var _proto = NodeResolver.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.props.innerRef(findDOMNode(this));\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.props.innerRef(null);\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return NodeResolver;\n}(Component);\n\nvar STYLE_KEYS = ['boxSizing', 'height', 'overflow', 'paddingRight', 'position'];\nvar LOCK_STYLES = {\n boxSizing: 'border-box',\n // account for possible declaration `width: 100%;` on body\n overflow: 'hidden',\n position: 'relative',\n height: '100%'\n};\n\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} // `ontouchstart` check works on most browsers\n// `maxTouchPoints` works on IE10/11 and Surface\n\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.maxTouchPoints;\n}\n\nfunction _inheritsLoose$1(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(window.document && window.document.createElement);\nvar activeScrollLocks = 0;\n\nvar ScrollLock = /*#__PURE__*/function (_Component) {\n _inheritsLoose$1(ScrollLock, _Component);\n\n function ScrollLock() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.originalStyles = {};\n _this.listenerOptions = {\n capture: false,\n passive: false\n };\n return _this;\n }\n\n var _proto = ScrollLock.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n if (!canUseDOM) return;\n var _this$props = this.props,\n accountForScrollbars = _this$props.accountForScrollbars,\n touchScrollTarget = _this$props.touchScrollTarget;\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 STYLE_KEYS.forEach(function (key) {\n var val = targetStyle && targetStyle[key];\n _this2.originalStyles[key] = val;\n });\n } // apply the lock styles and padding if this is the first scroll lock\n\n\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 Object.keys(LOCK_STYLES).forEach(function (key) {\n var val = LOCK_STYLES[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n\n if (targetStyle) {\n targetStyle.paddingRight = adjustedPadding + \"px\";\n }\n } // account for touch devices\n\n\n if (target && isTouchDevice()) {\n // Mobile Safari ignores { overflow: hidden } declaration on the body.\n target.addEventListener('touchmove', preventTouchMove, this.listenerOptions); // Allow scroll on provided target\n\n if (touchScrollTarget) {\n touchScrollTarget.addEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.addEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n } // increment active scroll locks\n\n\n activeScrollLocks += 1;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var _this3 = this;\n\n if (!canUseDOM) return;\n var _this$props2 = this.props,\n accountForScrollbars = _this$props2.accountForScrollbars,\n touchScrollTarget = _this$props2.touchScrollTarget;\n var target = document.body;\n var targetStyle = target && target.style; // safely decrement active scroll locks\n\n activeScrollLocks = Math.max(activeScrollLocks - 1, 0); // reapply original body styles, if any\n\n if (accountForScrollbars && activeScrollLocks < 1) {\n STYLE_KEYS.forEach(function (key) {\n var val = _this3.originalStyles[key];\n\n if (targetStyle) {\n targetStyle[key] = val;\n }\n });\n } // remove touch listeners\n\n\n if (target && isTouchDevice()) {\n target.removeEventListener('touchmove', preventTouchMove, this.listenerOptions);\n\n if (touchScrollTarget) {\n touchScrollTarget.removeEventListener('touchstart', preventInertiaScroll, this.listenerOptions);\n touchScrollTarget.removeEventListener('touchmove', allowTouchMove, this.listenerOptions);\n }\n }\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return ScrollLock;\n}(Component);\n\nScrollLock.defaultProps = {\n accountForScrollbars: true\n};\n\nfunction _inheritsLoose$2(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar _ref$1 = process.env.NODE_ENV === \"production\" ? {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\"\n} : {\n name: \"1dsbpcp\",\n styles: \"position:fixed;left:0;bottom:0;right:0;top:0;\",\n map: \"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNjcm9sbEJsb2NrLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZEVSIsImZpbGUiOiJTY3JvbGxCbG9jay5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEBmbG93XG4vKiogQGpzeCBqc3ggKi9cbmltcG9ydCB7IFB1cmVDb21wb25lbnQsIHR5cGUgRWxlbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ0BlbW90aW9uL2NvcmUnO1xuaW1wb3J0IE5vZGVSZXNvbHZlciBmcm9tICcuL05vZGVSZXNvbHZlcic7XG5pbXBvcnQgU2Nyb2xsTG9jayBmcm9tICcuL1Njcm9sbExvY2svaW5kZXgnO1xuXG50eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogRWxlbWVudDwqPixcbiAgaXNFbmFibGVkOiBib29sZWFuLFxufTtcbnR5cGUgU3RhdGUgPSB7XG4gIHRvdWNoU2Nyb2xsVGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwsXG59O1xuXG4vLyBOT1RFOlxuLy8gV2Ugc2hvdWxkbid0IG5lZWQgdGhpcyBhZnRlciB1cGRhdGluZyB0byBSZWFjdCB2MTYuMy4wLCB3aGljaCBpbnRyb2R1Y2VzOlxuLy8gLSBjcmVhdGVSZWYoKSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjcmVhY3RjcmVhdGVyZWZcbi8vIC0gZm9yd2FyZFJlZigpIGh0dHBzOi8vcmVhY3Rqcy5vcmcvZG9jcy9yZWFjdC1hcGkuaHRtbCNyZWFjdGZvcndhcmRyZWZcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2Nyb2xsQmxvY2sgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuICBzdGF0ZSA9IHsgdG91Y2hTY3JvbGxUYXJnZXQ6IG51bGwgfTtcblxuICAvLyBtdXN0IGJlIGluIHN0YXRlIHRvIHRyaWdnZXIgYSByZS1yZW5kZXIsIG9ubHkgcnVucyBvbmNlIHBlciBpbnN0YW5jZVxuICBnZXRTY3JvbGxUYXJnZXQgPSAocmVmOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgIGlmIChyZWYgPT09IHRoaXMuc3RhdGUudG91Y2hTY3JvbGxUYXJnZXQpIHJldHVybjtcbiAgICB0aGlzLnNldFN0YXRlKHsgdG91Y2hTY3JvbGxUYXJnZXQ6IHJlZiB9KTtcbiAgfTtcblxuICAvLyB0aGlzIHdpbGwgY2xvc2UgdGhlIG1lbnUgd2hlbiBhIHVzZXIgY2xpY2tzIG91dHNpZGVcbiAgYmx1clNlbGVjdElucHV0ID0gKCkgPT4ge1xuICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH07XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGlzRW5hYmxlZCB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB7IHRvdWNoU2Nyb2xsVGFyZ2V0IH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgLy8gYmFpbCBlYXJseSBpZiBub3QgZW5hYmxlZFxuICAgIGlmICghaXNFbmFibGVkKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICAvKlxuICAgICAqIERpdlxuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGJsb2NrcyBzY3JvbGxpbmcgb24gbm9uLWJvZHkgZWxlbWVudHMgYmVoaW5kIHRoZSBtZW51XG5cbiAgICAgKiBOb2RlUmVzb2x2ZXJcbiAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgKiB3ZSBuZWVkIGEgcmVmZXJlbmNlIHRvIHRoZSBzY3JvbGxhYmxlIGVsZW1lbnQgdG8gXCJ1bmxvY2tcIiBzY3JvbGwgb25cbiAgICAgKiBtb2JpbGUgZGV2aWNlc1xuXG4gICAgICogU2Nyb2xsTG9ja1xuICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAqIGFjdHVhbGx5IGRvZXMgdGhlIHNjcm9sbCBsb2NraW5nXG4gICAgICovXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmJsdXJTZWxlY3RJbnB1dH1cbiAgICAgICAgICBjc3M9e3sgcG9zaXRpb246ICdmaXhlZCcsIGxlZnQ6IDAsIGJvdHRvbTogMCwgcmlnaHQ6IDAsIHRvcDogMCB9fVxuICAgICAgICAvPlxuICAgICAgICA8Tm9kZVJlc29sdmVyIGlubmVyUmVmPXt0aGlzLmdldFNjcm9sbFRhcmdldH0+e2NoaWxkcmVufTwvTm9kZVJlc29sdmVyPlxuICAgICAgICB7dG91Y2hTY3JvbGxUYXJnZXQgPyAoXG4gICAgICAgICAgPFNjcm9sbExvY2sgdG91Y2hTY3JvbGxUYXJnZXQ9e3RvdWNoU2Nyb2xsVGFyZ2V0fSAvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiJdfQ== */\"\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\n\nvar ScrollBlock = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose$2(ScrollBlock, _PureComponent);\n\n function ScrollBlock() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _PureComponent.call.apply(_PureComponent, [this].concat(args)) || this;\n _this.state = {\n touchScrollTarget: null\n };\n\n _this.getScrollTarget = function (ref) {\n if (ref === _this.state.touchScrollTarget) return;\n\n _this.setState({\n touchScrollTarget: ref\n });\n };\n\n _this.blurSelectInput = function () {\n if (document.activeElement) {\n document.activeElement.blur();\n }\n };\n\n return _this;\n }\n\n var _proto = ScrollBlock.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n isEnabled = _this$props.isEnabled;\n var touchScrollTarget = this.state.touchScrollTarget; // bail early if not enabled\n\n if (!isEnabled) return children;\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\n return jsx(\"div\", null, jsx(\"div\", {\n onClick: this.blurSelectInput,\n css: _ref$1\n }), jsx(NodeResolver, {\n innerRef: this.getScrollTarget\n }, children), touchScrollTarget ? jsx(ScrollLock, {\n touchScrollTarget: touchScrollTarget\n }) : null);\n };\n\n return ScrollBlock;\n}(PureComponent);\n\nfunction _objectWithoutPropertiesLoose$1(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _inheritsLoose$3(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar ScrollCaptor = /*#__PURE__*/function (_Component) {\n _inheritsLoose$3(ScrollCaptor, _Component);\n\n function ScrollCaptor() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.isBottom = false;\n _this.isTop = false;\n _this.scrollTarget = void 0;\n _this.touchStart = void 0;\n\n _this.cancelScroll = function (event) {\n event.preventDefault();\n event.stopPropagation();\n };\n\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 var target = _this.scrollTarget;\n var isDeltaPositive = delta > 0;\n var availableScroll = scrollHeight - clientHeight - scrollTop;\n var shouldCancelScroll = false; // reset bottom/top flags\n\n if (availableScroll > delta && _this.isBottom) {\n if (onBottomLeave) onBottomLeave(event);\n _this.isBottom = false;\n }\n\n if (isDeltaPositive && _this.isTop) {\n if (onTopLeave) onTopLeave(event);\n _this.isTop = false;\n } // bottom limit\n\n\n if (isDeltaPositive && delta > availableScroll) {\n if (onBottomArrive && !_this.isBottom) {\n onBottomArrive(event);\n }\n\n target.scrollTop = scrollHeight;\n shouldCancelScroll = true;\n _this.isBottom = true; // top limit\n } else if (!isDeltaPositive && -delta > scrollTop) {\n if (onTopArrive && !_this.isTop) {\n onTopArrive(event);\n }\n\n target.scrollTop = 0;\n shouldCancelScroll = true;\n _this.isTop = true;\n } // cancel scroll\n\n\n if (shouldCancelScroll) {\n _this.cancelScroll(event);\n }\n };\n\n _this.onWheel = function (event) {\n _this.handleEventDelta(event, event.deltaY);\n };\n\n _this.onTouchStart = function (event) {\n // set touch start so we can calculate touchmove delta\n _this.touchStart = event.changedTouches[0].clientY;\n };\n\n _this.onTouchMove = function (event) {\n var deltaY = _this.touchStart - event.changedTouches[0].clientY;\n\n _this.handleEventDelta(event, deltaY);\n };\n\n _this.getScrollTarget = function (ref) {\n _this.scrollTarget = ref;\n };\n\n return _this;\n }\n\n var _proto = ScrollCaptor.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.startListening(this.scrollTarget);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.stopListening(this.scrollTarget);\n };\n\n _proto.startListening = function startListening(el) {\n // bail early if no element is available to attach to\n if (!el) return; // all the if statements are to appease Flow 😢\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.addEventListener === 'function') {\n el.addEventListener('touchmove', this.onTouchMove, false);\n }\n };\n\n _proto.stopListening = function stopListening(el) {\n // all the if statements are to appease Flow 😢\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('wheel', this.onWheel, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchstart', this.onTouchStart, false);\n }\n\n if (typeof el.removeEventListener === 'function') {\n el.removeEventListener('touchmove', this.onTouchMove, false);\n }\n };\n\n _proto.render = function render() {\n return React.createElement(NodeResolver, {\n innerRef: this.getScrollTarget\n }, this.props.children);\n };\n\n return ScrollCaptor;\n}(Component);\n\nfunction ScrollCaptorSwitch(_ref) {\n var _ref$isEnabled = _ref.isEnabled,\n isEnabled = _ref$isEnabled === void 0 ? true : _ref$isEnabled,\n props = _objectWithoutPropertiesLoose$1(_ref, [\"isEnabled\"]);\n\n return isEnabled ? React.createElement(ScrollCaptor, props) : props.children;\n}\n\nvar instructionsAriaMessage = function instructionsAriaMessage(event, context) {\n if (context === void 0) {\n context = {};\n }\n\n var _context = context,\n isSearchable = _context.isSearchable,\n isMulti = _context.isMulti,\n label = _context.label,\n isDisabled = _context.isDisabled;\n\n switch (event) {\n case 'menu':\n return \"Use Up and Down to choose options\" + (isDisabled ? '' : ', 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\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\n case 'value':\n return 'Use left and right to toggle between focused values, press Backspace to remove the currently focused value';\n }\n};\n\nvar valueEventAriaMessage = function valueEventAriaMessage(event, context) {\n var value = context.value,\n isDisabled = context.isDisabled;\n if (!value) return;\n\n switch (event) {\n case 'deselect-option':\n case 'pop-value':\n case 'remove-value':\n return \"option \" + value + \", deselected.\";\n\n case 'select-option':\n return isDisabled ? \"option \" + value + \" is disabled. Select another option.\" : \"option \" + value + \", selected.\";\n }\n};\n\nvar 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};\n\nvar optionFocusAriaMessage = function optionFocusAriaMessage(_ref2) {\n var focusedOption = _ref2.focusedOption,\n getOptionLabel = _ref2.getOptionLabel,\n options = _ref2.options;\n return \"option \" + getOptionLabel(focusedOption) + \" focused\" + (focusedOption.isDisabled ? ' disabled' : '') + \", \" + (options.indexOf(focusedOption) + 1) + \" of \" + options.length + \".\";\n};\n\nvar resultsAriaMessage = function resultsAriaMessage(_ref3) {\n var inputValue = _ref3.inputValue,\n screenReaderMessage = _ref3.screenReaderMessage;\n return \"\" + screenReaderMessage + (inputValue ? ' for search term ' + inputValue : '') + \".\";\n};\n\nvar formatGroupLabel = function formatGroupLabel(group) {\n return group.label;\n};\n\nvar getOptionLabel = function getOptionLabel(option) {\n return option.label;\n};\n\nvar getOptionValue = function getOptionValue(option) {\n return option.value;\n};\n\nvar isOptionDisabled = function isOptionDisabled(option) {\n return !!option.isDisabled;\n};\n\nfunction _extends$3() {\n _extends$3 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$3.apply(this, arguments);\n}\n\nvar defaultStyles = {\n clearIndicator: clearIndicatorCSS,\n container: containerCSS,\n control: css,\n dropdownIndicator: dropdownIndicatorCSS,\n group: groupCSS,\n groupHeading: groupHeadingCSS,\n indicatorsContainer: indicatorsContainerCSS,\n indicatorSeparator: indicatorSeparatorCSS,\n input: inputCSS,\n loadingIndicator: loadingIndicatorCSS,\n loadingMessage: loadingMessageCSS,\n menu: menuCSS,\n menuList: menuListCSS,\n menuPortal: menuPortalCSS,\n multiValue: multiValueCSS,\n multiValueLabel: multiValueLabelCSS,\n multiValueRemove: multiValueRemoveCSS,\n noOptionsMessage: noOptionsMessageCSS,\n option: optionCSS,\n placeholder: placeholderCSS,\n singleValue: css$1,\n valueContainer: valueContainerCSS\n}; // Merge Utility\n// Allows consumers to extend a base Select with additional styles\n\nfunction mergeStyles(source, target) {\n if (target === void 0) {\n target = {};\n } // initialize with source styles\n\n\n var styles = _extends$3({}, source); // massage in target styles\n\n\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 return styles;\n}\n\nvar colors = {\n primary: '#2684FF',\n primary75: '#4C9AFF',\n primary50: '#B2D4FF',\n primary25: '#DEEBFF',\n danger: '#DE350B',\n dangerLight: '#FFBDAD',\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};\nvar borderRadius = 4; // Used to calculate consistent margin/padding on elements\n\nvar baseUnit = 4; // The minimum height of the control\n\nvar controlHeight = 38; // The amount of space between the control and menu */\n\nvar menuGutter = baseUnit * 2;\nvar spacing = {\n baseUnit: baseUnit,\n controlHeight: controlHeight,\n menuGutter: menuGutter\n};\nvar defaultTheme = {\n borderRadius: borderRadius,\n colors: colors,\n spacing: spacing\n};\n\nfunction _objectWithoutPropertiesLoose$2(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _extends$4() {\n _extends$4 = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends$4.apply(this, arguments);\n}\n\nfunction _inheritsLoose$4(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nvar defaultProps = {\n backspaceRemovesValue: true,\n blurInputOnSelect: isTouchCapable(),\n captureMenuScroll: !isTouchCapable(),\n closeMenuOnSelect: true,\n closeMenuOnScroll: false,\n components: {},\n controlShouldRenderValue: true,\n escapeClearsValue: false,\n filterOption: createFilter(),\n formatGroupLabel: formatGroupLabel,\n getOptionLabel: getOptionLabel,\n getOptionValue: getOptionValue,\n isDisabled: false,\n isLoading: false,\n isMulti: false,\n isRtl: false,\n isSearchable: true,\n isOptionDisabled: 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: !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};\nvar instanceId = 1;\n\nvar Select = /*#__PURE__*/function (_Component) {\n _inheritsLoose$4(Select, _Component); // Misc. Instance Properties\n // ------------------------------\n // TODO\n // Refs\n // ------------------------------\n // Lifecycle\n // ------------------------------\n\n\n function Select(_props) {\n var _this;\n\n _this = _Component.call(this, _props) || this;\n _this.state = {\n ariaLiveSelection: '',\n ariaLiveContext: '',\n focusedOption: null,\n focusedValue: null,\n inputIsHidden: false,\n isFocused: false,\n menuOptions: {\n render: [],\n focusable: []\n },\n selectValue: []\n };\n _this.blockOptionHover = false;\n _this.isComposing = false;\n _this.clearFocusValueOnUpdate = false;\n _this.commonProps = void 0;\n _this.components = void 0;\n _this.hasGroups = false;\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n _this.inputIsHiddenAfterUpdate = void 0;\n _this.instancePrefix = '';\n _this.openAfterFocus = false;\n _this.scrollToFocusedOptionOnUpdate = false;\n _this.userIsDragging = void 0;\n _this.controlRef = null;\n\n _this.getControlRef = function (ref) {\n _this.controlRef = ref;\n };\n\n _this.focusedOptionRef = null;\n\n _this.getFocusedOptionRef = function (ref) {\n _this.focusedOptionRef = ref;\n };\n\n _this.menuListRef = null;\n\n _this.getMenuListRef = function (ref) {\n _this.menuListRef = ref;\n };\n\n _this.inputRef = null;\n\n _this.getInputRef = function (ref) {\n _this.inputRef = ref;\n };\n\n _this.cacheComponents = function (components) {\n _this.components = defaultComponents({\n components: components\n });\n };\n\n _this.focus = _this.focusInput;\n _this.blur = _this.blurInput;\n\n _this.onChange = function (newValue, actionMeta) {\n var _this$props = _this.props,\n onChange = _this$props.onChange,\n name = _this$props.name;\n onChange(newValue, _extends$4({}, actionMeta, {\n name: name\n }));\n };\n\n _this.setValue = function (newValue, action, option) {\n if (action === void 0) {\n action = 'set-value';\n }\n\n var _this$props2 = _this.props,\n closeMenuOnSelect = _this$props2.closeMenuOnSelect,\n isMulti = _this$props2.isMulti;\n\n _this.onInputChange('', {\n action: 'set-value'\n });\n\n if (closeMenuOnSelect) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } // when the select value should change, we should reset focusedValue\n\n\n _this.clearFocusValueOnUpdate = true;\n\n _this.onChange(newValue, {\n action: action,\n option: option\n });\n };\n\n _this.selectOption = function (newValue) {\n var _this$props3 = _this.props,\n blurInputOnSelect = _this$props3.blurInputOnSelect,\n isMulti = _this$props3.isMulti;\n var selectValue = _this.state.selectValue;\n\n if (isMulti) {\n if (_this.isOptionSelected(newValue, selectValue)) {\n var candidate = _this.getOptionValue(newValue);\n\n _this.setValue(selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n }), 'deselect-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'deselect-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue([].concat(selectValue, [newValue]), 'select-option', newValue);\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n } else {\n if (!_this.isOptionDisabled(newValue, selectValue)) {\n _this.setValue(newValue, 'select-option');\n\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue)\n }\n });\n } else {\n // announce that option is disabled\n _this.announceAriaLiveSelection({\n event: 'select-option',\n context: {\n value: _this.getOptionLabel(newValue),\n isDisabled: true\n }\n });\n }\n }\n\n if (blurInputOnSelect) {\n _this.blurInput();\n }\n };\n\n _this.removeValue = function (removedValue) {\n var selectValue = _this.state.selectValue;\n\n var candidate = _this.getOptionValue(removedValue);\n\n var newValue = selectValue.filter(function (i) {\n return _this.getOptionValue(i) !== candidate;\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'remove-value',\n removedValue: removedValue\n });\n\n _this.announceAriaLiveSelection({\n event: 'remove-value',\n context: {\n value: removedValue ? _this.getOptionLabel(removedValue) : ''\n }\n });\n\n _this.focusInput();\n };\n\n _this.clearValue = function () {\n var isMulti = _this.props.isMulti;\n\n _this.onChange(isMulti ? [] : null, {\n action: 'clear'\n });\n };\n\n _this.popValue = function () {\n var selectValue = _this.state.selectValue;\n var lastSelectedValue = selectValue[selectValue.length - 1];\n var newValue = selectValue.slice(0, selectValue.length - 1);\n\n _this.announceAriaLiveSelection({\n event: 'pop-value',\n context: {\n value: lastSelectedValue ? _this.getOptionLabel(lastSelectedValue) : ''\n }\n });\n\n _this.onChange(newValue.length ? newValue : null, {\n action: 'pop-value',\n removedValue: lastSelectedValue\n });\n };\n\n _this.getOptionLabel = function (data) {\n return _this.props.getOptionLabel(data);\n };\n\n _this.getOptionValue = function (data) {\n return _this.props.getOptionValue(data);\n };\n\n _this.getStyles = function (key, props) {\n var base = defaultStyles[key](props);\n base.boxSizing = 'border-box';\n var custom = _this.props.styles[key];\n return custom ? custom(base, props) : base;\n };\n\n _this.getElementId = function (element) {\n return _this.instancePrefix + \"-\" + element;\n };\n\n _this.getActiveDescendentId = function () {\n var menuIsOpen = _this.props.menuIsOpen;\n var _this$state = _this.state,\n menuOptions = _this$state.menuOptions,\n focusedOption = _this$state.focusedOption;\n if (!focusedOption || !menuIsOpen) return undefined;\n var index = menuOptions.focusable.indexOf(focusedOption);\n var option = menuOptions.render[index];\n return option && option.key;\n };\n\n _this.announceAriaLiveSelection = function (_ref2) {\n var event = _ref2.event,\n context = _ref2.context;\n\n _this.setState({\n ariaLiveSelection: valueEventAriaMessage(event, context)\n });\n };\n\n _this.announceAriaLiveContext = function (_ref3) {\n var event = _ref3.event,\n context = _ref3.context;\n\n _this.setState({\n ariaLiveContext: instructionsAriaMessage(event, _extends$4({}, context, {\n label: _this.props['aria-label']\n }))\n });\n };\n\n _this.onMenuMouseDown = function (event) {\n if (event.button !== 0) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n _this.focusInput();\n };\n\n _this.onMenuMouseMove = function (event) {\n _this.blockOptionHover = false;\n };\n\n _this.onControlMouseDown = function (event) {\n var openMenuOnClick = _this.props.openMenuOnClick;\n\n if (!_this.state.isFocused) {\n if (openMenuOnClick) {\n _this.openAfterFocus = true;\n }\n\n _this.focusInput();\n } else if (!_this.props.menuIsOpen) {\n if (openMenuOnClick) {\n _this.openMenu('first');\n }\n } else {\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\n _this.onMenuClose();\n }\n }\n\n if ( // $FlowFixMe\n event.target.tagName !== 'INPUT' && event.target.tagName !== 'TEXTAREA') {\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\n if (_this.props.isDisabled) return;\n var _this$props4 = _this.props,\n isMulti = _this$props4.isMulti,\n menuIsOpen = _this$props4.menuIsOpen;\n\n _this.focusInput();\n\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = !isMulti;\n\n _this.onMenuClose();\n } else {\n _this.openMenu('first');\n }\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\n _this.clearValue();\n\n event.stopPropagation();\n _this.openAfterFocus = false;\n\n if (event.type === 'touchend') {\n _this.focusInput();\n } else {\n setTimeout(function () {\n return _this.focusInput();\n });\n }\n };\n\n _this.onScroll = function (event) {\n if (typeof _this.props.closeMenuOnScroll === 'boolean') {\n if (event.target instanceof HTMLElement && isDocumentElement(event.target)) {\n _this.props.onMenuClose();\n }\n } else if (typeof _this.props.closeMenuOnScroll === 'function') {\n if (_this.props.closeMenuOnScroll(event)) {\n _this.props.onMenuClose();\n }\n }\n };\n\n _this.onCompositionStart = function () {\n _this.isComposing = true;\n };\n\n _this.onCompositionEnd = function () {\n _this.isComposing = false;\n };\n\n _this.onTouchStart = function (_ref4) {\n var touches = _ref4.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n _this.initialTouchX = touch.clientX;\n _this.initialTouchY = touch.clientY;\n _this.userIsDragging = false;\n };\n\n _this.onTouchMove = function (_ref5) {\n var touches = _ref5.touches;\n var touch = touches.item(0);\n\n if (!touch) {\n return;\n }\n\n var deltaX = Math.abs(touch.clientX - _this.initialTouchX);\n var deltaY = Math.abs(touch.clientY - _this.initialTouchY);\n var moveThreshold = 5;\n _this.userIsDragging = deltaX > moveThreshold || deltaY > moveThreshold;\n };\n\n _this.onTouchEnd = function (event) {\n if (_this.userIsDragging) return; // close the menu if the user taps outside\n // we're checking on event.target here instead of event.currentTarget, because we want to assert information\n // on events on child elements, not the document (which we've attached this handler to).\n\n if (_this.controlRef && !_this.controlRef.contains(event.target) && _this.menuListRef && !_this.menuListRef.contains(event.target)) {\n _this.blurInput();\n } // reset move vars\n\n\n _this.initialTouchX = 0;\n _this.initialTouchY = 0;\n };\n\n _this.onControlTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onControlMouseDown(event);\n };\n\n _this.onClearIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onClearIndicatorMouseDown(event);\n };\n\n _this.onDropdownIndicatorTouchEnd = function (event) {\n if (_this.userIsDragging) return;\n\n _this.onDropdownIndicatorMouseDown(event);\n };\n\n _this.handleInputChange = function (event) {\n var inputValue = event.currentTarget.value;\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange(inputValue, {\n action: 'input-change'\n });\n\n _this.onMenuOpen();\n };\n\n _this.onInputFocus = function (event) {\n var _this$props5 = _this.props,\n isSearchable = _this$props5.isSearchable,\n isMulti = _this$props5.isMulti;\n\n if (_this.props.onFocus) {\n _this.props.onFocus(event);\n }\n\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n\n _this.setState({\n isFocused: true\n });\n\n if (_this.openAfterFocus || _this.props.openMenuOnFocus) {\n _this.openMenu('first');\n }\n\n _this.openAfterFocus = false;\n };\n\n _this.onInputBlur = function (event) {\n if (_this.menuListRef && _this.menuListRef.contains(document.activeElement)) {\n _this.inputRef.focus();\n\n return;\n }\n\n if (_this.props.onBlur) {\n _this.props.onBlur(event);\n }\n\n _this.onInputChange('', {\n action: 'input-blur'\n });\n\n _this.onMenuClose();\n\n _this.setState({\n focusedValue: null,\n isFocused: false\n });\n };\n\n _this.onOptionHover = function (focusedOption) {\n if (_this.blockOptionHover || _this.state.focusedOption === focusedOption) {\n return;\n }\n\n _this.setState({\n focusedOption: focusedOption\n });\n };\n\n _this.shouldHideSelectedOptions = function () {\n var _this$props6 = _this.props,\n hideSelectedOptions = _this$props6.hideSelectedOptions,\n isMulti = _this$props6.isMulti;\n if (hideSelectedOptions === undefined) return isMulti;\n return hideSelectedOptions;\n };\n\n _this.onKeyDown = function (event) {\n var _this$props7 = _this.props,\n isMulti = _this$props7.isMulti,\n backspaceRemovesValue = _this$props7.backspaceRemovesValue,\n escapeClearsValue = _this$props7.escapeClearsValue,\n inputValue = _this$props7.inputValue,\n isClearable = _this$props7.isClearable,\n isDisabled = _this$props7.isDisabled,\n menuIsOpen = _this$props7.menuIsOpen,\n onKeyDown = _this$props7.onKeyDown,\n tabSelectsValue = _this$props7.tabSelectsValue,\n openMenuOnFocus = _this$props7.openMenuOnFocus;\n var _this$state2 = _this.state,\n focusedOption = _this$state2.focusedOption,\n focusedValue = _this$state2.focusedValue,\n selectValue = _this$state2.selectValue;\n if (isDisabled) return;\n\n if (typeof onKeyDown === 'function') {\n onKeyDown(event);\n\n if (event.defaultPrevented) {\n return;\n }\n } // Block option hover events when the user has just pressed a key\n\n\n _this.blockOptionHover = true;\n\n switch (event.key) {\n case 'ArrowLeft':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('previous');\n\n break;\n\n case 'ArrowRight':\n if (!isMulti || inputValue) return;\n\n _this.focusValue('next');\n\n break;\n\n case 'Delete':\n case 'Backspace':\n if (inputValue) return;\n\n if (focusedValue) {\n _this.removeValue(focusedValue);\n } else {\n if (!backspaceRemovesValue) return;\n\n if (isMulti) {\n _this.popValue();\n } else if (isClearable) {\n _this.clearValue();\n }\n }\n\n break;\n\n case 'Tab':\n if (_this.isComposing) return;\n\n if (event.shiftKey || !menuIsOpen || !tabSelectsValue || !focusedOption || // 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 && _this.isOptionSelected(focusedOption, selectValue)) {\n return;\n }\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'Enter':\n if (event.keyCode === 229) {\n // ignore the keydown event from an Input Method Editor(IME)\n // ref. https://www.w3.org/TR/uievents/#determine-keydown-keyup-keyCode\n break;\n }\n\n if (menuIsOpen) {\n if (!focusedOption) return;\n if (_this.isComposing) return;\n\n _this.selectOption(focusedOption);\n\n break;\n }\n\n return;\n\n case 'Escape':\n if (menuIsOpen) {\n _this.inputIsHiddenAfterUpdate = false;\n\n _this.onInputChange('', {\n action: 'menu-close'\n });\n\n _this.onMenuClose();\n } else if (isClearable && escapeClearsValue) {\n _this.clearValue();\n }\n\n break;\n\n case ' ':\n // space\n if (inputValue) {\n return;\n }\n\n if (!menuIsOpen) {\n _this.openMenu('first');\n\n break;\n }\n\n if (!focusedOption) return;\n\n _this.selectOption(focusedOption);\n\n break;\n\n case 'ArrowUp':\n if (menuIsOpen) {\n _this.focusOption('up');\n } else {\n _this.openMenu('last');\n }\n\n break;\n\n case 'ArrowDown':\n if (menuIsOpen) {\n _this.focusOption('down');\n } else {\n _this.openMenu('first');\n }\n\n break;\n\n case 'PageUp':\n if (!menuIsOpen) return;\n\n _this.focusOption('pageup');\n\n break;\n\n case 'PageDown':\n if (!menuIsOpen) return;\n\n _this.focusOption('pagedown');\n\n break;\n\n case 'Home':\n if (!menuIsOpen) return;\n\n _this.focusOption('first');\n\n break;\n\n case 'End':\n if (!menuIsOpen) return;\n\n _this.focusOption('last');\n\n break;\n\n default:\n return;\n }\n\n event.preventDefault();\n };\n\n _this.buildMenuOptions = function (props, selectValue) {\n var _props$inputValue = props.inputValue,\n inputValue = _props$inputValue === void 0 ? '' : _props$inputValue,\n options = props.options;\n\n var toOption = function toOption(option, id) {\n var isDisabled = _this.isOptionDisabled(option, selectValue);\n\n var isSelected = _this.isOptionSelected(option, selectValue);\n\n var label = _this.getOptionLabel(option);\n\n var value = _this.getOptionValue(option);\n\n if (_this.shouldHideSelectedOptions() && isSelected || !_this.filterOption({\n label: label,\n value: value,\n data: option\n }, inputValue)) {\n return;\n }\n\n var onHover = isDisabled ? undefined : function () {\n return _this.onOptionHover(option);\n };\n var onSelect = isDisabled ? undefined : function () {\n return _this.selectOption(option);\n };\n var optionId = _this.getElementId('option') + \"-\" + id;\n return {\n innerProps: {\n id: optionId,\n onClick: onSelect,\n onMouseMove: onHover,\n onMouseOver: onHover,\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 (!_this.hasGroups) _this.hasGroups = true;\n var items = item.options;\n var children = items.map(function (child, i) {\n var option = toOption(child, itemIndex + \"-\" + i);\n if (option) acc.focusable.push(child);\n return option;\n }).filter(Boolean);\n\n if (children.length) {\n var groupId = _this.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\n if (option) {\n acc.render.push(option);\n acc.focusable.push(item);\n }\n }\n\n return acc;\n }, {\n render: [],\n focusable: []\n });\n };\n\n var _value = _props.value;\n _this.cacheComponents = memoizeOne(_this.cacheComponents, exportedEqual).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n _this.cacheComponents(_props.components);\n\n _this.instancePrefix = 'react-select-' + (_this.props.instanceId || ++instanceId);\n\n var _selectValue = cleanValue(_value);\n\n _this.buildMenuOptions = memoizeOne(_this.buildMenuOptions, function (newArgs, lastArgs) {\n var _ref6 = newArgs,\n newProps = _ref6[0],\n newSelectValue = _ref6[1];\n var _ref7 = lastArgs,\n lastProps = _ref7[0],\n lastSelectValue = _ref7[1];\n return exportedEqual(newSelectValue, lastSelectValue) && exportedEqual(newProps.inputValue, lastProps.inputValue) && exportedEqual(newProps.options, lastProps.options);\n }).bind(_assertThisInitialized(_assertThisInitialized(_this)));\n\n var _menuOptions = _props.menuIsOpen ? _this.buildMenuOptions(_props, _selectValue) : {\n render: [],\n focusable: []\n };\n\n _this.state.menuOptions = _menuOptions;\n _this.state.selectValue = _selectValue;\n return _this;\n }\n\n var _proto = Select.prototype;\n\n _proto.componentDidMount = 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 _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n var _this$props8 = this.props,\n options = _this$props8.options,\n value = _this$props8.value,\n menuIsOpen = _this$props8.menuIsOpen,\n inputValue = _this$props8.inputValue; // re-cache custom components\n\n this.cacheComponents(nextProps.components); // rebuild the menu options\n\n if (nextProps.value !== value || nextProps.options !== options || nextProps.menuIsOpen !== menuIsOpen || nextProps.inputValue !== inputValue) {\n var selectValue = cleanValue(nextProps.value);\n var menuOptions = nextProps.menuIsOpen ? this.buildMenuOptions(nextProps, selectValue) : {\n render: [],\n focusable: []\n };\n var focusedValue = this.getNextFocusedValue(selectValue);\n var focusedOption = this.getNextFocusedOption(menuOptions.focusable);\n this.setState({\n menuOptions: menuOptions,\n selectValue: selectValue,\n focusedOption: focusedOption,\n focusedValue: focusedValue\n });\n } // some updates should toggle the state of the input visibility\n\n\n if (this.inputIsHiddenAfterUpdate != null) {\n this.setState({\n inputIsHidden: this.inputIsHiddenAfterUpdate\n });\n delete this.inputIsHiddenAfterUpdate;\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props9 = this.props,\n isDisabled = _this$props9.isDisabled,\n menuIsOpen = _this$props9.menuIsOpen;\n var isFocused = this.state.isFocused;\n\n if ( // ensure focus is restored correctly when the control becomes enabled\n isFocused && !isDisabled && prevProps.isDisabled || // ensure focus is on the Input when the menu opens\n isFocused && menuIsOpen && !prevProps.menuIsOpen) {\n this.focusInput();\n } // scroll the focused option into view if necessary\n\n\n if (this.menuListRef && this.focusedOptionRef && this.scrollToFocusedOptionOnUpdate) {\n scrollIntoView(this.menuListRef, this.focusedOptionRef);\n this.scrollToFocusedOptionOnUpdate = false;\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.stopListeningComposition();\n this.stopListeningToTouch();\n document.removeEventListener('scroll', this.onScroll, true);\n }; // ==============================\n // Consumer Handlers\n // ==============================\n\n\n _proto.onMenuOpen = function onMenuOpen() {\n this.props.onMenuOpen();\n };\n\n _proto.onMenuClose = function onMenuClose() {\n var _this$props10 = this.props,\n isSearchable = _this$props10.isSearchable,\n isMulti = _this$props10.isMulti;\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n this.onInputChange('', {\n action: 'menu-close'\n });\n this.props.onMenuClose();\n };\n\n _proto.onInputChange = function onInputChange(newValue, actionMeta) {\n this.props.onInputChange(newValue, actionMeta);\n } // ==============================\n // Methods\n // ==============================\n ;\n\n _proto.focusInput = function focusInput() {\n if (!this.inputRef) return;\n this.inputRef.focus();\n };\n\n _proto.blurInput = function blurInput() {\n if (!this.inputRef) return;\n this.inputRef.blur();\n } // aliased for consumers\n ;\n\n _proto.openMenu = function openMenu(focusOption) {\n var _this2 = this;\n\n var _this$state3 = this.state,\n selectValue = _this$state3.selectValue,\n isFocused = _this$state3.isFocused;\n var menuOptions = this.buildMenuOptions(this.props, selectValue);\n var isMulti = this.props.isMulti;\n var openAtIndex = focusOption === 'first' ? 0 : menuOptions.focusable.length - 1;\n\n if (!isMulti) {\n var selectedIndex = menuOptions.focusable.indexOf(selectValue[0]);\n\n if (selectedIndex > -1) {\n openAtIndex = selectedIndex;\n }\n } // only scroll if the menu isn't already open\n\n\n this.scrollToFocusedOptionOnUpdate = !(isFocused && this.menuListRef);\n this.inputIsHiddenAfterUpdate = false;\n this.setState({\n menuOptions: menuOptions,\n focusedValue: null,\n focusedOption: menuOptions.focusable[openAtIndex]\n }, function () {\n _this2.onMenuOpen();\n\n _this2.announceAriaLiveContext({\n event: 'menu'\n });\n });\n };\n\n _proto.focusValue = function focusValue(direction) {\n var _this$props11 = this.props,\n isMulti = _this$props11.isMulti,\n isSearchable = _this$props11.isSearchable;\n var _this$state4 = this.state,\n selectValue = _this$state4.selectValue,\n focusedValue = _this$state4.focusedValue; // Only multiselects support value focusing\n\n if (!isMulti) return;\n this.setState({\n focusedOption: null\n });\n var focusedIndex = selectValue.indexOf(focusedValue);\n\n if (!focusedValue) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'value'\n });\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\n break;\n\n case 'next':\n if (focusedIndex > -1 && focusedIndex < lastIndex) {\n nextFocus = focusedIndex + 1;\n }\n\n break;\n }\n\n if (nextFocus === -1) {\n this.announceAriaLiveContext({\n event: 'input',\n context: {\n isSearchable: isSearchable,\n isMulti: isMulti\n }\n });\n }\n\n this.setState({\n inputIsHidden: nextFocus !== -1,\n focusedValue: selectValue[nextFocus]\n });\n };\n\n _proto.focusOption = function focusOption(direction) {\n if (direction === void 0) {\n direction = 'first';\n }\n\n var pageSize = this.props.pageSize;\n var _this$state5 = this.state,\n focusedOption = _this$state5.focusedOption,\n menuOptions = _this$state5.menuOptions;\n var options = menuOptions.focusable;\n if (!options.length) return;\n var nextFocus = 0; // handles 'first'\n\n var focusedIndex = options.indexOf(focusedOption);\n\n if (!focusedOption) {\n focusedIndex = -1;\n this.announceAriaLiveContext({\n event: 'menu'\n });\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\n this.scrollToFocusedOptionOnUpdate = true;\n this.setState({\n focusedOption: options[nextFocus],\n focusedValue: null\n });\n this.announceAriaLiveContext({\n event: 'menu',\n context: {\n isDisabled: isOptionDisabled(options[nextFocus])\n }\n });\n }; // ==============================\n // Getters\n // ==============================\n\n\n _proto.getTheme = function getTheme() {\n // Use the default theme if there are no customizations.\n if (!this.props.theme) {\n return defaultTheme;\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\n\n if (typeof this.props.theme === 'function') {\n return this.props.theme(defaultTheme);\n } // Otherwise, if a plain theme object was passed in,\n // overlay it with the default theme.\n\n\n return _extends$4({}, defaultTheme, this.props.theme);\n };\n\n _proto.getCommonProps = 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 var hasValue = this.hasValue();\n\n var getValue = function getValue() {\n return selectValue;\n };\n\n var cx = classNames.bind(null, classNamePrefix);\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 };\n };\n\n _proto.getNextFocusedValue = function getNextFocusedValue(nextSelectValue) {\n if (this.clearFocusValueOnUpdate) {\n this.clearFocusValueOnUpdate = false;\n return null;\n }\n\n var _this$state6 = this.state,\n focusedValue = _this$state6.focusedValue,\n lastSelectValue = _this$state6.selectValue;\n var lastFocusedIndex = lastSelectValue.indexOf(focusedValue);\n\n if (lastFocusedIndex > -1) {\n var nextFocusedIndex = nextSelectValue.indexOf(focusedValue);\n\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\n return null;\n };\n\n _proto.getNextFocusedOption = function getNextFocusedOption(options) {\n var lastFocusedOption = this.state.focusedOption;\n return lastFocusedOption && options.indexOf(lastFocusedOption) > -1 ? lastFocusedOption : options[0];\n };\n\n _proto.hasValue = function hasValue() {\n var selectValue = this.state.selectValue;\n return selectValue.length > 0;\n };\n\n _proto.hasOptions = function hasOptions() {\n return !!this.state.menuOptions.render.length;\n };\n\n _proto.countOptions = function countOptions() {\n return this.state.menuOptions.focusable.length;\n };\n\n _proto.isClearable = function isClearable() {\n var _this$props12 = this.props,\n isClearable = _this$props12.isClearable,\n isMulti = _this$props12.isMulti; // single select, by default, IS NOT clearable\n // multi select, by default, IS clearable\n\n if (isClearable === undefined) return isMulti;\n return isClearable;\n };\n\n _proto.isOptionDisabled = function isOptionDisabled(option, selectValue) {\n return typeof this.props.isOptionDisabled === 'function' ? this.props.isOptionDisabled(option, selectValue) : false;\n };\n\n _proto.isOptionSelected = function isOptionSelected(option, selectValue) {\n var _this3 = this;\n\n if (selectValue.indexOf(option) > -1) return true;\n\n if (typeof this.props.isOptionSelected === 'function') {\n return this.props.isOptionSelected(option, selectValue);\n }\n\n var candidate = this.getOptionValue(option);\n return selectValue.some(function (i) {\n return _this3.getOptionValue(i) === candidate;\n });\n };\n\n _proto.filterOption = function filterOption(option, inputValue) {\n return this.props.filterOption ? this.props.filterOption(option, inputValue) : true;\n };\n\n _proto.formatOptionLabel = function formatOptionLabel(data, context) {\n if (typeof this.props.formatOptionLabel === 'function') {\n var inputValue = this.props.inputValue;\n var selectValue = this.state.selectValue;\n return this.props.formatOptionLabel(data, {\n context: context,\n inputValue: inputValue,\n selectValue: selectValue\n });\n } else {\n return this.getOptionLabel(data);\n }\n };\n\n _proto.formatGroupLabel = function formatGroupLabel(data) {\n return this.props.formatGroupLabel(data);\n } // ==============================\n // Mouse Handlers\n // ==============================\n ; // ==============================\n // Composition Handlers\n // ==============================\n\n\n _proto.startListeningComposition = 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 _proto.stopListeningComposition = function stopListeningComposition() {\n if (document && document.removeEventListener) {\n document.removeEventListener('compositionstart', this.onCompositionStart);\n document.removeEventListener('compositionend', this.onCompositionEnd);\n }\n }; // ==============================\n // Touch Handlers\n // ==============================\n\n\n _proto.startListeningToTouch = 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 _proto.stopListeningToTouch = 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 // Renderers\n // ==============================\n\n\n _proto.constructAriaLiveMessage = function constructAriaLiveMessage() {\n var _this$state7 = this.state,\n ariaLiveContext = _this$state7.ariaLiveContext,\n selectValue = _this$state7.selectValue,\n focusedValue = _this$state7.focusedValue,\n focusedOption = _this$state7.focusedOption;\n var _this$props13 = this.props,\n options = _this$props13.options,\n menuIsOpen = _this$props13.menuIsOpen,\n inputValue = _this$props13.inputValue,\n screenReaderStatus = _this$props13.screenReaderStatus; // An aria live message representing the currently focused value in the select.\n\n var focusedValueMsg = focusedValue ? valueFocusAriaMessage({\n focusedValue: focusedValue,\n getOptionLabel: this.getOptionLabel,\n selectValue: selectValue\n }) : ''; // An aria live message representing the currently focused option in the select.\n\n var focusedOptionMsg = focusedOption && menuIsOpen ? optionFocusAriaMessage({\n focusedOption: focusedOption,\n getOptionLabel: this.getOptionLabel,\n options: options\n }) : ''; // An aria live message representing the set of focusable results and current searchterm/inputvalue.\n\n var resultsMsg = resultsAriaMessage({\n inputValue: inputValue,\n screenReaderMessage: screenReaderStatus({\n count: this.countOptions()\n })\n });\n return focusedValueMsg + \" \" + focusedOptionMsg + \" \" + resultsMsg + \" \" + ariaLiveContext;\n };\n\n _proto.renderInput = function renderInput() {\n var _this$props14 = this.props,\n isDisabled = _this$props14.isDisabled,\n isSearchable = _this$props14.isSearchable,\n inputId = _this$props14.inputId,\n inputValue = _this$props14.inputValue,\n tabIndex = _this$props14.tabIndex;\n var Input = this.components.Input;\n var inputIsHidden = this.state.inputIsHidden;\n var id = inputId || this.getElementId('input'); // aria attributes makes the JSX \"noisy\", separated for clarity\n\n var ariaAttributes = {\n 'aria-autocomplete': 'list',\n 'aria-label': this.props['aria-label'],\n 'aria-labelledby': this.props['aria-labelledby']\n };\n\n if (!isSearchable) {\n // use a dummy input to maintain focus/blur functionality\n return React.createElement(DummyInput, _extends$4({\n id: id,\n innerRef: this.getInputRef,\n onBlur: this.onInputBlur,\n onChange: noop,\n onFocus: this.onInputFocus,\n readOnly: true,\n disabled: isDisabled,\n tabIndex: tabIndex,\n value: \"\"\n }, ariaAttributes));\n }\n\n var _this$commonProps = this.commonProps,\n cx = _this$commonProps.cx,\n theme = _this$commonProps.theme,\n selectProps = _this$commonProps.selectProps;\n return React.createElement(Input, _extends$4({\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 }, ariaAttributes));\n };\n\n _proto.renderPlaceholderOrValue = function renderPlaceholderOrValue() {\n var _this4 = this;\n\n var _this$components = this.components,\n MultiValue = _this$components.MultiValue,\n MultiValueContainer = _this$components.MultiValueContainer,\n MultiValueLabel = _this$components.MultiValueLabel,\n MultiValueRemove = _this$components.MultiValueRemove,\n SingleValue = _this$components.SingleValue,\n Placeholder = _this$components.Placeholder;\n var commonProps = this.commonProps;\n var _this$props15 = this.props,\n controlShouldRenderValue = _this$props15.controlShouldRenderValue,\n isDisabled = _this$props15.isDisabled,\n isMulti = _this$props15.isMulti,\n inputValue = _this$props15.inputValue,\n placeholder = _this$props15.placeholder;\n var _this$state8 = this.state,\n selectValue = _this$state8.selectValue,\n focusedValue = _this$state8.focusedValue,\n isFocused = _this$state8.isFocused;\n\n if (!this.hasValue() || !controlShouldRenderValue) {\n return inputValue ? null : React.createElement(Placeholder, _extends$4({}, commonProps, {\n key: \"placeholder\",\n isDisabled: isDisabled,\n isFocused: isFocused\n }), placeholder);\n }\n\n if (isMulti) {\n var selectValues = selectValue.map(function (opt, index) {\n var isOptionFocused = opt === focusedValue;\n return React.createElement(MultiValue, _extends$4({}, commonProps, {\n components: {\n Container: MultiValueContainer,\n Label: MultiValueLabel,\n Remove: MultiValueRemove\n },\n isFocused: isOptionFocused,\n isDisabled: isDisabled,\n key: _this4.getOptionValue(opt),\n index: index,\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 }), _this4.formatOptionLabel(opt, 'value'));\n });\n return selectValues;\n }\n\n if (inputValue) {\n return null;\n }\n\n var singleValue = selectValue[0];\n return React.createElement(SingleValue, _extends$4({}, commonProps, {\n data: singleValue,\n isDisabled: isDisabled\n }), this.formatOptionLabel(singleValue, 'value'));\n };\n\n _proto.renderClearIndicator = function renderClearIndicator() {\n var ClearIndicator = this.components.ClearIndicator;\n var commonProps = this.commonProps;\n var _this$props16 = this.props,\n isDisabled = _this$props16.isDisabled,\n isLoading = _this$props16.isLoading;\n var isFocused = this.state.isFocused;\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 return React.createElement(ClearIndicator, _extends$4({}, commonProps, {\n innerProps: innerProps,\n isFocused: isFocused\n }));\n };\n\n _proto.renderLoadingIndicator = function renderLoadingIndicator() {\n var LoadingIndicator = this.components.LoadingIndicator;\n var commonProps = this.commonProps;\n var _this$props17 = this.props,\n isDisabled = _this$props17.isDisabled,\n isLoading = _this$props17.isLoading;\n var isFocused = this.state.isFocused;\n if (!LoadingIndicator || !isLoading) return null;\n var innerProps = {\n 'aria-hidden': 'true'\n };\n return React.createElement(LoadingIndicator, _extends$4({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n };\n\n _proto.renderIndicatorSeparator = function renderIndicatorSeparator() {\n var _this$components2 = this.components,\n DropdownIndicator = _this$components2.DropdownIndicator,\n IndicatorSeparator = _this$components2.IndicatorSeparator; // separator doesn't make sense without the dropdown indicator\n\n if (!DropdownIndicator || !IndicatorSeparator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n return React.createElement(IndicatorSeparator, _extends$4({}, commonProps, {\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n };\n\n _proto.renderDropdownIndicator = function renderDropdownIndicator() {\n var DropdownIndicator = this.components.DropdownIndicator;\n if (!DropdownIndicator) return null;\n var commonProps = this.commonProps;\n var isDisabled = this.props.isDisabled;\n var isFocused = this.state.isFocused;\n var innerProps = {\n onMouseDown: this.onDropdownIndicatorMouseDown,\n onTouchEnd: this.onDropdownIndicatorTouchEnd,\n 'aria-hidden': 'true'\n };\n return React.createElement(DropdownIndicator, _extends$4({}, commonProps, {\n innerProps: innerProps,\n isDisabled: isDisabled,\n isFocused: isFocused\n }));\n };\n\n _proto.renderMenu = function renderMenu() {\n var _this5 = this;\n\n var _this$components3 = this.components,\n Group = _this$components3.Group,\n GroupHeading = _this$components3.GroupHeading,\n Menu = _this$components3.Menu,\n MenuList = _this$components3.MenuList,\n MenuPortal = _this$components3.MenuPortal,\n LoadingMessage = _this$components3.LoadingMessage,\n NoOptionsMessage = _this$components3.NoOptionsMessage,\n Option = _this$components3.Option;\n var commonProps = this.commonProps;\n var _this$state9 = this.state,\n focusedOption = _this$state9.focusedOption,\n menuOptions = _this$state9.menuOptions;\n var _this$props18 = this.props,\n captureMenuScroll = _this$props18.captureMenuScroll,\n inputValue = _this$props18.inputValue,\n isLoading = _this$props18.isLoading,\n loadingMessage = _this$props18.loadingMessage,\n minMenuHeight = _this$props18.minMenuHeight,\n maxMenuHeight = _this$props18.maxMenuHeight,\n menuIsOpen = _this$props18.menuIsOpen,\n menuPlacement = _this$props18.menuPlacement,\n menuPosition = _this$props18.menuPosition,\n menuPortalTarget = _this$props18.menuPortalTarget,\n menuShouldBlockScroll = _this$props18.menuShouldBlockScroll,\n menuShouldScrollIntoView = _this$props18.menuShouldScrollIntoView,\n noOptionsMessage = _this$props18.noOptionsMessage,\n onMenuScrollToTop = _this$props18.onMenuScrollToTop,\n onMenuScrollToBottom = _this$props18.onMenuScrollToBottom;\n if (!menuIsOpen) return null; // TODO: Internal Option Type here\n\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 return React.createElement(Option, _extends$4({}, commonProps, props, {\n isFocused: isFocused\n }), _this5.formatOptionLabel(props.data, 'menu'));\n };\n\n var menuUI;\n\n if (this.hasOptions()) {\n menuUI = menuOptions.render.map(function (item) {\n if (item.type === 'group') {\n var type = item.type,\n group = _objectWithoutPropertiesLoose$2(item, [\"type\"]);\n\n var headingId = item.key + \"-heading\";\n return React.createElement(Group, _extends$4({}, commonProps, group, {\n Heading: GroupHeading,\n headingProps: {\n id: headingId\n },\n label: _this5.formatGroupLabel(item.data)\n }), item.options.map(function (option) {\n return render(option);\n }));\n } else if (item.type === 'option') {\n return render(item);\n }\n });\n } else if (isLoading) {\n var message = loadingMessage({\n inputValue: inputValue\n });\n if (message === null) return null;\n menuUI = React.createElement(LoadingMessage, commonProps, message);\n } else {\n var _message = noOptionsMessage({\n inputValue: inputValue\n });\n\n if (_message === null) return null;\n menuUI = React.createElement(NoOptionsMessage, commonProps, _message);\n }\n\n var menuPlacementProps = {\n minMenuHeight: minMenuHeight,\n maxMenuHeight: maxMenuHeight,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition,\n menuShouldScrollIntoView: menuShouldScrollIntoView\n };\n var menuElement = React.createElement(MenuPlacer, _extends$4({}, commonProps, menuPlacementProps), function (_ref8) {\n var ref = _ref8.ref,\n _ref8$placerProps = _ref8.placerProps,\n placement = _ref8$placerProps.placement,\n maxHeight = _ref8$placerProps.maxHeight;\n return React.createElement(Menu, _extends$4({}, commonProps, menuPlacementProps, {\n innerRef: ref,\n innerProps: {\n onMouseDown: _this5.onMenuMouseDown,\n onMouseMove: _this5.onMenuMouseMove\n },\n isLoading: isLoading,\n placement: placement\n }), React.createElement(ScrollCaptorSwitch, {\n isEnabled: captureMenuScroll,\n onTopArrive: onMenuScrollToTop,\n onBottomArrive: onMenuScrollToBottom\n }, React.createElement(ScrollBlock, {\n isEnabled: menuShouldBlockScroll\n }, React.createElement(MenuList, _extends$4({}, commonProps, {\n innerRef: _this5.getMenuListRef,\n isLoading: isLoading,\n maxHeight: maxHeight\n }), menuUI))));\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\n return menuPortalTarget || menuPosition === 'fixed' ? React.createElement(MenuPortal, _extends$4({}, commonProps, {\n appendTo: menuPortalTarget,\n controlElement: this.controlRef,\n menuPlacement: menuPlacement,\n menuPosition: menuPosition\n }), menuElement) : menuElement;\n };\n\n _proto.renderFormField = function renderFormField() {\n var _this6 = this;\n\n var _this$props19 = this.props,\n delimiter = _this$props19.delimiter,\n isDisabled = _this$props19.isDisabled,\n isMulti = _this$props19.isMulti,\n name = _this$props19.name;\n var selectValue = this.state.selectValue;\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 React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: value\n });\n } else {\n var input = selectValue.length > 0 ? selectValue.map(function (opt, i) {\n return React.createElement(\"input\", {\n key: \"i-\" + i,\n name: name,\n type: \"hidden\",\n value: _this6.getOptionValue(opt)\n });\n }) : React.createElement(\"input\", {\n name: name,\n type: \"hidden\"\n });\n return React.createElement(\"div\", null, input);\n }\n } else {\n var _value2 = selectValue[0] ? this.getOptionValue(selectValue[0]) : '';\n\n return React.createElement(\"input\", {\n name: name,\n type: \"hidden\",\n value: _value2\n });\n }\n };\n\n _proto.renderLiveRegion = function renderLiveRegion() {\n if (!this.state.isFocused) return null;\n return React.createElement(A11yText, {\n \"aria-live\": \"polite\"\n }, React.createElement(\"p\", {\n id: \"aria-selection-event\"\n }, \"\\xA0\", this.state.ariaLiveSelection), React.createElement(\"p\", {\n id: \"aria-context\"\n }, \"\\xA0\", this.constructAriaLiveMessage()));\n };\n\n _proto.render = function render() {\n var _this$components4 = this.components,\n Control = _this$components4.Control,\n IndicatorsContainer = _this$components4.IndicatorsContainer,\n SelectContainer = _this$components4.SelectContainer,\n ValueContainer = _this$components4.ValueContainer;\n var _this$props20 = this.props,\n className = _this$props20.className,\n id = _this$props20.id,\n isDisabled = _this$props20.isDisabled,\n menuIsOpen = _this$props20.menuIsOpen;\n var isFocused = this.state.isFocused;\n var commonProps = this.commonProps = this.getCommonProps();\n return React.createElement(SelectContainer, _extends$4({}, commonProps, {\n className: className,\n innerProps: {\n id: id,\n onKeyDown: this.onKeyDown\n },\n isDisabled: isDisabled,\n isFocused: isFocused\n }), this.renderLiveRegion(), React.createElement(Control, _extends$4({}, commonProps, {\n innerRef: this.getControlRef,\n innerProps: {\n onMouseDown: this.onControlMouseDown,\n onTouchEnd: this.onControlTouchEnd\n },\n isDisabled: isDisabled,\n isFocused: isFocused,\n menuIsOpen: menuIsOpen\n }), React.createElement(ValueContainer, _extends$4({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderPlaceholderOrValue(), this.renderInput()), React.createElement(IndicatorsContainer, _extends$4({}, commonProps, {\n isDisabled: isDisabled\n }), this.renderClearIndicator(), this.renderLoadingIndicator(), this.renderIndicatorSeparator(), this.renderDropdownIndicator())), this.renderMenu(), this.renderFormField());\n };\n\n return Select;\n}(Component);\n\nSelect.defaultProps = defaultProps;\nexport { Select as S, defaultTheme as a, createFilter as c, defaultProps as d, mergeStyles as m };","import React, { Component } from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar defaultProps = {\n defaultInputValue: '',\n defaultMenuIsOpen: false,\n defaultValue: null\n};\n\nvar manageState = function manageState(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(StateManager, _Component);\n\n function StateManager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.select = void 0;\n _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 };\n\n _this.onChange = function (value, actionMeta) {\n _this.callProp('onChange', value, actionMeta);\n\n _this.setState({\n value: value\n });\n };\n\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\n _this.setState({\n inputValue: newValue !== undefined ? newValue : value\n });\n };\n\n _this.onMenuOpen = function () {\n _this.callProp('onMenuOpen');\n\n _this.setState({\n menuIsOpen: true\n });\n };\n\n _this.onMenuClose = function () {\n _this.callProp('onMenuClose');\n\n _this.setState({\n menuIsOpen: false\n });\n };\n\n return _this;\n }\n\n var _proto = StateManager.prototype;\n\n _proto.focus = function focus() {\n this.select.focus();\n };\n\n _proto.blur = function blur() {\n this.select.blur();\n } // FIXME: untyped flow code, return any\n ;\n\n _proto.getProp = function getProp(key) {\n return this.props[key] !== undefined ? this.props[key] : this.state[key];\n } // FIXME: untyped flow code, return any\n ;\n\n _proto.callProp = function callProp(name) {\n if (typeof this.props[name] === 'function') {\n var _this$props;\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_this$props = this.props)[name].apply(_this$props, args);\n }\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n defaultInputValue = _this$props2.defaultInputValue,\n defaultMenuIsOpen = _this$props2.defaultMenuIsOpen,\n defaultValue = _this$props2.defaultValue,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\"]);\n\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this2.select = _ref;\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 return StateManager;\n }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nexport { manageState as m };","import React, { Component } from 'react';\nimport 'memoize-one';\nimport '@emotion/core';\nimport 'react-dom';\nimport 'prop-types';\nimport { k as handleInputChange } from '../../dist/utils-06b0d5a4.browser.esm.js';\nimport '../../dist/index-4322c0ed.browser.esm.js';\nimport { S as Select } from '../../dist/Select-9fdb8cd0.browser.esm.js';\nimport '@emotion/css';\nimport 'react-input-autosize';\nimport { m as manageState } from '../../dist/stateManager-04f734a2.browser.esm.js';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar defaultProps = {\n cacheOptions: false,\n defaultOptions: false,\n filterOption: null,\n isLoading: false\n};\n\nvar makeAsyncSelect = function makeAsyncSelect(SelectComponent) {\n var _class, _temp;\n\n return _temp = _class = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Async, _Component);\n\n function Async(props) {\n var _this;\n\n _this = _Component.call(this) || this;\n _this.select = void 0;\n _this.lastRequest = void 0;\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; // TODO\n\n var inputValue = handleInputChange(newValue, actionMeta, onInputChange);\n\n if (!inputValue) {\n delete _this.lastRequest;\n\n _this.setState({\n inputValue: '',\n loadedInputValue: '',\n loadedOptions: [],\n isLoading: false,\n passEmptyOptions: false\n });\n\n return;\n }\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\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\n if (options) {\n _this.optionsCache[inputValue] = options;\n }\n\n if (request !== _this.lastRequest) return;\n delete _this.lastRequest;\n\n _this.setState({\n isLoading: false,\n loadedInputValue: inputValue,\n loadedOptions: options || [],\n passEmptyOptions: false\n });\n });\n });\n }\n\n return inputValue;\n };\n\n _this.state = {\n defaultOptions: Array.isArray(props.defaultOptions) ? props.defaultOptions : undefined,\n inputValue: typeof props.inputValue !== 'undefined' ? props.inputValue : '',\n isLoading: props.defaultOptions === true,\n loadedOptions: [],\n passEmptyOptions: false\n };\n return _this;\n }\n\n var _proto = Async.prototype;\n\n _proto.componentDidMount = 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\n _this2.setState({\n defaultOptions: options || [],\n isLoading: isLoading\n });\n });\n }\n };\n\n _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n // if the cacheOptions prop changes, clear the cache\n if (nextProps.cacheOptions !== this.props.cacheOptions) {\n this.optionsCache = {};\n }\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 _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n _proto.focus = function focus() {\n this.select.focus();\n };\n\n _proto.blur = function blur() {\n this.select.blur();\n };\n\n _proto.loadOptions = function loadOptions(inputValue, callback) {\n var loadOptions = this.props.loadOptions;\n if (!loadOptions) return callback();\n var loader = loadOptions(inputValue, callback);\n\n if (loader && typeof loader.then === 'function') {\n loader.then(callback, function () {\n return callback();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props2 = this.props,\n loadOptions = _this$props2.loadOptions,\n isLoadingProp = _this$props2.isLoading,\n props = _objectWithoutPropertiesLoose(_this$props2, [\"loadOptions\", \"isLoading\"]);\n\n var _this$state = this.state,\n defaultOptions = _this$state.defaultOptions,\n inputValue = _this$state.inputValue,\n isLoading = _this$state.isLoading,\n loadedInputValue = _this$state.loadedInputValue,\n loadedOptions = _this$state.loadedOptions,\n passEmptyOptions = _this$state.passEmptyOptions;\n var options = passEmptyOptions ? [] : inputValue && loadedInputValue ? loadedOptions : defaultOptions || [];\n return React.createElement(SelectComponent, _extends({}, props, {\n ref: function ref(_ref) {\n _this3.select = _ref;\n },\n options: options,\n isLoading: isLoading || isLoadingProp,\n onInputChange: this.handleInputChange\n }));\n };\n\n return Async;\n }(Component), _class.defaultProps = defaultProps, _temp;\n};\n\nvar SelectState = manageState(Select);\nvar Async = makeAsyncSelect(SelectState);\nexport default Async;\nexport { defaultProps, makeAsyncSelect };","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport AccountContainer from 'flavours/glitch/containers/account_container';\nimport StatusContainer from 'flavours/glitch/containers/status_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Hashtag from 'flavours/glitch/components/hashtag';\nimport Icon from 'flavours/glitch/components/icon';\nimport { searchEnabled } from 'flavours/glitch/util/initial_state';\nimport LoadMore from 'flavours/glitch/components/load_more';\n\nconst messages = defineMessages({\n dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' },\n});\n\nexport default @injectIntl\nclass SearchResults extends ImmutablePureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.map.isRequired,\n suggestions: ImmutablePropTypes.list.isRequired,\n fetchSuggestions: PropTypes.func.isRequired,\n expandSearch: PropTypes.func.isRequired,\n dismissSuggestion: PropTypes.func.isRequired,\n searchTerm: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n if (this.props.searchTerm === '') {\n this.props.fetchSuggestions();\n }\n }\n\n handleLoadMoreAccounts = () => this.props.expandSearch('accounts');\n\n handleLoadMoreStatuses = () => this.props.expandSearch('statuses');\n\n handleLoadMoreHashtags = () => this.props.expandSearch('hashtags');\n\n render () {\n const { intl, results, suggestions, dismissSuggestion, searchTerm } = this.props;\n\n if (results.isEmpty() && !suggestions.isEmpty()) {\n return (\n <div className='drawer--results'>\n <div className='trends'>\n <div className='trends__header'>\n <Icon fixedWidth id='user-plus' />\n <FormattedMessage id='suggestions.header' defaultMessage='You might be interested in…' />\n </div>\n\n {suggestions && suggestions.map(accountId => (\n <AccountContainer\n key={accountId}\n id={accountId}\n actionIcon='times'\n actionTitle={intl.formatMessage(messages.dismissSuggestion)}\n onActionClick={dismissSuggestion}\n />\n ))}\n </div>\n </div>\n );\n } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) {\n statuses = (\n <section>\n <h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>\n\n <div className='search-results__info'>\n <FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />\n </div>\n </section>\n );\n }\n\n let accounts, statuses, hashtags;\n let count = 0;\n\n if (results.get('accounts') && results.get('accounts').size > 0) {\n count += results.get('accounts').size;\n accounts = (\n <section>\n <h5><Icon id='users' fixedWidth /><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>\n\n {results.get('accounts').map(accountId => <AccountContainer id={accountId} key={accountId} />)}\n\n {results.get('accounts').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreAccounts} />}\n </section>\n );\n }\n\n if (results.get('statuses') && results.get('statuses').size > 0) {\n count += results.get('statuses').size;\n statuses = (\n <section>\n <h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>\n\n {results.get('statuses').map(statusId => <StatusContainer id={statusId} key={statusId}/>)}\n\n {results.get('statuses').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreStatuses} />}\n </section>\n );\n }\n\n if (results.get('hashtags') && results.get('hashtags').size > 0) {\n count += results.get('hashtags').size;\n hashtags = (\n <section>\n <h5><Icon id='hashtag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>\n\n {results.get('hashtags').map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}\n\n {results.get('hashtags').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreHashtags} />}\n </section>\n );\n }\n\n // The result.\n return (\n <div className='drawer--results'>\n <header className='search-results__header'>\n <Icon id='search' fixedWidth />\n <FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />\n </header>\n\n {accounts}\n {statuses}\n {hashtags}\n </div>\n );\n };\n}\n","import { connect } from 'react-redux';\nimport SearchResults from '../components/search_results';\nimport { fetchSuggestions, dismissSuggestion } from 'flavours/glitch/actions/suggestions';\nimport { expandSearch } from 'flavours/glitch/actions/search';\n\nconst mapStateToProps = state => ({\n results: state.getIn(['search', 'results']),\n suggestions: state.getIn(['suggestions', 'items']),\n searchTerm: state.getIn(['search', 'searchTerm']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n fetchSuggestions: () => dispatch(fetchSuggestions()),\n expandSearch: type => dispatch(expandSearch(type)),\n dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SearchResults);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport AccountContainer from '../../../containers/account_container';\nimport StatusContainer from '../../../containers/status_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Hashtag from '../../../components/hashtag';\nimport Icon from 'mastodon/components/icon';\nimport { searchEnabled } from '../../../initial_state';\nimport LoadMore from 'mastodon/components/load_more';\n\nconst messages = defineMessages({\n dismissSuggestion: { id: 'suggestions.dismiss', defaultMessage: 'Dismiss suggestion' },\n});\n\nexport default @injectIntl\nclass SearchResults extends ImmutablePureComponent {\n\n static propTypes = {\n results: ImmutablePropTypes.map.isRequired,\n suggestions: ImmutablePropTypes.list.isRequired,\n fetchSuggestions: PropTypes.func.isRequired,\n expandSearch: PropTypes.func.isRequired,\n dismissSuggestion: PropTypes.func.isRequired,\n searchTerm: PropTypes.string,\n intl: PropTypes.object.isRequired,\n };\n\n componentDidMount () {\n if (this.props.searchTerm === '') {\n this.props.fetchSuggestions();\n }\n }\n\n handleLoadMoreAccounts = () => this.props.expandSearch('accounts');\n\n handleLoadMoreStatuses = () => this.props.expandSearch('statuses');\n\n handleLoadMoreHashtags = () => this.props.expandSearch('hashtags');\n\n render () {\n const { intl, results, suggestions, dismissSuggestion, searchTerm } = this.props;\n\n if (results.isEmpty() && !suggestions.isEmpty()) {\n return (\n <div className='search-results'>\n <div className='trends'>\n <div className='trends__header'>\n <Icon id='user-plus' fixedWidth />\n <FormattedMessage id='suggestions.header' defaultMessage='You might be interested in…' />\n </div>\n\n {suggestions && suggestions.map(accountId => (\n <AccountContainer\n key={accountId}\n id={accountId}\n actionIcon='times'\n actionTitle={intl.formatMessage(messages.dismissSuggestion)}\n onActionClick={dismissSuggestion}\n />\n ))}\n </div>\n </div>\n );\n }\n\n let accounts, statuses, hashtags;\n let count = 0;\n\n if (results.get('accounts') && results.get('accounts').size > 0) {\n count += results.get('accounts').size;\n accounts = (\n <div className='search-results__section'>\n <h5><Icon id='users' fixedWidth /><FormattedMessage id='search_results.accounts' defaultMessage='People' /></h5>\n\n {results.get('accounts').map(accountId => <AccountContainer key={accountId} id={accountId} />)}\n\n {results.get('accounts').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreAccounts} />}\n </div>\n );\n }\n\n if (results.get('statuses') && results.get('statuses').size > 0) {\n count += results.get('statuses').size;\n statuses = (\n <div className='search-results__section'>\n <h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>\n\n {results.get('statuses').map(statusId => <StatusContainer key={statusId} id={statusId} />)}\n\n {results.get('statuses').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreStatuses} />}\n </div>\n );\n } else if(results.get('statuses') && results.get('statuses').size === 0 && !searchEnabled && !(searchTerm.startsWith('@') || searchTerm.startsWith('#') || searchTerm.includes(' '))) {\n statuses = (\n <div className='search-results__section'>\n <h5><Icon id='quote-right' fixedWidth /><FormattedMessage id='search_results.statuses' defaultMessage='Toots' /></h5>\n\n <div className='search-results__info'>\n <FormattedMessage id='search_results.statuses_fts_disabled' defaultMessage='Searching toots by their content is not enabled on this Mastodon server.' />\n </div>\n </div>\n );\n }\n\n if (results.get('hashtags') && results.get('hashtags').size > 0) {\n count += results.get('hashtags').size;\n hashtags = (\n <div className='search-results__section'>\n <h5><Icon id='hashtag' fixedWidth /><FormattedMessage id='search_results.hashtags' defaultMessage='Hashtags' /></h5>\n\n {results.get('hashtags').map(hashtag => <Hashtag key={hashtag.get('name')} hashtag={hashtag} />)}\n\n {results.get('hashtags').size >= 5 && <LoadMore visible onClick={this.handleLoadMoreHashtags} />}\n </div>\n );\n }\n\n return (\n <div className='search-results'>\n <div className='search-results__header'>\n <Icon id='search' fixedWidth />\n <FormattedMessage id='search_results.total' defaultMessage='{count, number} {count, plural, one {result} other {results}}' values={{ count }} />\n </div>\n\n {accounts}\n {statuses}\n {hashtags}\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport SearchResults from '../components/search_results';\nimport { fetchSuggestions, dismissSuggestion } from 'mastodon/actions/suggestions';\nimport { expandSearch } from 'mastodon/actions/search';\n\nconst mapStateToProps = state => ({\n results: state.getIn(['search', 'results']),\n suggestions: state.getIn(['suggestions', 'items']),\n searchTerm: state.getIn(['search', 'searchTerm']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n fetchSuggestions: () => dispatch(fetchSuggestions()),\n expandSearch: type => dispatch(expandSearch(type)),\n dismissSuggestion: account => dispatch(dismissSuggestion(account.get('id'))),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SearchResults);\n","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _elementType = require('prop-types-extra/lib/elementType');\n\nvar _elementType2 = _interopRequireDefault(_elementType);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Portal = require('./Portal');\n\nvar _Portal2 = _interopRequireDefault(_Portal);\n\nvar _Position = require('./Position');\n\nvar _Position2 = _interopRequireDefault(_Position);\n\nvar _RootCloseWrapper = require('./RootCloseWrapper');\n\nvar _RootCloseWrapper2 = _interopRequireDefault(_RootCloseWrapper);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * Built on top of `<Position/>` and `<Portal/>`, the overlay component is great for custom tooltip overlays.\n */\n\n\nvar Overlay = function (_React$Component) {\n _inherits(Overlay, _React$Component);\n\n function Overlay(props, context) {\n _classCallCheck(this, Overlay);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.handleHidden = function () {\n _this.setState({\n exited: true\n });\n\n if (_this.props.onExited) {\n var _this$props;\n\n (_this$props = _this.props).onExited.apply(_this$props, arguments);\n }\n };\n\n _this.state = {\n exited: !props.show\n };\n _this.onHiddenListener = _this.handleHidden.bind(_this);\n return _this;\n }\n\n Overlay.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.show) {\n this.setState({\n exited: false\n });\n } else if (!nextProps.transition) {\n // Otherwise let handleHidden take care of marking exited.\n this.setState({\n exited: true\n });\n }\n };\n\n Overlay.prototype.render = function render() {\n var _props = this.props,\n container = _props.container,\n containerPadding = _props.containerPadding,\n target = _props.target,\n placement = _props.placement,\n shouldUpdatePosition = _props.shouldUpdatePosition,\n rootClose = _props.rootClose,\n children = _props.children,\n Transition = _props.transition,\n props = _objectWithoutProperties(_props, ['container', 'containerPadding', 'target', 'placement', 'shouldUpdatePosition', 'rootClose', 'children', 'transition']); // Don't un-render the overlay while it's transitioning out.\n\n\n var mountOverlay = props.show || Transition && !this.state.exited;\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n return null;\n }\n\n var child = children; // Position is be inner-most because it adds inline styles into the child,\n // which the other wrappers don't forward correctly.\n\n child = _react2.default.createElement(_Position2.default, {\n container: container,\n containerPadding: containerPadding,\n target: target,\n placement: placement,\n shouldUpdatePosition: shouldUpdatePosition\n }, child);\n\n if (Transition) {\n var onExit = props.onExit,\n onExiting = props.onExiting,\n onEnter = props.onEnter,\n onEntering = props.onEntering,\n onEntered = props.onEntered; // This animates the child node by injecting props, so it must precede\n // anything that adds a wrapping div.\n\n child = _react2.default.createElement(Transition, {\n 'in': props.show,\n appear: true,\n onExit: onExit,\n onExiting: onExiting,\n onExited: this.onHiddenListener,\n onEnter: onEnter,\n onEntering: onEntering,\n onEntered: onEntered\n }, child);\n } // This goes after everything else because it adds a wrapping div.\n\n\n if (rootClose) {\n child = _react2.default.createElement(_RootCloseWrapper2.default, {\n onRootClose: props.onHide,\n event: props.rootCloseEvent\n }, child);\n }\n\n return _react2.default.createElement(_Portal2.default, {\n container: container\n }, child);\n };\n\n return Overlay;\n}(_react2.default.Component);\n\nOverlay.propTypes = _extends({}, _Portal2.default.propTypes, _Position2.default.propTypes, {\n /**\n * Set the visibility of the Overlay\n */\n show: _propTypes2.default.bool,\n\n /**\n * Specify whether the overlay should trigger `onHide` when the user clicks outside the overlay\n */\n rootClose: _propTypes2.default.bool,\n\n /**\n * Specify event for toggling overlay\n */\n rootCloseEvent: _RootCloseWrapper2.default.propTypes.event,\n\n /**\n * A Callback fired by the Overlay when it wishes to be hidden.\n *\n * __required__ when `rootClose` is `true`.\n *\n * @type func\n */\n onHide: function onHide(props) {\n var propType = _propTypes2.default.func;\n\n if (props.rootClose) {\n propType = propType.isRequired;\n }\n\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 return propType.apply(undefined, [props].concat(args));\n },\n\n /**\n * A `react-transition-group@2.0.0` `<Transition/>` component\n * used to animate the overlay as it changes visibility.\n */\n transition: _elementType2.default,\n\n /**\n * Callback fired before the Overlay transitions in\n */\n onEnter: _propTypes2.default.func,\n\n /**\n * Callback fired as the Overlay begins to transition in\n */\n onEntering: _propTypes2.default.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning in\n */\n onEntered: _propTypes2.default.func,\n\n /**\n * Callback fired right before the Overlay transitions out\n */\n onExit: _propTypes2.default.func,\n\n /**\n * Callback fired as the Overlay begins to transition out\n */\n onExiting: _propTypes2.default.func,\n\n /**\n * Callback fired after the Overlay finishes transitioning out\n */\n onExited: _propTypes2.default.func\n});\nexports.default = Overlay;\nmodule.exports = exports['default'];","module.exports = {\n \"default\": require(\"core-js/library/fn/object/values\"),\n __esModule: true\n};","require('../../modules/es7.object.values');\n\nmodule.exports = require('../../modules/_core').Object.values;","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\n\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n});","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object'); // instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\n\n\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};","var getKeys = require('./_object-keys');\n\nvar toIObject = require('./_to-iobject');\n\nvar isEnum = require('./_object-pie').f;\n\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n\n while (length > i) {\n if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n\n return result;\n };\n};","var has = require('./_has');\n\nvar toIObject = require('./_to-iobject');\n\nvar arrayIndexOf = require('./_array-includes')(false);\n\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\n for (key in O) {\n if (key != IE_PROTO) has(O, key) && result.push(key);\n } // Don't enum bug & hidden keys\n\n\n while (names.length > i) {\n if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n }\n\n return result;\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof'); // eslint-disable-next-line no-prototype-builtins\n\n\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\n\nvar toLength = require('./_to-length');\n\nvar toAbsoluteIndex = require('./_to-absolute-index');\n\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; // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++]; // eslint-disable-next-line no-self-compare\n\n if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not\n } else for (; length > index; index++) {\n if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n }\n }\n return !IS_INCLUDES && -1;\n };\n};","var toInteger = require('./_to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};","exports.f = {}.propertyIsEnumerable;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","module.exports = {\n \"default\": require(\"core-js/library/fn/array/from\"),\n __esModule: true\n};","require('../../modules/es6.string.iterator');\n\nrequire('../../modules/es6.array.from');\n\nmodule.exports = require('../../modules/_core').Array.from;","'use strict';\n\nvar $at = require('./_string-at')(true); // 21.1.3.27 String.prototype[@@iterator]()\n\n\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n\n this._i = 0; // next index\n // 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return {\n value: undefined,\n done: true\n };\n point = $at(O, index);\n this._i += point.length;\n return {\n value: point,\n done: false\n };\n});","var toInteger = require('./_to-integer');\n\nvar defined = require('./_defined'); // true -> String#at\n// false -> String#codePointAt\n\n\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};","'use strict';\n\nvar LIBRARY = require('./_library');\n\nvar $export = require('./_export');\n\nvar redefine = require('./_redefine');\n\nvar hide = require('./_hide');\n\nvar Iterators = require('./_iterators');\n\nvar $iterCreate = require('./_iter-create');\n\nvar setToStringTag = require('./_set-to-string-tag');\n\nvar getPrototypeOf = require('./_object-gpo');\n\nvar ITERATOR = require('./_wks')('iterator');\n\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\n\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function returnThis() {\n return this;\n};\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n\n var getMethod = function getMethod(kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n\n switch (kind) {\n case KEYS:\n return function keys() {\n return new Constructor(this, kind);\n };\n\n case VALUES:\n return function values() {\n return new Constructor(this, kind);\n };\n }\n\n return function entries() {\n return new Constructor(this, kind);\n };\n };\n\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype; // Fix native\n\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines\n\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n } // fix Array#{values, @@iterator}.name in V8 / FF\n\n\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n\n $default = function values() {\n return $native.call(this);\n };\n } // Define iterator\n\n\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n } // Plug for library\n\n\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n\n return methods;\n};","module.exports = require('./_hide');","'use strict';\n\nvar create = require('./_object-create');\n\nvar descriptor = require('./_property-desc');\n\nvar setToStringTag = require('./_set-to-string-tag');\n\nvar IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () {\n return this;\n});\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, {\n next: descriptor(1, next)\n });\n setToStringTag(Constructor, NAME + ' Iterator');\n};","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\n\nvar dPs = require('./_object-dps');\n\nvar enumBugKeys = require('./_enum-bug-keys');\n\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nvar Empty = function Empty() {\n /* empty */\n};\n\nvar PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype\n\nvar _createDict = function createDict() {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n\n require('./_html').appendChild(iframe);\n\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n _createDict = iframeDocument.F;\n\n while (i--) {\n delete _createDict[PROTOTYPE][enumBugKeys[i]];\n }\n\n return _createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null; // add \"__proto__\" for Object.getPrototypeOf polyfill\n\n result[IE_PROTO] = O;\n } else result = _createDict();\n\n return Properties === undefined ? result : dPs(result, Properties);\n};","var dP = require('./_object-dp');\n\nvar anObject = require('./_an-object');\n\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n\n while (length > i) {\n dP.f(O, P = keys[i++], Properties[P]);\n }\n\n return O;\n};","var document = require('./_global').document;\n\nmodule.exports = document && document.documentElement;","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\n\nvar toObject = require('./_to-object');\n\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n }\n\n return O instanceof Object ? ObjectProto : null;\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _default = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","'use strict';\n\nvar ctx = require('./_ctx');\n\nvar $export = require('./_export');\n\nvar toObject = require('./_to-object');\n\nvar call = require('./_iter-call');\n\nvar isArrayIter = require('./_is-array-iter');\n\nvar toLength = require('./_to-length');\n\nvar createProperty = require('./_create-property');\n\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) {\n Array.from(iter);\n}), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike\n /* , mapfn = undefined, thisArg = undefined */\n ) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); // if object isn't iterable or it's array with default iterator - use simple case\n\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n\n result.length = index;\n return result;\n }\n});","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\n\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};","// check on default Array iterator\nvar Iterators = require('./_iterators');\n\nvar ITERATOR = require('./_wks')('iterator');\n\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};","'use strict';\n\nvar $defineProperty = require('./_object-dp');\n\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));else object[index] = value;\n};","var classof = require('./_classof');\n\nvar ITERATOR = require('./_wks')('iterator');\n\nvar Iterators = require('./_iterators');\n\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)];\n};","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\n\nvar TAG = require('./_wks')('toStringTag'); // ES3 wrong here\n\n\nvar ARG = cof(function () {\n return arguments;\n}()) == 'Arguments'; // fallback for IE11 Script Access Denied error\n\nvar tryGet = function tryGet(it, key) {\n try {\n return it[key];\n } catch (e) {\n /* empty */\n }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case\n : ARG ? cof(O) // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};","var ITERATOR = require('./_wks')('iterator');\n\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n\n riter['return'] = function () {\n SAFE_CLOSING = true;\n }; // eslint-disable-next-line no-throw-literal\n\n\n Array.from(riter, function () {\n throw 2;\n });\n} catch (e) {\n /* empty */\n}\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n\n iter.next = function () {\n return {\n done: safe = true\n };\n };\n\n arr[ITERATOR] = function () {\n return iter;\n };\n\n exec(arr);\n } catch (e) {\n /* empty */\n }\n\n return safe;\n};","// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel\n// MIT license\nvar isWindowAvailable = typeof window !== 'undefined';\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 lastTime = currTime + timeToCall;\n return id;\n };\n if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n}();","module.exports = {\n \"default\": require(\"core-js/library/fn/object/keys\"),\n __esModule: true\n};","require('../../modules/es6.object.keys');\n\nmodule.exports = require('../../modules/_core').Object.keys;","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\n\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\n\nvar core = require('./_core');\n\nvar fails = require('./_fails');\n\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 () {\n fn(1);\n }), 'Object', exp);\n};","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","export const preferencesLink = '/settings';\nexport const profileLink = '/user-settings';\nexport const signOutLink = '/auth/sign_out';\nexport const termsLink = '/terms';\nexport const accountAdminLink = (id) => `/pleroma/admin/#/users/${id}/`;\nexport const statusAdminLink = (account_id, status_id) => `/pleroma/admin/#/users/${account_id}/`;\nexport const filterEditLink = undefined; // (id) => `/filters/${id}/edit`;\nexport const relationshipsLink = undefined; // = '/relationships';\nexport const securityLink = undefined ; // = '/auth/edit';\n","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (componentOrElement) {\n return (0, _ownerDocument2.default)(_reactDom2.default.findDOMNode(componentOrElement));\n};\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _ownerDocument = require('dom-helpers/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = exports['default'];","module.exports = function (module) {\n if (!module.webpackPolyfill) {\n module.deprecate = function () {};\n\n module.paths = []; // module.parent = undefined by default\n\n if (!module.children) module.children = [];\n Object.defineProperty(module, \"loaded\", {\n enumerable: true,\n get: function get() {\n return module.l;\n }\n });\n Object.defineProperty(module, \"id\", {\n enumerable: true,\n get: function get() {\n return module.i;\n }\n });\n module.webpackPolyfill = 1;\n }\n\n return module;\n};","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;\n\n(function (root) {\n /** Detect free variables */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n var freeModule = typeof module == 'object' && module && !module.nodeType && module;\n var freeGlobal = typeof global == 'object' && global;\n\n if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal) {\n root = freeGlobal;\n }\n /**\n * The `punycode` object.\n * @name punycode\n * @type Object\n */\n\n\n var punycode,\n\n /** Highest positive signed 32-bit float value */\n maxInt = 2147483647,\n // aka. 0x7FFFFFFF or 2^31-1\n\n /** Bootstring parameters */\n base = 36,\n tMin = 1,\n tMax = 26,\n skew = 38,\n damp = 700,\n initialBias = 72,\n initialN = 128,\n // 0x80\n delimiter = '-',\n // '\\x2D'\n\n /** Regular expressions */\n regexPunycode = /^xn--/,\n regexNonASCII = /[^\\x20-\\x7E]/,\n // unprintable ASCII chars + non-ASCII chars\n regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g,\n // RFC 3490 separators\n\n /** Error messages */\n errors = {\n 'overflow': 'Overflow: input needs wider integers to process',\n 'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n 'invalid-input': 'Invalid input'\n },\n\n /** Convenience shortcuts */\n baseMinusTMin = base - tMin,\n floor = Math.floor,\n stringFromCharCode = String.fromCharCode,\n\n /** Temporary variable */\n key;\n /*--------------------------------------------------------------------------*/\n\n /**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\n\n function error(type) {\n throw new RangeError(errors[type]);\n }\n /**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\n\n\n function map(array, fn) {\n var length = array.length;\n var result = [];\n\n while (length--) {\n result[length] = fn(array[length]);\n }\n\n return result;\n }\n /**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\n\n\n function mapDomain(string, fn) {\n var parts = string.split('@');\n var result = '';\n\n if (parts.length > 1) {\n // In email addresses, only the domain name should be punycoded. Leave\n // the local part (i.e. everything up to `@`) intact.\n result = parts[0] + '@';\n string = parts[1];\n } // Avoid `split(regex)` for IE8 compatibility. See #17.\n\n\n string = string.replace(regexSeparators, '\\x2E');\n var labels = string.split('.');\n var encoded = map(labels, fn).join('.');\n return result + encoded;\n }\n /**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\n\n\n function ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n\n while (counter < length) {\n value = string.charCodeAt(counter++);\n\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n\n if ((extra & 0xFC00) == 0xDC00) {\n // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n\n return output;\n }\n /**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\n\n\n function ucs2encode(array) {\n return map(array, function (value) {\n var output = '';\n\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n\n output += stringFromCharCode(value);\n return output;\n }).join('');\n }\n /**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\n\n\n function basicToDigit(codePoint) {\n if (codePoint - 48 < 10) {\n return codePoint - 22;\n }\n\n if (codePoint - 65 < 26) {\n return codePoint - 65;\n }\n\n if (codePoint - 97 < 26) {\n return codePoint - 97;\n }\n\n return base;\n }\n /**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\n\n\n function digitToBasic(digit, flag) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n }\n /**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\n\n\n function adapt(delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n\n for (;\n /* no initialization */\n delta > baseMinusTMin * tMax >> 1; k += base) {\n delta = floor(delta / baseMinusTMin);\n }\n\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n }\n /**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\n\n\n function decode(input) {\n // Don't use UCS-2\n var output = [],\n inputLength = input.length,\n out,\n i = 0,\n n = initialN,\n bias = initialBias,\n basic,\n j,\n index,\n oldi,\n w,\n k,\n digit,\n t,\n\n /** Cached calculation results */\n baseMinusT; // Handle the basic code points: let `basic` be the number of input code\n // points before the last delimiter, or `0` if there is none, then copy\n // the first basic code points to the output.\n\n basic = input.lastIndexOf(delimiter);\n\n if (basic < 0) {\n basic = 0;\n }\n\n for (j = 0; j < basic; ++j) {\n // if it's not a basic code point\n if (input.charCodeAt(j) >= 0x80) {\n error('not-basic');\n }\n\n output.push(input.charCodeAt(j));\n } // Main decoding loop: start just after the last delimiter if any basic code\n // points were copied; start at the beginning otherwise.\n\n\n for (index = basic > 0 ? basic + 1 : 0; index < inputLength;)\n /* no final expression */\n {\n // `index` is the index of the next character to be consumed.\n // Decode a generalized variable-length integer into `delta`,\n // which gets added to `i`. The overflow checking is easier\n // if we increase `i` as we go, then subtract off its starting\n // value at the end to obtain `delta`.\n for (oldi = i, w = 1, k = base;;\n /* no condition */\n k += base) {\n if (index >= inputLength) {\n error('invalid-input');\n }\n\n digit = basicToDigit(input.charCodeAt(index++));\n\n if (digit >= base || digit > floor((maxInt - i) / w)) {\n error('overflow');\n }\n\n i += digit * w;\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (digit < t) {\n break;\n }\n\n baseMinusT = base - t;\n\n if (w > floor(maxInt / baseMinusT)) {\n error('overflow');\n }\n\n w *= baseMinusT;\n }\n\n out = output.length + 1;\n bias = adapt(i - oldi, out, oldi == 0); // `i` was supposed to wrap around from `out` to `0`,\n // incrementing `n` each time, so we'll fix that now:\n\n if (floor(i / out) > maxInt - n) {\n error('overflow');\n }\n\n n += floor(i / out);\n i %= out; // Insert `n` at position `i` of the output\n\n output.splice(i++, 0, n);\n }\n\n return ucs2encode(output);\n }\n /**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\n\n\n function encode(input) {\n var n,\n delta,\n handledCPCount,\n basicLength,\n bias,\n j,\n m,\n q,\n k,\n t,\n currentValue,\n output = [],\n\n /** `inputLength` will hold the number of code points in `input`. */\n inputLength,\n\n /** Cached calculation results */\n handledCPCountPlusOne,\n baseMinusT,\n qMinusT; // Convert the input in UCS-2 to Unicode\n\n input = ucs2decode(input); // Cache the length\n\n inputLength = input.length; // Initialize the state\n\n n = initialN;\n delta = 0;\n bias = initialBias; // Handle the basic code points\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < 0x80) {\n output.push(stringFromCharCode(currentValue));\n }\n }\n\n handledCPCount = basicLength = output.length; // `handledCPCount` is the number of code points that have been handled;\n // `basicLength` is the number of basic code points.\n // Finish the basic string - if it is not empty - with a delimiter\n\n if (basicLength) {\n output.push(delimiter);\n } // Main encoding loop:\n\n\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next\n // larger one:\n for (m = maxInt, j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n } // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n // but guard against overflow\n\n\n handledCPCountPlusOne = handledCPCount + 1;\n\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n error('overflow');\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (j = 0; j < inputLength; ++j) {\n currentValue = input[j];\n\n if (currentValue < n && ++delta > maxInt) {\n error('overflow');\n }\n\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer\n for (q = delta, k = base;;\n /* no condition */\n k += base) {\n t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n if (q < t) {\n break;\n }\n\n qMinusT = q - t;\n baseMinusT = base - t;\n output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n q = floor(qMinusT / baseMinusT);\n }\n\n output.push(stringFromCharCode(digitToBasic(q, 0)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n ++handledCPCount;\n }\n }\n\n ++delta;\n ++n;\n }\n\n return output.join('');\n }\n /**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\n\n\n function toUnicode(input) {\n return mapDomain(input, function (string) {\n return regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n });\n }\n /**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\n\n\n function toASCII(input) {\n return mapDomain(input, function (string) {\n return regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n });\n }\n /*--------------------------------------------------------------------------*/\n\n /** Define the public API */\n\n\n punycode = {\n /**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n 'version': '1.4.1',\n\n /**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n 'ucs2': {\n 'decode': ucs2decode,\n 'encode': ucs2encode\n },\n 'decode': decode,\n 'encode': encode,\n 'toASCII': toASCII,\n 'toUnicode': toUnicode\n };\n /** Expose `punycode` */\n // Some AMD build optimizers, like r.js, check for specific condition patterns\n // like the following:\n\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n define('punycode', function () {\n return punycode;\n });\n } else if (freeExports && freeModule) {\n if (module.exports == freeExports) {\n // in Node.js, io.js, or RingoJS v0.8.0+\n freeModule.exports = punycode;\n } else {\n // in Narwhal or RingoJS v0.7.0-\n for (key in punycode) {\n punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n }\n }\n } else {\n // in Rhino or a web browser\n root.punycode = punycode;\n }\n})(this);","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getWindow;\n\nfunction getWindow(node) {\n return node === node.window ? node : node.nodeType === 9 ? node.defaultView || node.parentWindow : false;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = typeof propValue === 'undefined' ? 'undefined' : _typeof(propValue);\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement. You can usually obtain a ReactComponent or DOMElement ' + 'from a ReactElement by attaching a ref to it.');\n }\n\n if ((propType !== 'object' || typeof propValue.render !== 'function') && propValue.nodeType !== 1) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected a ReactComponent or a ') + 'DOMElement.');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(validate);\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = getContainer;\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction getContainer(container, defaultContainer) {\n container = typeof container === 'function' ? container() : container;\n return _reactDom2.default.findDOMNode(container) || defaultContainer;\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = ownerDocument;\n\nfunction ownerDocument(node) {\n return node && node.ownerDocument || document;\n}\n\nmodule.exports = exports[\"default\"];","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n} // About 1.5x faster than the two-arg version of Array#splice()\n\n\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} // This implementation is based heavily on node's url.parse\n\n\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\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 var hasTrailingSlash = void 0;\n\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\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 }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\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 if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","export var addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\nexport var stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\nexport var hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\nexport var stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\nexport var stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\nexport var parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\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};\nexport var createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n return path;\n};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport { parsePath } from './PathUtils';\nexport var createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n\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 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};\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};","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 prompt = nextPrompt;\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 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 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;","export var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport var addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\nexport var removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\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 */\n\nexport var supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\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 return window.history && 'pushState' in window.history;\n};\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nexport var supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nexport var supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\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 */\n\nexport var isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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';\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 * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n invariant(canUseDOM, 'Browser history needs a DOM');\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\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 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 var path = pathname + search + hash;\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 if (basename) path = stripBasename(path, basename);\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 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 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 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location; // 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 if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\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]; // 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 var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, 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 nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\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 var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\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 if (needsHashChangeListener) addEventListener(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n removeEventListener(window, PopStateEvent, handlePopState);\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 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 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 return history;\n};\n\nexport default createBrowserHistory;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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';\nvar HashChangeEvent = 'hashchange';\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 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 invariant(canUseDOM, 'Hash history needs a DOM');\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\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 var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n var getDOMLocation = function getDOMLocation() {\n var path = decodePath(getHashPath());\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 if (basename) path = stripBasename(path, basename);\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 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 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 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 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location; // 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 if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }; // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // 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 var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\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 var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack');\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 var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\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 if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\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 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 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 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 return history;\n};\n\nexport default createHashHistory;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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 * Creates a history object that stores locations in memory.\n */\n\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 var transitionManager = createTransitionManager();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\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 }); // 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 var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\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 var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n };\n\n var go = function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\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 return history;\n};\n\nexport default createMemoryHistory;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n var win = (0, _isWindow.default)(node);\n if (val === undefined) return win ? 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop : node.scrollTop;\n if (win) win.scrollTo('pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft, val);else node.scrollTop = val;\n}\n\nmodule.exports = exports[\"default\"];","'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}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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\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) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\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: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (prevProps.checked !== this.props.checked) {\n this.setState({\n checked: !!this.props.checked\n });\n }\n }\n }, {\n key: 'handleClick',\n value: function handleClick(event) {\n var checkbox = this.input;\n\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 this.setState({\n checked: checked\n });\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\n if (this.state.checked && currentX + 15 < this.startX) {\n this.setState({\n checked: false\n });\n this.startX = currentX;\n this.activated = true;\n } else if (currentX - 15 > this.startX) {\n this.setState({\n checked: true\n });\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\n if (this.previouslyChecked === true && this.startX + 4 > endX) {\n if (this.previouslyChecked !== this.state.checked) {\n this.setState({\n checked: false\n });\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({\n checked: true\n });\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 if (onFocus) {\n onFocus(event);\n }\n\n this.setState({\n hasFocus: true\n });\n }\n }, {\n key: 'handleBlur',\n value: function handleBlur(event) {\n var onBlur = this.props.onBlur;\n\n if (onBlur) {\n onBlur(event);\n }\n\n this.setState({\n hasFocus: false\n });\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\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 return _react2.default.createElement('div', {\n className: classes,\n onClick: this.handleClick,\n onTouchStart: this.handleTouchStart,\n onTouchMove: this.handleTouchMove,\n onTouchEnd: this.handleTouchEnd\n }, _react2.default.createElement('div', {\n className: 'react-toggle-track'\n }, _react2.default.createElement('div', {\n className: 'react-toggle-track-check'\n }, this.getIcon('checked')), _react2.default.createElement('div', {\n className: 'react-toggle-track-x'\n }, this.getIcon('unchecked'))), _react2.default.createElement('div', {\n 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;\nToggle.displayName = 'Toggle';\nToggle.defaultProps = {\n icons: {\n checked: _react2.default.createElement(_check2.default, null),\n unchecked: _react2.default.createElement(_x2.default, null)\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};","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\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 * The public API for rendering a history-aware <a>.\n */\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 var history = _this.context.router.history;\n var _this$props = _this.props,\n replace = _this$props.replace,\n to = _this$props.to;\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\n invariant(this.context.router, \"You should not use <Link> outside a <Router>\");\n invariant(to !== undefined, 'You must specify the \"to\" property');\n var history = this.context.router.history;\n var location = typeof to === \"string\" ? createLocation(to, null, null, history.location) : to;\n var href = history.createHref(location);\n return React.createElement(\"a\", _extends({}, props, {\n onClick: this.handleClick,\n href: href,\n ref: innerRef\n }));\n };\n\n return Link;\n}(React.Component);\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};\nexport default Link;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createChainableTypeChecker;\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// Mostly taken from ReactPropTypes.\n\nfunction createChainableTypeChecker(validate) {\n function checkType(isRequired, props, propName, componentName, location, propFullName) {\n var componentNameSafe = componentName || '<<anonymous>>';\n var propFullNameSafe = propFullName || propName;\n\n if (props[propName] == null) {\n if (isRequired) {\n return new Error('Required ' + location + ' `' + propFullNameSafe + '` was not specified ' + ('in `' + componentNameSafe + '`.'));\n }\n\n return null;\n }\n\n for (var _len = arguments.length, args = Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {\n args[_key - 6] = arguments[_key];\n }\n\n return validate.apply(undefined, [props, propName, componentNameSafe, location, propFullNameSafe].concat(args));\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = offset;\n\nvar _contains = _interopRequireDefault(require(\"./contains\"));\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nvar _ownerDocument = _interopRequireDefault(require(\"../ownerDocument\"));\n\nfunction offset(node) {\n var doc = (0, _ownerDocument.default)(node),\n win = (0, _isWindow.default)(doc),\n docElem = doc && doc.documentElement,\n box = {\n top: 0,\n left: 0,\n height: 0,\n width: 0\n };\n if (!doc) return; // Make sure it's not a disconnected DOM node\n\n if (!(0, _contains.default)(docElem, node)) return box;\n if (node.getBoundingClientRect !== undefined) box = node.getBoundingClientRect(); // IE8 getBoundingClientRect doesn't support width & height\n\n box = {\n top: box.top + (win.pageYOffset || docElem.scrollTop) - (docElem.clientTop || 0),\n left: box.left + (win.pageXOffset || docElem.scrollLeft) - (docElem.clientLeft || 0),\n width: (box.width == null ? node.offsetWidth : box.width) || 0,\n height: (box.height == null ? node.offsetHeight : box.height) || 0\n };\n return box;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar _default = function () {\n // HTML DOM and SVG DOM may have different support levels,\n // so we need to check on context instead of a document root element.\n return _inDOM.default ? function (context, node) {\n if (context.contains) {\n return context.contains(node);\n } else if (context.compareDocumentPosition) {\n return context === node || !!(context.compareDocumentPosition(node) & 16);\n } else {\n return fallback(context, node);\n }\n } : fallback;\n}();\n\nexports.default = _default;\n\nfunction fallback(context, node) {\n if (node) do {\n if (node === context) return true;\n } while (node = node.parentNode);\n return false;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = style;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar _hyphenateStyle = _interopRequireDefault(require(\"../util/hyphenateStyle\"));\n\nvar _getComputedStyle2 = _interopRequireDefault(require(\"./getComputedStyle\"));\n\nvar _removeStyle = _interopRequireDefault(require(\"./removeStyle\"));\n\nvar _properties = require(\"../transition/properties\");\n\nvar _isTransform = _interopRequireDefault(require(\"../transition/isTransform\"));\n\nfunction style(node, property, value) {\n var css = '';\n var transforms = '';\n var props = property;\n\n if (typeof property === 'string') {\n if (value === undefined) {\n return node.style[(0, _camelizeStyle.default)(property)] || (0, _getComputedStyle2.default)(node).getPropertyValue((0, _hyphenateStyle.default)(property));\n } else {\n (props = {})[property] = value;\n }\n }\n\n Object.keys(props).forEach(function (key) {\n var value = props[key];\n\n if (!value && value !== 0) {\n (0, _removeStyle.default)(node, (0, _hyphenateStyle.default)(key));\n } else if ((0, _isTransform.default)(key)) {\n transforms += key + \"(\" + value + \") \";\n } else {\n css += (0, _hyphenateStyle.default)(key) + \": \" + value + \";\";\n }\n });\n\n if (transforms) {\n css += _properties.transform + \": \" + transforms + \";\";\n }\n\n node.style.cssText += ';' + css;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = camelizeStyleName;\n\nvar _camelize = _interopRequireDefault(require(\"./camelize\"));\n/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/camelizeStyleName.js\n */\n\n\nvar msPattern = /^-ms-/;\n\nfunction camelizeStyleName(string) {\n return (0, _camelize.default)(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar off = function off() {};\n\nif (_inDOM.default) {\n off = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.removeEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.detachEvent('on' + eventName, handler);\n };\n }();\n}\n\nvar _default = off;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar on = function on() {};\n\nif (_inDOM.default) {\n on = function () {\n if (document.addEventListener) return function (node, eventName, handler, capture) {\n return node.addEventListener(eventName, handler, capture || false);\n };else if (document.attachEvent) return function (node, eventName, handler) {\n return node.attachEvent('on' + eventName, function (e) {\n e = e || window.event;\n e.target = e.target || e.srcElement;\n e.currentTarget = node;\n handler.call(node, e);\n });\n };\n }();\n}\n\nvar _default = on;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = scrollTop;\n\nvar _isWindow = _interopRequireDefault(require(\"./isWindow\"));\n\nfunction scrollTop(node, val) {\n var win = (0, _isWindow.default)(node);\n if (val === undefined) return win ? 'pageXOffset' in win ? win.pageXOffset : win.document.documentElement.scrollLeft : node.scrollLeft;\n if (win) win.scrollTo(val, 'pageYOffset' in win ? win.pageYOffset : win.document.documentElement.scrollTop);else node.scrollLeft = val;\n}\n\nmodule.exports = exports[\"default\"];","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\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 * The public API for matching a single path and rendering.\n */\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 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 var route = router.route;\n var pathname = (location || route.location).pathname;\n return matchPath(pathname, {\n path: path,\n strict: strict,\n exact: exact,\n sensitive: sensitive\n }, 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 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 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 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 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 var location = this.props.location || route.location;\n var props = {\n match: match,\n location: location,\n history: history,\n staticContext: staticContext\n };\n if (component) return match ? React.createElement(component, props) : null;\n if (render) return match ? render(props) : null;\n if (typeof children === \"function\") return children(props);\n if (children && !isEmptyChildren(children)) return React.Children.only(children);\n return null;\n };\n\n return Route;\n}(React.Component);\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};\nexport default Route;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport unicodeMapping from 'flavours/glitch/util/emoji/emoji_unicode_mapping_light';\n\nconst assetHost = process.env.CDN_HOST || '';\n\nexport default class AutosuggestEmoji extends React.PureComponent {\n\n static propTypes = {\n emoji: PropTypes.object.isRequired,\n };\n\n render () {\n const { emoji } = this.props;\n let url;\n\n if (emoji.custom) {\n url = emoji.imageUrl;\n } else {\n const mapping = unicodeMapping[emoji.native] || unicodeMapping[emoji.native.replace(/\\uFE0F$/, '')];\n\n if (!mapping) {\n return null;\n }\n\n url = `${assetHost}/emoji/${mapping.filename}.svg`;\n }\n\n return (\n <div className='emoji'>\n <img\n className='emojione'\n src={url}\n alt={emoji.native || emoji.colons}\n />\n\n {emoji.colons}\n </div>\n );\n }\n\n}\n","import pathToRegexp from \"path-to-regexp\";\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 if (cache[pattern]) return cache[pattern];\n var keys = [];\n var re = pathToRegexp(pattern, keys, options);\n var compiledPattern = {\n re: re,\n keys: keys\n };\n\n if (cacheCount < cacheLimit) {\n cache[pattern] = compiledPattern;\n cacheCount++;\n }\n\n return compiledPattern;\n};\n/**\n * Public API for matching a URL pathname to a path pattern.\n */\n\n\nvar matchPath = function matchPath(pathname) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var parent = arguments[2];\n if (typeof options === \"string\") options = {\n 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 if (path == null) return parent;\n\n var _compilePath = compilePath(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n re = _compilePath.re,\n keys = _compilePath.keys;\n\n var match = re.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path pattern used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // 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 * Expose `pathToRegexp`.\n */\n\n\nmodule.exports = pathToRegexp;\nmodule.exports.parse = parse;\nmodule.exports.compile = compile;\nmodule.exports.tokensToFunction = tokensToFunction;\nmodule.exports.tokensToRegExp = tokensToRegExp;\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\n\nvar PATH_REGEXP = new RegExp([// Match escaped characters that would otherwise appear in future matches.\n// This allows the user to escape special characters that won't transform.\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+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'].join('|'), 'g');\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\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; // Ignore already escaped sequences.\n\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]; // Push the current path onto the tokens.\n\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 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 } // Match any characters still remaining.\n\n\n if (index < str.length) {\n path += str.substr(index);\n } // If the path exists, push it onto the end.\n\n\n if (path) {\n tokens.push(path);\n }\n\n return tokens;\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 */\n\n\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options));\n}\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeURIComponentPretty(str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\n\n\nfunction encodeAsterisk(str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\n\n\nfunction tokensToFunction(tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length); // Compile all the patterns before compilation.\n\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 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 * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\n\n\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1');\n}\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\n\n\nfunction escapeGroup(group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1');\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 */\n\n\nfunction attachKeys(re, keys) {\n re.keys = keys;\n return re;\n}\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\n\n\nfunction flags(options) {\n return options.sensitive ? '' : 'i';\n}\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\n\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 * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\n\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 return attachKeys(regexp, keys);\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 */\n\n\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options);\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 */\n\n\nfunction tokensToRegExp(tokens, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n var strict = options.strict;\n var end = options.end !== false;\n var route = ''; // Iterate over the tokens and create our regexp string.\n\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 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; // 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\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 * 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 */\n\n\nfunction pathToRegexp(path, keys, options) {\n if (!isarray(keys)) {\n options =\n /** @type {!Object} */\n keys || options;\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path,\n /** @type {!Array} */\n keys);\n }\n\n if (isarray(path)) {\n return arrayToRegexp(\n /** @type {!Array} */\n path,\n /** @type {!Array} */\n keys, options);\n }\n\n return stringToRegexp(\n /** @type {string} */\n path,\n /** @type {!Array} */\n keys, options);\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","/**\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/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used to compose bitmasks for value comparisons. */\n\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n/** Used as references for various `Number` constants. */\n\nvar MAX_SAFE_INTEGER = 9007199254740991;\n/** `Object#toString` result references. */\n\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]';\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 * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Used to detect unsigned integer values. */\n\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n/** Used to identify `toStringTag` values of typed arrays. */\n\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Detect free variable `exports`. */\n\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n/** Detect free variable `module`. */\n\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n/** Detect the popular CommonJS extension `module.exports`. */\n\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n/** Detect free variable `process` from Node.js. */\n\nvar freeProcess = moduleExports && freeGlobal.process;\n/** Used to access faster Node.js helpers. */\n\nvar nodeUtil = function () {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}();\n/* Node.js helper references. */\n\n\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\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 */\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\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n\n return result;\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 */\n\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\n return array;\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 */\n\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\n return false;\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 */\n\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\n return result;\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 */\n\n\nfunction baseUnary(func) {\n return function (value) {\n return func(value);\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 */\n\n\nfunction cacheHas(cache, key) {\n return cache.has(key);\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 */\n\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\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 */\n\n\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n map.forEach(function (value, key) {\n result[++index] = [key, value];\n });\n return result;\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 */\n\n\nfunction overArg(func, transform) {\n return function (arg) {\n return func(transform(arg));\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 */\n\n\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n set.forEach(function (value) {\n result[++index] = value;\n });\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to resolve the decompiled source of functions. */\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty = objectProto.hasOwnProperty;\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\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 */\n\n\nvar nativeObjectToString = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\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/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n/* Built-in method references that are verified to be native. */\n\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/** Used to detect maps, sets, and weakmaps. */\n\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n\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 * 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 */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\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 */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\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 */\n\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} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n --this.size;\n return true;\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 */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\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 */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\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 */\n\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\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\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 */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\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 * 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 */\n\n\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\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 */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\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 */\n\n\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\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 */\n\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n this.__data__ = new MapCache();\n\n while (++index < length) {\n this.add(values[index]);\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 */\n\n\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n\n return this;\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 */\n\n\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n} // Add methods to `SetCache`.\n\n\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\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 */\n\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n\n\nfunction stackClear() {\n this.__data__ = new ListCache();\n this.size = 0;\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 */\n\n\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n this.size = data.size;\n return result;\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 */\n\n\nfunction stackGet(key) {\n return this.__data__.get(key);\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 */\n\n\nfunction stackHas(key) {\n return this.__data__.has(key);\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 */\n\n\nfunction stackSet(key, value) {\n var data = this.__data__;\n\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n\n if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n\n data = this.__data__ = new MapCache(pairs);\n }\n\n data.set(key, value);\n this.size = data.size;\n return this;\n} // Add methods to `Stack`.\n\n\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\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 */\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)) && !(skipIndexes && ( // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' || // Node.js 0.10 has enumerable non-index properties on buffers.\n isBuff && (key == 'offset' || key == 'parent') || // PhantomJS 2 has enumerable non-index properties on typed arrays.\n isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || // Skip index properties.\n isIndex(key, length)))) {\n result.push(key);\n }\n }\n\n return result;\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 */\n\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\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 */\n\n\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\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 */\n\n\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n\n return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);\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 */\n\n\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\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 */\n\n\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n\n if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) {\n return value !== value && other !== other;\n }\n\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\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 */\n\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 objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\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\n objIsArr = true;\n objIsObj = false;\n }\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack());\n return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\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 stack || (stack = new Stack());\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n\n if (!isSameTag) {\n return false;\n }\n\n stack || (stack = new Stack());\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\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 */\n\n\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\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 */\n\n\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\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 */\n\n\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n\n var result = [];\n\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n\n return result;\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 */\n\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 } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(array);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var index = -1,\n result = true,\n seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined;\n stack.set(array, other);\n stack.set(other, array); // Ignore non-index properties.\n\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);\n }\n\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n\n result = false;\n break;\n } // Recursively compare arrays (susceptible to call stack limits).\n\n\n if (seen) {\n if (!arraySome(other, function (othValue, othIndex) {\n if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n result = false;\n break;\n }\n }\n\n stack['delete'](array);\n stack['delete'](other);\n return result;\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 */\n\n\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\n return false;\n }\n\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\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 } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked) {\n return stacked == other;\n }\n\n bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits).\n\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 }\n\n return false;\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 */\n\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\n var index = objLength;\n\n while (index--) {\n var key = objProps[index];\n\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n } // Assume cyclic values are equal.\n\n\n var stacked = stack.get(object);\n\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n var skipCtor = isPartial;\n\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 ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);\n } // Recursively compare objects (susceptible to call stack limits).\n\n\n if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) {\n result = false;\n break;\n }\n\n skipCtor || (skipCtor = key == 'constructor');\n }\n\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.\n\n if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n\n stack['delete'](object);\n stack['delete'](other);\n return result;\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 */\n\n\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\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 */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\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 */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\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 */\n\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\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n\n return result;\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 */\n\n\nvar getSymbols = !nativeGetSymbols ? stubArray : function (object) {\n if (object == null) {\n return [];\n }\n\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function (symbol) {\n return propertyIsEnumerable.call(object, symbol);\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 */\n\nvar getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n\nif (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {\n getTag = function getTag(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:\n return dataViewTag;\n\n case mapCtorString:\n return mapTag;\n\n case promiseCtorString:\n return promiseTag;\n\n case setCtorString:\n return setTag;\n\n case weakMapCtorString:\n return weakMapTag;\n }\n }\n\n return result;\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 */\n\n\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;\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 */\n\n\nfunction isKeyable(value) {\n var type = typeof value;\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\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 */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\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 */\n\n\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;\n return value === proto;\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 */\n\n\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\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 */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\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 */\n\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\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 */\n\n\nvar isArguments = baseIsArguments(function () {\n return arguments;\n}()) ? baseIsArguments : function (value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\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 */\n\nvar isArray = Array.isArray;\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 */\n\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\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 */\n\n\nvar isBuffer = nativeIsBuffer || stubFalse;\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 */\n\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\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 */\n\n\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\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\n\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\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 */\n\n\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\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 */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\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 */\n\n\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\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 */\n\n\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\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 */\n\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\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 */\n\n\nfunction stubArray() {\n return [];\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 */\n\n\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;","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 if (number < 10000) {\n return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</Fragment>;\n } else if (number < 1000000) {\n return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={0} />K</Fragment>;\n } else if (number < 10000000) {\n return <Fragment><FormattedNumber value={number / 1000000} maximumFractionDigits={1} />M</Fragment>;\n } else {\n return <Fragment><FormattedNumber value={number / 1000000} maximumFractionDigits={0} />M</Fragment>;\n }\n};\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 if (number < 10000) {\n return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</Fragment>;\n } else if (number < 1000000) {\n return <Fragment><FormattedNumber value={number / 1000} maximumFractionDigits={0} />K</Fragment>;\n } else if (number < 10000000) {\n return <Fragment><FormattedNumber value={number / 1000000} maximumFractionDigits={1} />M</Fragment>;\n } else {\n return <Fragment><FormattedNumber value={number / 1000000} maximumFractionDigits={0} />M</Fragment>;\n }\n};\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'use strict';\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 warning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function warning(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactIs = require('react-is');\n\nvar _createChainableTypeChecker = require('./utils/createChainableTypeChecker');\n\nvar _createChainableTypeChecker2 = _interopRequireDefault(_createChainableTypeChecker);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction elementType(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\n if (_react2.default.isValidElement(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of type ReactElement ' + ('supplied to `' + componentName + '`,expected an element type (a string ') + ', component class, or function component).');\n }\n\n if (!(0, _reactIs.isValidElementType)(propValue)) {\n return new Error('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected an element type (a string ') + ', component class, or function component).');\n }\n\n return null;\n}\n\nexports.default = (0, _createChainableTypeChecker2.default)(elementType);\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _inDOM = require('dom-helpers/util/inDOM');\n\nvar _inDOM2 = _interopRequireDefault(_inDOM);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nvar _LegacyPortal = require('./LegacyPortal');\n\nvar _LegacyPortal2 = _interopRequireDefault(_LegacyPortal);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\n\n\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\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.getMountNode = function () {\n return _this._portalContainerNode;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n if (!_inDOM2.default) {\n return;\n }\n\n var container = this.props.container;\n\n if (typeof container === 'function') {\n container = container();\n }\n\n if (container && !_reactDom2.default.findDOMNode(container)) {\n // The container is a React component that has not yet been rendered.\n // Don't set the container node yet.\n return;\n }\n\n this.setContainer(container);\n };\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n if (!this._portalContainerNode) {\n this.setContainer(this.props.container);\n this.forceUpdate(this.props.onRendered);\n } else if (this.props.onRendered) {\n this.props.onRendered();\n }\n };\n\n Portal.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (nextProps.container !== this.props.container) {\n this.setContainer(nextProps.container);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._portalContainerNode = null;\n };\n\n Portal.prototype.setContainer = function setContainer(container) {\n this._portalContainerNode = (0, _getContainer2.default)(container, (0, _ownerDocument2.default)(this).body);\n };\n\n Portal.prototype.render = function render() {\n return this.props.children && this._portalContainerNode ? _reactDom2.default.createPortal(this.props.children, this._portalContainerNode) : null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n onRendered: _propTypes2.default.func\n};\nexports.default = _reactDom2.default.createPortal ? Portal : _LegacyPortal2.default;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * The `<Portal/>` component renders its children into a new \"subtree\" outside of current component hierarchy.\n * You can think of it as a declarative `appendChild()`, or jQuery's `$.fn.appendTo()`.\n * The children of `<Portal/>` component will be appended to the `container` specified.\n */\n\n\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Portal);\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._mountOverlayTarget = function () {\n if (!_this._overlayTarget) {\n _this._overlayTarget = document.createElement('div');\n _this._portalContainerNode = (0, _getContainer2.default)(_this.props.container, (0, _ownerDocument2.default)(_this).body);\n\n _this._portalContainerNode.appendChild(_this._overlayTarget);\n }\n }, _this._unmountOverlayTarget = function () {\n if (_this._overlayTarget) {\n _this._portalContainerNode.removeChild(_this._overlayTarget);\n\n _this._overlayTarget = null;\n }\n\n _this._portalContainerNode = null;\n }, _this._renderOverlay = function () {\n var overlay = !_this.props.children ? null : _react2.default.Children.only(_this.props.children); // Save reference for future access.\n\n if (overlay !== null) {\n _this._mountOverlayTarget();\n\n var initialRender = !_this._overlayInstance;\n _this._overlayInstance = _reactDom2.default.unstable_renderSubtreeIntoContainer(_this, overlay, _this._overlayTarget, function () {\n if (initialRender && _this.props.onRendered) {\n _this.props.onRendered();\n }\n });\n } else {\n // Unrender if the component is null for transitions to null\n _this._unrenderOverlay();\n\n _this._unmountOverlayTarget();\n }\n }, _this._unrenderOverlay = function () {\n if (_this._overlayTarget) {\n _reactDom2.default.unmountComponentAtNode(_this._overlayTarget);\n\n _this._overlayInstance = null;\n }\n }, _this.getMountNode = function () {\n return _this._overlayTarget;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Portal.prototype.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n this._renderOverlay();\n };\n\n Portal.prototype.componentDidUpdate = function componentDidUpdate() {\n this._renderOverlay();\n };\n\n Portal.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n if (this._overlayTarget && nextProps.container !== this.props.container) {\n this._portalContainerNode.removeChild(this._overlayTarget);\n\n this._portalContainerNode = (0, _getContainer2.default)(nextProps.container, (0, _ownerDocument2.default)(this).body);\n\n this._portalContainerNode.appendChild(this._overlayTarget);\n }\n };\n\n Portal.prototype.componentWillUnmount = function componentWillUnmount() {\n this._isMounted = false;\n\n this._unrenderOverlay();\n\n this._unmountOverlayTarget();\n };\n\n Portal.prototype.render = function render() {\n return null;\n };\n\n return Portal;\n}(_react2.default.Component);\n\nPortal.displayName = 'Portal';\nPortal.propTypes = {\n /**\n * A Node, Component instance, or function that returns either. The `container` will have the Portal children\n * appended to it.\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n onRendered: _propTypes2.default.func\n};\nexports.default = Portal;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _componentOrElement = require('prop-types-extra/lib/componentOrElement');\n\nvar _componentOrElement2 = _interopRequireDefault(_componentOrElement);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _calculatePosition = require('./utils/calculatePosition');\n\nvar _calculatePosition2 = _interopRequireDefault(_calculatePosition);\n\nvar _getContainer = require('./utils/getContainer');\n\nvar _getContainer2 = _interopRequireDefault(_getContainer);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * The Position component calculates the coordinates for its child, to position\n * it relative to a `target` component or node. Useful for creating callouts\n * and tooltips, the Position component injects a `style` props with `left` and\n * `top` values for positioning your component.\n *\n * It also injects \"arrow\" `left`, and `top` values for styling callout arrows\n * for giving your components a sense of directionality.\n */\n\n\nvar Position = function (_React$Component) {\n _inherits(Position, _React$Component);\n\n function Position(props, context) {\n _classCallCheck(this, Position);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.getTarget = function () {\n var target = _this.props.target;\n var targetElement = typeof target === 'function' ? target() : target;\n return targetElement && _reactDom2.default.findDOMNode(targetElement) || null;\n };\n\n _this.maybeUpdatePosition = function (placementChanged) {\n var target = _this.getTarget();\n\n if (!_this.props.shouldUpdatePosition && target === _this._lastTarget && !placementChanged) {\n return;\n }\n\n _this.updatePosition(target);\n };\n\n _this.state = {\n positionLeft: 0,\n positionTop: 0,\n arrowOffsetLeft: null,\n arrowOffsetTop: null\n };\n _this._needsFlush = false;\n _this._lastTarget = null;\n return _this;\n }\n\n Position.prototype.componentDidMount = function componentDidMount() {\n this.updatePosition(this.getTarget());\n };\n\n Position.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps() {\n this._needsFlush = true;\n };\n\n Position.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this._needsFlush) {\n this._needsFlush = false;\n this.maybeUpdatePosition(this.props.placement !== prevProps.placement);\n }\n };\n\n Position.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n props = _objectWithoutProperties(_props, ['children', 'className']);\n\n var _state = this.state,\n positionLeft = _state.positionLeft,\n positionTop = _state.positionTop,\n arrowPosition = _objectWithoutProperties(_state, ['positionLeft', 'positionTop']); // These should not be forwarded to the child.\n\n\n delete props.target;\n delete props.container;\n delete props.containerPadding;\n delete props.shouldUpdatePosition;\n\n var child = _react2.default.Children.only(children);\n\n return (0, _react.cloneElement)(child, _extends({}, props, arrowPosition, {\n // FIXME: Don't forward `positionLeft` and `positionTop` via both props\n // and `props.style`.\n positionLeft: positionLeft,\n positionTop: positionTop,\n className: (0, _classnames2.default)(className, child.props.className),\n style: _extends({}, child.props.style, {\n left: positionLeft,\n top: positionTop\n })\n }));\n };\n\n Position.prototype.updatePosition = function updatePosition(target) {\n this._lastTarget = target;\n\n if (!target) {\n this.setState({\n positionLeft: 0,\n positionTop: 0,\n arrowOffsetLeft: null,\n arrowOffsetTop: null\n });\n return;\n }\n\n var overlay = _reactDom2.default.findDOMNode(this);\n\n var container = (0, _getContainer2.default)(this.props.container, (0, _ownerDocument2.default)(this).body);\n this.setState((0, _calculatePosition2.default)(this.props.placement, overlay, target, container, this.props.containerPadding));\n };\n\n return Position;\n}(_react2.default.Component);\n\nPosition.propTypes = {\n /**\n * A node, element, or function that returns either. The child will be\n * be positioned next to the `target` specified.\n */\n target: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * \"offsetParent\" of the component\n */\n container: _propTypes2.default.oneOfType([_componentOrElement2.default, _propTypes2.default.func]),\n\n /**\n * Minimum spacing in pixels between container border and component border\n */\n containerPadding: _propTypes2.default.number,\n\n /**\n * How to position the component relative to the target\n */\n placement: _propTypes2.default.oneOf(['top', 'right', 'bottom', 'left']),\n\n /**\n * Whether the position should be changed on each update\n */\n shouldUpdatePosition: _propTypes2.default.bool\n};\nPosition.displayName = 'Position';\nPosition.defaultProps = {\n containerPadding: 0,\n placement: 'right',\n shouldUpdatePosition: false\n};\nexports.default = Position;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\nexports.default = calculatePosition;\n\nvar _offset = require('dom-helpers/query/offset');\n\nvar _offset2 = _interopRequireDefault(_offset);\n\nvar _position = require('dom-helpers/query/position');\n\nvar _position2 = _interopRequireDefault(_position);\n\nvar _scrollTop = require('dom-helpers/query/scrollTop');\n\nvar _scrollTop2 = _interopRequireDefault(_scrollTop);\n\nvar _ownerDocument = require('./ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction getContainerDimensions(containerNode) {\n var width = void 0,\n height = void 0,\n scroll = void 0;\n\n if (containerNode.tagName === 'BODY') {\n width = window.innerWidth;\n height = window.innerHeight;\n scroll = (0, _scrollTop2.default)((0, _ownerDocument2.default)(containerNode).documentElement) || (0, _scrollTop2.default)(containerNode);\n } else {\n var _getOffset = (0, _offset2.default)(containerNode);\n\n width = _getOffset.width;\n height = _getOffset.height;\n scroll = (0, _scrollTop2.default)(containerNode);\n }\n\n return {\n width: width,\n height: height,\n scroll: scroll\n };\n}\n\nfunction getTopDelta(top, overlayHeight, container, padding) {\n var containerDimensions = getContainerDimensions(container);\n var containerScroll = containerDimensions.scroll;\n var containerHeight = containerDimensions.height;\n var topEdgeOffset = top - padding - containerScroll;\n var bottomEdgeOffset = top + padding - containerScroll + overlayHeight;\n\n if (topEdgeOffset < 0) {\n return -topEdgeOffset;\n } else if (bottomEdgeOffset > containerHeight) {\n return containerHeight - bottomEdgeOffset;\n } else {\n return 0;\n }\n}\n\nfunction getLeftDelta(left, overlayWidth, container, padding) {\n var containerDimensions = getContainerDimensions(container);\n var containerWidth = containerDimensions.width;\n var leftEdgeOffset = left - padding;\n var rightEdgeOffset = left + padding + overlayWidth;\n\n if (leftEdgeOffset < 0) {\n return -leftEdgeOffset;\n } else if (rightEdgeOffset > containerWidth) {\n return containerWidth - rightEdgeOffset;\n }\n\n return 0;\n}\n\nfunction calculatePosition(placement, overlayNode, target, container, padding) {\n var childOffset = container.tagName === 'BODY' ? (0, _offset2.default)(target) : (0, _position2.default)(target, container);\n\n var _getOffset2 = (0, _offset2.default)(overlayNode),\n overlayHeight = _getOffset2.height,\n overlayWidth = _getOffset2.width;\n\n var positionLeft = void 0,\n positionTop = void 0,\n arrowOffsetLeft = void 0,\n arrowOffsetTop = void 0;\n\n if (placement === 'left' || placement === 'right') {\n positionTop = childOffset.top + (childOffset.height - overlayHeight) / 2;\n\n if (placement === 'left') {\n positionLeft = childOffset.left - overlayWidth;\n } else {\n positionLeft = childOffset.left + childOffset.width;\n }\n\n var topDelta = getTopDelta(positionTop, overlayHeight, container, padding);\n positionTop += topDelta;\n arrowOffsetTop = 50 * (1 - 2 * topDelta / overlayHeight) + '%';\n arrowOffsetLeft = void 0;\n } else if (placement === 'top' || placement === 'bottom') {\n positionLeft = childOffset.left + (childOffset.width - overlayWidth) / 2;\n\n if (placement === 'top') {\n positionTop = childOffset.top - overlayHeight;\n } else {\n positionTop = childOffset.top + childOffset.height;\n }\n\n var leftDelta = getLeftDelta(positionLeft, overlayWidth, container, padding);\n positionLeft += leftDelta;\n arrowOffsetLeft = 50 * (1 - 2 * leftDelta / overlayWidth) + '%';\n arrowOffsetTop = void 0;\n } else {\n throw new Error('calcOverlayPosition(): No such placement of \"' + placement + '\" found.');\n }\n\n return {\n positionLeft: positionLeft,\n positionTop: positionTop,\n arrowOffsetLeft: arrowOffsetLeft,\n arrowOffsetTop: arrowOffsetTop\n };\n}\n\nmodule.exports = exports['default'];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = position;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _offset = _interopRequireDefault(require(\"./offset\"));\n\nvar _offsetParent = _interopRequireDefault(require(\"./offsetParent\"));\n\nvar _scrollTop = _interopRequireDefault(require(\"./scrollTop\"));\n\nvar _scrollLeft = _interopRequireDefault(require(\"./scrollLeft\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction nodeName(node) {\n return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction position(node, offsetParent) {\n var parentOffset = {\n top: 0,\n left: 0\n },\n offset; // Fixed elements are offset from window (parentOffset = {top:0, left: 0},\n // because it is its only offset parent\n\n if ((0, _style.default)(node, 'position') === 'fixed') {\n offset = node.getBoundingClientRect();\n } else {\n offsetParent = offsetParent || (0, _offsetParent.default)(node);\n offset = (0, _offset.default)(node);\n if (nodeName(offsetParent) !== 'html') parentOffset = (0, _offset.default)(offsetParent);\n parentOffset.top += parseInt((0, _style.default)(offsetParent, 'borderTopWidth'), 10) - (0, _scrollTop.default)(offsetParent) || 0;\n parentOffset.left += parseInt((0, _style.default)(offsetParent, 'borderLeftWidth'), 10) - (0, _scrollLeft.default)(offsetParent) || 0;\n } // Subtract parent offsets and node margins\n\n\n return (0, _extends2.default)({}, offset, {\n top: offset.top - parentOffset.top - (parseInt((0, _style.default)(node, 'marginTop'), 10) || 0),\n left: offset.left - parentOffset.left - (parseInt((0, _style.default)(node, 'marginLeft'), 10) || 0)\n });\n}\n\nmodule.exports = exports[\"default\"];","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = offsetParent;\n\nvar _ownerDocument = _interopRequireDefault(require(\"../ownerDocument\"));\n\nvar _style = _interopRequireDefault(require(\"../style\"));\n\nfunction nodeName(node) {\n return node.nodeName && node.nodeName.toLowerCase();\n}\n\nfunction offsetParent(node) {\n var doc = (0, _ownerDocument.default)(node),\n offsetParent = node && node.offsetParent;\n\n while (offsetParent && nodeName(node) !== 'html' && (0, _style.default)(offsetParent, 'position') === 'static') {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || doc.documentElement;\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = camelize;\nvar rHyphen = /-(.)/g;\n\nfunction camelize(string) {\n return string.replace(rHyphen, function (_, chr) {\n return chr.toUpperCase();\n });\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = hyphenateStyleName;\n\nvar _hyphenate = _interopRequireDefault(require(\"./hyphenate\"));\n/**\n * Copyright 2013-2014, Facebook, Inc.\n * All rights reserved.\n * https://github.com/facebook/react/blob/2aeb8a2a6beb00617a4217f7f8284924fa2ad819/src/vendor/core/hyphenateStyleName.js\n */\n\n\nvar msPattern = /^ms-/;\n\nfunction hyphenateStyleName(string) {\n return (0, _hyphenate.default)(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hyphenate;\nvar rUpper = /([A-Z])/g;\n\nfunction hyphenate(string) {\n return string.replace(rUpper, '-$1').toLowerCase();\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = _getComputedStyle;\n\nvar _camelizeStyle = _interopRequireDefault(require(\"../util/camelizeStyle\"));\n\nvar rposition = /^(top|right|bottom|left)$/;\nvar rnumnonpx = /^([+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|))(?!px)[a-z%]+$/i;\n\nfunction _getComputedStyle(node) {\n if (!node) throw new TypeError('No Element passed to `getComputedStyle()`');\n var doc = node.ownerDocument;\n return 'defaultView' in doc ? doc.defaultView.opener ? node.ownerDocument.defaultView.getComputedStyle(node, null) : window.getComputedStyle(node, null) : {\n //ie 8 \"magic\" from: https://github.com/jquery/jquery/blob/1.11-stable/src/css/curCSS.js#L72\n getPropertyValue: function getPropertyValue(prop) {\n var style = node.style;\n prop = (0, _camelizeStyle.default)(prop);\n if (prop == 'float') prop = 'styleFloat';\n var current = node.currentStyle[prop] || null;\n if (current == null && style && style[prop]) current = style[prop];\n\n if (rnumnonpx.test(current) && !rposition.test(prop)) {\n // Remember the original values\n var left = style.left;\n var runStyle = node.runtimeStyle;\n var rsLeft = runStyle && runStyle.left; // Put in the new values to get a computed value out\n\n if (rsLeft) runStyle.left = node.currentStyle.left;\n style.left = prop === 'fontSize' ? '1em' : current;\n current = style.pixelLeft + 'px'; // Revert the changed values\n\n style.left = left;\n if (rsLeft) runStyle.left = rsLeft;\n }\n\n return current;\n }\n };\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = removeStyle;\n\nfunction removeStyle(node, key) {\n return 'removeProperty' in node.style ? node.style.removeProperty(key) : node.style.removeAttribute(key);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.animationEnd = exports.animationDelay = exports.animationTiming = exports.animationDuration = exports.animationName = exports.transitionEnd = exports.transitionDuration = exports.transitionDelay = exports.transitionTiming = exports.transitionProperty = exports.transform = void 0;\n\nvar _inDOM = _interopRequireDefault(require(\"../util/inDOM\"));\n\nvar transform = 'transform';\nexports.transform = transform;\nvar prefix, transitionEnd, animationEnd;\nexports.animationEnd = animationEnd;\nexports.transitionEnd = transitionEnd;\nvar transitionProperty, transitionDuration, transitionTiming, transitionDelay;\nexports.transitionDelay = transitionDelay;\nexports.transitionTiming = transitionTiming;\nexports.transitionDuration = transitionDuration;\nexports.transitionProperty = transitionProperty;\nvar animationName, animationDuration, animationTiming, animationDelay;\nexports.animationDelay = animationDelay;\nexports.animationTiming = animationTiming;\nexports.animationDuration = animationDuration;\nexports.animationName = animationName;\n\nif (_inDOM.default) {\n var _getTransitionPropert = getTransitionProperties();\n\n prefix = _getTransitionPropert.prefix;\n exports.transitionEnd = transitionEnd = _getTransitionPropert.transitionEnd;\n exports.animationEnd = animationEnd = _getTransitionPropert.animationEnd;\n exports.transform = transform = prefix + \"-\" + transform;\n exports.transitionProperty = transitionProperty = prefix + \"-transition-property\";\n exports.transitionDuration = transitionDuration = prefix + \"-transition-duration\";\n exports.transitionDelay = transitionDelay = prefix + \"-transition-delay\";\n exports.transitionTiming = transitionTiming = prefix + \"-transition-timing-function\";\n exports.animationName = animationName = prefix + \"-animation-name\";\n exports.animationDuration = animationDuration = prefix + \"-animation-duration\";\n exports.animationTiming = animationTiming = prefix + \"-animation-delay\";\n exports.animationDelay = animationDelay = prefix + \"-animation-timing-function\";\n}\n\nvar _default = {\n transform: transform,\n end: transitionEnd,\n property: transitionProperty,\n timing: transitionTiming,\n delay: transitionDelay,\n duration: transitionDuration\n};\nexports.default = _default;\n\nfunction getTransitionProperties() {\n var style = document.createElement('div').style;\n var vendorMap = {\n O: function O(e) {\n return \"o\" + e.toLowerCase();\n },\n Moz: function Moz(e) {\n return e.toLowerCase();\n },\n Webkit: function Webkit(e) {\n return \"webkit\" + e;\n },\n ms: function ms(e) {\n return \"MS\" + e;\n }\n };\n var vendors = Object.keys(vendorMap);\n var transitionEnd, animationEnd;\n var prefix = '';\n\n for (var i = 0; i < vendors.length; i++) {\n var vendor = vendors[i];\n\n if (vendor + \"TransitionProperty\" in style) {\n prefix = \"-\" + vendor.toLowerCase();\n transitionEnd = vendorMap[vendor]('TransitionEnd');\n animationEnd = vendorMap[vendor]('AnimationEnd');\n break;\n }\n }\n\n if (!transitionEnd && 'transitionProperty' in style) transitionEnd = 'transitionend';\n if (!animationEnd && 'animationName' in style) animationEnd = 'animationend';\n style = null;\n return {\n animationEnd: animationEnd,\n transitionEnd: transitionEnd,\n prefix: prefix\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = isTransform;\nvar supportedTransforms = /^((translate|rotate|scale)(X|Y|Z|3d)?|matrix(3d)?|perspective|skew(X|Y)?)$/i;\n\nfunction isTransform(property) {\n return !!(property && supportedTransforms.test(property));\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nexports.__esModule = true;\n\nvar _contains = require('dom-helpers/query/contains');\n\nvar _contains2 = _interopRequireDefault(_contains);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _addEventListener = require('./utils/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _ownerDocument = require('./utils/ownerDocument');\n\nvar _ownerDocument2 = _interopRequireDefault(_ownerDocument);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _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}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar escapeKeyCode = 27;\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n/**\n * The `<RootCloseWrapper/>` component registers your callback on the document\n * when rendered. Powers the `<Overlay/>` component. This is used achieve modal\n * style behavior where your callback is triggered when the user tries to\n * interact with the rest of the document or hits the `esc` key.\n */\n\n\nvar RootCloseWrapper = function (_React$Component) {\n _inherits(RootCloseWrapper, _React$Component);\n\n function RootCloseWrapper(props, context) {\n _classCallCheck(this, RootCloseWrapper);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));\n\n _this.addEventListeners = function () {\n var event = _this.props.event;\n var doc = (0, _ownerDocument2.default)(_this); // Use capture for this listener so it fires before React's listener, to\n // avoid false positives in the contains() check below if the target DOM\n // element is removed in the React mouse callback.\n\n _this.documentMouseCaptureListener = (0, _addEventListener2.default)(doc, event, _this.handleMouseCapture, true);\n _this.documentMouseListener = (0, _addEventListener2.default)(doc, event, _this.handleMouse);\n _this.documentKeyupListener = (0, _addEventListener2.default)(doc, 'keyup', _this.handleKeyUp);\n };\n\n _this.removeEventListeners = function () {\n if (_this.documentMouseCaptureListener) {\n _this.documentMouseCaptureListener.remove();\n }\n\n if (_this.documentMouseListener) {\n _this.documentMouseListener.remove();\n }\n\n if (_this.documentKeyupListener) {\n _this.documentKeyupListener.remove();\n }\n };\n\n _this.handleMouseCapture = function (e) {\n _this.preventMouseRootClose = isModifiedEvent(e) || !isLeftClickEvent(e) || (0, _contains2.default)(_reactDom2.default.findDOMNode(_this), e.target);\n };\n\n _this.handleMouse = function (e) {\n if (!_this.preventMouseRootClose && _this.props.onRootClose) {\n _this.props.onRootClose(e);\n }\n };\n\n _this.handleKeyUp = function (e) {\n if (e.keyCode === escapeKeyCode && _this.props.onRootClose) {\n _this.props.onRootClose(e);\n }\n };\n\n _this.preventMouseRootClose = false;\n return _this;\n }\n\n RootCloseWrapper.prototype.componentDidMount = function componentDidMount() {\n if (!this.props.disabled) {\n this.addEventListeners();\n }\n };\n\n RootCloseWrapper.prototype.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (!this.props.disabled && prevProps.disabled) {\n this.addEventListeners();\n } else if (this.props.disabled && !prevProps.disabled) {\n this.removeEventListeners();\n }\n };\n\n RootCloseWrapper.prototype.componentWillUnmount = function componentWillUnmount() {\n if (!this.props.disabled) {\n this.removeEventListeners();\n }\n };\n\n RootCloseWrapper.prototype.render = function render() {\n return this.props.children;\n };\n\n return RootCloseWrapper;\n}(_react2.default.Component);\n\nRootCloseWrapper.displayName = 'RootCloseWrapper';\nRootCloseWrapper.propTypes = {\n /**\n * Callback fired after click or mousedown. Also triggers when user hits `esc`.\n */\n onRootClose: _propTypes2.default.func,\n\n /**\n * Children to render.\n */\n children: _propTypes2.default.element,\n\n /**\n * Disable the the RootCloseWrapper, preventing it from triggering `onRootClose`.\n */\n disabled: _propTypes2.default.bool,\n\n /**\n * Choose which document mouse event to bind to.\n */\n event: _propTypes2.default.oneOf(['click', 'mousedown'])\n};\nRootCloseWrapper.defaultProps = {\n event: 'click'\n};\nexports.default = RootCloseWrapper;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (node, event, handler, capture) {\n (0, _on2.default)(node, event, handler, capture);\n return {\n remove: function remove() {\n (0, _off2.default)(node, event, handler, capture);\n }\n };\n};\n\nvar _on = require('dom-helpers/events/on');\n\nvar _on2 = _interopRequireDefault(_on);\n\nvar _off = require('dom-helpers/events/off');\n\nvar _off2 = _interopRequireDefault(_off);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = exports['default'];","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\nconst isScrollBehaviorSupported = 'scrollBehavior' in document.documentElement.style;\n\nexport const scrollRight = (node, position) => isScrollBehaviorSupported ? node.scrollTo({ left: position, behavior: 'smooth' }) : scroll(node, 'scrollLeft', position);\nexport const scrollTop = (node) => isScrollBehaviorSupported ? node.scrollTo({ top: 0, behavior: 'smooth' }) : scroll(node, 'scrollTop', 0);\n","(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory(require(\"react\"));else if (typeof define === 'function' && define.amd) define([\"react\"], factory);else if (typeof exports === 'object') exports[\"ReactSparklines\"] = factory(require(\"react\"));else root[\"ReactSparklines\"] = factory(root[\"React\"]);\n})(this, function (__WEBPACK_EXTERNAL_MODULE_1__) {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"/\";\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 11);\n /******/\n }(\n /************************************************************************/\n\n /******/\n [\n /* 0 */\n\n /***/\n function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */\n (function (process) {\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 if (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7;\n\n var isValidElement = function isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n }; // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n\n\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 /* WEBPACK VAR INJECTION */\n\n }).call(exports, __webpack_require__(2));\n /***/\n },\n /* 1 */\n\n /***/\n function (module, exports) {\n module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports) {\n // shim for using process in browser\n var process = module.exports = {}; // 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\n var cachedSetTimeout;\n var cachedClearTimeout;\n\n function defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n }\n\n function defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n }\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\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\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 function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\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 var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n }\n\n function drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n }; // v8 likes predictible objects\n\n\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n\n process.title = 'browser';\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = ''; // empty string to avoid regexp issues\n\n process.versions = {};\n\n function noop() {}\n\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n\n process.listeners = function (name) {\n return [];\n };\n\n process.binding = function (name) {\n throw new Error('process.binding is not supported');\n };\n\n process.cwd = function () {\n return '/';\n };\n\n process.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n };\n\n process.umask = function () {\n return 0;\n };\n /***/\n\n },\n /* 3 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n exports.default = function (data) {\n return data.reduce(function (a, b) {\n return a + b;\n }) / data.length;\n };\n /***/\n\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\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\n function makeEmptyFunction(arg) {\n return function () {\n return arg;\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 */\n\n\n var emptyFunction = function emptyFunction() {};\n\n emptyFunction.thatReturns = makeEmptyFunction;\n emptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n emptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n emptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\n emptyFunction.thatReturnsThis = function () {\n return this;\n };\n\n emptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n };\n\n module.exports = emptyFunction;\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /* WEBPACK VAR INJECTION */\n\n (function (process) {\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 /**\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 var validateFormat = function validateFormat(format) {};\n\n if (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\n function invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n\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\n throw error;\n }\n }\n\n module.exports = invariant;\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(2));\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports, __webpack_require__) {\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 var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n module.exports = ReactPropTypesSecret;\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n exports.default = function (data) {\n return Math.min.apply(Math, data);\n };\n /***/\n\n },\n /* 8 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /* WEBPACK VAR INJECTION */\n\n (function (process) {\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 var emptyFunction = __webpack_require__(4);\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\n\n var warning = emptyFunction;\n\n if (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\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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\n module.exports = warning;\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(2));\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n exports.default = function (data) {\n return Math.max.apply(Math, data);\n };\n /***/\n\n },\n /* 10 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _mean = __webpack_require__(3);\n\n var _mean2 = _interopRequireDefault(_mean);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.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 },\n /* 11 */\n\n /***/\n function (module, exports, __webpack_require__) {\n module.exports = __webpack_require__(12);\n /***/\n },\n /* 12 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n module.exports = __webpack_require__(13);\n /***/\n },\n /* 13 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SparklinesText = exports.SparklinesNormalBand = exports.SparklinesReferenceLine = exports.SparklinesSpots = exports.SparklinesBars = exports.SparklinesCurve = exports.SparklinesLine = exports.Sparklines = undefined;\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n var _SparklinesText = __webpack_require__(17);\n\n var _SparklinesText2 = _interopRequireDefault(_SparklinesText);\n\n var _SparklinesLine = __webpack_require__(18);\n\n var _SparklinesLine2 = _interopRequireDefault(_SparklinesLine);\n\n var _SparklinesCurve = __webpack_require__(19);\n\n var _SparklinesCurve2 = _interopRequireDefault(_SparklinesCurve);\n\n var _SparklinesBars = __webpack_require__(20);\n\n var _SparklinesBars2 = _interopRequireDefault(_SparklinesBars);\n\n var _SparklinesSpots = __webpack_require__(21);\n\n var _SparklinesSpots2 = _interopRequireDefault(_SparklinesSpots);\n\n var _SparklinesReferenceLine = __webpack_require__(22);\n\n var _SparklinesReferenceLine2 = _interopRequireDefault(_SparklinesReferenceLine);\n\n var _SparklinesNormalBand = __webpack_require__(27);\n\n var _SparklinesNormalBand2 = _interopRequireDefault(_SparklinesNormalBand);\n\n var _dataToPoints = __webpack_require__(28);\n\n var _dataToPoints2 = _interopRequireDefault(_dataToPoints);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 if (data.length === 0) return null;\n var points = (0, _dataToPoints2.default)({\n data: data,\n limit: limit,\n width: width,\n height: height,\n margin: margin,\n max: max,\n min: min\n });\n var svgOpts = {\n style: style,\n viewBox: '0 0 ' + width + ' ' + height,\n preserveAspectRatio: preserveAspectRatio\n };\n if (svgWidth > 0) svgOpts.width = svgWidth;\n if (svgHeight > 0) svgOpts.height = svgHeight;\n return _react2.default.createElement('svg', svgOpts, _react2.default.Children.map(this.props.children, function (child) {\n return _react2.default.cloneElement(child, {\n data: data,\n points: points,\n width: width,\n height: height,\n margin: margin\n });\n }));\n }\n }]);\n\n return Sparklines;\n }(_react.PureComponent);\n\n Sparklines.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 };\n Sparklines.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',\n //https://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute\n margin: 2\n };\n exports.Sparklines = Sparklines;\n exports.SparklinesLine = _SparklinesLine2.default;\n exports.SparklinesCurve = _SparklinesCurve2.default;\n exports.SparklinesBars = _SparklinesBars2.default;\n exports.SparklinesSpots = _SparklinesSpots2.default;\n exports.SparklinesReferenceLine = _SparklinesReferenceLine2.default;\n exports.SparklinesNormalBand = _SparklinesNormalBand2.default;\n exports.SparklinesText = _SparklinesText2.default;\n /***/\n },\n /* 14 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /* WEBPACK VAR INJECTION */\n\n (function (process) {\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 var emptyFunction = __webpack_require__(4);\n\n var invariant = __webpack_require__(5);\n\n var warning = __webpack_require__(8);\n\n var ReactPropTypesSecret = __webpack_require__(6);\n\n var checkPropTypes = __webpack_require__(15);\n\n module.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\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\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\n var ANONYMOUS = '<<anonymous>>'; // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n\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 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 * 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\n /*eslint-disable no-self-compare*/\n\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\n\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n } // Make `instanceof Error` still work for returned errors.\n\n\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\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(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\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\n if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName);\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\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\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\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 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\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 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n\n return null;\n }\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\n var propValue = props[propName];\n\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\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\n if (error instanceof Error) {\n return error;\n }\n }\n\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n\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\n return null;\n }\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\n return null;\n }\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\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\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\n var propValue = props[propName];\n var propType = getPropType(propValue);\n\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\n if (error instanceof Error) {\n return error;\n }\n }\n }\n\n return null;\n }\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\n if (typeof checker !== 'function') {\n warning(false, 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i);\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\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\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\n return null;\n }\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\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n\n if (!checker) {\n continue;\n }\n\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\n if (error) {\n return error;\n }\n }\n\n return null;\n }\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\n case 'boolean':\n return !propValue;\n\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n\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\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\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\n\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n } // Fallback for non-spec compliant Symbols which are polyfilled.\n\n\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n } // Equivalent of `typeof` but with special handling for array and regexp.\n\n\n function getPropType(propValue) {\n var propType = typeof propValue;\n\n if (Array.isArray(propValue)) {\n return 'array';\n }\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\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n\n return propType;\n } // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n\n\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n\n var propType = getPropType(propValue);\n\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n\n return propType;\n } // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n\n\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n\n default:\n return type;\n }\n } // Returns class name of the object, if any.\n\n\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n /* WEBPACK VAR INJECTION */\n\n }).call(exports, __webpack_require__(2));\n /***/\n },\n /* 15 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /* WEBPACK VAR INJECTION */\n\n (function (process) {\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 if (process.env.NODE_ENV !== 'production') {\n var invariant = __webpack_require__(5);\n\n var warning = __webpack_require__(8);\n\n var ReactPropTypesSecret = __webpack_require__(6);\n\n var loggedTypeFailures = {};\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 */\n\n\n function 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; // 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\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\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\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 var stack = getStack ? getStack() : '';\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n }\n\n module.exports = checkPropTypes;\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(2));\n /***/\n },\n /* 16 */\n\n /***/\n function (module, exports, __webpack_require__) {\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 var emptyFunction = __webpack_require__(4);\n\n var invariant = __webpack_require__(5);\n\n var ReactPropTypesSecret = __webpack_require__(6);\n\n module.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\n invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n }\n\n ;\n shim.isRequired = shim;\n\n function getShim() {\n return shim;\n }\n\n ; // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\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 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 ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n /***/\n\n },\n /* 17 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 return _react2.default.createElement('g', null, _react2.default.createElement('text', {\n x: x,\n y: y,\n fontFamily: fontFamily || \"Verdana\",\n fontSize: fontSize || 10\n }, text));\n }\n }]);\n\n return SparklinesText;\n }(_react2.default.Component);\n\n SparklinesText.propTypes = {\n text: _propTypes2.default.string,\n point: _propTypes2.default.object,\n fontSize: _propTypes2.default.number,\n fontFamily: _propTypes2.default.string\n };\n SparklinesText.defaultProps = {\n text: '',\n point: {\n x: 0,\n y: 0\n }\n };\n exports.default = SparklinesText;\n /***/\n },\n /* 18 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 var linePoints = points.map(function (p) {\n return [p.x, p.y];\n }).reduce(function (a, b) {\n return a.concat(b);\n });\n var closePolyPoints = [points[points.length - 1].x, height - margin, margin, height - margin, margin, points[0].y];\n var fillPoints = linePoints.concat(closePolyPoints);\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 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 return _react2.default.createElement('g', null, tooltips, _react2.default.createElement('polyline', {\n points: fillPoints.join(' '),\n style: fillStyle\n }), _react2.default.createElement('polyline', {\n points: linePoints.join(' '),\n style: lineStyle\n }));\n }\n }]);\n\n return SparklinesLine;\n }(_react2.default.Component);\n\n SparklinesLine.propTypes = {\n color: _propTypes2.default.string,\n style: _propTypes2.default.object\n };\n SparklinesLine.defaultProps = {\n style: {},\n onMouseMove: function onMouseMove() {}\n };\n exports.default = SparklinesLine;\n /***/\n },\n /* 19 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 var prev = void 0;\n\n var curve = function curve(p) {\n var res = void 0;\n\n if (!prev) {\n res = [p.x, p.y];\n } else {\n var len = (p.x - prev.x) * divisor;\n res = [\"C\", //x1\n prev.x + len, //y1\n prev.y, //x2,\n p.x - len, //y2,\n p.y, //x,\n p.x, //y\n p.y];\n }\n\n prev = p;\n return res;\n };\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 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 return _react2.default.createElement('g', null, _react2.default.createElement('path', {\n d: \"M\" + fillPoints.join(' '),\n style: fillStyle\n }), _react2.default.createElement('path', {\n d: \"M\" + linePoints.join(' '),\n style: lineStyle\n }));\n }\n }]);\n\n return SparklinesCurve;\n }(_react2.default.Component);\n\n SparklinesCurve.propTypes = {\n color: _propTypes2.default.string,\n style: _propTypes2.default.object\n };\n SparklinesCurve.defaultProps = {\n style: {}\n };\n exports.default = SparklinesCurve;\n /***/\n },\n /* 20 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 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 return _react2.default.createElement('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 return SparklinesBars;\n }(_react2.default.Component);\n\n SparklinesBars.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 };\n SparklinesBars.defaultProps = {\n style: {\n fill: 'slategray'\n }\n };\n exports.default = SparklinesBars;\n /***/\n },\n /* 21 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 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 var startSpot = _react2.default.createElement('circle', {\n cx: points[0].x,\n cy: points[0].y,\n r: size,\n style: style\n });\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 || {\n fill: spotColors[this.lastDirection(points)]\n }\n });\n\n return _react2.default.createElement('g', null, style && startSpot, endSpot);\n }\n }]);\n\n return SparklinesSpots;\n }(_react2.default.Component);\n\n SparklinesSpots.propTypes = {\n size: _propTypes2.default.number,\n style: _propTypes2.default.object,\n spotColors: _propTypes2.default.object\n };\n SparklinesSpots.defaultProps = {\n size: 2,\n spotColors: {\n '-1': 'red',\n '0': 'black',\n '1': 'green'\n }\n };\n exports.default = SparklinesSpots;\n /***/\n },\n /* 22 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n var _dataProcessing = __webpack_require__(23);\n\n var dataProcessing = _interopRequireWildcard(_dataProcessing);\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 var ypoints = points.map(function (p) {\n return p.y;\n });\n var y = type == 'custom' ? value : dataProcessing[type](ypoints);\n return _react2.default.createElement('line', {\n x1: points[0].x,\n y1: y + margin,\n x2: points[points.length - 1].x,\n y2: y + margin,\n style: style\n });\n }\n }]);\n\n return SparklinesReferenceLine;\n }(_react2.default.Component);\n\n SparklinesReferenceLine.propTypes = {\n type: _propTypes2.default.oneOf(['max', 'min', 'mean', 'avg', 'median', 'custom']),\n value: _propTypes2.default.number,\n style: _propTypes2.default.object\n };\n SparklinesReferenceLine.defaultProps = {\n type: 'mean',\n style: {\n stroke: 'red',\n strokeOpacity: .75,\n strokeDasharray: '2, 2'\n }\n };\n exports.default = SparklinesReferenceLine;\n /***/\n },\n /* 23 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.variance = exports.stdev = exports.median = exports.midRange = exports.avg = exports.mean = exports.max = exports.min = undefined;\n\n var _min2 = __webpack_require__(7);\n\n var _min3 = _interopRequireDefault(_min2);\n\n var _mean2 = __webpack_require__(3);\n\n var _mean3 = _interopRequireDefault(_mean2);\n\n var _midRange2 = __webpack_require__(24);\n\n var _midRange3 = _interopRequireDefault(_midRange2);\n\n var _median2 = __webpack_require__(25);\n\n var _median3 = _interopRequireDefault(_median2);\n\n var _stdev2 = __webpack_require__(10);\n\n var _stdev3 = _interopRequireDefault(_stdev2);\n\n var _variance2 = __webpack_require__(26);\n\n var _variance3 = _interopRequireDefault(_variance2);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.min = _min3.default;\n exports.max = _min3.default;\n exports.mean = _mean3.default;\n exports.avg = _mean3.default;\n exports.midRange = _midRange3.default;\n exports.median = _median3.default;\n exports.stdev = _stdev3.default;\n exports.variance = _variance3.default;\n /***/\n },\n /* 24 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _min = __webpack_require__(7);\n\n var _min2 = _interopRequireDefault(_min);\n\n var _max = __webpack_require__(9);\n\n var _max2 = _interopRequireDefault(_max);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.default = function (data) {\n return (0, _max2.default)(data) - (0, _min2.default)(data) / 2;\n };\n /***/\n\n },\n /* 25 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n exports.default = function (data) {\n return data.sort(function (a, b) {\n return a - b;\n })[Math.floor(data.length / 2)];\n };\n /***/\n\n },\n /* 26 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _mean = __webpack_require__(3);\n\n var _mean2 = _interopRequireDefault(_mean);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.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 },\n /* 27 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _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 var _propTypes = __webpack_require__(0);\n\n var _propTypes2 = _interopRequireDefault(_propTypes);\n\n var _react = __webpack_require__(1);\n\n var _react2 = _interopRequireDefault(_react);\n\n var _mean = __webpack_require__(3);\n\n var _mean2 = _interopRequireDefault(_mean);\n\n var _stdev = __webpack_require__(10);\n\n var _stdev2 = _interopRequireDefault(_stdev);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n 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 }\n\n 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var 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 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 return _react2.default.createElement('rect', {\n x: points[0].x,\n y: dataMean - dataStdev + margin,\n width: points[points.length - 1].x - points[0].x,\n height: _stdev2.default * 2,\n style: style\n });\n }\n }]);\n\n return SparklinesNormalBand;\n }(_react2.default.Component);\n\n SparklinesNormalBand.propTypes = {\n style: _propTypes2.default.object\n };\n SparklinesNormalBand.defaultProps = {\n style: {\n fill: 'red',\n fillOpacity: .1\n }\n };\n exports.default = SparklinesNormalBand;\n /***/\n },\n /* 28 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _min = __webpack_require__(7);\n\n var _min2 = _interopRequireDefault(_min);\n\n var _max = __webpack_require__(9);\n\n var _max2 = _interopRequireDefault(_max);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n exports.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 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 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 /******/\n ])\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\nconst isScrollBehaviorSupported = 'scrollBehavior' in document.documentElement.style;\n\nexport const scrollRight = (node, position) => isScrollBehaviorSupported ? node.scrollTo({ left: position, behavior: 'smooth' }) : scroll(node, 'scrollLeft', position);\nexport const scrollTop = (node) => isScrollBehaviorSupported ? node.scrollTo({ top: 0, behavior: 'smooth' }) : scroll(node, 'scrollTop', 0);\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\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 small: 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 {\n account,\n hidden,\n intl,\n small,\n onActionClick,\n actionIcon,\n actionTitle,\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 (onActionClick && actionIcon) {\n buttons = <IconButton icon={actionIcon} title={actionTitle} onClick={this.handleAction} />;\n } else 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 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 wrap(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n },\n await: function _await(value) {\n return new AwaitValue(value);\n }\n };\n}();\n\nvar classCallCheck = function classCallCheck(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\nvar inherits = 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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = 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};\n\nvar DEV = process.env.NODE_ENV !== 'production';\nvar propTypes = {\n scrollKey: PropTypes.string.isRequired,\n shouldUpdateScroll: PropTypes.func,\n children: PropTypes.element.isRequired\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); // 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\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 } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\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); // Only keep around the current DOM node in development, as this is only\n // for emitting the appropriate warning.\n\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 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;\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};\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 } // Hack to allow accessing scrollBehavior._stateStorage.\n\n\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 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\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 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 this.scrollBehavior.updateScroll(prevRouterProps, {\n history: history,\n location: location\n });\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 return {\n history: history,\n location: location\n };\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;\nvar ScrollBehaviorContext = withRouter(ScrollContext);\nexport { ScrollContainer, ScrollBehaviorContext as ScrollContext };","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\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\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\n\nfunction _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) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar _mapToZero = require('./mapToZero');\n\nvar _mapToZero2 = _interopRequireDefault(_mapToZero);\n\nvar _stripStyle = require('./stripStyle');\n\nvar _stripStyle2 = _interopRequireDefault(_stripStyle);\n\nvar _stepper3 = require('./stepper');\n\nvar _stepper4 = _interopRequireDefault(_stepper3);\n\nvar _mergeDiff = require('./mergeDiff');\n\nvar _mergeDiff2 = _interopRequireDefault(_mergeDiff);\n\nvar _performanceNow = require('performance-now');\n\nvar _performanceNow2 = _interopRequireDefault(_performanceNow);\n\nvar _raf = require('raf');\n\nvar _raf2 = _interopRequireDefault(_raf);\n\nvar _shouldStopAnimation = require('./shouldStopAnimation');\n\nvar _shouldStopAnimation2 = _interopRequireDefault(_shouldStopAnimation);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar msPerFrame = 1000 / 60; // the children function & (potential) styles function asks as param an\n// Array<TransitionPlainStyle>, where each TransitionPlainStyle is of the format\n// {key: string, data?: any, style: PlainStyle}. However, the way we keep\n// internal states doesn't contain such a data structure (check the state and\n// TransitionMotionState). So when children function and others ask for such\n// data we need to generate them on the fly by combining mergedPropsStyles and\n// currentStyles/lastIdealStyles\n\nfunction rehydrateStyles(mergedPropsStyles, unreadPropStyles, plainStyles) {\n // Copy the value to a `const` so that Flow understands that the const won't\n // change and will be non-nullable in the callback below.\n var cUnreadPropStyles = unreadPropStyles;\n\n if (cUnreadPropStyles == null) {\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n }\n\n return mergedPropsStyles.map(function (mergedPropsStyle, i) {\n for (var j = 0; j < cUnreadPropStyles.length; j++) {\n if (cUnreadPropStyles[j].key === mergedPropsStyle.key) {\n return {\n key: cUnreadPropStyles[j].key,\n data: cUnreadPropStyles[j].data,\n style: plainStyles[i]\n };\n }\n }\n\n return {\n key: mergedPropsStyle.key,\n data: mergedPropsStyle.data,\n style: plainStyles[i]\n };\n });\n}\n\nfunction shouldStopAnimationAll(currentStyles, destStyles, currentVelocities, mergedPropsStyles) {\n if (mergedPropsStyles.length !== destStyles.length) {\n return false;\n }\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (mergedPropsStyles[i].key !== destStyles[i].key) {\n return false;\n }\n } // we have the invariant that mergedPropsStyles and\n // currentStyles/currentVelocities/last* are synced in terms of cells, see\n // mergeAndSync comment for more info\n\n\n for (var i = 0; i < mergedPropsStyles.length; i++) {\n if (!_shouldStopAnimation2['default'](currentStyles[i], destStyles[i].style, currentVelocities[i])) {\n return false;\n }\n }\n\n return true;\n} // core key merging logic\n// things to do: say previously merged style is {a, b}, dest style (prop) is {b,\n// c}, previous current (interpolating) style is {a, b}\n// **invariant**: current[i] corresponds to merged[i] in terms of key\n// steps:\n// turn merged style into {a?, b, c}\n// add c, value of c is destStyles.c\n// maybe remove a, aka call willLeave(a), then merged is either {b, c} or {a, b, c}\n// turn current (interpolating) style from {a, b} into {a?, b, c}\n// maybe remove a\n// certainly add c, value of c is willEnter(c)\n// loop over merged and construct new current\n// dest doesn't change, that's owner's\n\n\nfunction mergeAndSync(willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldLastIdealStyles, oldLastIdealVelocities) {\n var newMergedPropsStyles = _mergeDiff2['default'](oldMergedPropsStyles, destStyles, function (oldIndex, oldMergedPropsStyle) {\n var leavingStyle = willLeave(oldMergedPropsStyle);\n\n if (leavingStyle == null) {\n didLeave({\n key: oldMergedPropsStyle.key,\n data: oldMergedPropsStyle.data\n });\n return null;\n }\n\n if (_shouldStopAnimation2['default'](oldCurrentStyles[oldIndex], leavingStyle, oldCurrentVelocities[oldIndex])) {\n didLeave({\n key: oldMergedPropsStyle.key,\n data: oldMergedPropsStyle.data\n });\n return null;\n }\n\n return {\n key: oldMergedPropsStyle.key,\n data: oldMergedPropsStyle.data,\n style: leavingStyle\n };\n });\n\n var newCurrentStyles = [];\n var newCurrentVelocities = [];\n var newLastIdealStyles = [];\n var newLastIdealVelocities = [];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyleCell = newMergedPropsStyles[i];\n var foundOldIndex = null;\n\n for (var j = 0; j < oldMergedPropsStyles.length; j++) {\n if (oldMergedPropsStyles[j].key === newMergedPropsStyleCell.key) {\n foundOldIndex = j;\n break;\n }\n } // TODO: key search code\n\n\n if (foundOldIndex == null) {\n var plainStyle = willEnter(newMergedPropsStyleCell);\n newCurrentStyles[i] = plainStyle;\n newLastIdealStyles[i] = plainStyle;\n\n var velocity = _mapToZero2['default'](newMergedPropsStyleCell.style);\n\n newCurrentVelocities[i] = velocity;\n newLastIdealVelocities[i] = velocity;\n } else {\n newCurrentStyles[i] = oldCurrentStyles[foundOldIndex];\n newLastIdealStyles[i] = oldLastIdealStyles[foundOldIndex];\n newCurrentVelocities[i] = oldCurrentVelocities[foundOldIndex];\n newLastIdealVelocities[i] = oldLastIdealVelocities[foundOldIndex];\n }\n }\n\n return [newMergedPropsStyles, newCurrentStyles, newCurrentVelocities, newLastIdealStyles, newLastIdealVelocities];\n}\n\nvar TransitionMotion = function (_React$Component) {\n _inherits(TransitionMotion, _React$Component);\n\n _createClass(TransitionMotion, null, [{\n key: 'propTypes',\n value: {\n defaultStyles: _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].number).isRequired\n })),\n styles: _propTypes2['default'].oneOfType([_propTypes2['default'].func, _propTypes2['default'].arrayOf(_propTypes2['default'].shape({\n key: _propTypes2['default'].string.isRequired,\n data: _propTypes2['default'].any,\n style: _propTypes2['default'].objectOf(_propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].object])).isRequired\n }))]).isRequired,\n children: _propTypes2['default'].func.isRequired,\n willEnter: _propTypes2['default'].func,\n willLeave: _propTypes2['default'].func,\n didLeave: _propTypes2['default'].func\n },\n enumerable: true\n }, {\n key: 'defaultProps',\n value: {\n willEnter: function willEnter(styleThatEntered) {\n return _stripStyle2['default'](styleThatEntered.style);\n },\n // recall: returning null makes the current unmounting TransitionStyle\n // disappear immediately\n willLeave: function willLeave() {\n return null;\n },\n didLeave: function didLeave() {}\n },\n enumerable: true\n }]);\n\n function TransitionMotion(props) {\n var _this = this;\n\n _classCallCheck(this, TransitionMotion);\n\n _React$Component.call(this, props);\n\n this.unmounting = false;\n this.animationID = null;\n this.prevTime = 0;\n this.accumulatedTime = 0;\n this.unreadPropStyles = null;\n\n this.clearUnreadPropStyle = function (unreadPropStyles) {\n var _mergeAndSync = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, unreadPropStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var mergedPropsStyles = _mergeAndSync[0];\n var currentStyles = _mergeAndSync[1];\n var currentVelocities = _mergeAndSync[2];\n var lastIdealStyles = _mergeAndSync[3];\n var lastIdealVelocities = _mergeAndSync[4];\n\n for (var i = 0; i < unreadPropStyles.length; i++) {\n var unreadPropStyle = unreadPropStyles[i].style;\n var dirty = false;\n\n for (var key in unreadPropStyle) {\n if (!Object.prototype.hasOwnProperty.call(unreadPropStyle, key)) {\n continue;\n }\n\n var styleValue = unreadPropStyle[key];\n\n if (typeof styleValue === 'number') {\n if (!dirty) {\n dirty = true;\n currentStyles[i] = _extends({}, currentStyles[i]);\n currentVelocities[i] = _extends({}, currentVelocities[i]);\n lastIdealStyles[i] = _extends({}, lastIdealStyles[i]);\n lastIdealVelocities[i] = _extends({}, lastIdealVelocities[i]);\n mergedPropsStyles[i] = {\n key: mergedPropsStyles[i].key,\n data: mergedPropsStyles[i].data,\n style: _extends({}, mergedPropsStyles[i].style)\n };\n }\n\n currentStyles[i][key] = styleValue;\n currentVelocities[i][key] = 0;\n lastIdealStyles[i][key] = styleValue;\n lastIdealVelocities[i][key] = 0;\n mergedPropsStyles[i].style[key] = styleValue;\n }\n }\n } // unlike the other 2 components, we can't detect staleness and optionally\n // opt out of setState here. each style object's data might contain new\n // stuff we're not/cannot compare\n\n\n _this.setState({\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n mergedPropsStyles: mergedPropsStyles,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities\n });\n };\n\n this.startAnimationIfNecessary = function () {\n if (_this.unmounting) {\n return;\n } // TODO: when config is {a: 10} and dest is {a: 10} do we raf once and\n // call cb? No, otherwise accidental parent rerender causes cb trigger\n\n\n _this.animationID = _raf2['default'](function (timestamp) {\n // https://github.com/chenglou/react-motion/pull/420\n // > if execution passes the conditional if (this.unmounting), then\n // executes async defaultRaf and after that component unmounts and after\n // that the callback of defaultRaf is called, then setState will be called\n // on unmounted component.\n if (_this.unmounting) {\n return;\n }\n\n var propStyles = _this.props.styles;\n var destStyles = typeof propStyles === 'function' ? propStyles(rehydrateStyles(_this.state.mergedPropsStyles, _this.unreadPropStyles, _this.state.lastIdealStyles)) : propStyles; // check if we need to animate in the first place\n\n if (shouldStopAnimationAll(_this.state.currentStyles, destStyles, _this.state.currentVelocities, _this.state.mergedPropsStyles)) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n _this.accumulatedTime = 0;\n return;\n }\n\n var currentTime = timestamp || _performanceNow2['default']();\n\n var timeDelta = currentTime - _this.prevTime;\n _this.prevTime = currentTime;\n _this.accumulatedTime = _this.accumulatedTime + timeDelta; // more than 10 frames? prolly switched browser tab. Restart\n\n if (_this.accumulatedTime > msPerFrame * 10) {\n _this.accumulatedTime = 0;\n }\n\n if (_this.accumulatedTime === 0) {\n // no need to cancel animationID here; shouldn't have any in flight\n _this.animationID = null;\n\n _this.startAnimationIfNecessary();\n\n return;\n }\n\n var currentFrameCompletion = (_this.accumulatedTime - Math.floor(_this.accumulatedTime / msPerFrame) * msPerFrame) / msPerFrame;\n var framesToCatchUp = Math.floor(_this.accumulatedTime / msPerFrame);\n\n var _mergeAndSync2 = mergeAndSync(_this.props.willEnter, _this.props.willLeave, _this.props.didLeave, _this.state.mergedPropsStyles, destStyles, _this.state.currentStyles, _this.state.currentVelocities, _this.state.lastIdealStyles, _this.state.lastIdealVelocities);\n\n var newMergedPropsStyles = _mergeAndSync2[0];\n var newCurrentStyles = _mergeAndSync2[1];\n var newCurrentVelocities = _mergeAndSync2[2];\n var newLastIdealStyles = _mergeAndSync2[3];\n var newLastIdealVelocities = _mergeAndSync2[4];\n\n for (var i = 0; i < newMergedPropsStyles.length; i++) {\n var newMergedPropsStyle = newMergedPropsStyles[i].style;\n var newCurrentStyle = {};\n var newCurrentVelocity = {};\n var newLastIdealStyle = {};\n var newLastIdealVelocity = {};\n\n for (var key in newMergedPropsStyle) {\n if (!Object.prototype.hasOwnProperty.call(newMergedPropsStyle, key)) {\n continue;\n }\n\n var styleValue = newMergedPropsStyle[key];\n\n if (typeof styleValue === 'number') {\n newCurrentStyle[key] = styleValue;\n newCurrentVelocity[key] = 0;\n newLastIdealStyle[key] = styleValue;\n newLastIdealVelocity[key] = 0;\n } else {\n var newLastIdealStyleValue = newLastIdealStyles[i][key];\n var newLastIdealVelocityValue = newLastIdealVelocities[i][key];\n\n for (var j = 0; j < framesToCatchUp; j++) {\n var _stepper = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n newLastIdealStyleValue = _stepper[0];\n newLastIdealVelocityValue = _stepper[1];\n }\n\n var _stepper2 = _stepper4['default'](msPerFrame / 1000, newLastIdealStyleValue, newLastIdealVelocityValue, styleValue.val, styleValue.stiffness, styleValue.damping, styleValue.precision);\n\n var nextIdealX = _stepper2[0];\n var nextIdealV = _stepper2[1];\n newCurrentStyle[key] = newLastIdealStyleValue + (nextIdealX - newLastIdealStyleValue) * currentFrameCompletion;\n newCurrentVelocity[key] = newLastIdealVelocityValue + (nextIdealV - newLastIdealVelocityValue) * currentFrameCompletion;\n newLastIdealStyle[key] = newLastIdealStyleValue;\n newLastIdealVelocity[key] = newLastIdealVelocityValue;\n }\n }\n\n newLastIdealStyles[i] = newLastIdealStyle;\n newLastIdealVelocities[i] = newLastIdealVelocity;\n newCurrentStyles[i] = newCurrentStyle;\n newCurrentVelocities[i] = newCurrentVelocity;\n }\n\n _this.animationID = null; // the amount we're looped over above\n\n _this.accumulatedTime -= framesToCatchUp * msPerFrame;\n\n _this.setState({\n currentStyles: newCurrentStyles,\n currentVelocities: newCurrentVelocities,\n lastIdealStyles: newLastIdealStyles,\n lastIdealVelocities: newLastIdealVelocities,\n mergedPropsStyles: newMergedPropsStyles\n });\n\n _this.unreadPropStyles = null;\n\n _this.startAnimationIfNecessary();\n });\n };\n\n this.state = this.defaultState();\n }\n\n TransitionMotion.prototype.defaultState = function defaultState() {\n var _props = this.props;\n var defaultStyles = _props.defaultStyles;\n var styles = _props.styles;\n var willEnter = _props.willEnter;\n var willLeave = _props.willLeave;\n var didLeave = _props.didLeave;\n var destStyles = typeof styles === 'function' ? styles(defaultStyles) : styles; // this is special. for the first time around, we don't have a comparison\n // between last (no last) and current merged props. we'll compute last so:\n // say default is {a, b} and styles (dest style) is {b, c}, we'll\n // fabricate last as {a, b}\n\n var oldMergedPropsStyles = undefined;\n\n if (defaultStyles == null) {\n oldMergedPropsStyles = destStyles;\n } else {\n oldMergedPropsStyles = defaultStyles.map(function (defaultStyleCell) {\n // TODO: key search code\n for (var i = 0; i < destStyles.length; i++) {\n if (destStyles[i].key === defaultStyleCell.key) {\n return destStyles[i];\n }\n }\n\n return defaultStyleCell;\n });\n }\n\n var oldCurrentStyles = defaultStyles == null ? destStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _stripStyle2['default'](s.style);\n });\n var oldCurrentVelocities = defaultStyles == null ? destStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n }) : defaultStyles.map(function (s) {\n return _mapToZero2['default'](s.style);\n });\n\n var _mergeAndSync3 = mergeAndSync( // Because this is an old-style createReactClass component, Flow doesn't\n // understand that the willEnter and willLeave props have default values\n // and will always be present.\n willEnter, willLeave, didLeave, oldMergedPropsStyles, destStyles, oldCurrentStyles, oldCurrentVelocities, oldCurrentStyles, // oldLastIdealStyles really\n oldCurrentVelocities);\n\n var mergedPropsStyles = _mergeAndSync3[0];\n var currentStyles = _mergeAndSync3[1];\n var currentVelocities = _mergeAndSync3[2];\n var lastIdealStyles = _mergeAndSync3[3];\n var lastIdealVelocities = _mergeAndSync3[4]; // oldLastIdealVelocities really\n\n return {\n currentStyles: currentStyles,\n currentVelocities: currentVelocities,\n lastIdealStyles: lastIdealStyles,\n lastIdealVelocities: lastIdealVelocities,\n mergedPropsStyles: mergedPropsStyles\n };\n }; // after checking for unreadPropStyles != null, we manually go set the\n // non-interpolating values (those that are a number, without a spring\n // config)\n\n\n TransitionMotion.prototype.componentDidMount = function componentDidMount() {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n };\n\n TransitionMotion.prototype.componentWillReceiveProps = function componentWillReceiveProps(props) {\n if (this.unreadPropStyles) {\n // previous props haven't had the chance to be set yet; set them here\n this.clearUnreadPropStyle(this.unreadPropStyles);\n }\n\n var styles = props.styles;\n\n if (typeof styles === 'function') {\n this.unreadPropStyles = styles(rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.lastIdealStyles));\n } else {\n this.unreadPropStyles = styles;\n }\n\n if (this.animationID == null) {\n this.prevTime = _performanceNow2['default']();\n this.startAnimationIfNecessary();\n }\n };\n\n TransitionMotion.prototype.componentWillUnmount = function componentWillUnmount() {\n this.unmounting = true;\n\n if (this.animationID != null) {\n _raf2['default'].cancel(this.animationID);\n\n this.animationID = null;\n }\n };\n\n TransitionMotion.prototype.render = function render() {\n var hydratedStyles = rehydrateStyles(this.state.mergedPropsStyles, this.unreadPropStyles, this.state.currentStyles);\n var renderedChildren = this.props.children(hydratedStyles);\n return renderedChildren && _react2['default'].Children.only(renderedChildren);\n };\n\n return TransitionMotion;\n}(_react2['default'].Component);\n\nexports['default'] = TransitionMotion;\nmodule.exports = exports['default']; // list of styles, each containing interpolating values. Part of what's passed\n// to children function. Notice that this is\n// Array<ActualInterpolatingStyleObject>, without the wrapper that is {key: ...,\n// data: ... style: ActualInterpolatingStyleObject}. Only mergedPropsStyles\n// contains the key & data info (so that we only have a single source of truth\n// for these, and to save space). Check the comment for `rehydrateStyles` to\n// see how we regenerate the entirety of what's passed to children function\n// the array that keeps track of currently rendered stuff! Including stuff\n// that you've unmounted but that's still animating. This is where it lives\n// it's possible that currentStyle's value is stale: if props is immediately\n// changed from 0 to 400 to spring(0) again, the async currentStyle is still\n// at 0 (didn't have time to tick and interpolate even once). If we naively\n// compare currentStyle with destVal it'll be 0 === 0 (no animation, stop).\n// In reality currentStyle should be 400","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, useBlurhash } from 'flavours/glitch/util/initial_state';\nimport { decode } from 'blurhash';\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: 'Hide media',\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 visible: PropTypes.bool.isRequired,\n autoplay: PropTypes.bool,\n };\n\n static defaultProps = {\n standalone: false,\n index: 0,\n size: 1,\n };\n\n state = {\n loaded: false,\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 getAutoPlay() {\n return this.props.autoplay || autoPlayGif;\n }\n\n hoverToPlay () {\n const { attachment } = this.props;\n return !this.getAutoPlay() && 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 componentDidMount () {\n if (this.props.attachment.get('blurhash')) {\n this._decode();\n }\n }\n\n componentDidUpdate (prevProps) {\n if (prevProps.attachment.get('blurhash') !== this.props.attachment.get('blurhash') && this.props.attachment.get('blurhash')) {\n this._decode();\n }\n }\n\n _decode () {\n if (!useBlurhash) return;\n\n const hash = this.props.attachment.get('blurhash');\n const pixels = decode(hash, 32, 32);\n\n if (pixels) {\n const ctx = this.canvas.getContext('2d');\n const imageData = new ImageData(pixels, 32, 32);\n\n ctx.putImageData(imageData, 0, 0);\n }\n }\n\n setCanvasRef = c => {\n this.canvas = c;\n }\n\n handleImageLoad = () => {\n this.setState({ loaded: true });\n }\n\n render () {\n const { attachment, index, size, standalone, letterbox, displayWidth, visible } = 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') === 'unknown') {\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 <a className='media-gallery__item-thumbnail' href={attachment.get('remote_url') || attachment.get('url')} style={{ cursor: 'pointer' }} title={attachment.get('description')} target='_blank' rel='noopener noreferrer'>\n <canvas width={32} height={32} ref={this.setCanvasRef} className='media-gallery__preview' />\n </a>\n </div>\n );\n } else 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 rel='noopener noreferrer'\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 onLoad={this.handleImageLoad}\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() && this.getAutoPlay();\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 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 <canvas width={32} height={32} ref={this.setCanvasRef} className={classNames('media-gallery__preview', { 'media-gallery__preview--hidden': visible && this.state.loaded })} />\n {visible && 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 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 visible: PropTypes.bool,\n autoplay: PropTypes.bool,\n onToggleVisibility: PropTypes.func,\n };\n\n static defaultProps = {\n standalone: false,\n };\n\n state = {\n visible: this.props.visible !== undefined ? this.props.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) && nextProps.visible === undefined) {\n this.setState({ visible: displayMedia !== 'hide_all' && !nextProps.sensitive || displayMedia === 'show_all' });\n } else if (!is(nextProps.visible, this.props.visible) && nextProps.visible !== undefined) {\n this.setState({ visible: nextProps.visible });\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 if (this.props.onToggleVisibility) {\n this.props.onToggleVisibility();\n } else {\n this.setState({ visible: !this.state.visible });\n }\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\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, autoplay } = this.props;\n const { visible } = this.state;\n const size = media.take(4).size;\n const uncached = media.every(attachment => attachment.get('type') === 'unknown');\n\n const width = this.state.width || defaultWidth;\n\n let children, spoilerButton;\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 (this.isStandaloneEligible()) {\n children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} displayWidth={width} visible={visible} />;\n } else {\n children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} size={size} letterbox={letterbox} displayWidth={width} visible={visible || uncached} />);\n }\n\n if (uncached) {\n spoilerButton = (\n <button type='button' disabled className='spoiler-button__overlay'>\n <span className='spoiler-button__overlay__label'><FormattedMessage id='status.uncached_media_warning' defaultMessage='Not available' /></span>\n </button>\n );\n } else if (visible) {\n spoilerButton = <IconButton title={intl.formatMessage(messages.toggle_visible)} icon='eye-slash' overlay onClick={this.handleOpen} />;\n } else {\n spoilerButton = (\n <button type='button' onClick={this.handleOpen} className='spoiler-button__overlay'>\n <span className='spoiler-button__overlay__label'>{sensitive ? <FormattedMessage id='status.sensitive_warning' defaultMessage='Sensitive content' /> : <FormattedMessage id='status.media_hidden' defaultMessage='Media hidden' />}</span>\n </button>\n );\n }\n\n return (\n <div className={computedClass} style={style} ref={this.handleRef}>\n <div className={classNames('spoiler-button', { 'spoiler-button--minified': visible && !uncached, 'spoiler-button--click-thru': uncached })}>\n {spoilerButton}\n {visible && sensitive && (\n <span className='sensitive-marker'>\n <FormattedMessage {...messages.sensitive} />\n </span>\n )}\n </div>\n\n {children}\n </div>\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 { decode as decodeIDNA } from 'flavours/glitch/util/idna';\nimport Icon from 'flavours/glitch/components/icon';\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, 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 noreferrer' 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 noreferrer'><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 noreferrer' ref={this.setRef}>\n {embed}\n {description}\n </a>\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) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function () {\n return _react2.default.createElement('svg', {\n width: '14',\n height: '11',\n viewBox: '0 0 14 11'\n }, _react2.default.createElement('title', null, 'switch-check'), _react2.default.createElement('path', {\n d: 'M11.264 0L5.26 6.004 2.103 2.847 0 4.95l5.26 5.26 8.108-8.107L11.264 0',\n fill: '#fff',\n 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) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function () {\n return _react2.default.createElement('svg', {\n width: '10',\n height: '10',\n viewBox: '0 0 10 10'\n }, _react2.default.createElement('title', null, 'switch-x'), _react2.default.createElement('path', {\n 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',\n fill: '#fff',\n fillRule: 'evenodd'\n }));\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pointerCoord = pointerCoord; // 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\n if (changedTouches && changedTouches.length > 0) {\n var touch = changedTouches[0];\n return {\n x: touch.clientX,\n y: touch.clientY\n };\n }\n\n var pageX = event.pageX;\n\n if (pageX !== undefined) {\n return {\n x: pageX,\n y: event.pageY\n };\n }\n }\n\n return {\n x: 0,\n y: 0\n };\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, cropImages, displayMedia, useBlurhash } from '../initial_state';\nimport { decode } from 'blurhash';\n\nconst messages = defineMessages({\n toggle_visible: { id: 'media_gallery.toggle_visible', defaultMessage: 'Hide media' },\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 visible: PropTypes.bool.isRequired,\n autoplay: PropTypes.bool,\n };\n\n static defaultProps = {\n standalone: false,\n index: 0,\n size: 1,\n };\n\n state = {\n loaded: false,\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 getAutoPlay() {\n return this.props.autoplay || autoPlayGif;\n }\n\n hoverToPlay () {\n const { attachment } = this.props;\n return !this.getAutoPlay() && 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 componentDidMount () {\n if (this.props.attachment.get('blurhash')) {\n this._decode();\n }\n }\n\n componentDidUpdate (prevProps) {\n if (prevProps.attachment.get('blurhash') !== this.props.attachment.get('blurhash') && this.props.attachment.get('blurhash')) {\n this._decode();\n }\n }\n\n _decode () {\n if (!useBlurhash) return;\n\n const hash = this.props.attachment.get('blurhash');\n const pixels = decode(hash, 32, 32);\n\n if (pixels) {\n const ctx = this.canvas.getContext('2d');\n const imageData = new ImageData(pixels, 32, 32);\n\n ctx.putImageData(imageData, 0, 0);\n }\n }\n\n setCanvasRef = c => {\n this.canvas = c;\n }\n\n handleImageLoad = () => {\n this.setState({ loaded: true });\n }\n\n render () {\n const { attachment, index, size, standalone, displayWidth, visible } = 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') === 'unknown') {\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 <a className='media-gallery__item-thumbnail' href={attachment.get('remote_url') || attachment.get('url')} style={{ cursor: 'pointer' }} title={attachment.get('description')} target='_blank' rel='noopener noreferrer'>\n <canvas width={32} height={32} ref={this.setCanvasRef} className='media-gallery__preview' />\n </a>\n </div>\n );\n } else 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 rel='noopener noreferrer'\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 onLoad={this.handleImageLoad}\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() && this.getAutoPlay();\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 <canvas width={32} height={32} ref={this.setCanvasRef} className={classNames('media-gallery__preview', { 'media-gallery__preview--hidden': visible && this.state.loaded })} />\n {visible && 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 visible: PropTypes.bool,\n autoplay: PropTypes.bool,\n onToggleVisibility: PropTypes.func,\n };\n\n static defaultProps = {\n standalone: false,\n };\n\n state = {\n visible: this.props.visible !== undefined ? this.props.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) && nextProps.visible === undefined) {\n this.setState({ visible: displayMedia !== 'hide_all' && !nextProps.sensitive || displayMedia === 'show_all' });\n } else if (!is(nextProps.visible, this.props.visible) && nextProps.visible !== undefined) {\n this.setState({ visible: nextProps.visible });\n }\n }\n\n handleOpen = () => {\n if (this.props.onToggleVisibility) {\n this.props.onToggleVisibility();\n } else {\n this.setState({ visible: !this.state.visible });\n }\n }\n\n handleClick = (index) => {\n this.props.onOpenMedia(this.props.media, index);\n }\n\n handleRef = (node) => {\n if (node) {\n // offsetWidth triggers a layout, so only calculate when we need to\n if (this.props.cacheWidth) this.props.cacheWidth(node.offsetWidth);\n\n this.setState({\n width: node.offsetWidth,\n });\n }\n }\n\n isFullSizeEligible() {\n const { media } = this.props;\n return media.size === 1 && media.getIn([0, 'meta', 'small', 'aspect']);\n }\n\n render () {\n const { media, intl, sensitive, height, defaultWidth, standalone, autoplay } = this.props;\n const { visible } = this.state;\n\n const width = this.state.width || defaultWidth;\n\n let children, spoilerButton;\n\n const style = {};\n\n if (this.isFullSizeEligible() && (standalone || !cropImages)) {\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 const size = media.take(4).size;\n const uncached = media.every(attachment => attachment.get('type') === 'unknown');\n\n if (standalone && this.isFullSizeEligible()) {\n children = <Item standalone autoplay={autoplay} onClick={this.handleClick} attachment={media.get(0)} displayWidth={width} visible={visible} />;\n } else {\n children = media.take(4).map((attachment, i) => <Item key={attachment.get('id')} autoplay={autoplay} onClick={this.handleClick} attachment={attachment} index={i} size={size} displayWidth={width} visible={visible || uncached} />);\n }\n\n if (uncached) {\n spoilerButton = (\n <button type='button' disabled className='spoiler-button__overlay'>\n <span className='spoiler-button__overlay__label'><FormattedMessage id='status.uncached_media_warning' defaultMessage='Not available' /></span>\n </button>\n );\n } else if (visible) {\n spoilerButton = <IconButton title={intl.formatMessage(messages.toggle_visible)} icon='eye-slash' overlay onClick={this.handleOpen} />;\n } else {\n spoilerButton = (\n <button type='button' onClick={this.handleOpen} className='spoiler-button__overlay'>\n <span className='spoiler-button__overlay__label'>{sensitive ? <FormattedMessage id='status.sensitive_warning' defaultMessage='Sensitive content' /> : <FormattedMessage id='status.media_hidden' defaultMessage='Media hidden' />}</span>\n </button>\n );\n }\n\n return (\n <div className='media-gallery' style={style} ref={this.handleRef}>\n <div className={classNames('spoiler-button', { 'spoiler-button--minified': visible && !uncached, 'spoiler-button--click-thru': uncached })}>\n {spoilerButton}\n </div>\n\n {children}\n </div>\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 noreferrer' 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 noreferrer'><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 noreferrer' 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';\nimport Icon from 'flavours/glitch/components/icon';\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\nexport default @injectIntl\nclass 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 visibilityIcon = {\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 = (<Icon\n className='status__visibility-icon'\n fixedWidth\n id={visibilityIcon}\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","'use strict'; // 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 = {\n item: item\n };\n\n if (this.last) {\n this.last = this.last.next = node;\n } else {\n this.last = this.first = node;\n }\n\n this.length++;\n};\n\nQueue.prototype.shift = function () {\n var node = this.first;\n\n if (node) {\n this.first = node.next;\n\n if (! --this.length) {\n this.last = undefined;\n }\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 var output = [];\n var i = 0;\n\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\n return output;\n};\n\nmodule.exports = Queue;","import { connect } from 'react-redux';\nimport Poll from 'flavours/glitch/components/poll';\n\nconst mapStateToProps = (state, { pollId }) => ({\n poll: state.getIn(['polls', pollId]),\n});\n\nexport default connect(mapStateToProps)(Poll);\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, categoriesFromEmojis } from 'flavours/glitch/util/emoji';\nimport { useSystemEmojiFont } from 'flavours/glitch/util/initial_state';\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\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} native={useSystemEmojiFont} /></button>\n <button onClick={this.handleClick} data-index={2}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} native={useSystemEmojiFont} /></button>\n <button onClick={this.handleClick} data-index={3}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} native={useSystemEmojiFont} /></button>\n <button onClick={this.handleClick} data-index={4}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} native={useSystemEmojiFont} /></button>\n <button onClick={this.handleClick} data-index={5}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} native={useSystemEmojiFont} /></button>\n <button onClick={this.handleClick} data-index={6}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} native={useSystemEmojiFont} /></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} native={useSystemEmojiFont} />\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\n const { modifierOpen } = this.state;\n\n const categoriesSort = [\n 'recent',\n 'people',\n 'nature',\n 'foods',\n 'activity',\n 'places',\n 'objects',\n 'symbols',\n 'flags',\n ];\n\n categoriesSort.splice(1, 0, ...Array.from(categoriesFromEmojis(custom_emojis)).sort());\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 native={useSystemEmojiFont}\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\nexport default @connect(mapStateToProps, mapDispatchToProps)\n@injectIntl\nclass 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 button: PropTypes.node,\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, button } = 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 {button || <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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\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\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nvar createBackoff = require('./backoff').createBackoff;\n\nvar WebSocketImpl = typeof WebSocket !== \"undefined\" ? WebSocket : require('ws');\n\nvar WebSocketClient = function () {\n /**\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 */\n function WebSocketClient(url, protocols) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _classCallCheck(this, WebSocketClient);\n\n this.url = url;\n this.protocols = protocols;\n this.reconnectEnabled = true;\n this.listeners = {};\n this.backoff = createBackoff(options.backoff || 'exponential', options);\n this.backoff.onReady = this.onBackoffReady.bind(this);\n\n if (typeof options.connect === \"undefined\" || options.connect) {\n this.open();\n }\n }\n\n _createClass(WebSocketClient, [{\n key: 'open',\n value: function open() {\n var reconnect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n this.isReconnect = reconnect; // keep binaryType used on previous WebSocket connection\n\n var binaryType = this.ws && this.ws.binaryType;\n this.ws = new WebSocketImpl(this.url, this.protocols);\n this.ws.onclose = this.onCloseCallback.bind(this);\n this.ws.onerror = this.onErrorCallback.bind(this);\n this.ws.onmessage = this.onMessageCallback.bind(this);\n this.ws.onopen = this.onOpenCallback.bind(this);\n\n if (binaryType) {\n this.ws.binaryType = binaryType;\n }\n }\n /**\n * @ignore\n */\n\n }, {\n key: 'onBackoffReady',\n value: function onBackoffReady(number, delay) {\n // console.log(\"onBackoffReady\", number + ' ' + delay + 'ms');\n this.open(true);\n }\n /**\n * @ignore\n */\n\n }, {\n key: 'onCloseCallback',\n value: function onCloseCallback(e) {\n if (!this.isReconnect && this.listeners['onclose']) {\n this.listeners['onclose'].apply(null, arguments);\n }\n\n if (this.reconnectEnabled && e.code < 3000) {\n this.backoff.backoff();\n }\n }\n /**\n * @ignore\n */\n\n }, {\n key: 'onErrorCallback',\n value: function onErrorCallback() {\n if (this.listeners['onerror']) {\n this.listeners['onerror'].apply(null, arguments);\n }\n }\n /**\n * @ignore\n */\n\n }, {\n key: 'onMessageCallback',\n value: function onMessageCallback() {\n if (this.listeners['onmessage']) {\n this.listeners['onmessage'].apply(null, arguments);\n }\n }\n /**\n * @ignore\n */\n\n }, {\n key: 'onOpenCallback',\n value: function onOpenCallback() {\n if (this.listeners['onopen']) {\n this.listeners['onopen'].apply(null, arguments);\n }\n\n if (this.isReconnect && this.listeners['onreconnect']) {\n this.listeners['onreconnect'].apply(null, arguments);\n }\n\n this.isReconnect = false;\n }\n /**\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 */\n\n }, {\n key: 'close',\n\n /**\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 */\n value: function close(code, reason) {\n if (typeof code == 'undefined') {\n code = 1000;\n }\n\n this.reconnectEnabled = false;\n this.ws.close(code, reason);\n }\n /**\n * Transmits data to the server over the WebSocket connection.\n * @param data DOMString|ArrayBuffer|Blob\n * @return void\n */\n\n }, {\n key: 'send',\n value: function send(data) {\n this.ws.send(data);\n }\n /**\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 */\n\n }, {\n key: 'bufferedAmount',\n get: function get() {\n return this.ws.bufferedAmount;\n }\n /**\n * The current state of the connection; this is one of the Ready state constants.\n * @type unsigned short\n * @readonly\n */\n\n }, {\n key: 'readyState',\n get: function get() {\n return this.ws.readyState;\n }\n /**\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 */\n\n }, {\n key: 'binaryType',\n get: function get() {\n return this.ws.binaryType;\n },\n set: function set(binaryType) {\n this.ws.binaryType = binaryType;\n }\n /**\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 */\n\n }, {\n key: 'extensions',\n get: function get() {\n return this.ws.extensions;\n },\n set: function set(extensions) {\n this.ws.extensions = extensions;\n }\n /**\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 */\n\n }, {\n key: 'protocol',\n get: function get() {\n return this.ws.protocol;\n },\n set: function set(protocol) {\n this.ws.protocol = protocol;\n }\n }, {\n key: 'onclose',\n set: function set(listener) {\n this.listeners['onclose'] = listener;\n },\n get: function get() {\n return this.listeners['onclose'];\n }\n /**\n * An event listener to be called when an error occurs. This is a simple event named \"error\".\n * @param listener EventListener\n */\n\n }, {\n key: 'onerror',\n set: function set(listener) {\n this.listeners['onerror'] = listener;\n },\n get: function get() {\n return this.listeners['onerror'];\n }\n /**\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 */\n\n }, {\n key: 'onmessage',\n set: function set(listener) {\n this.listeners['onmessage'] = listener;\n },\n get: function get() {\n return this.listeners['onmessage'];\n }\n /**\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 */\n\n }, {\n key: 'onopen',\n set: function set(listener) {\n this.listeners['onopen'] = listener;\n },\n get: function get() {\n return this.listeners['onopen'];\n }\n /**\n * @param listener EventListener\n */\n\n }, {\n key: 'onreconnect',\n set: function set(listener) {\n this.listeners['onreconnect'] = listener;\n },\n get: function get() {\n return this.listeners['onreconnect'];\n }\n }]);\n\n return WebSocketClient;\n}();\n/**\n* The connection is not yet open.\n*/\n\n\nWebSocketClient.CONNECTING = WebSocketImpl.CONNECTING;\n/**\n* The connection is open and ready to communicate.\n*/\n\nWebSocketClient.OPEN = WebSocketImpl.OPEN;\n/**\n* The connection is in the process of closing.\n*/\n\nWebSocketClient.CLOSING = WebSocketImpl.CLOSING;\n/**\n* The connection is closed or couldn't be opened.\n*/\n\nWebSocketClient.CLOSED = WebSocketImpl.CLOSED;\nexports.default = WebSocketClient;","import { connect } from 'react-redux';\nimport EmojiPickerDropdown from '../components/emoji_picker_dropdown';\nimport { changeSetting } from '../../../actions/settings';\nimport { createSelector } from 'reselect';\nimport { Map as ImmutableMap } from 'immutable';\nimport { useEmoji } from '../../../actions/emojis';\n\nconst perLine = 8;\nconst lines = 2;\n\nconst DEFAULTS = [\n '+1',\n 'grinning',\n 'kissing_heart',\n 'heart_eyes',\n 'laughing',\n 'stuck_out_tongue_winking_eye',\n 'sweat_smile',\n 'joy',\n 'yum',\n 'disappointed',\n 'thinking_face',\n 'weary',\n 'sob',\n 'sunglasses',\n 'heart',\n 'ok_hand',\n];\n\nconst getFrequentlyUsedEmojis = createSelector([\n state => state.getIn(['settings', 'frequentlyUsedEmojis'], ImmutableMap()),\n], emojiCounters => {\n let emojis = emojiCounters\n .keySeq()\n .sort((a, b) => emojiCounters.get(a) - emojiCounters.get(b))\n .reverse()\n .slice(0, perLine * lines)\n .toArray();\n\n if (emojis.length < DEFAULTS.length) {\n let uniqueDefaults = DEFAULTS.filter(emoji => !emojis.includes(emoji));\n emojis = emojis.concat(uniqueDefaults.slice(0, DEFAULTS.length - emojis.length));\n }\n\n return emojis;\n});\n\nconst getCustomEmojis = createSelector([\n state => state.get('custom_emojis'),\n], emojis => emojis.filter(e => e.get('visible_in_picker')).sort((a, b) => {\n const aShort = a.get('shortcode').toLowerCase();\n const bShort = b.get('shortcode').toLowerCase();\n\n if (aShort < bShort) {\n return -1;\n } else if (aShort > bShort ) {\n return 1;\n } else {\n return 0;\n }\n}));\n\nconst mapStateToProps = state => ({\n custom_emojis: getCustomEmojis(state),\n skinTone: state.getIn(['settings', 'skinTone']),\n frequentlyUsedEmojis: getFrequentlyUsedEmojis(state),\n});\n\nconst mapDispatchToProps = (dispatch, { onPickEmoji }) => ({\n onSkinTone: skinTone => {\n dispatch(changeSetting(['skinTone'], skinTone));\n },\n\n onPickEmoji: emoji => {\n dispatch(useEmoji(emoji));\n\n if (onPickEmoji) {\n onPickEmoji(emoji);\n }\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EmojiPickerDropdown);\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\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 { 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\nexport default @injectIntl\nclass ReplyIndicator extends ImmutablePureComponent {\n\n static propTypes = {\n status: ImmutablePropTypes.map,\n intl: PropTypes.object.isRequired,\n onCancel: PropTypes.func,\n };\n\n handleClick = () => {\n const { onCancel } = this.props;\n if (onCancel) {\n onCancel();\n }\n }\n\n // Rendering.\n render () {\n const { status, intl } = this.props;\n\n if (!status) {\n return null;\n }\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={this.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","import { connect } from 'react-redux';\nimport { cancelReplyCompose } from 'flavours/glitch/actions/compose';\nimport { makeGetStatus } from 'flavours/glitch/selectors';\nimport ReplyIndicator from '../components/reply_indicator';\n\nfunction makeMapStateToProps (state) {\n const inReplyTo = state.getIn(['compose', 'in_reply_to']);\n\n return {\n status: inReplyTo ? state.getIn(['statuses', inReplyTo]) : null,\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n\n onCancel () {\n dispatch(cancelReplyCompose());\n },\n\n});\n\nexport default connect(makeMapStateToProps, mapDispatchToProps)(ReplyIndicator);\n","import React from 'react';\nimport Avatar from 'flavours/glitch/components/avatar';\nimport DisplayName from 'flavours/glitch/components/display_name';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\nexport default class AutosuggestAccount extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n const { account } = this.props;\n\n return (\n <div className='account small' title={account.get('acct')}>\n <div className='account__avatar-wrapper'><Avatar account={account} size={24} /></div>\n <DisplayName account={account} inline />\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport AutosuggestAccount from '../components/autosuggest_account';\nimport { makeGetAccount } from 'flavours/glitch/selectors';\n\nconst makeMapStateToProps = () => {\n const getAccount = makeGetAccount();\n\n const mapStateToProps = (state, { id }) => ({\n account: getAccount(state, id),\n });\n\n return mapStateToProps;\n};\n\nexport default connect(makeMapStateToProps)(AutosuggestAccount);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { shortNumberFormat } from 'flavours/glitch/util/numbers';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class AutosuggestHashtag extends React.PureComponent {\n\n static propTypes = {\n tag: PropTypes.shape({\n name: PropTypes.string.isRequired,\n url: PropTypes.string,\n history: PropTypes.array,\n }).isRequired,\n };\n\n render () {\n const { tag } = this.props;\n const weeklyUses = tag.history && shortNumberFormat(tag.history.reduce((total, day) => total + (day.uses * 1), 0));\n\n return (\n <div className='autosuggest-hashtag'>\n <div className='autosuggest-hashtag__name'>#<strong>{tag.name}</strong></div>\n {tag.history !== undefined && <div className='autosuggest-hashtag__uses'><FormattedMessage id='autosuggest_hashtag.per_week' defaultMessage='{count} per week' values={{ count: weeklyUses }} /></div>}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport AutosuggestAccountContainer from 'flavours/glitch/features/compose/containers/autosuggest_account_container';\nimport AutosuggestEmoji from './autosuggest_emoji';\nimport AutosuggestHashtag from './autosuggest_hashtag';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { isRtl } from 'flavours/glitch/util/rtl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport Textarea from 'react-textarea-autosize';\nimport classNames from 'classnames';\n\nconst textAtCursorMatchesToken = (str, caretPosition) => {\n let word;\n\n let left = str.slice(0, caretPosition).search(/[^\\s\\u200B]+$/);\n let right = str.slice(caretPosition).search(/[\\s\\u200B]/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || ['@', ':', '#'].indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left, word];\n } else {\n return [null, null];\n }\n};\n\nexport default class AutosuggestTextarea extends ImmutablePureComponent {\n\n static propTypes = {\n value: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsClearRequested: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n onKeyDown: PropTypes.func,\n onPaste: PropTypes.func.isRequired,\n autoFocus: PropTypes.bool,\n };\n\n static defaultProps = {\n autoFocus: true,\n };\n\n state = {\n suggestionsHidden: true,\n focused: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n onChange = (e) => {\n const [ tokenStart, token ] = textAtCursorMatchesToken(e.target.value, e.target.selectionStart);\n\n if (token !== null && this.state.lastToken !== token) {\n this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });\n this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n this.setState({ lastToken: null });\n this.props.onSuggestionsClearRequested();\n }\n\n this.props.onChange(e);\n }\n\n onKeyDown = (e) => {\n const { suggestions, disabled } = this.props;\n const { selectedSuggestion, suggestionsHidden } = this.state;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch(e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !this.props.onKeyDown) {\n return;\n }\n\n this.props.onKeyDown(e);\n }\n\n onBlur = () => {\n this.setState({ suggestionsHidden: true, focused: false });\n }\n\n onFocus = (e) => {\n this.setState({ focused: true });\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n\n onSuggestionClick = (e) => {\n const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);\n this.textarea.focus();\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n setTextarea = (c) => {\n this.textarea = c;\n }\n\n onPaste = (e) => {\n if (e.clipboardData && e.clipboardData.files.length === 1) {\n this.props.onPaste(e.clipboardData.files);\n e.preventDefault();\n }\n }\n\n renderSuggestion = (suggestion, i) => {\n const { selectedSuggestion } = this.state;\n let inner, key;\n\n if (suggestion.type === 'emoji') {\n inner = <AutosuggestEmoji emoji={suggestion} />;\n key = suggestion.id;\n } else if (suggestion.type === 'hashtag') {\n inner = <AutosuggestHashtag tag={suggestion} />;\n key = suggestion.name;\n } else if (suggestion.type === 'account') {\n inner = <AutosuggestAccountContainer id={suggestion.id} />;\n key = suggestion.id;\n }\n\n return (\n <div role='button' tabIndex='0' key={key} data-index={i} className={classNames('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion })} onMouseDown={this.onSuggestionClick}>\n {inner}\n </div>\n );\n }\n\n render () {\n const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, children } = this.props;\n const { suggestionsHidden } = this.state;\n const style = { direction: 'ltr' };\n\n if (isRtl(value)) {\n style.direction = 'rtl';\n }\n\n return [\n <div className='compose-form__autosuggest-wrapper' key='autosuggest-wrapper'>\n <div className='autosuggest-textarea'>\n <label>\n <span style={{ display: 'none' }}>{placeholder}</span>\n\n <Textarea\n inputRef={this.setTextarea}\n className='autosuggest-textarea__textarea'\n disabled={disabled}\n placeholder={placeholder}\n autoFocus={autoFocus}\n value={value}\n onChange={this.onChange}\n onKeyDown={this.onKeyDown}\n onKeyUp={onKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onPaste={this.onPaste}\n style={style}\n aria-autocomplete='list'\n />\n </label>\n </div>\n {children}\n </div>,\n\n <div className='autosuggest-textarea__suggestions-wrapper' key='suggestions-wrapper'>\n <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>\n {suggestions.map(this.renderSuggestion)}\n </div>\n </div>,\n ];\n }\n\n}\n","import React from 'react';\nimport AutosuggestAccountContainer from 'flavours/glitch/features/compose/containers/autosuggest_account_container';\nimport AutosuggestEmoji from './autosuggest_emoji';\nimport AutosuggestHashtag from './autosuggest_hashtag';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport { isRtl } from 'flavours/glitch/util/rtl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport classNames from 'classnames';\nimport { List as ImmutableList } from 'immutable';\n\nconst textAtCursorMatchesToken = (str, caretPosition, searchTokens) => {\n let word;\n\n let left = str.slice(0, caretPosition).search(/[^\\s\\u200B]+$/);\n let right = str.slice(caretPosition).search(/[\\s\\u200B]/);\n\n if (right < 0) {\n word = str.slice(left);\n } else {\n word = str.slice(left, right + caretPosition);\n }\n\n if (!word || word.trim().length < 3 || searchTokens.indexOf(word[0]) === -1) {\n return [null, null];\n }\n\n word = word.trim().toLowerCase();\n\n if (word.length > 0) {\n return [left, word];\n } else {\n return [null, null];\n }\n};\n\nexport default class AutosuggestInput extends ImmutablePureComponent {\n\n static propTypes = {\n value: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n onSuggestionSelected: PropTypes.func.isRequired,\n onSuggestionsClearRequested: PropTypes.func.isRequired,\n onSuggestionsFetchRequested: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onKeyUp: PropTypes.func,\n onKeyDown: PropTypes.func,\n autoFocus: PropTypes.bool,\n className: PropTypes.string,\n id: PropTypes.string,\n searchTokens: PropTypes.arrayOf(PropTypes.string),\n maxLength: PropTypes.number,\n };\n\n static defaultProps = {\n autoFocus: true,\n searchTokens: ImmutableList(['@', ':', '#']),\n };\n\n state = {\n suggestionsHidden: true,\n focused: false,\n selectedSuggestion: 0,\n lastToken: null,\n tokenStart: 0,\n };\n\n onChange = (e) => {\n const [ tokenStart, token ] = textAtCursorMatchesToken(e.target.value, e.target.selectionStart, this.props.searchTokens);\n\n if (token !== null && this.state.lastToken !== token) {\n this.setState({ lastToken: token, selectedSuggestion: 0, tokenStart });\n this.props.onSuggestionsFetchRequested(token);\n } else if (token === null) {\n this.setState({ lastToken: null });\n this.props.onSuggestionsClearRequested();\n }\n\n this.props.onChange(e);\n }\n\n onKeyDown = (e) => {\n const { suggestions, disabled } = this.props;\n const { selectedSuggestion, suggestionsHidden } = this.state;\n\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n if (e.which === 229 || e.isComposing) {\n // Ignore key events during text composition\n // e.key may be a name of the physical key even in this case (e.x. Safari / Chrome on Mac)\n return;\n }\n\n switch(e.key) {\n case 'Escape':\n if (suggestions.size === 0 || suggestionsHidden) {\n document.querySelector('.ui').parentElement.focus();\n } else {\n e.preventDefault();\n this.setState({ suggestionsHidden: true });\n }\n\n break;\n case 'ArrowDown':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.min(selectedSuggestion + 1, suggestions.size - 1) });\n }\n\n break;\n case 'ArrowUp':\n if (suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n this.setState({ selectedSuggestion: Math.max(selectedSuggestion - 1, 0) });\n }\n\n break;\n case 'Enter':\n case 'Tab':\n // Select suggestion\n if (this.state.lastToken !== null && suggestions.size > 0 && !suggestionsHidden) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestions.get(selectedSuggestion));\n }\n\n break;\n }\n\n if (e.defaultPrevented || !this.props.onKeyDown) {\n return;\n }\n\n this.props.onKeyDown(e);\n }\n\n onBlur = () => {\n this.setState({ suggestionsHidden: true, focused: false });\n }\n\n onFocus = () => {\n this.setState({ focused: true });\n }\n\n onSuggestionClick = (e) => {\n const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));\n e.preventDefault();\n this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);\n this.input.focus();\n }\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {\n this.setState({ suggestionsHidden: false });\n }\n }\n\n setInput = (c) => {\n this.input = c;\n }\n\n renderSuggestion = (suggestion, i) => {\n const { selectedSuggestion } = this.state;\n let inner, key;\n\n if (suggestion.type === 'emoji') {\n inner = <AutosuggestEmoji emoji={suggestion} />;\n key = suggestion.id;\n } else if (suggestion.type ==='hashtag') {\n inner = <AutosuggestHashtag tag={suggestion} />;\n key = suggestion.name;\n } else if (suggestion.type === 'account') {\n inner = <AutosuggestAccountContainer id={suggestion.id} />;\n key = suggestion.id;\n }\n\n return (\n <div role='button' tabIndex='0' key={key} data-index={i} className={classNames('autosuggest-textarea__suggestions__item', { selected: i === selectedSuggestion })} onMouseDown={this.onSuggestionClick}>\n {inner}\n </div>\n );\n }\n\n render () {\n const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength } = this.props;\n const { suggestionsHidden } = this.state;\n const style = { direction: 'ltr' };\n\n if (isRtl(value)) {\n style.direction = 'rtl';\n }\n\n return (\n <div className='autosuggest-input'>\n <label>\n <span style={{ display: 'none' }}>{placeholder}</span>\n\n <input\n type='text'\n ref={this.setInput}\n disabled={disabled}\n placeholder={placeholder}\n autoFocus={autoFocus}\n value={value}\n onChange={this.onChange}\n onKeyDown={this.onKeyDown}\n onKeyUp={onKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n style={style}\n aria-autocomplete='list'\n id={id}\n className={className}\n maxLength={maxLength}\n />\n </label>\n\n <div className={`autosuggest-textarea__suggestions ${suggestionsHidden || suggestions.isEmpty() ? '' : 'autosuggest-textarea__suggestions--visible'}`}>\n {suggestions.map(this.renderSuggestion)}\n </div>\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport Icon from 'flavours/glitch/components/icon';\nimport AutosuggestInput from 'flavours/glitch/components/autosuggest_input';\nimport classNames from 'classnames';\nimport { pollLimits } from 'flavours/glitch/util/initial_state';\n\nconst messages = defineMessages({\n option_placeholder: { id: 'compose_form.poll.option_placeholder', defaultMessage: 'Choice {number}' },\n add_option: { id: 'compose_form.poll.add_option', defaultMessage: 'Add a choice' },\n remove_option: { id: 'compose_form.poll.remove_option', defaultMessage: 'Remove this choice' },\n poll_duration: { id: 'compose_form.poll.duration', defaultMessage: 'Poll duration' },\n single_choice: { id: 'compose_form.poll.single_choice', defaultMessage: 'Allow one choice' },\n multiple_choices: { id: 'compose_form.poll.multiple_choices', defaultMessage: 'Allow multiple choices' },\n minutes: { id: 'intervals.full.minutes', defaultMessage: '{number, plural, one {# minute} other {# minutes}}' },\n hours: { id: 'intervals.full.hours', defaultMessage: '{number, plural, one {# hour} other {# hours}}' },\n days: { id: 'intervals.full.days', defaultMessage: '{number, plural, one {# day} other {# days}}' },\n});\n\n@injectIntl\nclass Option extends React.PureComponent {\n\n static propTypes = {\n title: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n isPollMultiple: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n suggestions: ImmutablePropTypes.list,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleOptionTitleChange = e => {\n this.props.onChange(this.props.index, e.target.value);\n };\n\n handleOptionRemove = () => {\n this.props.onRemove(this.props.index);\n };\n\n onSuggestionsClearRequested = () => {\n this.props.onClearSuggestions();\n }\n\n onSuggestionsFetchRequested = (token) => {\n this.props.onFetchSuggestions(token);\n }\n\n onSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['poll', 'options', this.props.index]);\n }\n\n render () {\n const { isPollMultiple, title, index, intl } = this.props;\n\n return (\n <li>\n <label className='poll__option editable'>\n <span className={classNames('poll__input', { checkbox: isPollMultiple })} />\n\n <AutosuggestInput\n placeholder={intl.formatMessage(messages.option_placeholder, { number: index + 1 })}\n maxLength={pollLimits.max_option_chars}\n value={title}\n onChange={this.handleOptionTitleChange}\n suggestions={this.props.suggestions}\n onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}\n onSuggestionsClearRequested={this.onSuggestionsClearRequested}\n onSuggestionSelected={this.onSuggestionSelected}\n searchTokens={[':']}\n />\n </label>\n\n <div className='poll__cancel'>\n <IconButton disabled={index <= 1} title={intl.formatMessage(messages.remove_option)} icon='times' onClick={this.handleOptionRemove} />\n </div>\n </li>\n );\n }\n\n}\n\nexport default\n@injectIntl\nclass PollForm extends ImmutablePureComponent {\n\n static propTypes = {\n options: ImmutablePropTypes.list,\n expiresIn: PropTypes.number,\n isMultiple: PropTypes.bool,\n onChangeOption: PropTypes.func.isRequired,\n onAddOption: PropTypes.func.isRequired,\n onRemoveOption: PropTypes.func.isRequired,\n onChangeSettings: PropTypes.func.isRequired,\n suggestions: ImmutablePropTypes.list,\n onClearSuggestions: PropTypes.func.isRequired,\n onFetchSuggestions: PropTypes.func.isRequired,\n onSuggestionSelected: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleAddOption = () => {\n this.props.onAddOption('');\n };\n\n handleSelectDuration = e => {\n this.props.onChangeSettings(e.target.value, this.props.isMultiple);\n };\n\n handleSelectMultiple = e => {\n this.props.onChangeSettings(this.props.expiresIn, e.target.value === 'true');\n };\n\n render () {\n const { options, expiresIn, isMultiple, onChangeOption, onRemoveOption, intl, ...other } = this.props;\n\n if (!options) {\n return null;\n }\n\n return (\n <div className='compose-form__poll-wrapper'>\n <ul>\n {options.map((title, i) => <Option title={title} key={i} index={i} onChange={onChangeOption} onRemove={onRemoveOption} isPollMultiple={isMultiple} {...other} />)}\n {options.size < pollLimits.max_options && (\n <label className='poll__text editable'>\n <span className={classNames('poll__input')} style={{ opacity: 0 }} />\n <button className='button button-secondary' onClick={this.handleAddOption}><Icon id='plus' /> <FormattedMessage {...messages.add_option} /></button>\n </label>\n )}\n </ul>\n\n <div className='poll__footer'>\n <select value={isMultiple ? 'true' : 'false'} onChange={this.handleSelectMultiple}>\n <option value='false'>{intl.formatMessage(messages.single_choice)}</option>\n <option value='true'>{intl.formatMessage(messages.multiple_choices)}</option>\n </select>\n\n {/* eslint-disable-next-line jsx-a11y/no-onchange */}\n <select value={expiresIn} onChange={this.handleSelectDuration}>\n <option value={300}>{intl.formatMessage(messages.minutes, { number: 5 })}</option>\n <option value={1800}>{intl.formatMessage(messages.minutes, { number: 30 })}</option>\n <option value={3600}>{intl.formatMessage(messages.hours, { number: 1 })}</option>\n <option value={21600}>{intl.formatMessage(messages.hours, { number: 6 })}</option>\n <option value={86400}>{intl.formatMessage(messages.days, { number: 1 })}</option>\n <option value={259200}>{intl.formatMessage(messages.days, { number: 3 })}</option>\n <option value={604800}>{intl.formatMessage(messages.days, { number: 7 })}</option>\n </select>\n </div>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport PollForm from '../components/poll_form';\nimport { addPollOption, removePollOption, changePollOption, changePollSettings } from 'flavours/glitch/actions/compose';\nimport {\n clearComposeSuggestions,\n fetchComposeSuggestions,\n selectComposeSuggestion,\n} from 'flavours/glitch/actions/compose';\n\nconst mapStateToProps = state => ({\n suggestions: state.getIn(['compose', 'suggestions']),\n options: state.getIn(['compose', 'poll', 'options']),\n expiresIn: state.getIn(['compose', 'poll', 'expires_in']),\n isMultiple: state.getIn(['compose', 'poll', 'multiple']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n onAddOption(title) {\n dispatch(addPollOption(title));\n },\n\n onRemoveOption(index) {\n dispatch(removePollOption(index));\n },\n\n onChangeOption(index, title) {\n dispatch(changePollOption(index, title));\n },\n\n onChangeSettings(expiresIn, isMultiple) {\n dispatch(changePollSettings(expiresIn, isMultiple));\n },\n\n onClearSuggestions () {\n dispatch(clearComposeSuggestions());\n },\n\n onFetchSuggestions (token) {\n dispatch(fetchComposeSuggestions(token));\n },\n\n onSuggestionSelected (position, token, accountId, path) {\n dispatch(selectComposeSuggestion(position, token, accountId, path));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PollForm);\n","import { connect } from 'react-redux';\nimport UploadProgress from '../components/upload_progress';\n\nconst mapStateToProps = state => ({\n active: state.getIn(['compose', 'is_uploading']),\n progress: state.getIn(['compose', 'progress']),\n});\n\nexport default connect(mapStateToProps)(UploadProgress);\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport Icon from 'flavours/glitch/components/icon';\nimport { isUserTouching } from 'flavours/glitch/util/is_mobile';\n\nexport default class Upload extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n media: ImmutablePropTypes.map.isRequired,\n onUndo: PropTypes.func.isRequired,\n onOpenFocalPoint: PropTypes.func.isRequired,\n };\n\n handleUndoClick = e => {\n e.stopPropagation();\n this.props.onUndo(this.props.media.get('id'));\n }\n\n handleFocalPointClick = e => {\n e.stopPropagation();\n this.props.onOpenFocalPoint(this.props.media.get('id'));\n }\n\n render () {\n const { intl, media } = this.props;\n const focusX = media.getIn(['meta', 'focus', 'x']);\n const focusY = media.getIn(['meta', 'focus', 'y']);\n const x = ((focusX / 2) + .5) * 100;\n const y = ((focusY / -2) + .5) * 100;\n\n return (\n <div className='composer--upload_form--item' tabIndex='0' role='button'>\n <Motion defaultStyle={{ scale: 0.8 }} style={{ scale: spring(1, { stiffness: 180, damping: 12, }) }}>\n {({ scale }) => (\n <div style={{ transform: `scale(${scale})`, backgroundImage: `url(${media.get('preview_url')})`, backgroundPosition: `${x}% ${y}%` }}>\n <div className={classNames('composer--upload_form--actions', { active: true })}>\n <button className='icon-button' onClick={this.handleUndoClick}><Icon id='times' /> <FormattedMessage id='upload_form.undo' defaultMessage='Delete' /></button>\n <button className='icon-button' onClick={this.handleFocalPointClick}><Icon id='pencil' /> <FormattedMessage id='upload_form.edit' defaultMessage='Edit' /></button>\n </div>\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport Upload from '../components/upload';\nimport { undoUploadCompose } from 'flavours/glitch/actions/compose';\nimport { openModal } from 'flavours/glitch/actions/modal';\nimport { submitCompose } from 'flavours/glitch/actions/compose';\n\nconst mapStateToProps = (state, { id }) => ({\n media: state.getIn(['compose', 'media_attachments']).find(item => item.get('id') === id),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onUndo: id => {\n dispatch(undoUploadCompose(id));\n },\n\n onOpenFocalPoint: id => {\n dispatch(openModal('FOCAL_POINT', { id }));\n },\n\n onSubmit (router) {\n dispatch(submitCompose(router));\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Upload);\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { changeComposeSensitivity } from 'flavours/glitch/actions/compose';\nimport { injectIntl, defineMessages, FormattedMessage } from 'react-intl';\n\nconst messages = defineMessages({\n marked: { id: 'compose_form.sensitive.marked', defaultMessage: 'Media is marked as sensitive' },\n unmarked: { id: 'compose_form.sensitive.unmarked', defaultMessage: 'Media is not marked as sensitive' },\n});\n\nconst mapStateToProps = state => {\n const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']);\n const spoilerText = state.getIn(['compose', 'spoiler_text']);\n return {\n active: state.getIn(['compose', 'sensitive']) || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0),\n disabled: state.getIn(['compose', 'spoiler']),\n };\n};\n\nconst mapDispatchToProps = dispatch => ({\n\n onClick () {\n dispatch(changeComposeSensitivity());\n },\n\n});\n\nclass SensitiveButton extends React.PureComponent {\n\n static propTypes = {\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { active, disabled, onClick, intl } = this.props;\n\n return (\n <div className='compose-form__sensitive-button'>\n <label className={classNames('icon-button', { active })} title={intl.formatMessage(active ? messages.marked : messages.unmarked)}>\n <input\n name='mark-sensitive'\n type='checkbox'\n checked={active}\n onChange={onClick}\n disabled={disabled}\n />\n\n <span className={classNames('checkbox', { active })} />\n\n <FormattedMessage id='compose_form.sensitive.hide' defaultMessage='Mark media as sensitive' />\n </label>\n </div>\n );\n }\n\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(injectIntl(SensitiveButton));\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport UploadProgressContainer from '../containers/upload_progress_container';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport UploadContainer from '../containers/upload_container';\nimport SensitiveButtonContainer from '../containers/sensitive_button_container';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class UploadForm extends ImmutablePureComponent {\n static propTypes = {\n mediaIds: ImmutablePropTypes.list.isRequired,\n };\n\n render () {\n const { mediaIds } = this.props;\n\n return (\n <div className='composer--upload_form'>\n <UploadProgressContainer icon='upload' message={<FormattedMessage id='upload_progress.label' defaultMessage='Uploading…' />} />\n\n {mediaIds.size > 0 && (\n <div className='content'>\n {mediaIds.map(id => (\n <UploadContainer id={id} key={id} />\n ))}\n </div>\n )}\n\n {!mediaIds.isEmpty() && <SensitiveButtonContainer />}\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport UploadForm from '../components/upload_form';\n\nconst mapStateToProps = state => ({\n mediaIds: state.getIn(['compose', 'media_attachments']).map(item => item.get('id')),\n});\n\nexport default connect(mapStateToProps)(UploadForm);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\n\nexport default class Warning extends React.PureComponent {\n\n static propTypes = {\n message: PropTypes.node.isRequired,\n };\n\n render () {\n const { message } = this.props;\n\n return (\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='composer--warning' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n {message}\n </div>\n )}\n </Motion>\n );\n }\n\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport Warning from '../components/warning';\nimport PropTypes from 'prop-types';\nimport { FormattedMessage } from 'react-intl';\nimport { me } from 'flavours/glitch/util/initial_state';\nimport { profileLink, termsLink } from 'flavours/glitch/util/backend_links';\n\nconst APPROX_HASHTAG_RE = /(?:^|[^\\/\\)\\w])#(\\w*[a-zA-Z·]\\w*)/i;\n\nconst mapStateToProps = state => ({\n needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', me, 'locked']),\n hashtagWarning: state.getIn(['compose', 'privacy']) !== 'public' && APPROX_HASHTAG_RE.test(state.getIn(['compose', 'text'])),\n directMessageWarning: state.getIn(['compose', 'privacy']) === 'direct',\n});\n\nconst WarningWrapper = ({ needsLockWarning, hashtagWarning, directMessageWarning }) => {\n if (needsLockWarning) {\n return <Warning message={<FormattedMessage id='compose_form.lock_disclaimer' defaultMessage='Your account is not {locked}. Anyone can follow you to view your follower-only posts.' values={{ locked: <a href={profileLink}><FormattedMessage id='compose_form.lock_disclaimer.lock' defaultMessage='locked' /></a> }} />} />;\n }\n\n if (hashtagWarning) {\n return <Warning message={<FormattedMessage id='compose_form.hashtag_warning' defaultMessage=\"This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.\" />} />;\n }\n\n if (directMessageWarning) {\n const message = (\n <span>\n <FormattedMessage id='compose_form.direct_message_warning' defaultMessage='This toot will only be sent to all the mentioned users.' /> {!!termsLink && <a href='/terms' target='_blank'><FormattedMessage id='compose_form.direct_message_warning_learn_more' defaultMessage='Learn more' /></a>}\n </span>\n );\n\n return <Warning message={message} />;\n }\n\n return null;\n};\n\nWarningWrapper.propTypes = {\n needsLockWarning: PropTypes.bool,\n hashtagWarning: PropTypes.bool,\n directMessageWarning: PropTypes.bool,\n};\n\nexport default connect(mapStateToProps)(WarningWrapper);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst iconStyle = {\n height: null,\n lineHeight: '27px',\n width: `${18 * 1.28571429}px`,\n};\n\nexport default class TextIconButton extends React.PureComponent {\n\n static propTypes = {\n label: PropTypes.string.isRequired,\n title: PropTypes.string,\n active: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n ariaControls: PropTypes.string,\n };\n\n handleClick = (e) => {\n e.preventDefault();\n this.props.onClick();\n }\n\n render () {\n const { label, title, active, ariaControls } = this.props;\n\n return (\n <button\n title={title}\n aria-label={title}\n className={`text-icon-button ${active ? 'active' : ''}`}\n aria-expanded={active}\n onClick={this.handleClick}\n aria-controls={ariaControls}\n style={iconStyle}\n >\n {label}\n </button>\n );\n }\n\n}\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport spring from 'react-motion/lib/spring';\nimport Toggle from 'react-toggle';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport classNames from 'classnames';\n\n// Components.\nimport Icon from 'flavours/glitch/components/icon';\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// 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 static 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.isRequired,\n onClose: PropTypes.func.isRequired,\n style: PropTypes.object,\n value: PropTypes.string,\n openedViaKeyboard: PropTypes.bool,\n };\n\n static defaultProps = {\n style: {},\n };\n\n state = {\n mounted: false,\n value: this.props.openedViaKeyboard ? this.props.items[0].name : undefined,\n };\n\n // When the document is clicked elsewhere, we close the dropdown.\n handleDocumentClick = (e) => {\n if (this.node && !this.node.contains(e.target)) {\n this.props.onClose();\n }\n }\n\n // Stores our node in `this.node`.\n handleRef = (node) => {\n this.node = node;\n }\n\n // On mounting, we add our listeners.\n componentDidMount () {\n document.addEventListener('click', this.handleDocumentClick, false);\n document.addEventListener('touchend', this.handleDocumentClick, withPassive);\n if (this.focusedItem) {\n this.focusedItem.focus();\n } else {\n this.node.firstChild.focus();\n }\n this.setState({ mounted: true });\n }\n\n // On unmounting, we remove our listeners.\n componentWillUnmount () {\n document.removeEventListener('click', this.handleDocumentClick, false);\n document.removeEventListener('touchend', this.handleDocumentClick, withPassive);\n }\n\n handleClick = (name, e) => {\n const {\n onChange,\n onClose,\n items,\n } = this.props;\n\n const { on } = this.props.items.find(item => item.name === name);\n e.preventDefault(); // Prevents change in focus on click\n if ((on === null || typeof on === 'undefined')) {\n onClose();\n }\n onChange(name);\n }\n\n // Handle changes differently whether the dropdown is a list of options or actions\n handleChange = (name) => {\n if (this.props.value) {\n this.props.onChange(name);\n } else {\n this.setState({ value: name });\n }\n }\n\n handleKeyDown = (name, e) => {\n const { items } = this.props;\n const index = items.findIndex(item => {\n return (item.name === name);\n });\n let element;\n\n switch(e.key) {\n case 'Escape':\n this.props.onClose();\n break;\n case 'Enter':\n case ' ':\n this.handleClick(e);\n break;\n case 'ArrowDown':\n element = this.node.childNodes[index + 1];\n if (element) {\n element.focus();\n this.handleChange(element.getAttribute('data-index'));\n }\n break;\n case 'ArrowUp':\n element = this.node.childNodes[index - 1];\n if (element) {\n element.focus();\n this.handleChange(element.getAttribute('data-index'));\n }\n break;\n case 'Tab':\n if (e.shiftKey) {\n element = this.node.childNodes[index - 1] || this.node.lastChild;\n } else {\n element = this.node.childNodes[index + 1] || this.node.firstChild;\n }\n if (element) {\n element.focus();\n this.handleChange(element.getAttribute('data-index'));\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'Home':\n element = this.node.firstChild;\n if (element) {\n element.focus();\n this.handleChange(element.getAttribute('data-index'));\n }\n break;\n case 'End':\n element = this.node.lastChild;\n if (element) {\n element.focus();\n this.handleChange(element.getAttribute('data-index'));\n }\n break;\n }\n }\n\n setFocusRef = c => {\n this.focusedItem = c;\n }\n\n renderItem = (item) => {\n const { name, icon, meta, on, text } = item;\n\n const active = (name === (this.props.value || this.state.value));\n\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 let prefix = null;\n\n if (on !== null && typeof on !== 'undefined') {\n prefix = <Toggle checked={on} onChange={this.handleClick.bind(this, name)} />;\n } else if (icon) {\n prefix = <Icon className='icon' fixedWidth id={icon} />\n }\n\n return (\n <div\n className={computedClass}\n onClick={this.handleClick.bind(this, name)}\n onKeyDown={this.handleKeyDown.bind(this, name)}\n role='option'\n tabIndex='0'\n key={name}\n data-index={name}\n ref={active ? this.setFocusRef : null}\n >\n {prefix}\n\n <div className='content'>\n <strong>{text}</strong>\n {meta}\n </div>\n </div>\n );\n }\n\n // Rendering.\n render () {\n const { mounted } = this.state;\n const {\n items,\n onChange,\n onClose,\n style,\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={this.handleRef}\n role='listbox'\n style={{\n ...style,\n opacity: opacity,\n transform: mounted ? `scale(${scaleX}, ${scaleY})` : null,\n }}\n >\n {!!items && items.map(item => this.renderItem(item))}\n </div>\n )}\n </Motion>\n );\n }\n\n}\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 DropdownMenu from './dropdown_menu';\n\n// Utils.\nimport { isUserTouching } from 'flavours/glitch/util/is_mobile';\nimport { assignHandlers } from 'flavours/glitch/util/react_helpers';\n\n// The component.\nexport default class ComposerOptionsDropdown extends React.PureComponent {\n\n static 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 onModalOpen: PropTypes.func,\n onModalClose: PropTypes.func,\n title: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n };\n\n state = {\n needsModalUpdate: false,\n open: false,\n openedViaKeyboard: undefined,\n placement: 'bottom',\n };\n\n // Toggles opening and closing the dropdown.\n handleToggle = ({ target, type }) => {\n const { onModalOpen } = this.props;\n const { open } = this.state;\n\n if (isUserTouching()) {\n if (this.state.open) {\n this.props.onModalClose();\n } else {\n const modal = this.handleMakeModal();\n if (modal && onModalOpen) {\n onModalOpen(modal);\n }\n }\n } else {\n const { top } = target.getBoundingClientRect();\n if (this.state.open && this.activeElement) {\n this.activeElement.focus();\n }\n this.setState({ placement: top * 2 < innerHeight ? 'bottom' : 'top' });\n this.setState({ open: !this.state.open, openedViaKeyboard: type !== 'click' });\n }\n }\n\n handleKeyDown = (e) => {\n switch (e.key) {\n case 'Escape':\n this.handleClose();\n break;\n }\n }\n\n handleMouseDown = () => {\n if (!this.state.open) {\n this.activeElement = document.activeElement;\n }\n }\n\n handleButtonKeyDown = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleMouseDown();\n break;\n }\n }\n\n handleKeyPress = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleToggle(e);\n e.stopPropagation();\n e.preventDefault();\n break;\n }\n }\n\n handleClose = () => {\n if (this.state.open && this.activeElement) {\n this.activeElement.focus();\n }\n this.setState({ open: false });\n }\n\n // 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 // If our modal is open and our props update, we need to also update\n // the modal.\n handleUpdate = () => {\n const { onModalOpen } = this.props;\n const { needsModalUpdate } = this.state;\n\n // Gets our modal object.\n const modal = this.handleMakeModal();\n\n // Reopens the modal with the new object.\n if (needsModalUpdate && modal && onModalOpen) {\n onModalOpen(modal);\n }\n }\n\n // Updates our modal as necessary.\n componentDidUpdate (prevProps) {\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 this.handleUpdate();\n this.setState({ needsModalUpdate: false });\n }\n }\n\n // Rendering.\n render () {\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={this.handleKeyDown}\n >\n <IconButton\n active={open || active}\n className='value'\n disabled={disabled}\n icon={icon}\n inverted\n onClick={this.handleToggle}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleButtonKeyDown}\n onKeyPress={this.handleKeyPress}\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 <DropdownMenu\n items={items}\n onChange={onChange}\n onClose={this.handleClose}\n value={value}\n openedViaKeyboard={this.state.openedViaKeyboard}\n />\n </Overlay>\n </div>\n );\n }\n\n}\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\nimport spring from 'react-motion/lib/spring';\n\n// Components.\nimport IconButton from 'flavours/glitch/components/icon_button';\nimport TextIconButton from './text_icon_button';\nimport Dropdown from './dropdown';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\n\n// Utils.\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport { pollLimits } from 'flavours/glitch/util/initial_state';\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: 'Visible for 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 bbcode: {\n defaultMessage: 'BBCode',\n id: 'compose.content-type.bbcode',\n },\n plain: {\n defaultMessage: 'Plain text',\n id: 'compose.content-type.plain',\n },\n private_long: {\n defaultMessage: 'Visible for 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: 'Visible for all, shown in public timelines',\n id: 'privacy.public.long',\n },\n public_short: {\n defaultMessage: 'Public',\n id: 'privacy.public.short',\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: 'Visible for all, but not 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 add_poll: {\n defaultMessage: 'Add a poll',\n id: 'poll_button.add_poll',\n },\n remove_poll: {\n defaultMessage: 'Remove poll',\n id: 'poll_button.remove_poll',\n },\n});\n\nexport default @injectIntl\nclass ComposerOptions extends ImmutablePureComponent {\n\n static propTypes = {\n acceptContentTypes: PropTypes.string,\n advancedOptions: ImmutablePropTypes.map,\n disabled: PropTypes.bool,\n allowMedia: PropTypes.bool,\n hasMedia: PropTypes.bool,\n allowPoll: PropTypes.bool,\n hasPoll: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n onChangeAdvancedOption: PropTypes.func,\n onChangeVisibility: PropTypes.func,\n onChangeContentType: PropTypes.func,\n onTogglePoll: 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 contentType: PropTypes.string,\n resetFileKey: PropTypes.number,\n spoiler: PropTypes.bool,\n showContentTypeChoice: PropTypes.bool,\n };\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 // Rendering.\n render () {\n const {\n acceptContentTypes,\n advancedOptions,\n contentType,\n disabled,\n allowMedia,\n hasMedia,\n allowPoll,\n hasPoll,\n intl,\n onChangeAdvancedOption,\n onChangeContentType,\n onChangeVisibility,\n onTogglePoll,\n onModalClose,\n onModalOpen,\n onToggleSpoiler,\n privacy,\n resetFileKey,\n spoiler,\n showContentTypeChoice,\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: 'file-text',\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 bbcode: {\n icon: 'bold',\n name: 'text/bbcode',\n text: <FormattedMessage {...messages.bbcode} />,\n },\n };\n\n // The result.\n return (\n <div className='composer--options'>\n <input\n disabled={disabled || !allowMedia}\n key={resetFileKey}\n onChange={this.handleChangeFiles}\n ref={this.handleRefFileElement}\n type='file'\n multiple\n style={{ display: 'none' }}\n />\n <Dropdown\n disabled={disabled || !allowMedia}\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={this.handleClickAttach}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.attach)}\n />\n {!!pollLimits && (\n <IconButton\n active={hasPoll}\n disabled={disabled || !allowPoll}\n icon='tasks'\n inverted\n onClick={onTogglePoll}\n size={18}\n style={{\n height: null,\n lineHeight: null,\n }}\n title={intl.formatMessage(hasPoll ? messages.remove_poll : messages.add_poll)}\n />\n )}\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 {showContentTypeChoice && (\n <Dropdown\n disabled={disabled}\n icon={(contentTypeItems[contentType.split('/')[1]] || {}).icon}\n items={[\n contentTypeItems.plain,\n contentTypeItems.html,\n contentTypeItems.markdown,\n contentTypeItems.bbcode,\n ]}\n onChange={onChangeContentType}\n onModalClose={onModalClose}\n onModalOpen={onModalOpen}\n title={intl.formatMessage(messages.content_type)}\n value={contentType}\n />\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","import { connect } from 'react-redux';\nimport Options from '../components/options';\nimport {\n changeComposeAdvancedOption,\n changeComposeContentType,\n addPoll,\n removePoll,\n} from 'flavours/glitch/actions/compose';\nimport { closeModal, openModal } from 'flavours/glitch/actions/modal';\n\nfunction mapStateToProps (state) {\n const spoilersAlwaysOn = state.getIn(['local_settings', 'always_show_spoilers_field']);\n const poll = state.getIn(['compose', 'poll']);\n const media = state.getIn(['compose', 'media_attachments']);\n const pending_media = state.getIn(['compose', 'pending_media_attachments']);\n return {\n acceptContentTypes: state.getIn(['media_attachments', 'accept_content_types']).toArray().join(','),\n resetFileKey: state.getIn(['compose', 'resetFileKey']),\n hasPoll: !!poll,\n allowMedia: !poll && (media ? media.size + pending_media < 4 && !media.some(item => ['video', 'audio'].includes(item.get('type'))) : pending_media < 4),\n hasMedia: media && !!media.size,\n allowPoll: !(media && !!media.size),\n showContentTypeChoice: state.getIn(['local_settings', 'show_content_type_choice']),\n contentType: state.getIn(['compose', 'content_type']),\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n\n onChangeAdvancedOption(option, value) {\n dispatch(changeComposeAdvancedOption(option, value));\n },\n\n onChangeContentType(value) {\n dispatch(changeComposeContentType(value));\n },\n\n onTogglePoll() {\n dispatch((_, getState) => {\n if (getState().getIn(['compose', 'poll'])) {\n dispatch(removePoll());\n } else {\n dispatch(addPoll());\n }\n });\n },\n\n onDoodleOpen() {\n dispatch(openModal('DOODLE', { noEsc: true }));\n },\n\n onModalClose() {\n dispatch(closeModal());\n },\n\n onModalOpen(props) {\n dispatch(openModal('ACTIONS', props));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Options);\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { defineMessages, FormattedMessage, injectIntl } from 'react-intl';\nimport { length } from 'stringz';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\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\nexport default @injectIntl\nclass Publisher extends ImmutablePureComponent {\n\n static 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\n handleSubmit = () => {\n this.props.onSubmit();\n };\n\n render () {\n const { countText, disabled, intl, onSecondarySubmit, privacy, sideArm } = this.props;\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 return (\n <div className={computedClass}>\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 id={{\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 id={{\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={this.handleSubmit}\n disabled={disabled || diff < 0}\n />\n </div>\n );\n };\n}\n","// Package imports.\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\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\nexport default @injectIntl\nclass TextareaIcons extends ImmutablePureComponent {\n\n static propTypes = {\n advancedOptions: ImmutablePropTypes.map,\n intl: PropTypes.object.isRequired,\n };\n\n render () {\n const { advancedOptions, intl } = this.props;\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 fixedWidth\n id={icon}\n />\n </span>\n ) : null\n ) : null}\n </div>\n );\n }\n}\n","import React from 'react';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport PropTypes from 'prop-types';\nimport ReplyIndicatorContainer from '../containers/reply_indicator_container';\nimport AutosuggestTextarea from '../../../components/autosuggest_textarea';\nimport AutosuggestInput from '../../../components/autosuggest_input';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport EmojiPicker from 'flavours/glitch/features/emoji_picker';\nimport PollFormContainer from '../containers/poll_form_container';\nimport UploadFormContainer from '../containers/upload_form_container';\nimport WarningContainer from '../containers/warning_container';\nimport { isMobile } from 'flavours/glitch/util/is_mobile';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport OptionsContainer from '../containers/options_container';\nimport Publisher from './publisher';\nimport TextareaIcons from './textarea_icons';\nimport { maxChars } from 'flavours/glitch/util/initial_state';\nimport CharacterCounter from './character_counter';\n\nconst messages = defineMessages({\n placeholder: { id: 'compose_form.placeholder', defaultMessage: 'What is on your mind?' },\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 spoiler_placeholder: { id: 'compose_form.spoiler_placeholder', defaultMessage: 'Write your warning here' },\n});\n\nexport default @injectIntl\nclass ComposeForm extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n intl: PropTypes.object.isRequired,\n text: PropTypes.string,\n suggestions: ImmutablePropTypes.list,\n spoiler: PropTypes.bool,\n privacy: PropTypes.string,\n spoilerText: PropTypes.string,\n focusDate: PropTypes.instanceOf(Date),\n caretPosition: PropTypes.number,\n preselectDate: PropTypes.instanceOf(Date),\n isSubmitting: PropTypes.bool,\n isChangingUpload: PropTypes.bool,\n isUploading: PropTypes.bool,\n onChange: PropTypes.func,\n onSubmit: PropTypes.func,\n onClearSuggestions: PropTypes.func,\n onFetchSuggestions: PropTypes.func,\n onSuggestionSelected: PropTypes.func,\n onChangeSpoilerText: PropTypes.func,\n onPaste: PropTypes.func,\n onPickEmoji: PropTypes.func,\n showSearch: PropTypes.bool,\n anyMedia: PropTypes.bool,\n singleColumn: PropTypes.bool,\n\n advancedOptions: ImmutablePropTypes.map,\n layout: PropTypes.string,\n media: ImmutablePropTypes.list,\n sideArm: PropTypes.string,\n sensitive: PropTypes.bool,\n spoilersAlwaysOn: PropTypes.bool,\n mediaDescriptionConfirmation: PropTypes.bool,\n preselectOnReply: PropTypes.bool,\n onChangeSpoilerness: PropTypes.func,\n onChangeVisibility: PropTypes.func,\n onPaste: PropTypes.func,\n onMediaDescriptionConfirm: PropTypes.func,\n };\n\n static defaultProps = {\n showSearch: false,\n };\n\n handleChange = (e) => {\n this.props.onChange(e.target.value);\n }\n\n handleSubmit = (overriddenVisibility = null) => {\n const { textarea: { value }, uploadForm } = this;\n const {\n onChange,\n onSubmit,\n isSubmitting,\n isChangingUpload,\n isUploading,\n media,\n anyMedia,\n text,\n mediaDescriptionConfirmation,\n onMediaDescriptionConfirm,\n onChangeVisibility,\n } = this.props;\n\n // If something changes inside the textarea, then we update the\n // state before submitting.\n if (onChange && text !== value) {\n onChange(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.find(item => !item.get('description'));\n onMediaDescriptionConfirm(this.context.router ? this.context.router.history : null, firstWithoutDescription.get('id'), overriddenVisibility);\n } else if (onSubmit) {\n if (onChangeVisibility && overriddenVisibility) {\n onChangeVisibility(overriddenVisibility);\n }\n onSubmit(this.context.router ? this.context.router.history : null);\n }\n }\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 setRef = c => {\n this.composeForm = c;\n };\n\n // Inserts an emoji at the caret.\n handleEmoji = (data) => {\n const { textarea: { selectionStart } } = this;\n const { onPickEmoji } = this.props;\n if (onPickEmoji) {\n onPickEmoji(selectionStart, data);\n }\n }\n\n // Handles the secondary submit button.\n handleSecondarySubmit = () => {\n const {\n sideArm,\n } = this.props;\n this.handleSubmit(sideArm === 'none' ? null : sideArm);\n }\n\n // Selects a suggestion from the autofill.\n onSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['text']);\n }\n\n onSpoilerSuggestionSelected = (tokenStart, token, value) => {\n this.props.onSuggestionSelected(tokenStart, token, value, ['spoiler_text']);\n }\n\n // When the escape key is released, we focus the UI.\n handleKeyUp = ({ key, ctrlKey, keyCode, metaKey, altKey }) => {\n if (key === 'Escape') {\n document.querySelector('.ui').parentElement.focus();\n }\n\n // We submit the status on control/meta + enter.\n if (keyCode === 13 && (ctrlKey || metaKey)) {\n this.handleSubmit();\n }\n\n // Submit the status with secondary visibility on alt + enter.\n if (keyCode === 13 && altKey) {\n this.handleSecondarySubmit();\n }\n }\n\n // Sets a reference to the textarea.\n setAutosuggestTextarea = (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.input;\n }\n }\n\n handleFocus = () => {\n if (this.composeForm && !this.props.singleColumn) {\n const { left, right } = this.composeForm.getBoundingClientRect();\n if (left < 0 || right > (window.innerWidth || document.documentElement.clientWidth)) {\n this.composeForm.scrollIntoView();\n }\n }\n }\n\n // 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 singleColumn,\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 if (!singleColumn) 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\n render () {\n const {\n handleEmoji,\n handleSecondarySubmit,\n handleSelect,\n handleSubmit,\n handleRefTextarea,\n } = this;\n const {\n advancedOptions,\n anyMedia,\n intl,\n isSubmitting,\n isChangingUpload,\n isUploading,\n layout,\n media,\n onChangeSpoilerness,\n onChangeVisibility,\n onClearSuggestions,\n onFetchSuggestions,\n onPaste,\n privacy,\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 const countText = `${spoilerText}${text}`;\n\n return (\n <div className='composer'>\n <WarningContainer />\n\n <ReplyIndicatorContainer />\n\n <div className={`composer--spoiler ${spoiler ? 'composer--spoiler--visible' : ''}`} ref={this.setRef}>\n <AutosuggestInput\n placeholder={intl.formatMessage(messages.spoiler_placeholder)}\n value={spoilerText}\n onChange={this.handleChangeSpoiler}\n onKeyUp={this.handleKeyUp}\n disabled={!spoiler}\n ref={this.handleRefSpoilerText}\n suggestions={this.props.suggestions}\n onSuggestionsFetchRequested={onFetchSuggestions}\n onSuggestionsClearRequested={onClearSuggestions}\n onSuggestionSelected={this.onSpoilerSuggestionSelected}\n searchTokens={[':']}\n id='glitch.composer.spoiler.input'\n className='spoiler-input__input'\n autoFocus={false}\n />\n </div>\n\n <AutosuggestTextarea\n ref={this.setAutosuggestTextarea}\n placeholder={intl.formatMessage(messages.placeholder)}\n disabled={isSubmitting}\n value={this.props.text}\n onChange={this.handleChange}\n onKeyUp={this.handleKeyUp}\n suggestions={this.props.suggestions}\n onFocus={this.handleFocus}\n onSuggestionsFetchRequested={onFetchSuggestions}\n onSuggestionsClearRequested={onClearSuggestions}\n onSuggestionSelected={this.onSuggestionSelected}\n onPaste={onPaste}\n autoFocus={!showSearch && !isMobile(window.innerWidth, layout)}\n >\n <EmojiPicker onPickEmoji={handleEmoji} />\n <TextareaIcons advancedOptions={advancedOptions} />\n <div className='compose-form__modifiers'>\n <UploadFormContainer />\n <PollFormContainer />\n </div>\n </AutosuggestTextarea>\n\n <div className='composer--options-wrapper'>\n <OptionsContainer\n advancedOptions={advancedOptions}\n disabled={isSubmitting}\n onChangeVisibility={onChangeVisibility}\n onToggleSpoiler={spoilersAlwaysOn ? null : onChangeSpoilerness}\n onUpload={onPaste}\n privacy={privacy}\n sensitive={sensitive || (spoilersAlwaysOn && spoilerText && spoilerText.length > 0)}\n spoiler={spoilersAlwaysOn ? (spoilerText && spoilerText.length > 0) : spoiler}\n />\n <div className='compose--counter-wrapper'>\n <CharacterCounter text={countText} max={maxChars} />\n </div>\n </div>\n\n <Publisher\n countText={countText}\n disabled={disabledButton}\n onSecondarySubmit={handleSecondarySubmit}\n onSubmit={handleSubmit}\n privacy={privacy}\n sideArm={sideArm}\n />\n </div>\n );\n }\n\n}\n","import api from 'flavours/glitch/util/api';\nimport { importFetchedPoll } from './importer';\n\nexport const POLL_VOTE_REQUEST = 'POLL_VOTE_REQUEST';\nexport const POLL_VOTE_SUCCESS = 'POLL_VOTE_SUCCESS';\nexport const POLL_VOTE_FAIL = 'POLL_VOTE_FAIL';\n\nexport const POLL_FETCH_REQUEST = 'POLL_FETCH_REQUEST';\nexport const POLL_FETCH_SUCCESS = 'POLL_FETCH_SUCCESS';\nexport const POLL_FETCH_FAIL = 'POLL_FETCH_FAIL';\n\nexport const vote = (pollId, choices) => (dispatch, getState) => {\n dispatch(voteRequest());\n\n api(getState).post(`/api/v1/polls/${pollId}/votes`, { choices })\n .then(({ data }) => {\n dispatch(importFetchedPoll(data));\n dispatch(voteSuccess(data));\n })\n .catch(err => dispatch(voteFail(err)));\n};\n\nexport const fetchPoll = pollId => (dispatch, getState) => {\n dispatch(fetchPollRequest());\n\n api(getState).get(`/api/v1/polls/${pollId}`)\n .then(({ data }) => {\n dispatch(importFetchedPoll(data));\n dispatch(fetchPollSuccess(data));\n })\n .catch(err => dispatch(fetchPollFail(err)));\n};\n\nexport const voteRequest = () => ({\n type: POLL_VOTE_REQUEST,\n});\n\nexport const voteSuccess = poll => ({\n type: POLL_VOTE_SUCCESS,\n poll,\n});\n\nexport const voteFail = error => ({\n type: POLL_VOTE_FAIL,\n error,\n});\n\nexport const fetchPollRequest = () => ({\n type: POLL_FETCH_REQUEST,\n});\n\nexport const fetchPollSuccess = poll => ({\n type: POLL_FETCH_SUCCESS,\n poll,\n});\n\nexport const fetchPollFail = error => ({\n type: POLL_FETCH_FAIL,\n error,\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport classNames from 'classnames';\nimport { vote, fetchPoll } from 'flavours/glitch/actions/polls';\nimport Motion from 'flavours/glitch/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport escapeTextContentForBrowser from 'escape-html';\nimport emojify from 'flavours/glitch/util/emoji';\nimport RelativeTimestamp from './relative_timestamp';\nimport Icon from 'flavours/glitch/components/icon';\n\nconst messages = defineMessages({\n closed: { id: 'poll.closed', defaultMessage: 'Closed' },\n voted: { id: 'poll.voted', defaultMessage: 'You voted for this answer', description: 'Tooltip of the \"voted\" checkmark in polls' },\n});\n\nconst makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => {\n obj[`:${emoji.get('shortcode')}:`] = emoji.toJS();\n return obj;\n}, {});\n\nexport default @injectIntl\nclass Poll extends ImmutablePureComponent {\n\n static propTypes = {\n poll: ImmutablePropTypes.map,\n intl: PropTypes.object.isRequired,\n dispatch: PropTypes.func,\n disabled: PropTypes.bool,\n };\n\n state = {\n selected: {},\n expired: null,\n };\n\n static getDerivedStateFromProps (props, state) {\n const { poll, intl } = props;\n const expires_at = poll.get('expires_at');\n const expired = poll.get('expired') || expires_at !== null && (new Date(expires_at)).getTime() < intl.now();\n return (expired === state.expired) ? null : { expired };\n }\n\n componentDidMount () {\n this._setupTimer();\n }\n\n componentDidUpdate () {\n this._setupTimer();\n }\n\n componentWillUnmount () {\n clearTimeout(this._timer);\n }\n\n _setupTimer () {\n const { poll, intl } = this.props;\n clearTimeout(this._timer);\n if (!this.state.expired) {\n const delay = (new Date(poll.get('expires_at'))).getTime() - intl.now();\n this._timer = setTimeout(() => {\n this.setState({ expired: true });\n }, delay);\n }\n }\n\n _toggleOption = value => {\n if (this.props.poll.get('multiple')) {\n const tmp = { ...this.state.selected };\n if (tmp[value]) {\n delete tmp[value];\n } else {\n tmp[value] = true;\n }\n this.setState({ selected: tmp });\n } else {\n const tmp = {};\n tmp[value] = true;\n this.setState({ selected: tmp });\n }\n }\n\n handleOptionChange = ({ target: { value } }) => {\n this._toggleOption(value);\n };\n\n handleOptionKeyPress = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n this._toggleOption(e.target.getAttribute('data-index'));\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n handleVote = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.props.dispatch(vote(this.props.poll.get('id'), Object.keys(this.state.selected)));\n };\n\n handleRefresh = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.props.dispatch(fetchPoll(this.props.poll.get('id')));\n };\n\n renderOption (option, optionIndex, showResults) {\n const { poll, disabled, intl } = this.props;\n const pollVotesCount = poll.get('voters_count') || poll.get('votes_count');\n const percent = pollVotesCount === 0 ? 0 : (option.get('votes_count') / pollVotesCount) * 100;\n const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') >= other.get('votes_count'));\n const active = !!this.state.selected[`${optionIndex}`];\n const voted = option.get('voted') || (poll.get('own_votes') && poll.get('own_votes').includes(optionIndex));\n\n let titleEmojified = option.get('title_emojified');\n if (!titleEmojified) {\n const emojiMap = makeEmojiMap(poll);\n titleEmojified = emojify(escapeTextContentForBrowser(option.get('title')), emojiMap);\n }\n\n return (\n <li key={option.get('title')}>\n <label className={classNames('poll__option', { selectable: !showResults })}>\n <input\n name='vote-options'\n type={poll.get('multiple') ? 'checkbox' : 'radio'}\n value={optionIndex}\n checked={active}\n onChange={this.handleOptionChange}\n disabled={disabled}\n />\n\n {!showResults && (\n <span\n className={classNames('poll__input', { checkbox: poll.get('multiple'), active })}\n tabIndex='0'\n role={poll.get('multiple') ? 'checkbox' : 'radio'}\n onKeyPress={this.handleOptionKeyPress}\n aria-checked={active}\n aria-label={option.get('title')}\n data-index={optionIndex}\n />\n )}\n {showResults && <span className='poll__number'>\n {Math.round(percent)}%\n </span>}\n\n <span\n className='poll__option__text'\n dangerouslySetInnerHTML={{ __html: titleEmojified }}\n />\n\n {!!voted && <span className='poll__voted'>\n <Icon id='check' className='poll__voted__mark' title={intl.formatMessage(messages.voted)} />\n </span>}\n </label>\n\n {showResults && (\n <Motion defaultStyle={{ width: 0 }} style={{ width: spring(percent, { stiffness: 180, damping: 12 }) }}>\n {({ width }) =>\n <span className={classNames('poll__chart', { leading })} style={{ width: `${width}%` }} />\n }\n </Motion>\n )}\n </li>\n );\n }\n\n render () {\n const { poll, intl } = this.props;\n const { expired } = this.state;\n\n if (!poll) {\n return null;\n }\n\n const timeRemaining = expired ? intl.formatMessage(messages.closed) : <RelativeTimestamp timestamp={poll.get('expires_at')} futureDate />;\n const showResults = poll.get('voted') || expired;\n const disabled = this.props.disabled || Object.entries(this.state.selected).every(item => !item);\n\n let votesCount = null;\n\n if (poll.get('voters_count') !== null && poll.get('voters_count') !== undefined) {\n votesCount = <FormattedMessage id='poll.total_people' defaultMessage='{count, plural, one {# person} other {# people}}' values={{ count: poll.get('voters_count') }} />;\n } else {\n votesCount = <FormattedMessage id='poll.total_votes' defaultMessage='{count, plural, one {# vote} other {# votes}}' values={{ count: poll.get('votes_count') }} />;\n }\n\n return (\n <div className='poll'>\n <ul>\n {poll.get('options').map((option, i) => this.renderOption(option, i, showResults))}\n </ul>\n\n <div className='poll__footer'>\n {!showResults && <button className='button button-secondary' disabled={disabled} onClick={this.handleVote}><FormattedMessage id='poll.vote' defaultMessage='Vote' /></button>}\n {showResults && !this.props.disabled && <span><button className='poll__link' onClick={this.handleRefresh}><FormattedMessage id='poll.refresh' defaultMessage='Refresh' /></button> · </span>}\n {votesCount}\n {poll.get('expires_at') && <span> · {timeRemaining}</span>}\n </div>\n </div>\n );\n }\n\n}\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","'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) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n/* eslint-disable no-underscore-dangle */\n// Try at most this many times to scroll, to avoid getting stuck.\n\n\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 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\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; // 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\n /* istanbul ignore if: paranoid guard */\n\n if (!_this._windowScrollTarget) {\n return;\n }\n\n _this.scrollToTarget(window, _this._windowScrollTarget);\n\n ++_this._numWindowScrollAttempts;\n /* istanbul ignore if: paranoid guard */\n\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; // This helps avoid some jankiness in fighting against the browser's\n // default scroll behavior on `POP` transitions.\n\n /* istanbul ignore else: Travis browsers all support this */\n\n if ('scrollRestoration' in window.history && // 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\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 this._scrollElements = {}; // 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\n (0, _on2.default)(window, 'scroll', this._onWindowScroll);\n this._removeTransitionHook = addTransitionHook(function () {\n _requestAnimationFrame2.default.cancel(_this._saveWindowPositionHandle);\n\n _this._saveWindowPositionHandle = null;\n Object.keys(_this._scrollElements).forEach(function (key) {\n var scrollElement = _this._scrollElements[key];\n\n _requestAnimationFrame2.default.cancel(scrollElement.savePositionHandle);\n\n scrollElement.savePositionHandle = null; // It's fine to save element scroll positions here, though; the browser\n // won't modify them.\n\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 onScroll: function onScroll() {\n if (!scrollElement.savePositionHandle) {\n scrollElement.savePositionHandle = (0, _requestAnimationFrame2.default)(saveElementPosition);\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 var _scrollElements$key = this._scrollElements[key],\n element = _scrollElements$key.element,\n onScroll = _scrollElements$key.onScroll,\n savePositionHandle = _scrollElements$key.savePositionHandle;\n (0, _off2.default)(element, 'scroll', onScroll);\n\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\n this._cancelCheckWindowScroll();\n\n this._removeTransitionHook();\n };\n\n ScrollBehavior.prototype._cancelCheckWindowScroll = function _cancelCheckWindowScroll() {\n _requestAnimationFrame2.default.cancel(this._checkWindowScrollHandle);\n\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); // 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\n this._numWindowScrollAttempts = 0;\n\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 var scrollTarget = this._getScrollTarget(key, shouldUpdateScroll, prevContext, context);\n\n if (!scrollTarget) {\n return;\n } // Unlike with the window, there shouldn't be any flakiness to deal with\n // here.\n\n\n this.scrollToTarget(element, scrollTarget);\n };\n\n ScrollBehavior.prototype._getDefaultScrollTarget = function _getDefaultScrollTarget(location) {\n var hash = location.hash;\n\n if (hash && hash !== '#') {\n return hash.charAt(0) === '#' ? hash.slice(1) : hash;\n }\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\n if (targetElement) {\n targetElement.scrollIntoView();\n return;\n } // Fallback to scrolling to top when target fragment doesn't exist.\n\n\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 (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'];","'use strict';\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = getPrototypeOf && getPrototypeOf(Object);\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!REACT_STATICS[key] && !KNOWN_STATICS[key] && (!blacklist || !blacklist[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;","// Written in this round about way for babel-transform-imports\nimport Route from \"react-router/es/Route\";\nexport default Route;","/**\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/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\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 */\n\nfunction isBoolean(value) {\n return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag;\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 */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isBoolean;","/**\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;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl } from 'react-intl';\nimport { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport classNames from 'classnames';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport detectPassiveEvents from 'detect-passive-events';\nimport { buildCustomEmojis, categoriesFromEmojis } from '../../emoji/emoji';\n\nconst messages = defineMessages({\n emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },\n emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' },\n emoji_not_found: { id: 'emoji_button.not_found', defaultMessage: 'No emojos!! (╯°□°)╯︵ ┻━┻' },\n custom: { id: 'emoji_button.custom', defaultMessage: 'Custom' },\n recent: { id: 'emoji_button.recent', defaultMessage: 'Frequently used' },\n search_results: { id: 'emoji_button.search_results', defaultMessage: 'Search results' },\n people: { id: 'emoji_button.people', defaultMessage: 'People' },\n nature: { id: 'emoji_button.nature', defaultMessage: 'Nature' },\n food: { id: 'emoji_button.food', defaultMessage: 'Food & Drink' },\n activity: { id: 'emoji_button.activity', defaultMessage: 'Activity' },\n travel: { id: 'emoji_button.travel', defaultMessage: 'Travel & Places' },\n objects: { id: 'emoji_button.objects', defaultMessage: 'Objects' },\n symbols: { id: 'emoji_button.symbols', defaultMessage: 'Symbols' },\n flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' },\n});\n\nconst assetHost = process.env.CDN_HOST || '';\nlet EmojiPicker, Emoji; // load asynchronously\n\nconst backgroundImageFn = () => `${assetHost}/emoji/sheet_10.png`;\nconst listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;\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\n const { modifierOpen } = this.state;\n\n const categoriesSort = [\n 'recent',\n 'people',\n 'nature',\n 'foods',\n 'activity',\n 'places',\n 'objects',\n 'symbols',\n 'flags',\n ];\n\n categoriesSort.splice(1, 0, ...Array.from(categoriesFromEmojis(custom_emojis)).sort());\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\nexport default @injectIntl\nclass 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 button: PropTypes.node,\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, button } = 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 {button || <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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedNumber } from 'react-intl';\nimport TransitionMotion from 'react-motion/lib/TransitionMotion';\nimport spring from 'react-motion/lib/spring';\nimport { reduceMotion } from 'flavours/glitch/util/initial_state';\n\nexport default class AnimatedNumber extends React.PureComponent {\n\n static propTypes = {\n value: PropTypes.number.isRequired,\n };\n\n state = {\n direction: 1,\n };\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.value > this.props.value) {\n this.setState({ direction: 1 });\n } else if (nextProps.value < this.props.value) {\n this.setState({ direction: -1 });\n }\n }\n\n willEnter = () => {\n const { direction } = this.state;\n\n return { y: -1 * direction };\n }\n\n willLeave = () => {\n const { direction } = this.state;\n\n return { y: spring(1 * direction, { damping: 35, stiffness: 400 }) };\n }\n\n render () {\n const { value } = this.props;\n const { direction } = this.state;\n\n if (reduceMotion) {\n return <FormattedNumber value={value} />;\n }\n\n const styles = [{\n key: `${value}`,\n data: value,\n style: { y: spring(0, { damping: 35, stiffness: 400 }) },\n }];\n\n return (\n <TransitionMotion styles={styles} willEnter={this.willEnter} willLeave={this.willLeave}>\n {items => (\n <span className='animated-number'>\n {items.map(({ key, data, style }) => (\n <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}><FormattedNumber value={data} /></span>\n ))}\n </span>\n )}\n </TransitionMotion>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { FormattedNumber } from 'react-intl';\nimport TransitionMotion from 'react-motion/lib/TransitionMotion';\nimport spring from 'react-motion/lib/spring';\nimport { reduceMotion } from 'mastodon/initial_state';\n\nexport default class AnimatedNumber extends React.PureComponent {\n\n static propTypes = {\n value: PropTypes.number.isRequired,\n };\n\n state = {\n direction: 1,\n };\n\n componentWillReceiveProps (nextProps) {\n if (nextProps.value > this.props.value) {\n this.setState({ direction: 1 });\n } else if (nextProps.value < this.props.value) {\n this.setState({ direction: -1 });\n }\n }\n\n willEnter = () => {\n const { direction } = this.state;\n\n return { y: -1 * direction };\n }\n\n willLeave = () => {\n const { direction } = this.state;\n\n return { y: spring(1 * direction, { damping: 35, stiffness: 400 }) };\n }\n\n render () {\n const { value } = this.props;\n const { direction } = this.state;\n\n if (reduceMotion) {\n return <FormattedNumber value={value} />;\n }\n\n const styles = [{\n key: `${value}`,\n data: value,\n style: { y: spring(0, { damping: 35, stiffness: 400 }) },\n }];\n\n return (\n <TransitionMotion styles={styles} willEnter={this.willEnter} willLeave={this.willLeave}>\n {items => (\n <span className='animated-number'>\n {items.map(({ key, data, style }) => (\n <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}><FormattedNumber value={data} /></span>\n ))}\n </span>\n )}\n </TransitionMotion>\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 '../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) {\n this.focusedItem.focus();\n }\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 'Tab':\n if (e.shiftKey) {\n element = items[index-1] || items[items.length-1];\n } else {\n element = items[index+1] || items[0];\n }\n if (element) {\n element.focus();\n e.preventDefault();\n e.stopPropagation();\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 case 'Escape':\n this.props.onClose();\n break;\n }\n }\n\n handleItemKeyPress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\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 = '#', target = '_blank', method } = option;\n\n return (\n <li className='dropdown-menu__item' key={`${text}-${i}`}>\n <a href={href} target={target} data-method={method} rel='noopener noreferrer' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyPress={this.handleItemKeyPress} 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 this.props.onOpen(this.state.id, this.handleItemClick, placement, type !== 'click');\n }\n }\n\n handleClose = () => {\n if (this.activeElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n this.props.onClose(this.state.id);\n }\n\n handleMouseDown = () => {\n if (!this.state.open) {\n this.activeElement = document.activeElement;\n }\n }\n\n handleButtonKeyDown = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleMouseDown();\n break;\n }\n }\n\n handleKeyPress = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleClick(e);\n e.stopPropagation();\n e.preventDefault();\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>\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 onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleButtonKeyDown}\n onKeyPress={this.handleKeyPress}\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 { fetchRelationships } from 'mastodon/actions/accounts';\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 if (status) {\n dispatch(fetchRelationships([status.getIn(['account', 'id'])]));\n }\n\n dispatch(isUserTouching() ? openModal('ACTIONS', {\n status,\n actions: items,\n onClick: onItemClick,\n }) : openDropdownMenu(id, dropdownPlacement, keyboard));\n },\n\n onClose(id) {\n dispatch(closeModal('ACTIONS'));\n dispatch(closeDropdownMenu(id));\n },\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DropdownMenu);\n","import Rails from '@rails/ujs';\n\nexport const logOut = () => {\n const form = document.createElement('form');\n\n const methodInput = document.createElement('input');\n methodInput.setAttribute('name', '_method');\n methodInput.setAttribute('value', 'delete');\n methodInput.setAttribute('type', 'hidden');\n form.appendChild(methodInput);\n\n const csrfToken = Rails.csrfToken();\n const csrfParam = Rails.csrfParam();\n\n if (csrfParam && csrfToken) {\n const csrfInput = document.createElement('input');\n csrfInput.setAttribute('name', csrfParam);\n csrfInput.setAttribute('value', csrfToken);\n csrfInput.setAttribute('type', 'hidden');\n form.appendChild(csrfInput);\n }\n\n const submitButton = document.createElement('input');\n submitButton.setAttribute('type', 'submit');\n form.appendChild(submitButton);\n\n form.method = 'post';\n form.action = '/auth/sign_out';\n form.style.display = 'none';\n\n document.body.appendChild(form);\n submitButton.click();\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport Icon from 'flavours/glitch/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 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","// core keys merging algorithm. If previous render's keys are [a, b], and the\n// next render's [c, b, d], what's the final merged keys and ordering?\n// - c and a must both be before b\n// - b before d\n// - ordering between a and c ambiguous\n// this reduces to merging two partially ordered lists (e.g. lists where not\n// every item has a definite ordering, like comparing a and c above). For the\n// ambiguous ordering we deterministically choose to place the next render's\n// item after the previous'; so c after a\n// this is called a topological sorting. Except the existing algorithms don't\n// work well with js bc of the amount of allocation, and isn't optimized for our\n// current use-case bc the runtime is linear in terms of edges (see wiki for\n// meaning), which is huge when two lists have many common elements\n'use strict';\n\nexports.__esModule = true;\nexports['default'] = mergeDiff;\n\nfunction mergeDiff(prev, next, onRemove) {\n // bookkeeping for easier access of a key's index below. This is 2 allocations +\n // potentially triggering chrome hash map mode for objs (so it might be faster\n var prevKeyIndex = {};\n\n for (var i = 0; i < prev.length; i++) {\n prevKeyIndex[prev[i].key] = i;\n }\n\n var nextKeyIndex = {};\n\n for (var i = 0; i < next.length; i++) {\n nextKeyIndex[next[i].key] = i;\n } // first, an overly elaborate way of merging prev and next, eliminating\n // duplicates (in terms of keys). If there's dupe, keep the item in next).\n // This way of writing it saves allocations\n\n\n var ret = [];\n\n for (var i = 0; i < next.length; i++) {\n ret[i] = next[i];\n }\n\n for (var i = 0; i < prev.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(nextKeyIndex, prev[i].key)) {\n // this is called my TM's `mergeAndSync`, which calls willLeave. We don't\n // merge in keys that the user desires to kill\n var fill = onRemove(i, prev[i]);\n\n if (fill != null) {\n ret.push(fill);\n }\n }\n } // now all the items all present. Core sorting logic to have the right order\n\n\n return ret.sort(function (a, b) {\n var nextOrderA = nextKeyIndex[a.key];\n var nextOrderB = nextKeyIndex[b.key];\n var prevOrderA = prevKeyIndex[a.key];\n var prevOrderB = prevKeyIndex[b.key];\n\n if (nextOrderA != null && nextOrderB != null) {\n // both keys in next\n return nextKeyIndex[a.key] - nextKeyIndex[b.key];\n } else if (prevOrderA != null && prevOrderB != null) {\n // both keys in prev\n return prevKeyIndex[a.key] - prevKeyIndex[b.key];\n } else if (nextOrderA != null) {\n // key a in next, key b in prev\n // how to determine the order between a and b? We find a \"pivot\" (term\n // abuse), a key present in both prev and next, that is sandwiched between\n // a and b. In the context of our above example, if we're comparing a and\n // d, b's (the only) pivot\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderA < nextKeyIndex[pivot] && prevOrderB > prevKeyIndex[pivot]) {\n return -1;\n } else if (nextOrderA > nextKeyIndex[pivot] && prevOrderB < prevKeyIndex[pivot]) {\n return 1;\n }\n } // pluggable. default to: next bigger than prev\n\n\n return 1;\n } // prevOrderA, nextOrderB\n\n\n for (var i = 0; i < next.length; i++) {\n var pivot = next[i].key;\n\n if (!Object.prototype.hasOwnProperty.call(prevKeyIndex, pivot)) {\n continue;\n }\n\n if (nextOrderB < nextKeyIndex[pivot] && prevOrderA > prevKeyIndex[pivot]) {\n return 1;\n } else if (nextOrderB > nextKeyIndex[pivot] && prevOrderA < prevKeyIndex[pivot]) {\n return -1;\n }\n } // pluggable. default to: next bigger than prev\n\n\n return -1;\n });\n}\n\nmodule.exports = exports['default']; // to loop through and find a key's index each time), but I no longer care","/**\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'use strict';\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 warning() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function warning(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.length < 10 || /^[s\\W]*$/.test(format)) {\n throw new Error('The warning format should be able to uniquely identify this ' + 'warning. Please, use a more descriptive format than: ' + format);\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\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;","\"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;\n\nfunction isMobileSafari() {\n return /iPad|iPhone|iPod/.test(window.navigator.platform) && /^((?!CriOS).)*Safari/.test(window.navigator.userAgent);\n}","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\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 */\nimport PropTypes from \"prop-types\";\nimport React, { Component, PureComponent } from \"react\";\nimport isEqual from \"lodash.isequal\";\nimport ReactDOM from \"react-dom\";\nimport isBool from \"lodash.isboolean\";\nimport isObject from \"lodash.isobject\";\n\nvar classCallCheck = function classCallCheck(e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n},\n createClass = function () {\n function e(e, t) {\n for (var o = 0; o < t.length; o++) {\n var n = t[o];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n return function (t, o, n) {\n return o && e(t.prototype, o), n && e(t, n), t;\n };\n}(),\n _extends = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var o = arguments[t];\n\n for (var n in o) {\n Object.prototype.hasOwnProperty.call(o, n) && (e[n] = o[n]);\n }\n }\n\n return e;\n},\n inherits = function inherits(e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof t);\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t);\n},\n objectWithoutProperties = function objectWithoutProperties(e, t) {\n var o = {};\n\n for (var n in e) {\n t.indexOf(n) >= 0 || Object.prototype.hasOwnProperty.call(e, n) && (o[n] = e[n]);\n }\n\n return o;\n},\n possibleConstructorReturn = function possibleConstructorReturn(e, t) {\n if (!e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return !t || \"object\" != typeof t && \"function\" != typeof t ? e : t;\n},\n FocusTrap = function (e) {\n function t() {\n return classCallCheck(this, t), possibleConstructorReturn(this, (t.__proto__ || Object.getPrototypeOf(t)).apply(this, arguments));\n }\n\n return inherits(t, Component), createClass(t, [{\n key: \"render\",\n value: function value() {\n var e = this.props,\n t = e.component,\n o = e.children,\n n = objectWithoutProperties(e, [\"component\", \"children\"]);\n return React.createElement(t, _extends({\n tabIndex: \"-1\"\n }, n), o);\n }\n }]), t;\n}();\n\nfunction sequencesFromKeyMap(e, t) {\n var o = e[t];\n return o ? Array.isArray(o) ? o : [o] : [t];\n}\n\nfunction hasChanged(e, t) {\n return !isEqual(e, t);\n}\n\nFocusTrap.defaultProps = {\n component: \"div\"\n};\n\nvar HotKeys = function (e) {\n function t(e, o) {\n classCallCheck(this, t);\n var n = possibleConstructorReturn(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e, o));\n return n.onFocus = n.onFocus.bind(n), n.onBlur = n.onBlur.bind(n), n;\n }\n\n return inherits(t, Component), createClass(t, [{\n key: \"getChildContext\",\n value: function value() {\n return {\n hotKeyParent: this,\n hotKeyMap: this.__hotKeyMap__\n };\n }\n }, {\n key: \"componentWillMount\",\n value: function value() {\n this.updateMap();\n }\n }, {\n key: \"updateMap\",\n value: function value() {\n var e = this.buildMap();\n return !isEqual(e, this.__hotKeyMap__) && (this.__hotKeyMap__ = e, !0);\n }\n }, {\n key: \"buildMap\",\n value: function value() {\n var e = this.context.hotKeyMap || {},\n t = this.props.keyMap || {};\n return _extends({}, e, t);\n }\n }, {\n key: \"getMap\",\n value: function value() {\n return this.__hotKeyMap__;\n }\n }, {\n key: \"componentDidMount\",\n value: function value() {\n var e = require(\"mousetrap\");\n\n this.__mousetrap__ = new e(this.props.attach || ReactDOM.findDOMNode(this)), this.updateHotKeys(!0);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function value(e) {\n this.updateHotKeys(!1, e);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function value() {\n this.context.hotKeyParent && this.context.hotKeyParent.childHandledSequence(null), this.__mousetrap__ && this.__mousetrap__.reset();\n }\n }, {\n key: \"updateHotKeys\",\n value: function value() {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],\n t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n o = this.props.handlers,\n n = void 0 === o ? {} : o,\n r = t.handlers,\n s = void 0 === r ? n : r,\n a = this.updateMap();\n (e || a || hasChanged(n, s)) && (this.context.hotKeyParent && this.context.hotKeyParent.childHandledSequence(null), this.syncHandlersToMousetrap());\n }\n }, {\n key: \"syncHandlersToMousetrap\",\n value: function value() {\n var e = this,\n t = this.props.handlers,\n o = void 0 === t ? {} : t,\n n = this.getMap(),\n r = [],\n s = this.__mousetrap__;\n Object.keys(o).forEach(function (t) {\n var s = o[t];\n sequencesFromKeyMap(n, t).forEach(function (t) {\n var o = void 0;\n isObject(t) && (o = t.action, t = t.sequence), r.push({\n callback: function callback(t, o) {\n 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);\n },\n action: o,\n sequence: t\n });\n });\n }), s.reset(), r.forEach(function (e) {\n var t = e.sequence,\n o = e.callback,\n n = e.action;\n return s.bind(t, o, n);\n });\n }\n }, {\n key: \"childHandledSequence\",\n value: function value() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;\n this.__lastChildSequence__ = e, this.context.hotKeyParent && this.context.hotKeyParent.childHandledSequence(e);\n }\n }, {\n key: \"render\",\n value: function value() {\n var e = this.props,\n t = (e.keyMap, e.handlers, e.focused, e.attach, e.children),\n o = objectWithoutProperties(e, [\"keyMap\", \"handlers\", \"focused\", \"attach\", \"children\"]);\n return React.createElement(FocusTrap, _extends({}, o, {\n onFocus: this.onFocus,\n onBlur: this.onBlur\n }), t);\n }\n }, {\n key: \"onFocus\",\n value: function value() {\n var e;\n (this.__isFocused__ = !0, this.props.onFocus) && (e = this.props).onFocus.apply(e, arguments);\n }\n }, {\n key: \"onBlur\",\n value: function value() {\n var e;\n (this.__isFocused__ = !1, this.props.onBlur) && (e = this.props).onBlur.apply(e, arguments);\n this.context.hotKeyParent && this.context.hotKeyParent.childHandledSequence(null);\n }\n }]), t;\n}();\n\nHotKeys.childContextTypes = {\n hotKeyParent: PropTypes.any,\n hotKeyMap: PropTypes.object\n}, HotKeys.contextTypes = {\n hotKeyParent: PropTypes.any,\n hotKeyMap: PropTypes.object\n};\n\nvar withHotKeys = function withHotKeys(e) {\n return function (t) {\n return function (o) {\n function n(e) {\n classCallCheck(this, n);\n var t = possibleConstructorReturn(this, (n.__proto__ || Object.getPrototypeOf(n)).call(this, e));\n return t._setRef = t._setRef.bind(t), t.state = {\n handlers: {}\n }, t;\n }\n\n return inherits(n, PureComponent), createClass(n, [{\n key: \"componentDidMount\",\n value: function value() {\n this.setState({\n handlers: this._ref.hotKeyHandlers\n });\n }\n }, {\n key: \"_setRef\",\n value: function value(e) {\n this._ref = e;\n }\n }, {\n key: \"render\",\n value: function value() {\n var o = this.state.handlers;\n return React.createElement(HotKeys, {\n component: \"document-fragment\",\n keyMap: e,\n handlers: o\n }, React.createElement(t, _extends({\n ref: this._setRef\n }, this.props)));\n }\n }]), n;\n }();\n };\n};\n\nfunction HotKeyMapMixin() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return {\n contextTypes: {\n hotKeyMap: PropTypes.object\n },\n childContextTypes: {\n hotKeyMap: PropTypes.object\n },\n getChildContext: function getChildContext() {\n return {\n hotKeyMap: this.__hotKeyMap__\n };\n },\n componentWillMount: function componentWillMount() {\n this.updateMap();\n },\n updateMap: function updateMap() {\n var e = this.buildMap();\n return !isEqual(e, this.__hotKeyMap__) && (this.__hotKeyMap__ = e, !0);\n },\n buildMap: function buildMap() {\n var t = this.context.hotKeyMap || {},\n o = this.props.keyMap || {};\n return _extends({}, t, e, o);\n },\n getMap: function getMap() {\n return this.__hotKeyMap__;\n }\n };\n}\n\nexport { HotKeys, withHotKeys, FocusTrap, HotKeyMapMixin };","/*global define:false */\n\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 // Check if mousetrap is used inside browser, if not, return\n if (!window) {\n return;\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\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 * 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\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 * 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\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 * 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\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 * 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\n var _REVERSE_MAP;\n /**\n * loop through the f keys, f1 to f19 and add them to the map\n * programatically\n */\n\n\n for (var i = 1; i < 20; ++i) {\n _MAP[111 + i] = 'f' + i;\n }\n /**\n * loop through to map numbers on the numeric keypad\n */\n\n\n for (i = 0; i <= 9; ++i) {\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 * cross browser add event method\n *\n * @param {Element|HTMLDocument} object\n * @param {string} type\n * @param {Function} callback\n * @returns void\n */\n\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 * takes the event and returns the key character\n *\n * @param {Event} e\n * @return {string}\n */\n\n\n function _characterFromEvent(e) {\n // for keypress events we should return the character as is\n if (e.type == 'keypress') {\n var character = String.fromCharCode(e.which); // 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\n if (!e.shiftKey) {\n character = character.toLowerCase();\n }\n\n return character;\n } // for non keypress events the special maps are needed\n\n\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 } // if it is not in the special map\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\n\n return String.fromCharCode(e.which).toLowerCase();\n }\n /**\n * checks if two arrays are equal\n *\n * @param {Array} modifiers1\n * @param {Array} modifiers2\n * @returns {boolean}\n */\n\n\n function _modifiersMatch(modifiers1, modifiers2) {\n return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n }\n /**\n * takes a key event and figures out what the modifiers are\n *\n * @param {Event} e\n * @returns {Array}\n */\n\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 * prevents default for this event\n *\n * @param {Event} e\n * @returns void\n */\n\n\n function _preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n return;\n }\n\n e.returnValue = false;\n }\n /**\n * stops propogation for this event\n *\n * @param {Event} e\n * @returns void\n */\n\n\n function _stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n return;\n }\n\n e.cancelBubble = true;\n }\n /**\n * determines if the keycode specified is a modifier key or not\n *\n * @param {string} key\n * @returns {boolean}\n */\n\n\n function _isModifier(key) {\n return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\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\n\n function _getReverseMap() {\n if (!_REVERSE_MAP) {\n _REVERSE_MAP = {};\n\n for (var key in _MAP) {\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\n return _REVERSE_MAP;\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\n\n function _pickBestAction(key, modifiers, action) {\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 } // modifier keys don't work as expected with keypress,\n // switch to keydown\n\n\n if (action == 'keypress' && modifiers.length) {\n action = 'keydown';\n }\n\n return action;\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\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 * 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\n\n function _getKeyInfo(combination, action) {\n var keys;\n var key;\n var i;\n var modifiers = []; // take the keys from this pattern and figure out what the actual\n // pattern is all about\n\n keys = _keysFromString(combination);\n\n for (i = 0; i < keys.length; ++i) {\n key = keys[i]; // normalize key names\n\n if (_SPECIAL_ALIASES[key]) {\n key = _SPECIAL_ALIASES[key];\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\n\n if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n key = _SHIFT_MAP[key];\n modifiers.push('shift');\n } // if this key is a modifier then add it to the list of modifiers\n\n\n if (_isModifier(key)) {\n modifiers.push(key);\n }\n } // depending on what the key combination is\n // we will try to pick the best event for it\n\n\n action = _pickBestAction(key, modifiers, action);\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 targetElement = targetElement || document;\n\n if (!(self instanceof Mousetrap)) {\n return new Mousetrap(targetElement);\n }\n /**\n * element to attach key events to\n *\n * @type {Element}\n */\n\n\n self.target = targetElement;\n /**\n * a list of all the callbacks setup via Mousetrap.bind()\n *\n * @type {Object}\n */\n\n self._callbacks = {};\n /**\n * direct map of string combinations to callbacks used for trigger()\n *\n * @type {Object}\n */\n\n self._directMap = {};\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\n var _sequenceLevels = {};\n /**\n * variable to store the setTimeout call\n *\n * @type {null|number}\n */\n\n var _resetTimer;\n /**\n * temporary state where we will ignore the next keyup\n *\n * @type {boolean|string}\n */\n\n\n var _ignoreNextKeyup = false;\n /**\n * temporary state where we will ignore the next keypress\n *\n * @type {boolean}\n */\n\n var _ignoreNextKeypress = false;\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\n var _nextExpectedAction = false;\n /**\n * resets all sequence counters except for the ones passed in\n *\n * @param {Object} doNotReset\n * @returns void\n */\n\n function _resetSequences(doNotReset) {\n doNotReset = doNotReset || {};\n var activeSequences = false,\n key;\n\n for (key in _sequenceLevels) {\n if (doNotReset[key]) {\n activeSequences = true;\n continue;\n }\n\n _sequenceLevels[key] = 0;\n }\n\n if (!activeSequences) {\n _nextExpectedAction = false;\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\n\n function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n var i;\n var callback;\n var matches = [];\n var action = e.type; // if there are no events related to this keycode\n\n if (!self._callbacks[character]) {\n return [];\n } // if a modifier key is coming up on its own we should allow it\n\n\n if (action == 'keyup' && _isModifier(character)) {\n modifiers = [character];\n } // loop through all callbacks for the key that was pressed\n // and see if any of them match\n\n\n for (i = 0; i < self._callbacks[character].length; ++i) {\n callback = self._callbacks[character][i]; // if a sequence name is not specified, but this is a sequence at\n // the wrong level then move onto the next match\n\n if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n continue;\n } // if the action we are looking for doesn't match the action we got\n // then we should keep going\n\n\n if (action != callback.action) {\n continue;\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\n\n if (action == 'keypress' && !e.metaKey && !e.ctrlKey || _modifiersMatch(modifiers, callback.modifiers)) {\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\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 * 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\n\n function _fireCallback(callback, e, combo, sequence) {\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\n _stopPropagation(e);\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\n\n self._handleKey = function (character, modifiers, e) {\n var callbacks = _getMatches(character, modifiers, e);\n\n var i;\n var doNotReset = {};\n var maxLevel = 0;\n var processedSequenceCallback = false; // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n\n for (i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].seq) {\n maxLevel = Math.max(maxLevel, callbacks[i].level);\n }\n } // loop through matching callbacks for this key event\n\n\n for (i = 0; i < callbacks.length; ++i) {\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 // 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; // keep a list of which sequences were matches for later\n\n doNotReset[callbacks[i].seq] = 1;\n\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n\n continue;\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\n\n if (!processedSequenceCallback) {\n _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\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\n\n var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n\n if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n _resetSequences(doNotReset);\n }\n\n _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n };\n /**\n * handles a keydown event\n *\n * @param {Event} e\n * @returns void\n */\n\n\n function _handleKeyEvent(e) {\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); // no character found then stop\n\n\n if (!character) {\n return;\n } // need to use === for the character check because the character can be 0\n\n\n if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n _ignoreNextKeyup = false;\n return;\n }\n\n self.handleKey(character, _eventModifiers(e), e);\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\n\n function _resetSequenceTimer() {\n clearTimeout(_resetTimer);\n _resetTimer = setTimeout(_resetSequences, 1000);\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\n\n function _bindSequence(combo, keys, callback, action) {\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 * 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\n function _increaseSequence(nextAction) {\n return function () {\n _nextExpectedAction = nextAction;\n ++_sequenceLevels[combo];\n\n _resetSequenceTimer();\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\n\n function _callbackAndReset(e) {\n _fireCallback(callback, e, combo); // 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\n\n if (action !== 'keyup') {\n _ignoreNextKeyup = _characterFromEvent(e);\n } // weird race condition if a sequence ends with the key\n // another sequence begins with\n\n\n setTimeout(_resetSequences, 10);\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\n\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\n _bindSingle(keys[i], wrappedCallback, action, combo, i);\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\n\n function _bindSingle(combination, callback, action, sequenceName, level) {\n // store a direct mapped reference for use with Mousetrap.trigger\n self._directMap[combination + ':' + action] = callback; // make sure multiple spaces in a row become a single space\n\n combination = combination.replace(/\\s+/g, ' ');\n var sequence = combination.split(' ');\n var info; // if this pattern is a sequence of keys then run through this method\n // to reprocess each pattern one key at a time\n\n if (sequence.length > 1) {\n _bindSequence(combination, sequence, callback, action);\n\n return;\n }\n\n info = _getKeyInfo(combination, action); // make sure to initialize array if this is the first time\n // a callback is added for this key\n\n self._callbacks[info.key] = self._callbacks[info.key] || []; // remove an existing match if there is one\n\n _getMatches(info.key, info.modifiers, {\n type: info.action\n }, sequenceName, combination, level); // 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\n\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 * 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\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 }; // start!\n\n\n _addEvent(targetElement, 'keypress', _handleKeyEvent);\n\n _addEvent(targetElement, 'keydown', _handleKeyEvent);\n\n _addEvent(targetElement, 'keyup', _handleKeyEvent);\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\n\n Mousetrap.prototype.bind = function (keys, callback, action) {\n var self = this;\n keys = keys instanceof Array ? keys : [keys];\n\n self._bindMultiple.call(self, keys, callback, action);\n\n return self;\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\n\n Mousetrap.prototype.unbind = function (keys, action) {\n var self = this;\n return self.bind.call(self, keys, function () {}, action);\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\n\n Mousetrap.prototype.trigger = function (keys, action) {\n var self = this;\n\n if (self._directMap[keys + ':' + action]) {\n self._directMap[keys + ':' + action]({}, keys);\n }\n\n return self;\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\n\n Mousetrap.prototype.reset = function () {\n var self = this;\n self._callbacks = {};\n self._directMap = {};\n return self;\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\n\n Mousetrap.prototype.stopCallback = function (e, element) {\n var self = this; // if the element has the class \"mousetrap\" then no need to stop\n\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n if (_belongsTo(element, self.target)) {\n return false;\n } // stop for input, select, and textarea\n\n\n return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n };\n /**\n * exposes _handleKey publicly so it can be overwritten by extensions\n */\n\n\n Mousetrap.prototype.handleKey = function () {\n var self = this;\n return self._handleKey.apply(self, arguments);\n };\n /**\n * allow custom key mappings\n */\n\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\n _REVERSE_MAP = null;\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\n\n Mousetrap.init = function () {\n var documentMousetrap = Mousetrap(document);\n\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(); // expose mousetrap to the global object\n\n window.Mousetrap = Mousetrap; // expose as a common js module\n\n if (typeof module !== 'undefined' && module.exports) {\n module.exports = Mousetrap;\n } // expose mousetrap as an AMD module\n\n\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);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createBackoff = createBackoff;\nvar backoff = {\n exponential: function exponential(attempt, delay) {\n return Math.floor(Math.random() * Math.pow(2, attempt) * delay);\n },\n fibonacci: function fibonacci(attempt, delay) {\n var current = 1;\n\n if (attempt > current) {\n var prev = 1,\n current = 2;\n\n for (var index = 2; index < attempt; index++) {\n var next = prev + current;\n prev = current;\n current = next;\n }\n }\n\n return Math.floor(Math.random() * current * delay);\n }\n};\n\nfunction createBackoff(type, options) {\n return new Backoff(backoff[type], options);\n}\n\nfunction Backoff(func, options) {\n this.func = func;\n this.attempts = 0;\n this.delay = typeof options.initialDelay !== \"undefined\" ? options.initialDelay : 100;\n}\n\nBackoff.prototype.backoff = function () {\n setTimeout(this.onReady, this.func(++this.attempts, this.delay));\n};","var g; // This works in non-strict mode\n\ng = function () {\n return this;\n}();\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\n} // g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\n\nmodule.exports = g;","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport Route from \"./Route\";\n/**\n * A public higher-order component to access the imperative API\n */\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 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\";\nexport default withRouter;","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","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\nimport classNames from 'classnames';\nimport { FormattedMessage, injectIntl, defineMessages } from 'react-intl';\nimport Icon from 'flavours/glitch/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 placeholder: PropTypes.bool,\n onPin: PropTypes.func,\n onMove: PropTypes.func,\n onClick: PropTypes.func,\n appendContent: PropTypes.node,\n };\n\n state = {\n collapsed: true,\n animating: false,\n };\n\n historyBack = (skip) => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n const state = this.context.router.history.location.state;\n if (skip && state && state.mastodonBackSteps) {\n this.context.router.history.go(-state.mastodonBackSteps);\n } else {\n this.context.router.history.goBack();\n }\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 = (event) => {\n this.historyBack(event.shiftKey);\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 }, placeholder, appendContent } = 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 && this.props.onPin) {\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 && this.props.onPin)) {\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 const component = (\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\n {appendContent}\n </div>\n );\n\n if (multiColumn || placeholder) {\n return component;\n } else {\n // The portal container and the component may be rendered to the DOM in\n // the same React render pass, so the container might not be available at\n // the time `render()` is called.\n const container = document.getElementById('tabs-bar__portal');\n if (container === null) {\n // The container wasn't available, force a re-render so that the\n // component can eventually be inserted in the container and not scroll\n // with the rest of the area.\n this.forceUpdate();\n return component;\n } else {\n return createPortal(component, container);\n }\n }\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { createPortal } from 'react-dom';\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 placeholder: PropTypes.bool,\n onPin: PropTypes.func,\n onMove: PropTypes.func,\n onClick: PropTypes.func,\n appendContent: PropTypes.node,\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.context.router.history.replace('/');\n }\n\n this.props.onPin();\n }\n\n render () {\n const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, placeholder, appendContent } = 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 && this.props.onPin) {\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 && this.props.onPin)) {\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 const component = (\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\n {appendContent}\n </div>\n );\n\n if (multiColumn || placeholder) {\n return component;\n } else {\n // The portal container and the component may be rendered to the DOM in\n // the same React render pass, so the container might not be available at\n // the time `render()` is called.\n const container = document.getElementById('tabs-bar__portal');\n if (container === null) {\n // The container wasn't available, force a re-render so that the\n // component can eventually be inserted in the container and not scroll\n // with the rest of the area.\n this.forceUpdate();\n return component;\n } else {\n return createPortal(component, container);\n }\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 bindToDocument: PropTypes.bool,\n };\n\n scrollTop () {\n const scrollable = this.props.bindToDocument ? document.scrollingElement : 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 if (this.props.bindToDocument) {\n document.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n } else {\n this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (this.props.bindToDocument) {\n document.removeEventListener('wheel', this.handleWheel);\n } else {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\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 { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\nimport Icon from 'flavours/glitch/components/icon';\n\nexport default class ColumnBackButtonSlim extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n handleClick = (event) => {\n // if history is exhausted, or we would leave mastodon, just go to root.\n if (window.history.state) {\n const state = this.context.router.history.location.state;\n if (event.shiftKey && state && state.mastodonBackSteps) {\n this.context.router.history.go(-state.mastodonBackSteps);\n } else {\n this.context.router.history.goBack();\n }\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 <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 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 bindToDocument: PropTypes.bool,\n };\n\n scrollTop () {\n const scrollable = this.props.bindToDocument ? document.scrollingElement : 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 if (this.props.bindToDocument) {\n document.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n } else {\n this.node.addEventListener('wheel', this.handleWheel, detectPassiveEvents.hasSupport ? { passive: true } : false);\n }\n }\n\n componentWillUnmount () {\n if (this.props.bindToDocument) {\n document.removeEventListener('wheel', this.handleWheel);\n } else {\n this.node.removeEventListener('wheel', this.handleWheel);\n }\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","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 React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport PropTypes from 'prop-types';\nimport Icon from 'mastodon/components/icon';\nimport { createPortal } from 'react-dom';\n\nexport default class ColumnBackButton extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n multiColumn: PropTypes.bool,\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 const { multiColumn } = this.props;\n\n const component = (\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 if (multiColumn) {\n return component;\n } else {\n // The portal container and the component may be rendered to the DOM in\n // the same React render pass, so the container might not be available at\n // the time `render()` is called.\n const container = document.getElementById('tabs-bar__portal');\n if (container === null) {\n // The container wasn't available, force a re-render so that the\n // component can eventually be inserted in the container and not scroll\n // with the rest of the area.\n this.forceUpdate();\n return component;\n } else {\n return createPortal(component, container);\n }\n }\n }\n\n}\n","import WebSocketClient from '@gamestdio/websocket';\n\nconst randomIntUpTo = max => Math.floor(Math.random() * Math.floor(max));\n\nconst knownEventTypes = [\n 'update',\n 'delete',\n 'notification',\n 'conversation',\n 'filters_changed',\n];\n\nexport function connectStream(path, pollingRefresh = null, callbacks = () => ({ onConnect() {}, 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 { onConnect, 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 onConnect();\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 onConnect();\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.split('&');\n stream = params.shift();\n\n if (streamingAPIBaseURL.startsWith('ws')) {\n params.unshift(`stream=${stream}`);\n const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken);\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\n stream = stream.replace(/:/g, '/');\n params.push(`access_token=${accessToken}`);\n const es = new EventSource(`${streamingAPIBaseURL}/api/v1/streaming/${stream}?${params.join('&')}`);\n\n let firstConnect = true;\n es.onopen = () => {\n if (firstConnect) {\n firstConnect = false;\n connected();\n } else {\n reconnected();\n }\n };\n for (let type of knownEventTypes) {\n es.addEventListener(type, (e) => {\n received({\n event: e.type,\n payload: e.data,\n });\n });\n }\n es.onerror = disconnected;\n\n return es;\n};\n","import { connectStream } from 'flavours/glitch/util/stream';\nimport {\n updateTimeline,\n deleteFromTimelines,\n expandHomeTimeline,\n connectTimeline,\n disconnectTimeline,\n} from './timelines';\nimport { updateNotifications, expandNotifications } from './notifications';\nimport { updateConversations } from './conversations';\nimport {\n fetchAnnouncements,\n updateAnnouncements,\n updateReaction as updateAnnouncementsReaction,\n deleteAnnouncement,\n} from './announcements';\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\n return {\n onConnect() {\n dispatch(connectTimeline(timelineId));\n },\n\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 case 'announcement':\n dispatch(updateAnnouncements(JSON.parse(data.payload)));\n break;\n case 'announcement.reaction':\n dispatch(updateAnnouncementsReaction(JSON.parse(data.payload)));\n break;\n case 'announcement.delete':\n dispatch(deleteAnnouncement(data.payload));\n break;\n }\n },\n };\n });\n}\n\nconst refreshHomeTimelineAndNotification = (dispatch, done) => {\n dispatch(expandHomeTimeline({}, () =>\n dispatch(expandNotifications({}, () =>\n dispatch(fetchAnnouncements(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 '@gamestdio/websocket';\n\nconst randomIntUpTo = max => Math.floor(Math.random() * Math.floor(max));\n\nconst knownEventTypes = [\n 'update',\n 'delete',\n 'notification',\n 'conversation',\n 'filters_changed',\n];\n\nexport function connectStream(path, pollingRefresh = null, callbacks = () => ({ onConnect() {}, 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 { onConnect, 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 onConnect();\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 onConnect();\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.split('&');\n stream = params.shift();\n\n if (streamingAPIBaseURL.startsWith('ws')) {\n params.unshift(`stream=${stream}`);\n const ws = new WebSocketClient(`${streamingAPIBaseURL}/api/v1/streaming/?${params.join('&')}`, accessToken);\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\n stream = stream.replace(/:/g, '/');\n params.push(`access_token=${accessToken}`);\n const es = new EventSource(`${streamingAPIBaseURL}/api/v1/streaming/${stream}?${params.join('&')}`);\n\n let firstConnect = true;\n es.onopen = () => {\n if (firstConnect) {\n firstConnect = false;\n connected();\n } else {\n reconnected();\n }\n };\n for (let type of knownEventTypes) {\n es.addEventListener(type, (e) => {\n received({\n event: e.type,\n payload: e.data,\n });\n });\n }\n es.onerror = disconnected;\n\n return es;\n};\n","import { connectStream } from '../stream';\nimport {\n updateTimeline,\n deleteFromTimelines,\n expandHomeTimeline,\n connectTimeline,\n disconnectTimeline,\n} from './timelines';\nimport { updateNotifications, expandNotifications } from './notifications';\nimport { updateConversations } from './conversations';\nimport {\n fetchAnnouncements,\n updateAnnouncements,\n updateReaction as updateAnnouncementsReaction,\n deleteAnnouncement,\n} from './announcements';\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\n return {\n onConnect() {\n dispatch(connectTimeline(timelineId));\n },\n\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 case 'announcement':\n dispatch(updateAnnouncements(JSON.parse(data.payload)));\n break;\n case 'announcement.reaction':\n dispatch(updateAnnouncementsReaction(JSON.parse(data.payload)));\n break;\n case 'announcement.delete':\n dispatch(deleteAnnouncement(data.payload));\n break;\n }\n },\n };\n });\n}\n\nconst refreshHomeTimelineAndNotification = (dispatch, done) => {\n dispatch(expandHomeTimeline({}, () =>\n dispatch(expandNotifications({}, () =>\n dispatch(fetchAnnouncements(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 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) {\n this.focusedItem.focus();\n }\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 'Tab':\n if (e.shiftKey) {\n element = items[index-1] || items[items.length-1];\n } else {\n element = items[index+1] || items[0];\n }\n if (element) {\n element.focus();\n e.preventDefault();\n e.stopPropagation();\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 case 'Escape':\n this.props.onClose();\n break;\n }\n }\n\n handleItemKeyPress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\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 noreferrer' role='button' tabIndex='0' ref={i === 0 ? this.setFocusRef : null} onClick={this.handleClick} onKeyPress={this.handleItemKeyPress} 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 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 this.props.onOpen(this.state.id, this.handleItemClick, placement, type !== 'click');\n }\n }\n\n handleClose = () => {\n if (this.activeElement) {\n this.activeElement.focus();\n this.activeElement = null;\n }\n this.props.onClose(this.state.id);\n }\n\n handleMouseDown = () => {\n if (!this.state.open) {\n this.activeElement = document.activeElement;\n }\n }\n\n handleButtonKeyDown = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleMouseDown();\n break;\n }\n }\n\n handleKeyPress = (e) => {\n switch(e.key) {\n case ' ':\n case 'Enter':\n this.handleClick(e);\n e.stopPropagation();\n e.preventDefault();\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, title, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard } = this.props;\n const open = this.state.id === openDropdownId;\n\n return (\n <div>\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 onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleButtonKeyDown}\n onKeyPress={this.handleKeyPress}\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('ACTIONS'));\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 Avatar from 'flavours/glitch/components/avatar';\nimport Permalink from 'flavours/glitch/components/permalink';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePureComponent from 'react-immutable-pure-component';\nimport { profileLink } from 'flavours/glitch/util/backend_links';\n\nexport default class NavigationBar extends ImmutablePureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n };\n\n render () {\n return (\n <div className='drawer--account'>\n <Permalink className='avatar' 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={48} />\n </Permalink>\n\n <div className='navigation-bar__profile'>\n <Permalink className='acct' href={this.props.account.get('url')} to={`/accounts/${this.props.account.get('id')}`}>\n <strong>@{this.props.account.get('acct')}</strong>\n </Permalink>\n\n { profileLink !== undefined && (\n <a\n className='edit'\n href={ profileLink }\n ><FormattedMessage id='navigation_bar.edit_profile' defaultMessage='Edit profile' /></a>\n )}\n </div>\n </div>\n );\n };\n}\n","import React from 'react';\nimport { Sparklines, SparklinesCurve } from 'react-sparklines';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Permalink from './permalink';\nimport { shortNumberFormat } from 'flavours/glitch/util/numbers';\n\nconst Hashtag = ({ hashtag }) => (\n <div className='trends__item'>\n <div className='trends__item__name'>\n <Permalink href={hashtag.get('url')} to={`/timelines/tag/${hashtag.get('name')}`}>\n #<span>{hashtag.get('name')}</span>\n </Permalink>\n\n <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1, count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1)}</strong> }} />\n </div>\n\n <div className='trends__item__current'>\n {shortNumberFormat(hashtag.getIn(['history', 0, 'uses']) * 1 + hashtag.getIn(['history', 1, 'uses']) * 1)}\n </div>\n\n <div className='trends__item__sparkline'>\n <Sparklines width={50} height={28} data={hashtag.get('history') && hashtag.get('history').reverse().map(day => day.get('uses')).toArray()}>\n <SparklinesCurve style={{ fill: 'none' }} />\n </Sparklines>\n </div>\n </div>\n);\n\nHashtag.propTypes = {\n hashtag: ImmutablePropTypes.map.isRequired,\n};\n\nexport default Hashtag;\n","import React from 'react';\nimport { Sparklines, SparklinesCurve } from 'react-sparklines';\nimport { FormattedMessage } from 'react-intl';\nimport ImmutablePropTypes from 'react-immutable-proptypes';\nimport Permalink from './permalink';\nimport { shortNumberFormat } from '../utils/numbers';\n\nconst Hashtag = ({ hashtag }) => (\n <div className='trends__item'>\n <div className='trends__item__name'>\n <Permalink href={hashtag.get('url')} to={`/timelines/tag/${hashtag.get('name')}`}>\n #<span>{hashtag.get('name')}</span>\n </Permalink>\n\n <FormattedMessage id='trends.count_by_accounts' defaultMessage='{count} {rawCount, plural, one {person} other {people}} talking' values={{ rawCount: hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1, count: <strong>{shortNumberFormat(hashtag.getIn(['history', 0, 'accounts']) * 1 + hashtag.getIn(['history', 1, 'accounts']) * 1)}</strong> }} />\n </div>\n\n <div className='trends__item__current'>\n {shortNumberFormat(hashtag.getIn(['history', 0, 'uses']) * 1 + hashtag.getIn(['history', 1, 'uses']) * 1)}\n </div>\n\n <div className='trends__item__sparkline'>\n <Sparklines width={50} height={28} data={hashtag.get('history') && hashtag.get('history').reverse().map(day => day.get('uses')).toArray()}>\n <SparklinesCurve style={{ fill: 'none' }} />\n </Sparklines>\n </div>\n </div>\n);\n\nHashtag.propTypes = {\n hashtag: ImmutablePropTypes.map.isRequired,\n};\n\nexport default Hashtag;\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';\nimport Icon from 'flavours/glitch/components/icon';\n\nconst messages = defineMessages({\n markForDeletion: { id: 'notification.markForDeletion', defaultMessage: 'Mark for deletion' },\n});\n\nexport default @injectIntl\nclass 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 ? (<Icon id='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","import { connect } from 'react-redux';\nimport {\n changeSearch,\n clearSearch,\n submitSearch,\n showSearch,\n} from 'flavours/glitch/actions/search';\nimport Search from '../components/search';\n\nconst mapStateToProps = state => ({\n value: state.getIn(['search', 'value']),\n submitted: state.getIn(['search', 'submitted']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onChange (value) {\n dispatch(changeSearch(value));\n },\n\n onClear () {\n dispatch(clearSearch());\n },\n\n onSubmit () {\n dispatch(submitSearch());\n },\n\n onShow () {\n dispatch(showSearch());\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Search);\n","// Package imports.\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport spring from 'react-motion/lib/spring';\nimport {\n injectIntl,\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';\n\n// Utils.\nimport { focusRoot } from 'flavours/glitch/util/dom_helpers';\nimport { searchEnabled } from 'flavours/glitch/util/initial_state';\nimport Motion from 'flavours/glitch/util/optional_motion';\n\nconst messages = defineMessages({\n placeholder: { id: 'search.placeholder', defaultMessage: 'Search' },\n});\n\nclass SearchPopout extends React.PureComponent {\n\n static propTypes = {\n style: PropTypes.object,\n };\n\n render () {\n const { style } = this.props;\n const extraInformation = searchEnabled ? <FormattedMessage id='search_popout.tips.full_text' defaultMessage='Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.' /> : <FormattedMessage id='search_popout.tips.text' defaultMessage='Simple text returns matching display names, usernames and hashtags' />;\n return (\n <div style={{ ...style, position: 'absolute', width: 285, zIndex: 2 }}>\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='search-popout' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n <h4><FormattedMessage id='search_popout.search_format' defaultMessage='Advanced search format' /></h4>\n\n <ul>\n <li><em>#example</em> <FormattedMessage id='search_popout.tips.hashtag' defaultMessage='hashtag' /></li>\n <li><em>@username@domain</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.status' defaultMessage='status' /></li>\n </ul>\n\n {extraInformation}\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n\n// The component.\nexport default @injectIntl\nclass Search extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n value: PropTypes.string.isRequired,\n submitted: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n onShow: PropTypes.func.isRequired,\n openInRoute: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n singleColumn: PropTypes.bool,\n };\n\n state = {\n expanded: false,\n };\n\n setRef = c => {\n this.searchForm = c;\n }\n\n handleChange = (e) => {\n const { onChange } = this.props;\n if (onChange) {\n onChange(e.target.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 handleBlur = () => {\n this.setState({ expanded: false });\n }\n\n handleFocus = () => {\n this.setState({ expanded: true });\n this.props.onShow();\n\n if (this.searchForm && !this.props.singleColumn) {\n const { left, right } = this.searchForm.getBoundingClientRect();\n if (left < 0 || right > (window.innerWidth || document.documentElement.clientWidth)) {\n this.searchForm.scrollIntoView();\n }\n }\n }\n\n handleKeyUp = (e) => {\n const { onSubmit } = this.props;\n switch (e.key) {\n case 'Enter':\n onSubmit();\n\n if (this.props.openInRoute) {\n this.context.router.history.push('/search');\n }\n break;\n case 'Escape':\n focusRoot();\n }\n }\n\n render () {\n const { intl, value, submitted } = this.props;\n const { expanded } = this.state;\n const hasValue = value.length > 0 || submitted;\n\n return (\n <div className='search'>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.placeholder)}</span>\n <input\n ref={this.setRef}\n className='search__input'\n type='text'\n placeholder={intl.formatMessage(messages.placeholder)}\n value={value || ''}\n onChange={this.handleChange}\n onKeyUp={this.handleKeyUp}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n </label>\n\n <div\n aria-label={intl.formatMessage(messages.placeholder)}\n className='search__icon'\n onClick={this.handleClear}\n role='button'\n tabIndex='0'\n >\n <Icon id='search' className={hasValue ? '' : 'active'} />\n <Icon id='times-circle' className={hasValue ? 'active' : ''} />\n </div>\n\n <Overlay show={expanded && !hasValue} placement='bottom' target={this}>\n <SearchPopout />\n </Overlay>\n </div>\n );\n }\n\n}\n","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","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 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 = '1px';\n } else {\n left = '1px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '1px';\n } else if (index > 0) {\n left = '1px';\n }\n\n if (index === 1) {\n bottom = '1px';\n } else if (index > 1) {\n top = '1px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '1px';\n }\n\n if (index === 1 || index === 3) {\n left = '1px';\n }\n\n if (index < 2) {\n bottom = '1px';\n } else {\n top = '1px';\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 <a\n href={account.get('url')}\n target='_blank'\n onClick={(e) => this.props.onAccountClick(account.get('id'), e)}\n title={`@${account.get('acct')}`}\n key={account.get('id')}\n >\n <div style={style} data-avatar-of={`@${account.get('acct')}`} />\n </a>\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, Math.min(accounts.size, 4), i))}\n\n {accounts.size > 4 && (\n <span className='account__avatar-composite__label'>\n +{accounts.size - 4}\n </span>\n )}\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","// 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 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","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 = '1px';\n } else {\n left = '1px';\n }\n } else if (size === 3) {\n if (index === 0) {\n right = '1px';\n } else if (index > 0) {\n left = '1px';\n }\n\n if (index === 1) {\n bottom = '1px';\n } else if (index > 1) {\n top = '1px';\n }\n } else if (size === 4) {\n if (index === 0 || index === 2) {\n right = '1px';\n }\n\n if (index === 1 || index === 3) {\n left = '1px';\n }\n\n if (index < 2) {\n bottom = '1px';\n } else {\n top = '1px';\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, Math.min(accounts.size, 4), i))}\n\n {accounts.size > 4 && (\n <span className='account__avatar-composite__label'>\n +{accounts.size - 4}\n </span>\n )}\n </div>\n );\n }\n\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { defineMessages, injectIntl, FormattedMessage } from 'react-intl';\nimport Overlay from 'react-overlays/lib/Overlay';\nimport Motion from '../../ui/util/optional_motion';\nimport spring from 'react-motion/lib/spring';\nimport { searchEnabled } from '../../../initial_state';\nimport Icon from 'mastodon/components/icon';\n\nconst messages = defineMessages({\n placeholder: { id: 'search.placeholder', defaultMessage: 'Search' },\n});\n\nclass SearchPopout extends React.PureComponent {\n\n static propTypes = {\n style: PropTypes.object,\n };\n\n render () {\n const { style } = this.props;\n const extraInformation = searchEnabled ? <FormattedMessage id='search_popout.tips.full_text' defaultMessage='Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.' /> : <FormattedMessage id='search_popout.tips.text' defaultMessage='Simple text returns matching display names, usernames and hashtags' />;\n return (\n <div style={{ ...style, position: 'absolute', width: 315, zIndex: 2 }}>\n <Motion defaultStyle={{ opacity: 0, scaleX: 0.85, scaleY: 0.75 }} style={{ opacity: spring(1, { damping: 35, stiffness: 400 }), scaleX: spring(1, { damping: 35, stiffness: 400 }), scaleY: spring(1, { damping: 35, stiffness: 400 }) }}>\n {({ opacity, scaleX, scaleY }) => (\n <div className='search-popout' style={{ opacity: opacity, transform: `scale(${scaleX}, ${scaleY})` }}>\n <h4><FormattedMessage id='search_popout.search_format' defaultMessage='Advanced search format' /></h4>\n\n <ul>\n <li><em>#example</em> <FormattedMessage id='search_popout.tips.hashtag' defaultMessage='hashtag' /></li>\n <li><em>@username@domain</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.user' defaultMessage='user' /></li>\n <li><em>URL</em> <FormattedMessage id='search_popout.tips.status' defaultMessage='status' /></li>\n </ul>\n\n {extraInformation}\n </div>\n )}\n </Motion>\n </div>\n );\n }\n\n}\n\nexport default @injectIntl\nclass Search extends React.PureComponent {\n\n static contextTypes = {\n router: PropTypes.object.isRequired,\n };\n\n static propTypes = {\n value: PropTypes.string.isRequired,\n submitted: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onClear: PropTypes.func.isRequired,\n onShow: PropTypes.func.isRequired,\n openInRoute: PropTypes.bool,\n intl: PropTypes.object.isRequired,\n singleColumn: PropTypes.bool,\n };\n\n state = {\n expanded: false,\n };\n\n setRef = c => {\n this.searchForm = c;\n }\n\n handleChange = (e) => {\n this.props.onChange(e.target.value);\n }\n\n handleClear = (e) => {\n e.preventDefault();\n\n if (this.props.value.length > 0 || this.props.submitted) {\n this.props.onClear();\n }\n }\n\n handleKeyUp = (e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n\n this.props.onSubmit();\n\n if (this.props.openInRoute) {\n this.context.router.history.push('/search');\n }\n } else if (e.key === 'Escape') {\n document.querySelector('.ui').parentElement.focus();\n }\n }\n\n handleFocus = () => {\n this.setState({ expanded: true });\n this.props.onShow();\n\n if (this.searchForm && !this.props.singleColumn) {\n const { left, right } = this.searchForm.getBoundingClientRect();\n if (left < 0 || right > (window.innerWidth || document.documentElement.clientWidth)) {\n this.searchForm.scrollIntoView();\n }\n }\n }\n\n handleBlur = () => {\n this.setState({ expanded: false });\n }\n\n render () {\n const { intl, value, submitted } = this.props;\n const { expanded } = this.state;\n const hasValue = value.length > 0 || submitted;\n\n return (\n <div className='search'>\n <label>\n <span style={{ display: 'none' }}>{intl.formatMessage(messages.placeholder)}</span>\n <input\n ref={this.setRef}\n className='search__input'\n type='text'\n placeholder={intl.formatMessage(messages.placeholder)}\n value={value}\n onChange={this.handleChange}\n onKeyUp={this.handleKeyUp}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n </label>\n\n <div role='button' tabIndex='0' className='search__icon' onClick={this.handleClear}>\n <Icon id='search' className={hasValue ? '' : 'active'} />\n <Icon id='times-circle' className={hasValue ? 'active' : ''} aria-label={intl.formatMessage(messages.placeholder)} />\n </div>\n\n <Overlay show={expanded && !hasValue} placement='bottom' target={this}>\n <SearchPopout />\n </Overlay>\n </div>\n );\n }\n\n}\n","import { connect } from 'react-redux';\nimport {\n changeSearch,\n clearSearch,\n submitSearch,\n showSearch,\n} from '../../../actions/search';\nimport Search from '../components/search';\n\nconst mapStateToProps = state => ({\n value: state.getIn(['search', 'value']),\n submitted: state.getIn(['search', 'submitted']),\n});\n\nconst mapDispatchToProps = dispatch => ({\n\n onChange (value) {\n dispatch(changeSearch(value));\n },\n\n onClear () {\n dispatch(clearSearch());\n },\n\n onSubmit () {\n dispatch(submitSearch());\n },\n\n onShow () {\n dispatch(showSearch());\n },\n\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Search);\n","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 logout: { id: 'navigation_bar.logout', defaultMessage: 'Logout' },\n bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },\n});\n\nexport default @injectIntl\nclass ActionBar extends React.PureComponent {\n\n static propTypes = {\n account: ImmutablePropTypes.map.isRequired,\n onLogout: PropTypes.func.isRequired,\n intl: PropTypes.object.isRequired,\n };\n\n handleLogout = () => {\n this.props.onLogout();\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.bookmarks), to: '/bookmarks' });\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 menu.push(null);\n menu.push({ text: intl.formatMessage(messages.logout), action: this.handleLogout });\n\n return (\n <div className='compose__action-bar'>\n <div className='compose__action-bar-dropdown'>\n <DropdownMenuContainer items={menu} icon='chevron-down' size={16} 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 onLogout: PropTypes.func.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={48} />\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} onLogout={this.props.onLogout} />\n </div>\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 { FormattedMessage } from 'react-intl';\nimport Icon from 'flavours/glitch/components/icon';\nimport { me } from 'flavours/glitch/util/initial_state';\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 case 'poll':\n if (me === account.get('id')) {\n return (\n <FormattedMessage\n id='notification.own_poll'\n defaultMessage='Your poll has ended'\n />\n );\n } else {\n return (\n <FormattedMessage\n id='notification.poll'\n defaultMessage='A poll you have voted in has ended'\n />\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 <Icon\n className={`status__prepend-icon ${type === 'favourite' ? 'star-icon' : ''}`}\n id={type === 'favourite' ? 'star' : (type === 'featured' ? 'thumb-tack' : (type === 'poll' ? 'tasks' : 'retweet'))}\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 AvatarComposite from './avatar_composite';\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 otherAccounts: ImmutablePropTypes.list,\n };\n\n // Handles clicks on account name/image\n handleClick = (id, e) => {\n const { parseClick } = this.props;\n parseClick(e, `/accounts/${id}`);\n }\n\n handleAccountClick = (e) => {\n const { status } = this.props;\n this.handleClick(status.getIn(['account', 'id']), e);\n }\n\n // Rendering.\n render () {\n const {\n status,\n friend,\n otherAccounts,\n } = this.props;\n\n const account = status.get('account');\n\n let statusAvatar;\n if (otherAccounts && otherAccounts.size > 0) {\n statusAvatar = <AvatarComposite accounts={otherAccounts} size={48} onAccountClick={this.handleClick} />;\n } else if (friend === undefined || friend === null) {\n statusAvatar = <Avatar account={account} size={48} />;\n } else {\n statusAvatar = <AvatarOverlay account={account} friend={friend} />;\n }\n\n if (!otherAccounts) {\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 rel='noopener noreferrer'\n >\n {statusAvatar}\n </a>\n <a\n href={account.get('url')}\n target='_blank'\n className='status__display-name'\n onClick={this.handleAccountClick}\n rel='noopener noreferrer'\n >\n <DisplayName account={account} others={otherAccounts} />\n </a>\n </div>\n );\n } else {\n // This is a DM conversation\n return (\n <div className='status__info__account'>\n <span className='status__avatar'>\n {statusAvatar}\n </span>\n\n <span className='status__display-name'>\n <DisplayName account={account} others={otherAccounts} onAccountClick={this.handleClick} />\n </span>\n </div>\n );\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';\nimport Icon from 'flavours/glitch/components/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 inReplyTo: { id: 'status.in_reply_to', defaultMessage: 'This toot is a reply' },\n previewCard: { id: 'status.has_preview_card', defaultMessage: 'Features an attached preview card' },\n pictures: { id: 'status.has_pictures', defaultMessage: 'Features attached pictures' },\n poll: { id: 'status.is_poll', defaultMessage: 'This toot is a poll' },\n video: { id: 'status.has_video', defaultMessage: 'Features attached videos' },\n audio: { id: 'status.has_audio', defaultMessage: 'Features attached audio files' },\n localOnly: { id: 'status.local_only', defaultMessage: 'Only visible from your instance' },\n});\n\nexport default @injectIntl\nclass 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 directMessage: 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 mediaIconTitleText () {\n const { intl, mediaIcon } = this.props;\n\n switch (mediaIcon) {\n case 'link':\n return intl.formatMessage(messages.previewCard);\n case 'picture-o':\n return intl.formatMessage(messages.pictures);\n case 'tasks':\n return intl.formatMessage(messages.poll);\n case 'video-camera':\n return intl.formatMessage(messages.video);\n case 'music':\n return intl.formatMessage(messages.audio);\n }\n }\n\n // Rendering.\n render () {\n const {\n status,\n mediaIcon,\n collapsible,\n collapsed,\n directMessage,\n intl,\n } = this.props;\n\n return (\n <div className='status__info__icons'>\n {status.get('in_reply_to_id', null) !== null ? (\n <Icon\n className='status__reply-icon'\n fixedWidth\n id='comment'\n aria-hidden='true'\n title={intl.formatMessage(messages.inReplyTo)}\n />\n ) : null}\n {status.get('local_only') &&\n <Icon\n fixedWidth\n id='home'\n aria-hidden='true'\n title={intl.formatMessage(messages.localOnly)}\n />}\n {mediaIcon ? (\n <Icon\n fixedWidth\n className='status__media-icon'\n id={mediaIcon}\n aria-hidden='true'\n title={this.mediaIconTitleText()}\n />\n ) : null}\n {!directMessage && <VisibilityIcon visibility={status.get('visibility')} />}\n {collapsible ? (\n <IconButton\n className='status__collapse-button'\n animate\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 hide: { id: 'status.hide', defaultMessage: 'Hide toot' },\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 onBookmark: PropTypes.func,\n onFilter: PropTypes.func,\n withDismiss: PropTypes.bool,\n showReplyCount: PropTypes.bool,\n directMessage: 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);\n }\n\n handleOpen = () => {\n let state = {...this.context.router.history.location.state};\n if (state.mastodonModalOpen) {\n this.context.router.history.replace(`/statuses/${this.props.status.get('id')}`, { mastodonBackSteps: (state.mastodonBackSteps || 0) + 1 });\n } else {\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/statuses/${this.props.status.get('id')}`, state);\n }\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 handleFilterClick = () => {\n this.props.onFilter();\n }\n\n render () {\n const { status, intl, withDismiss, showReplyCount, directMessage } = 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) && publicStatus && (\n <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.share)} icon='share-alt' onClick={this.handleShareClick} />\n );\n\n const filterButton = status.get('filtered') && (\n <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.hide)} icon='eye' onClick={this.handleFilterClick} />\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 {!directMessage && [\n <IconButton key='reblog-button' 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 key='favourite-button' 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 key='bookmark-button' 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 filterButton,\n <div key='dropdown-button' 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\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, Audio } 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';\nimport PollContainer from 'flavours/glitch/containers/poll_container';\nimport { displayMedia } from 'flavours/glitch/util/initial_state';\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\nexport const defaultMediaVisibility = (status, settings) => {\n if (!status) {\n return undefined;\n }\n\n if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') {\n status = status.get('reblog');\n }\n\n if (settings.getIn(['media', 'reveal_behind_cw']) && !!status.get('spoiler_text')) {\n return true;\n }\n\n return (displayMedia !== 'hide_all' && !status.get('sensitive') || displayMedia === 'show_all');\n}\n\nexport default @injectIntl\nclass 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 otherAccounts: ImmutablePropTypes.list,\n account: ImmutablePropTypes.map,\n onReply: PropTypes.func,\n onFavourite: PropTypes.func,\n onReblog: PropTypes.func,\n onBookmark: 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 unread: 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 onClick: PropTypes.func,\n };\n\n state = {\n isCollapsed: false,\n autoCollapsed: false,\n isExpanded: undefined,\n showMedia: undefined,\n statusId: undefined,\n revealBehindCW: undefined,\n showCard: false,\n forceFilter: 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 'muted',\n 'collapse',\n 'notification',\n 'hidden',\n 'expanded',\n ]\n\n updateOnStates = [\n 'isExpanded',\n 'isCollapsed',\n 'showMedia',\n 'forceFilter',\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 if (nextProps.status && nextProps.status.get('id') !== prevState.statusId) {\n update.showMedia = defaultMediaVisibility(nextProps.status, nextProps.settings);\n update.statusId = nextProps.status.get('id');\n updated = true;\n }\n\n if (nextProps.settings.getIn(['media', 'reveal_behind_cw']) !== prevState.revealBehindCW) {\n update.revealBehindCW = nextProps.settings.getIn(['media', 'reveal_behind_cw']);\n if (update.revealBehindCW) {\n update.showMedia = defaultMediaVisibility(nextProps.status, nextProps.settings);\n }\n updated = true;\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 // Hack to fix timeline jumps when a preview card is fetched\n this.setState({\n showCard: !this.props.muted && !this.props.hidden && this.props.status && this.props.status.get('card') && this.props.settings.get('inline_preview_cards'),\n });\n }\n\n // Hack to fix timeline jumps on second rendering when auto-collapsing\n // or on subsequent rendering when a preview card has been fetched\n getSnapshotBeforeUpdate (prevProps, prevState) {\n if (!this.props.getScrollPosition) return null;\n\n const { muted, hidden, status, settings } = this.props;\n\n const doShowCard = !muted && !hidden && status && status.get('card') && settings.get('inline_preview_cards');\n if (this.state.autoCollapsed || (doShowCard && !this.state.showCard)) {\n if (doShowCard) this.setState({ showCard: true });\n if (this.state.autoCollapsed) this.setState({ autoCollapsed: false });\n return this.props.getScrollPosition();\n } else {\n return null;\n }\n }\n\n componentDidUpdate (prevProps, prevState, snapshot) {\n if (snapshot !== null && this.props.updateScrollBottom && this.node.offsetTop < snapshot.top) {\n this.props.updateScrollBottom(snapshot.height - snapshot.top);\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\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 if (this.props.onClick) {\n this.props.onClick();\n return;\n } else {\n if (destination === undefined) {\n destination = `/statuses/${\n status.getIn(['reblog', 'id'], status.get('id'))\n }`;\n }\n let state = {...router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n router.history.push(destination, state);\n }\n e.preventDefault();\n }\n }\n\n handleToggleMediaVisibility = () => {\n this.setState({ showMedia: !this.state.showMedia });\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 let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/accounts/${id}`, state);\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 handleHotkeyOpenMedia = e => {\n const { status, onOpenMedia, onOpenVideo } = this.props;\n\n e.preventDefault();\n\n if (status.get('media_attachments').size > 0) {\n if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {\n // TODO: toggle play/paused?\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n onOpenVideo(status.getIn(['media_attachments', 0]), 0);\n } else {\n onOpenMedia(status.get('media_attachments'), 0);\n }\n }\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 handleHotkeyBookmark = e => {\n this.props.onBookmark(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 let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/statuses/${this.props.status.get('id')}`, state);\n }\n\n handleHotkeyOpenProfile = () => {\n let state = {...this.context.router.history.location.state};\n state.mastodonBackSteps = (state.mastodonBackSteps || 0) + 1;\n this.context.router.history.push(`/accounts/${this.props.status.getIn(['account', 'id'])}`, state);\n }\n\n 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 handleHotkeyCollapse = e => {\n if (!this.props.settings.getIn(['collapsed', 'enabled']))\n return;\n\n this.setCollapsed(!this.state.isCollapsed);\n }\n\n handleHotkeyToggleSensitive = () => {\n this.handleToggleMediaVisibility();\n }\n\n handleUnfilterClick = e => {\n const { onUnfilter, status } = this.props;\n onUnfilter(status.get('reblog') ? status.get('reblog') : status, () => this.setState({ forceFilter: false }));\n }\n\n handleFilterClick = () => {\n this.setState({ forceFilter: true });\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='video-player' style={{ height: '110px' }} />;\n }\n\n renderLoadingAudioPlayer () {\n return <div className='audio-player' 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 otherAccounts,\n settings,\n collapsed,\n muted,\n prepend,\n intersectionObserverWrapper,\n onOpenVideo,\n onOpenMedia,\n notification,\n hidden,\n unread,\n featured,\n ...other\n } = this.props;\n const { isExpanded, isCollapsed, forceFilter } = 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 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 bookmark: this.handleHotkeyBookmark,\n toggleCollapse: this.handleHotkeyCollapse,\n toggleSensitive: this.handleHotkeyToggleSensitive,\n openMedia: this.handleHotkeyOpenMedia,\n };\n\n if (hidden) {\n return (\n <HotKeys handlers={handlers}>\n <div ref={this.handleRef} className='status focusable' tabIndex='0'>\n {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])}\n {' '}\n {status.get('content')}\n </div>\n </HotKeys>\n );\n }\n\n const filtered = (status.get('filtered') || status.getIn(['reblog', 'filtered'])) && settings.get('filtering_behavior') !== 'content_warning';\n if (forceFilter === undefined ? filtered : forceFilter) {\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 {settings.get('filtering_behavior') !== 'upstream' && ' '}\n {settings.get('filtering_behavior') !== 'upstream' && (\n <button className='status__wrapper--filtered__button' onClick={this.handleUnfilterClick}>\n <FormattedMessage id='status.show_filter_reason' defaultMessage='(show why)' />\n </button>\n )}\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 (status.get('poll')) {\n media = <PollContainer pollId={status.get('poll')} />;\n mediaIcon = 'tasks';\n } else 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']) === 'audio') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} >\n {Component => (\n <Component\n src={attachment.get('url')}\n alt={attachment.get('description')}\n duration={attachment.getIn(['meta', 'original', 'duration'], 0)}\n peaks={[0]}\n height={70}\n />\n )}\n </Bundle>\n );\n mediaIcon = 'music';\n } else if (attachments.getIn([0, 'type']) === 'video') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >\n {Component => (<Component\n preview={attachment.get('preview_url')}\n blurhash={attachment.get('blurhash')}\n src={attachment.get('url')}\n alt={attachment.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 visible={this.state.showMedia}\n onToggleVisibility={this.handleToggleMediaVisibility}\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 visible={this.state.showMedia}\n onToggleVisibility={this.handleToggleMediaVisibility}\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 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 read: unread === false,\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 otherAccounts={otherAccounts}\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 directMessage={!!otherAccounts}\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 tagLinks={settings.get('tag_misleading_links')}\n rewriteMentions={settings.get('rewrite_mentions')}\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 directMessage={!!otherAccounts}\n onFilter={this.handleFilterClick}\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 ImmutablePropTypes from 'react-immutable-proptypes';\nimport { connect } from 'react-redux';\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 bookmark: { id: 'status.bookmark', defaultMessage: 'Bookmark' },\n removeBookmark: { id: 'status.remove_bookmark', defaultMessage: 'Remove 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 blockDomain: { id: 'account.block_domain', defaultMessage: 'Block domain {domain}' },\n unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' },\n unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },\n unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },\n});\n\nconst 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\nconst mapStateToProps = (state, { status }) => ({\n relationship: state.getIn(['relationships', status.getIn(['account', 'id'])]),\n});\n\nexport default @connect(mapStateToProps)\n@injectIntl\nclass StatusActionBar extends ImmutablePureComponent {\n\n static contextTypes = {\n router: PropTypes.object,\n };\n\n static propTypes = {\n status: ImmutablePropTypes.map.isRequired,\n relationship: ImmutablePropTypes.map,\n onReply: PropTypes.func,\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 onUnmute: PropTypes.func,\n onBlock: PropTypes.func,\n onUnblock: PropTypes.func,\n onBlockDomain: PropTypes.func,\n onUnblockDomain: 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 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 'relationship',\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 handleBookmarkClick = () => {\n this.props.onBookmark(this.props.status);\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 const { status, relationship, onMute, onUnmute } = this.props;\n const account = status.get('account');\n\n if (relationship && relationship.get('muting')) {\n onUnmute(account);\n } else {\n onMute(account);\n }\n }\n\n handleBlockClick = () => {\n const { status, relationship, onBlock, onUnblock } = this.props;\n const account = status.get('account');\n\n if (relationship && relationship.get('blocking')) {\n onUnblock(account);\n } else {\n onBlock(status);\n }\n }\n\n handleBlockDomain = () => {\n const { status, onBlockDomain } = this.props;\n const account = status.get('account');\n\n onBlockDomain(account.get('acct').split('@')[1]);\n }\n\n handleUnblockDomain = () => {\n const { status, onUnblockDomain } = this.props;\n const account = status.get('account');\n\n onUnblockDomain(account.get('acct').split('@')[1]);\n }\n\n 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, relationship, 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 const account = status.get('account');\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({ text: intl.formatMessage(status.get('bookmarked') ? messages.removeBookmark : messages.bookmark), action: this.handleBookmarkClick });\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: account.get('username') }), action: this.handleMentionClick });\n menu.push({ text: intl.formatMessage(messages.direct, { name: account.get('username') }), action: this.handleDirectClick });\n menu.push(null);\n\n if (relationship && relationship.get('muting')) {\n menu.push({ text: intl.formatMessage(messages.unmute, { name: account.get('username') }), action: this.handleMuteClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.mute, { name: account.get('username') }), action: this.handleMuteClick });\n }\n\n if (relationship && relationship.get('blocking')) {\n menu.push({ text: intl.formatMessage(messages.unblock, { name: account.get('username') }), action: this.handleBlockClick });\n } else {\n menu.push({ text: intl.formatMessage(messages.block, { name: account.get('username') }), action: this.handleBlockClick });\n }\n\n menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.handleReport });\n\n if (account.get('acct') !== account.get('username')) {\n const domain = account.get('acct').split('@')[1];\n\n menu.push(null);\n\n if (relationship && relationship.get('domain_blocking')) {\n menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.handleUnblockDomain });\n } else {\n menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.handleBlockDomain });\n }\n }\n\n if (isStaff) {\n menu.push(null);\n menu.push({ text: intl.formatMessage(messages.admin_account, { name: account.get('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) && publicStatus && (\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, Audio } from '../features/ui/util/async-components';\nimport { HotKeys } from 'react-hotkeys';\nimport classNames from 'classnames';\nimport Icon from 'mastodon/components/icon';\nimport { displayMedia } from '../initial_state';\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 const defaultMediaVisibility = (status) => {\n if (!status) {\n return undefined;\n }\n\n if (status.get('reblog', null) !== null && typeof status.get('reblog') === 'object') {\n status = status.get('reblog');\n }\n\n return (displayMedia !== 'hide_all' && !status.get('sensitive') || displayMedia === 'show_all');\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 onToggleCollapsed: 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 state = {\n showMedia: defaultMediaVisibility(this.props.status),\n statusId: undefined,\n };\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.status && nextProps.status.get('id') !== prevState.statusId) {\n return {\n showMedia: defaultMediaVisibility(nextProps.status),\n statusId: nextProps.status.get('id'),\n };\n } else {\n return null;\n }\n }\n\n handleToggleMediaVisibility = () => {\n this.setState({ showMedia: !this.state.showMedia });\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 handleExpandClick = (e) => {\n if (this.props.onClick) {\n this.props.onClick();\n return;\n }\n\n if (e.button === 0) {\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\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 handleCollapsedToggle = isCollapsed => {\n this.props.onToggleCollapsed(this._properStatus(), isCollapsed);\n }\n\n renderLoadingMediaGallery () {\n return <div className='media-gallery' style={{ height: '110px' }} />;\n }\n\n renderLoadingVideoPlayer () {\n return <div className='video-player' style={{ height: '110px' }} />;\n }\n\n renderLoadingAudioPlayer () {\n return <div className='audio-player' style={{ height: '110px' }} />;\n }\n\n handleOpenVideo = (media, startTime) => {\n this.props.onOpenVideo(media, startTime);\n }\n\n handleHotkeyOpenMedia = e => {\n const { onOpenMedia, onOpenVideo } = this.props;\n const status = this._properStatus();\n\n e.preventDefault();\n\n if (status.get('media_attachments').size > 0) {\n if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {\n // TODO: toggle play/paused?\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n onOpenVideo(status.getIn(['media_attachments', 0]), 0);\n } else {\n onOpenMedia(status.get('media_attachments'), 0);\n }\n }\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 handleHotkeyToggleSensitive = () => {\n this.handleToggleMediaVisibility();\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 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 toggleSensitive: this.handleHotkeyToggleSensitive,\n openMedia: this.handleHotkeyOpenMedia,\n };\n\n if (hidden) {\n return (\n <HotKeys handlers={handlers}>\n <div ref={this.handleRef} className={classNames('status__wrapper', { focusable: !this.props.muted })} tabIndex='0'>\n {status.getIn(['account', 'display_name']) || status.getIn(['account', 'username'])}\n {status.get('content')}\n </div>\n </HotKeys>\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) {\n media = (\n <AttachmentList\n compact\n media={status.get('media_attachments')}\n />\n );\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'audio') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} >\n {Component => (\n <Component\n src={attachment.get('url')}\n alt={attachment.get('description')}\n duration={attachment.getIn(['meta', 'original', 'duration'], 0)}\n peaks={[0]}\n height={70}\n />\n )}\n </Bundle>\n );\n } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {\n const attachment = status.getIn(['media_attachments', 0]);\n\n media = (\n <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >\n {Component => (\n <Component\n preview={attachment.get('preview_url')}\n blurhash={attachment.get('blurhash')}\n src={attachment.get('url')}\n alt={attachment.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 visible={this.state.showMedia}\n onToggleVisibility={this.handleToggleMediaVisibility}\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 visible={this.state.showMedia}\n onToggleVisibility={this.handleToggleMediaVisibility}\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 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)} 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__expand' onClick={this.handleExpandClick} role='presentation' />\n <div className='status__info'>\n <a href={status.get('url')} className='status__relative-time' target='_blank' rel='noopener noreferrer'><RelativeTimestamp timestamp={status.get('created_at')} /></a>\n\n <a onClick={this.handleAccountClick} data-id={status.getIn(['account', 'id'])} href={status.getIn(['account', 'url'])} title={status.getIn(['account', 'acct'])} className='status__display-name' target='_blank' rel='noopener noreferrer'>\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')} showThread={showThread} onExpandedToggle={this.handleExpandedToggle} collapsable onCollapsedToggle={this.handleCollapsedToggle} />\n\n {media}\n\n <StatusActionBar status={status} account={account} {...other} />\n </div>\n </div>\n </HotKeys>\n );\n }\n\n}\n","var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nfunction _objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n}\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Route from \"./Route\";\nimport Link from \"./Link\";\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\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; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\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 var isActive = !!(getIsActive ? getIsActive(match, location) : match);\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.defaultProps = {\n activeClassName: \"active\",\n \"aria-current\": \"page\"\n};\nexport default NavLink;"],"sourceRoot":""}