summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.6c972d84b60f601b01f8.js.map
blob: 2e5c2bd679ef4194b990b4c913249af979cd1b6d (plain)
1
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/components/user_avatar/user_avatar.vue?4ccd","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?e43c","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/services/html_converter/utility.service.js","webpack:///./src/components/hashtag_link/hashtag_link.js","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/hashtag_link/hashtag_link.vue","webpack:///./src/components/hashtag_link/hashtag_link.vue?de91","webpack:///./src/components/rich_content/rich_content.jsx","webpack:///./src/services/html_converter/html_tree_converter.service.js","webpack:///./src/services/html_converter/html_line_converter.service.js","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue?5301","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue?37a8","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?203c","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?0cf1","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.vue?e532","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.vue?7b40","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.vue?0025","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?441e","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?755c","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?7eeb","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.vue?5922","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?ef51","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?4f92","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?de09","webpack:///./src/components/status_body/status_body.js","webpack:///./src/components/status_body/status_body.vue","webpack:///./src/components/status_body/status_body.vue?d985","webpack:///./src/components/status_content/status_content.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/status_content/status_content.vue?5fe0","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.vue?fd09","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.vue?3a36","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/media_upload/media_upload.vue?aa26","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.vue?6ca3","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/post_status_form/post_status_form.vue?bd14","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/components/flash/flash.vue?dda4","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?8eb5","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?c261","webpack:///src/components/list/list.vue","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?c7b8","webpack:///src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?d59e","webpack:///./src/components/select/select.js","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.vue?a973","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/i18n/messages.js","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/components/mentions_line/mentions_line.js","webpack:///./src/components/mentions_line/mentions_line.vue","webpack:///./src/components/mentions_line/mentions_line.vue?704f","webpack:///src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?6be4","webpack:///./src/services/locale/locale.service.js","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/export_import/export_import.js","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/follow_button/follow_button.vue?72f1","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?063a","webpack:///./src/components/mention_link/mention_link.js","webpack:///./src/components/mention_link/mention_link.vue","webpack:///./src/components/mention_link/mention_link.vue?efb5","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7538","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.vue?9a59","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?4b46","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.vue?e3d4","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.vue?b437","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?5ceb","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?5d60","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.scss?8486","webpack:///./src/components/timeline/timeline.scss","webpack:///./src/components/status/status.scss?412d","webpack:///./src/components/status/status.scss","webpack:///./src/components/reply_button/reply_button.vue?912e","webpack:///./src/components/reply_button/reply_button.vue?e387","webpack:///./src/components/favorite_button/favorite_button.vue?0184","webpack:///./src/components/favorite_button/favorite_button.vue?9b9b","webpack:///./src/components/react_button/react_button.vue?f6fc","webpack:///./src/components/react_button/react_button.vue?5317","webpack:///./src/components/popover/popover.vue?1bf1","webpack:///./src/components/popover/popover.vue?333e","webpack:///./src/components/retweet_button/retweet_button.vue?8eee","webpack:///./src/components/retweet_button/retweet_button.vue?ecd9","webpack:///./src/components/extra_buttons/extra_buttons.vue?2134","webpack:///./src/components/extra_buttons/extra_buttons.vue?bef5","webpack:///./src/components/post_status_form/post_status_form.vue?fd6e","webpack:///./src/components/post_status_form/post_status_form.vue?5887","webpack:///./src/components/media_upload/media_upload.vue?d613","webpack:///./src/components/media_upload/media_upload.vue?1e11","webpack:///./src/components/scope_selector/scope_selector.vue?baf6","webpack:///./src/components/scope_selector/scope_selector.vue?341e","webpack:///./src/components/emoji_input/emoji_input.vue?88c6","webpack:///./src/components/emoji_input/emoji_input.vue?c0d0","webpack:///./src/components/emoji_picker/emoji_picker.scss?a54d","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?3599","webpack:///./src/components/checkbox/checkbox.vue?bf55","webpack:///./src/components/poll/poll_form.vue?43b8","webpack:///./src/components/poll/poll_form.vue?f333","webpack:///./src/components/select/select.vue?4977","webpack:///./src/components/select/select.vue?b41f","webpack:///./src/components/attachment/attachment.vue?4fa7","webpack:///./src/components/attachment/attachment.vue?5971","webpack:///./src/components/still-image/still-image.vue?21db","webpack:///./src/components/still-image/still-image.vue?da13","webpack:///./src/components/flash/flash.vue?913d","webpack:///./src/components/flash/flash.vue?79e6","webpack:///./src/components/status_content/status_content.vue?2f26","webpack:///./src/components/status_content/status_content.vue?6841","webpack:///./src/components/poll/poll.vue?7318","webpack:///./src/components/poll/poll.vue?192f","webpack:///./src/components/mentions_line/mentions_line.scss?d754","webpack:///./src/components/mentions_line/mentions_line.scss","webpack:///./src/components/mention_link/mention_link.scss?5a30","webpack:///./src/components/mention_link/mention_link.scss","webpack:///./src/components/hashtag_link/hashtag_link.scss?65a5","webpack:///./src/components/hashtag_link/hashtag_link.scss","webpack:///./src/components/gallery/gallery.vue?ea2c","webpack:///./src/components/gallery/gallery.vue?759e","webpack:///./src/components/status_body/status_body.scss?7309","webpack:///./src/components/status_body/status_body.scss","webpack:///./src/components/link-preview/link-preview.vue?95df","webpack:///./src/components/link-preview/link-preview.vue?40b7","webpack:///./src/components/user_card/user_card.vue?1920","webpack:///./src/components/user_card/user_card.vue?a3c0","webpack:///./src/components/user_avatar/user_avatar.vue?aac8","webpack:///./src/components/user_avatar/user_avatar.vue?6951","webpack:///./src/components/remote_follow/remote_follow.vue?44cd","webpack:///./src/components/remote_follow/remote_follow.vue?2689","webpack:///./src/components/moderation_tools/moderation_tools.vue?3b42","webpack:///./src/components/moderation_tools/moderation_tools.vue?870b","webpack:///./src/components/dialog_modal/dialog_modal.vue?66ca","webpack:///./src/components/dialog_modal/dialog_modal.vue?e653","webpack:///./src/components/account_actions/account_actions.vue?755f","webpack:///./src/components/account_actions/account_actions.vue?1dab","webpack:///./src/components/avatar_list/avatar_list.vue?83d0","webpack:///./src/components/avatar_list/avatar_list.vue?4546","webpack:///./src/components/status_popover/status_popover.vue?91c2","webpack:///./src/components/status_popover/status_popover.vue?2f11","webpack:///./src/components/user_list_popover/user_list_popover.vue?2010","webpack:///./src/components/user_list_popover/user_list_popover.vue?2f9d","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?bab1","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?6021","webpack:///./src/components/conversation/conversation.vue?e1e5","webpack:///./src/components/conversation/conversation.vue?e01a","webpack:///./src/components/timeline_menu/timeline_menu.vue?c2cd","webpack:///./src/components/timeline_menu/timeline_menu.vue?9147","webpack:///./src/components/timeline/timeline_quick_settings.vue?d45e","webpack:///./src/components/timeline/timeline_quick_settings.vue?0ad2","webpack:///./src/components/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/notification/notification.scss?2458","webpack:///./src/components/notification/notification.scss","webpack:///./src/components/notifications/notification_filters.vue?e46d","webpack:///./src/components/notifications/notification_filters.vue?735e","webpack:///./src/components/chat_list/chat_list.vue?81f0","webpack:///./src/components/chat_list/chat_list.vue?e459","webpack:///./src/components/chat_list_item/chat_list_item.vue?5950","webpack:///./src/components/chat_list_item/chat_list_item.vue?c379","webpack:///./src/components/chat_title/chat_title.vue?5034","webpack:///./src/components/chat_title/chat_title.vue?11d1","webpack:///./src/components/chat_new/chat_new.vue?b3ff","webpack:///./src/components/chat_new/chat_new.vue?4b23","webpack:///./src/components/basic_user_card/basic_user_card.vue?ba41","webpack:///./src/components/basic_user_card/basic_user_card.vue?0481","webpack:///./src/components/list/list.vue?17ca","webpack:///./src/components/list/list.vue?e2c8","webpack:///./src/components/chat/chat.vue?445e","webpack:///./src/components/chat/chat.vue?559d","webpack:///./src/components/chat_message/chat_message.vue?7fac","webpack:///./src/components/chat_message/chat_message.vue?9c38","webpack:///./src/components/user_profile/user_profile.vue?7fb4","webpack:///./src/components/user_profile/user_profile.vue?899c","webpack:///./src/components/follow_card/follow_card.vue?5688","webpack:///./src/components/follow_card/follow_card.vue?ad43","webpack:///./src/components/search/search.vue?9825","webpack:///./src/components/search/search.vue?e198","webpack:///./src/components/registration/registration.vue?d518","webpack:///./src/components/registration/registration.vue?fd73","webpack:///./src/components/password_reset/password_reset.vue?d048","webpack:///./src/components/password_reset/password_reset.vue?5ec5","webpack:///./src/components/follow_request_card/follow_request_card.vue?c9e7","webpack:///./src/components/follow_request_card/follow_request_card.vue?b0bb","webpack:///./src/components/login_form/login_form.vue?99e8","webpack:///./src/components/login_form/login_form.vue?9c6d","webpack:///./src/components/shout_panel/shout_panel.vue?6b04","webpack:///./src/components/shout_panel/shout_panel.vue?b9c1","webpack:///./src/components/who_to_follow/who_to_follow.vue?6f47","webpack:///./src/components/who_to_follow/who_to_follow.vue?4eb6","webpack:///./src/components/about/about.vue?47a2","webpack:///./src/components/about/about.vue?7cdd","webpack:///./src/components/features_panel/features_panel.vue?b8ab","webpack:///./src/components/features_panel/features_panel.vue?867d","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7e97","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7643","webpack:///./src/components/staff_panel/staff_panel.vue?020d","webpack:///./src/components/staff_panel/staff_panel.vue?a8d5","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?eece","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?6ed6","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?7d1a","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?f8d3","webpack:///./src/App.scss?b70d","webpack:///./src/App.scss","webpack:///./src/components/user_panel/user_panel.vue?e12b","webpack:///./src/components/user_panel/user_panel.vue?63b4","webpack:///./src/components/nav_panel/nav_panel.vue?7be9","webpack:///./src/components/nav_panel/nav_panel.vue?be5f","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?2f6b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?1274","webpack:///./src/components/settings_modal/settings_modal.scss?e42a","webpack:///./src/components/settings_modal/settings_modal.scss","webpack:///./src/components/modal/modal.vue?a37f","webpack:///./src/components/modal/modal.vue?328d","webpack:///./src/components/panel_loading/panel_loading.vue?b42a","webpack:///./src/components/panel_loading/panel_loading.vue?0d54","webpack:///./src/components/async_component_error/async_component_error.vue?82c7","webpack:///./src/components/async_component_error/async_component_error.vue?e57d","webpack:///./src/components/media_modal/media_modal.vue?2930","webpack:///./src/components/media_modal/media_modal.vue?1d79","webpack:///./src/components/side_drawer/side_drawer.vue?472d","webpack:///./src/components/side_drawer/side_drawer.vue?fcf9","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?1868","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7cf2","webpack:///./src/components/mobile_nav/mobile_nav.vue?46cb","webpack:///./src/components/mobile_nav/mobile_nav.vue?9a0e","webpack:///./src/components/desktop_nav/desktop_nav.scss?1471","webpack:///./src/components/desktop_nav/desktop_nav.scss","webpack:///./src/components/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?7889","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?1af4","webpack:///./src/components/post_status_modal/post_status_modal.vue?892e","webpack:///./src/components/post_status_modal/post_status_modal.vue?b34c","webpack:///./src/components/global_notice_list/global_notice_list.vue?353b","webpack:///./src/components/global_notice_list/global_notice_list.vue?3d13","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/conversation/conversation.vue?3eac","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?a288","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.vue?2a41","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.vue?f26c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?3866","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_timeline/public_timeline.vue?bba0","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?0d56","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.vue?0810","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.vue?ee38","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?9b5f","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/conversation-page/conversation-page.vue?d63c","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.vue?d5b6","webpack:///src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/notifications/notification_filters.vue?8ba7","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?c881","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.vue?db62","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/dm_timeline/dm_timeline.vue?4177","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_title/chat_title.vue?144f","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue?a9cf","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.vue?3553","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list/chat_list.vue?4e2e","webpack:///src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?3398","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message/chat_message.vue?4dd5","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat/chat.vue?4822","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.vue?ac60","webpack:///./src/hocs/with_load_more/with_load_more.js","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/user_profile/user_profile.vue?36cf","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?6927","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?b424","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/components/password_reset/password_reset.vue?06cf","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?5d68","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?ba79","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/oauth_callback/oauth_callback.vue?99e7","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.vue?888c","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/components/mfa_form/recovery_form.vue?d5df","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?6c57","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.vue?493c","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue?4a17","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?3490","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.vue?5aa3","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?25e4","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.vue?4f64","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/about/about.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?7d04","webpack:///./src/components/about/about.vue","webpack:///./src/components/about/about.vue?7acf","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?5c98","webpack:///./src/boot/routes.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/user_panel/user_panel.vue?b455","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/nav_panel/nav_panel.vue?bdc9","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?3d0c","webpack:///src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?8f96","webpack:///src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?ad58","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?f1f8","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?20b7","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/media_modal/media_modal.vue?5170","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?e472","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?72a5","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue?ed4a","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/search_bar/search_bar.vue?b0f6","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/desktop_nav/desktop_nav.vue?7ebd","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?a037","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.vue?e267","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.vue?1547","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?0054","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","screen_name","acct","statusnet_profile_url","url","emoji","emojis","escape","display_name","name_html","name_unescaped","description","note","description_html","fields","fields_html","map","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","parseStatus","status","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","raw_html","content","text","summary","spoiler_text","statusnet_conversation_id","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","thread_muted","emoji_reactions","parent_visible","in_reply_to_status_id","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","retweeted_status","summary_raw_html","external_url","poll","options","title_html","title","pinned","is_post_verb","uri","match","qvitter_delete_notice","activity_type","isNsfw","statusnet_html","summary_html","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","reduce","errs","k","acc","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","async","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","isExternal","generateProfileLink","restrictedNicknames","complicated","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__vue_styles__","context","Component","_vm","_h","$createElement","_c","_self","staticClass","class","compact","betterShadow","attrs","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","destroyed","removeEventListener","on","ref","_t","_v","_e","style","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","icon","image","fileType","fileTypeService","fileMatchesSomeType","getTagName","getAttrs","innertag","substring","RegExp","trim","Array","from","matchAll","v","fromEntries","processTextForEmoji","buffer","textBuffer","char","found","shortcode","HashtagLink","required","default","link","generateTagLink","$router","open","domProps","_s","$event","preventDefault","Vue","component","html","handleLinks","greentext","render","h","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","closer","Tag","mentionsLinePadding","linkData","getLinkData","notifying","MENTIONS_LIMIT","renderMention","pass2","reverse","processItemReverse","renderHashtag","newChildren","textContent","stripTags","greentextHandle","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","convertHtmlToLines","string","every","cleanedString","DialogModal","darkOverlay","onCancel","Function","currentTarget","stopPropagation","library","add","faChevronDown","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","computed","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","dispatch","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","scopedSlots","_u","fn","$t","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faExternalLinkAlt","faEdit","followRequestInProgress","browserSupport","cssFilter","getters","findUser","classes","rounded","bordered","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","userHighlightType","highlight","set","mapGetters","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","RichContent","setProfileView","switcher","linkClicked","userProfileLink","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","hideUserStats","directives","rawName","expression","composing","model","callback","$$v","subscribing","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundPosition","backgroundColor","highlightClass","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","concat","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","getPreset","isV1","setPreset","faReply","ReplyButton","replying","faStar","faStarRegular","FavoriteButton","animated","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","indexOfFilterWord","indexOf","flat","_l","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","faCircleNotch","StatusPopover","allStatuses","statusId","Status","enter","UserListPopover","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","MentionLink","MentionsLine","unmuted","userExpanded","mediaPlaying","suspendable","headTailLinks","showReasonMutedThread","inConversation","repeaterClass","statusoid","userClass","deleted","repeaterStyle","userStyle","noHeading","generateUserProfileLink","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","mentionsLine","writtenSet","attn","hasMentionsLine","relationshipReblog","reasonsToMute","excusesNotToMute","inProfile","profileUserId","hideFilteredStatuses","hideStatus","virtualHidden","isFocused","focused","replyToName","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","watch","rect","scrollBy","num","filters","capitalize","str","charAt","toUpperCase","inlineExpanded","isPreview","highlighted","nativeOn","_f","expandable","staticStyle","replies","reply","emojiReactionsOnTimeline","loading","polls","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","querySelectorAll","clickedElement","checked","element","optionId","voters_count","$tc","faFile","faMusic","faImage","faLink","faPollH","showingTall","fullContent","showingLongSubject","expandingSubject","collapseMessageWithSubject","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","mounted","onParseReady","mention","handle","toggleShowMore","singleLine","hideAttachments","hideAttachmentsInConv","nsfwClickthrough","attachmentSize","maxThumbnails","galleryTypes","playVideosInModal","galleryAttachments","nonGalleryAttachments","Attachment","Poll","Gallery","LinkPreview","StatusBody","setMedia","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","stopGifs","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","onError","alt","referrerpolicy","BasicUserCard","CURRENT_VERSION","getLayersArray","parent","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","size","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","disabled","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","_k","keyCode","$set","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","attention","buildMentionsString","scope","copyMessageScope","postContentType","sensitiveByDefault","dropFiles","uploadingFiles","posting","newStatus","subject","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","animation","disableLockWarning","disableSubject","emojiPickerPlacement","placeholder","ctrlKey","shiftKey","altKey","metaKey","disableScopeSelector","postFormat","selected","disableSensitivityCheckbox","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faStop","faExclamationTriangle","Flash","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","closePlayer","log","faVideo","faPlayCircle","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","VideoAttachment","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","isSmall","fullwidth","useModal","openModal","toggleHidden","useOneClickNsfw","onImageLoad","naturalSizeLoad","_obj","allowPlay","thumb_url","oembedHTML","interval","localeDateString","time","refreshRelativeTimeObject","longFormat","autoUpdate","items","getKey","$slots","empty","prop","indeterminate","unstyled","showImmediately","noIdUpdate","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","languages","en","require","setLanguage","language","setLocaleMessage","exponent","units","toFixed","expanded","mentionsComputed","extraMentions","manyMentions","number","click","progress","specialLanguageCodes","localeService","internalToBrowserLocale","defaultState","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","streaming","alwaysShowNewPostButton","autohideFloatingPostButton","pauseOnUnfocused","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","useContainFit","virtualScrolling","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","del","actions","loadSettings","knownKeys","presentKeys","intersection","statusSummary","muteWord","desktopNotificationOpts","Notification","permission","desktopNotificationSilence","desktopNotification","child","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","label","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","controls","faAt","userScreenName","findUserByUrl","isYou","userName","userNameFullUi","userNameFull","highlightType","classnames","sizes","rows","lastAttachment","allButLastRow","onNaturalSizeLoad","rowStyle","itemsPerRow","itemStyle","row","total","getAspectRatio","flex","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","Image","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","imageUrl","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","renderOnlyFocused","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","slot","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","contents","tabs","classesTab","classesWrapper","fullHeight","renderSlot","getComponentProps","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","list","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","refInFor","suggest","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","panelBody","offsetBottom","setPlacement","overflowsBottom","hide","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","locals","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","messageArgs","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","getStaticEmoji","res","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","POSITIVE_INFINITY","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","obj","oldItem","new","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","promiseInterval","promiseCall","stopped","func","stop","fetchAndUpdate","timelineData","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","allowFollowingMove","fetchNotifications","readNotifsIds","notificationsFetcher","boundFetchAndUpdate","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","oldValue","predictedRelationship","relationships","loggingIn","lastLoginName","usersObject","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","setCurrentUser","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","logout","oauthApi","userToken","loginUser","requestPermission","getNotificationPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","setChannel","addMessage","setMessages","initializeShout","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","mediaViewer","currentIndex","activated","setCurrent","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","getChatById","chatList","chatListFetcher","openedChats","openedChatMessageServices","lastReadMessageId","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","path","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","lockerEls","disableBodyScroll","scrollBarGap","documentElement","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","unbind","idA","idB","isPage","statusComponent","originalStatusId","getConversationId","isExpanded","statusIndex","sortAndFilterConversation","irid","hiddenStyle","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","collapsable","pinnedStatusIdsObject","faUsers","faHome","TimelineMenuContent","privateMode","federating","TimelineMenu","isOpen","openMenu","blockOpen","timelineName","route","i18nkey","faFilter","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","faCog","Timeline","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","showLoadButton","loadButtonString","rootClasses","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","statusesToDisplay","statusesPerSide","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","PublicTimeline","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","faCheck","faUserPlus","faUser","faSuitcaseRolling","getUser","targetUser","targetUserProfileLink","needMute","toggleNotificationFilter","favicons","isImageLoaded","clearFaviconBadge","FaviconService","initFaviconService","favcanvas","favimg","crossOrigin","favcontext","clearRect","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","faviconWidth","PI","fill","Notifications","NotificationFilters","minimalMode","filterMode","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","minimal","tabModeDict","Interactions","onModeSwitch","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","messageEmojis","messagePreview","faSearch","faChevronLeft","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","List","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","author","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleLayoutChange","updateScrollableContainerHeight","handleResize","setChatLayout","unsetChatLayout","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","expand","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","inner","scrollable","diff","scrollTo","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","isScrollable","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","FollowCard","isMe","noFollowsYou","withLoadMore","select","destroy","childPropName","additionalPropNames","WrappedComponent","fetchEntries","$props","updateEntries","newEntries","$listeners","$scopedSlots","FollowerList","FriendList","UserProfile","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","TabSwitcher","viewing","Search","searchTerm","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","uses","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","accountApprovalRequired","signedIn","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","submit","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","$error","modifiers","$forceUpdate","resetPassword","passwordReset","throttled","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","identifier","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","is","authForm","MFARecoveryForm","MFATOTPForm","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","toInstanceReasonObject","instances","info","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","hostname","validateAuthenticatedRoute","to","routes","_to","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","ShoutPanel","OAuthCallback","UserPanel","faChevronUp","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","usersToFollow","toFollow","shuffled","WhoToFollowPanel","oldUser","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","observe","observable","functional","resetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","PanelLoading","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","peek","touchEventCoord","touches","screenX","screenY","vectorLength","sqrt","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","oldCoord","newCoord","delta","towardsDir","perpendicularDir","towardsPerpendicular","faChevronRight","MediaModal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","faSignInAlt","faSignOutAlt","faTachometerAlt","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","isPersistent","showNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","PostStatusModal","resettingForm","isFormVisible","_b","GlobalNoticeList","notices","closeNotice","windowWidth","DesktopNav","mobileActivePanel","updateMobileState","userBackground","instanceBackground","bgStyle","shoutboxPosition","isMobileLayout","sidebarAlign","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","localeCompare","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","VueRouter","scrollBehavior","_from","savedPosition","matched","App","currentLocale","use","Vuex","VueI18n","VueClickOutside","PortalVue","FontAwesomeIcon","FontAwesomeLayers","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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","file":"static/js/app.6c972d84b60f601b01f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"fec2056b00b4fa3921ba\",\"3\":\"bde677e65143f0cd1105\",\"4\":\"7077bff64d63355b1635\",\"5\":\"cfb722ac8eea8919f749\",\"6\":\"613b0d6b08c3f5f9ef13\",\"7\":\"199d52eb458f775043ed\",\"8\":\"7f96f22f9f65ad394684\",\"9\":\"f8fc2497d5f27a9df682\",\"10\":\"02ffbc25214f297f720f\",\"11\":\"c173c6036fb3af5581b3\",\"12\":\"5ca41e245bb40263bc7f\",\"13\":\"99621e6c47936075b44d\",\"14\":\"4e05e7c284119777ecc5\",\"15\":\"23f179cc3adc903bb537\",\"16\":\"43dd2c64dcb160dd96a6\",\"17\":\"d1deeeb81b7cab98b068\",\"18\":\"a4d5b399e228a6a45a7b\",\"19\":\"e513835c3274271258fa\",\"20\":\"683b112f4dcea887f707\",\"21\":\"b2844ccdcfc3c8191e8e\",\"22\":\"68c0a771d79e3383f5e8\",\"23\":\"0b6cdf4c9dc52c4291c0\",\"24\":\"5cfb87799bd882b933dd\",\"25\":\"8185e4d775cea9fe47e1\",\"26\":\"34ec129dd8f860ce4a8e\",\"27\":\"0f4a5145681cfb5a896e\",\"28\":\"75c01cd71372c39d5af8\",\"29\":\"b53cf1f3bcece005d78a\",\"30\":\"064c236fa83ac21c252f\",\"31\":\"226f7a848d733df38095\",\"32\":\"19ca50edbb4d711838dc\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"0778a6a864a1307a6c41\",\"3\":\"b2603a50868c68a1c192\",\"4\":\"31d6cfe0d16ae931b73c\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([597,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n  if (status.is_post_verb) {\n    return 'status'\n  }\n\n  if (status.retweeted_status) {\n    return 'retweet'\n  }\n\n  if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n      (typeof status.text === 'string' && status.text.match(/favorited/))) {\n    return 'favorite'\n  }\n\n  if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n    return 'deletion'\n  }\n\n  if (status.text.match(/started following/) || status.activity_type === 'follow') {\n    return 'follow'\n  }\n\n  return 'unknown'\n}\n\nexport const parseUser = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('acct')\n  // case for users in \"mentions\" property for statuses in MastoAPI\n  const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n  output.id = String(data.id)\n\n  if (masto) {\n    output.screen_name = data.acct\n    output.statusnet_profile_url = data.url\n\n    // There's nothing else to get\n    if (mastoShort) {\n      return output\n    }\n\n    output.emoji = data.emojis\n    output.name = escape(data.display_name)\n    output.name_html = output.name\n    output.name_unescaped = data.display_name\n\n    output.description = data.note\n    // TODO cleanup this shit, output.description is overriden with source data\n    output.description_html = data.note\n\n    output.fields = data.fields\n    output.fields_html = data.fields.map(field => {\n      return {\n        name: escape(field.name),\n        value: field.value\n      }\n    })\n    output.fields_text = data.fields.map(field => {\n      return {\n        name: unescape(field.name.replace(/<[^>]*>/g, '')),\n        value: unescape(field.value.replace(/<[^>]*>/g, ''))\n      }\n    })\n\n    // Utilize avatar_static for gif avatars?\n    output.profile_image_url = data.avatar\n    output.profile_image_url_original = data.avatar\n\n    // Same, utilize header_static?\n    output.cover_photo = data.header\n\n    output.friends_count = data.following_count\n\n    output.bot = data.bot\n\n    if (data.pleroma) {\n      const relationship = data.pleroma.relationship\n\n      output.background_image = data.pleroma.background_image\n      output.favicon = data.pleroma.favicon\n      output.token = data.pleroma.chat_token\n\n      if (relationship) {\n        output.relationship = relationship\n      }\n\n      output.allow_following_move = data.pleroma.allow_following_move\n\n      output.hide_follows = data.pleroma.hide_follows\n      output.hide_followers = data.pleroma.hide_followers\n      output.hide_follows_count = data.pleroma.hide_follows_count\n      output.hide_followers_count = data.pleroma.hide_followers_count\n\n      output.rights = {\n        moderator: data.pleroma.is_moderator,\n        admin: data.pleroma.is_admin\n      }\n      // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n      if (output.rights.admin) {\n        output.role = 'admin'\n      } else if (output.rights.moderator) {\n        output.role = 'moderator'\n      } else {\n        output.role = 'member'\n      }\n    }\n\n    if (data.source) {\n      output.description = data.source.note\n      output.default_scope = data.source.privacy\n      output.fields = data.source.fields\n      if (data.source.pleroma) {\n        output.no_rich_text = data.source.pleroma.no_rich_text\n        output.show_role = data.source.pleroma.show_role\n        output.discoverable = data.source.pleroma.discoverable\n      }\n    }\n\n    // TODO: handle is_local\n    output.is_local = !output.screen_name.includes('@')\n  } else {\n    output.screen_name = data.screen_name\n\n    output.name = data.name\n    output.name_html = data.name_html\n\n    output.description = data.description\n    output.description_html = data.description_html\n\n    output.profile_image_url = data.profile_image_url\n    output.profile_image_url_original = data.profile_image_url_original\n\n    output.cover_photo = data.cover_photo\n\n    output.friends_count = data.friends_count\n\n    // output.bot = ??? missing\n\n    output.statusnet_profile_url = data.statusnet_profile_url\n\n    output.is_local = data.is_local\n    output.role = data.role\n    output.show_role = data.show_role\n\n    if (data.rights) {\n      output.rights = {\n        moderator: data.rights.delete_others_notice,\n        admin: data.rights.admin\n      }\n    }\n    output.no_rich_text = data.no_rich_text\n    output.default_scope = data.default_scope\n    output.hide_follows = data.hide_follows\n    output.hide_followers = data.hide_followers\n    output.hide_follows_count = data.hide_follows_count\n    output.hide_followers_count = data.hide_followers_count\n    output.background_image = data.background_image\n    // Websocket token\n    output.token = data.token\n\n    // Convert relationsip data to expected format\n    output.relationship = {\n      muting: data.muted,\n      blocking: data.statusnet_blocking,\n      followed_by: data.follows_you,\n      following: data.following\n    }\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.locked = data.locked\n  output.followers_count = data.followers_count\n  output.statuses_count = data.statuses_count\n\n  if (data.pleroma) {\n    output.follow_request_count = data.pleroma.follow_request_count\n\n    output.tags = data.pleroma.tags\n\n    // deactivated was changed to is_active in Pleroma 2.3.0\n    // so check if is_active is present\n    output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n      ? !data.pleroma.is_active // new backend\n      : data.pleroma.deactivated // old backend\n\n    output.notification_settings = data.pleroma.notification_settings\n    output.unread_chat_count = data.pleroma.unread_chat_count\n  }\n\n  output.tags = output.tags || []\n  output.rights = output.rights || {}\n  output.notification_settings = output.notification_settings || {}\n\n  // Convert punycode to unicode for UI\n  output.screen_name_ui = output.screen_name\n  if (output.screen_name && output.screen_name.includes('@')) {\n    const parts = output.screen_name.split('@')\n    let unicodeDomain = punycode.toUnicode(parts[1])\n    if (unicodeDomain !== parts[1]) {\n      // Add some identifier so users can potentially spot spoofing attempts:\n      // lain.com and xn--lin-6cd.com would appear identical otherwise.\n      unicodeDomain = '🌏' + unicodeDomain\n      output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n    }\n  }\n\n  return output\n}\n\nexport const parseAttachment = (data) => {\n  const output = {}\n  const masto = !data.hasOwnProperty('oembed')\n\n  if (masto) {\n    // Not exactly same...\n    output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n    output.meta = data.meta // not present in BE yet\n    output.id = data.id\n  } else {\n    output.mimetype = data.mimetype\n    // output.meta = ??? missing\n  }\n\n  output.url = data.url\n  output.large_thumb_url = data.preview_url\n  output.description = data.description\n\n  return output\n}\n\nexport const parseStatus = (data) => {\n  const output = {}\n  const masto = data.hasOwnProperty('account')\n\n  if (masto) {\n    output.favorited = data.favourited\n    output.fave_num = data.favourites_count\n\n    output.repeated = data.reblogged\n    output.repeat_num = data.reblogs_count\n\n    output.bookmarked = data.bookmarked\n\n    output.type = data.reblog ? 'retweet' : 'status'\n    output.nsfw = data.sensitive\n\n    output.raw_html = data.content\n    output.emojis = data.emojis\n\n    output.tags = data.tags\n\n    if (data.pleroma) {\n      const { pleroma } = data\n      output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n      output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n      output.statusnet_conversation_id = data.pleroma.conversation_id\n      output.is_local = pleroma.local\n      output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n      output.thread_muted = pleroma.thread_muted\n      output.emoji_reactions = pleroma.emoji_reactions\n      output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n    } else {\n      output.text = data.content\n      output.summary = data.spoiler_text\n    }\n\n    output.in_reply_to_status_id = data.in_reply_to_id\n    output.in_reply_to_user_id = data.in_reply_to_account_id\n    output.replies_count = data.replies_count\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.reblog)\n    }\n\n    output.summary_raw_html = escape(data.spoiler_text)\n    output.external_url = data.url\n    output.poll = data.poll\n    if (output.poll) {\n      output.poll.options = (output.poll.options || []).map(field => ({\n        ...field,\n        title_html: escape(field.title)\n      }))\n    }\n    output.pinned = data.pinned\n    output.muted = data.muted\n  } else {\n    output.favorited = data.favorited\n    output.fave_num = data.fave_num\n\n    output.repeated = data.repeated\n    output.repeat_num = data.repeat_num\n\n    // catchall, temporary\n    // Object.assign(output, data)\n\n    output.type = qvitterStatusType(data)\n\n    if (data.nsfw === undefined) {\n      output.nsfw = isNsfw(data)\n      if (data.retweeted_status) {\n        output.nsfw = data.retweeted_status.nsfw\n      }\n    } else {\n      output.nsfw = data.nsfw\n    }\n\n    output.raw_html = data.statusnet_html\n    output.text = data.text\n\n    output.in_reply_to_status_id = data.in_reply_to_status_id\n    output.in_reply_to_user_id = data.in_reply_to_user_id\n    output.in_reply_to_screen_name = data.in_reply_to_screen_name\n    output.statusnet_conversation_id = data.statusnet_conversation_id\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.retweeted_status)\n    }\n\n    output.summary = data.summary\n    output.summary_html = data.summary_html\n    output.external_url = data.external_url\n    output.is_local = data.is_local\n  }\n\n  output.id = String(data.id)\n  output.visibility = data.visibility\n  output.card = data.card\n  output.created_at = new Date(data.created_at)\n\n  // Converting to string, the right way.\n  output.in_reply_to_status_id = output.in_reply_to_status_id\n    ? String(output.in_reply_to_status_id)\n    : null\n  output.in_reply_to_user_id = output.in_reply_to_user_id\n    ? String(output.in_reply_to_user_id)\n    : null\n\n  output.user = parseUser(masto ? data.account : data.user)\n\n  output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n  output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n    .map(parseAttachment)\n\n  const retweetedStatus = masto ? data.reblog : data.retweeted_status\n  if (retweetedStatus) {\n    output.retweeted_status = parseStatus(retweetedStatus)\n  }\n\n  output.favoritedBy = []\n  output.rebloggedBy = []\n\n  return output\n}\n\nexport const parseNotification = (data) => {\n  const mastoDict = {\n    'favourite': 'like',\n    'reblog': 'repeat'\n  }\n  const masto = !data.hasOwnProperty('ntype')\n  const output = {}\n\n  if (masto) {\n    output.type = mastoDict[data.type] || data.type\n    output.seen = data.pleroma.is_seen\n    output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n    output.action = output.status // TODO: Refactor, this is unneeded\n    output.target = output.type !== 'move'\n      ? null\n      : parseUser(data.target)\n    output.from_profile = parseUser(data.account)\n    output.emoji = data.emoji\n  } else {\n    const parsedNotice = parseStatus(data.notice)\n    output.type = data.ntype\n    output.seen = Boolean(data.is_seen)\n    output.status = output.type === 'like'\n      ? parseStatus(data.notice.favorited_status)\n      : parsedNotice\n    output.action = parsedNotice\n    output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.id = parseInt(data.id)\n\n  return output\n}\n\nconst isNsfw = (status) => {\n  const nsfwRegex = /#nsfw/i\n  return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n  const flakeId = opts.flakeId\n  const parsedLinkHeader = parseLinkHeader(linkHeader)\n  if (!parsedLinkHeader) return\n  const maxId = parsedLinkHeader.next.max_id\n  const minId = parsedLinkHeader.prev.min_id\n\n  return {\n    maxId: flakeId ? maxId : parseInt(maxId, 10),\n    minId: flakeId ? minId : parseInt(minId, 10)\n  }\n}\n\nexport const parseChat = (chat) => {\n  const output = {}\n  output.id = chat.id\n  output.account = parseUser(chat.account)\n  output.unread = chat.unread\n  output.lastMessage = parseChatMessage(chat.last_message)\n  output.updated_at = new Date(chat.updated_at)\n  return output\n}\n\nexport const parseChatMessage = (message) => {\n  if (!message) { return }\n  if (message.isNormalized) { return message }\n  const output = message\n  output.id = message.id\n  output.created_at = new Date(message.created_at)\n  output.chat_id = message.chat_id\n  output.emojis = message.emojis\n  output.content = message.content\n  if (message.attachment) {\n    output.attachments = [parseAttachment(message.attachment)]\n  } else {\n    output.attachments = []\n  }\n  output.pending = !!message.pending\n  output.error = false\n  output.idempotency_key = message.idempotency_key\n  output.isNormalized = true\n  return output\n}\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n  this.name = 'StatusCodeError'\n  this.statusCode = statusCode\n  this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n  this.error = body // legacy attribute\n  this.options = options\n  this.response = response\n\n  if (Error.captureStackTrace) { // required for non-V8 environments\n    Error.captureStackTrace(this)\n  }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n  constructor (error) {\n    super()\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this)\n    }\n\n    try {\n      // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n      if (typeof error === 'string') {\n        error = JSON.parse(error)\n        if (error.hasOwnProperty('error')) {\n          error = JSON.parse(error.error)\n        }\n      }\n\n      if (typeof error === 'object') {\n        const errorContents = JSON.parse(error.error)\n        // keys will have the property that has the error, for example 'ap_id',\n        // 'email' or 'captcha', the value will be an array of its error\n        // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n        // replace ap_id with username\n        if (errorContents.ap_id) {\n          errorContents.username = errorContents.ap_id\n          delete errorContents.ap_id\n        }\n\n        this.message = humanizeErrors(errorContents)\n      } else {\n        this.message = error\n      }\n    } catch (e) {\n      // can't parse it, so just treat it like a string\n      this.message = error\n    }\n  }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n  return Object.entries(errors).reduce((errs, [k, val]) => {\n    let message = val.reduce((acc, message) => {\n      let key = capitalize(k.replace(/_/g, ' '))\n      return acc + [key, message].join(' ') + '. '\n    }, '')\n    return [...errs, message]\n  }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n  options = options || {}\n  const baseUrl = ''\n  const fullUrl = baseUrl + url\n  options.credentials = 'same-origin'\n  return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n  const options = {\n    method,\n    headers: {\n      'Accept': 'application/json',\n      'Content-Type': 'application/json',\n      ...headers\n    }\n  }\n  if (params) {\n    url += '?' + Object.entries(params)\n      .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n      .join('&')\n  }\n  if (payload) {\n    options.body = JSON.stringify(payload)\n  }\n  if (credentials) {\n    options.headers = {\n      ...options.headers,\n      ...authHeaders(credentials)\n    }\n  }\n  return fetch(url, options)\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url, options }, response))\n          }\n          return resolve(json)\n        })\n        .catch((error) => {\n          return reject(new StatusCodeError(response.status, error, { url, options }, response))\n        })\n      )\n    })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n  const form = new FormData()\n\n  each(settings, (value, key) => {\n    form.append(key, value)\n  })\n\n  return fetch(NOTIFICATION_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, banner = null, background = null }) => {\n  const form = new FormData()\n  if (avatar !== null) form.append('avatar', avatar)\n  if (banner !== null) form.append('header', banner)\n  if (background !== null) form.append('pleroma_background_image', background)\n  return fetch(MASTODON_PROFILE_UPDATE_URL, {\n    headers: authHeaders(credentials),\n    method: 'PATCH',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((data) => {\n      if (data.error) {\n        throw new Error(data.error)\n      }\n      return parseUser(data)\n    })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n  return promisedRequest({\n    url: MASTODON_PROFILE_UPDATE_URL,\n    method: 'PATCH',\n    payload: params,\n    credentials\n  }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\nconst register = ({ params, credentials }) => {\n  const { nickname, ...rest } = params\n  return fetch(MASTODON_REGISTRATION_URL, {\n    method: 'POST',\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    body: JSON.stringify({\n      nickname,\n      locale: 'en_US',\n      agreement: true,\n      ...rest\n    })\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return response.json().then((error) => { throw new RegistrationError(error) })\n      }\n    })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n  if (accessToken) {\n    return { 'Authorization': `Bearer ${accessToken}` }\n  } else {\n    return { }\n  }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n  let url = MASTODON_FOLLOW_URL(id)\n  const form = {}\n  if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n  return fetch(url, {\n    body: JSON.stringify(form),\n    headers: {\n      ...authHeaders(credentials),\n      'Content-Type': 'application/json'\n    },\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n  let url = MASTODON_UNFOLLOW_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n    .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_BLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n  return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n  let url = MASTODON_APPROVE_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n  let url = MASTODON_DENY_USER_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_URL}/${id}`\n  return promisedRequest({ url, credentials })\n    .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n  let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url }, response))\n          }\n          return resolve(json)\n        }))\n    })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWING_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n  return new Promise(async (resolve, reject) => {\n    try {\n      let friends = []\n      let more = true\n      while (more) {\n        const maxId = friends.length > 0 ? last(friends).id : undefined\n        const users = await fetchFriends({ id, maxId, credentials })\n        friends = concat(friends, users)\n        if (users.length === 0) {\n          more = false\n        }\n      }\n      resolve(friends)\n    } catch (err) {\n      reject(err)\n    }\n  })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWERS_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    `with_relationships=true`\n  ].filter(_ => _).join('&')\n\n  url += args ? '?' + args : ''\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n  const url = MASTODON_FOLLOW_REQUESTS_URL\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n  let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n  return fetch(urlContext, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then(({ ancestors, descendants }) => ({\n      ancestors: ancestors.map(parseStatus),\n      descendants: descendants.map(parseStatus)\n    }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n  let url = MASTODON_STATUS_URL(id)\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching timeline', data)\n    })\n    .then((data) => data.json())\n    .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const form = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'PUT',\n    headers: headers,\n    body: JSON.stringify(form)\n  })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n  const screenName = user.screen_name\n  const body = {\n    nicknames: [screenName],\n    tags: [tag]\n  }\n\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(TAG_USER_URL, {\n    method: 'DELETE',\n    headers: headers,\n    body: JSON.stringify(body)\n  })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'POST',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n  const screenName = user.screen_name\n\n  return fetch(PERMISSION_GROUP_URL(screenName, right), {\n    method: 'DELETE',\n    headers: authHeaders(credentials),\n    body: {}\n  })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: ACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n  return promisedRequest({\n    url: DEACTIVATE_USER_URL,\n    method: 'PATCH',\n    credentials,\n    payload: {\n      nicknames: [nickname]\n    }\n  }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n  const screenName = user.screen_name\n  const headers = authHeaders(credentials)\n\n  return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n    method: 'DELETE',\n    headers: headers\n  })\n}\n\nconst fetchTimeline = ({\n  timeline,\n  credentials,\n  since = false,\n  until = false,\n  userId = false,\n  tag = false,\n  withMuted = false,\n  replyVisibility = 'all'\n}) => {\n  const timelineUrls = {\n    public: MASTODON_PUBLIC_TIMELINE,\n    friends: MASTODON_USER_HOME_TIMELINE_URL,\n    dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n    notifications: MASTODON_USER_NOTIFICATIONS_URL,\n    'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n    user: MASTODON_USER_TIMELINE_URL,\n    media: MASTODON_USER_TIMELINE_URL,\n    favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n    tag: MASTODON_TAG_TIMELINE_URL,\n    bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n  }\n  const isNotifications = timeline === 'notifications'\n  const params = []\n\n  let url = timelineUrls[timeline]\n\n  if (timeline === 'user' || timeline === 'media') {\n    url = url(userId)\n  }\n\n  if (since) {\n    params.push(['since_id', since])\n  }\n  if (until) {\n    params.push(['max_id', until])\n  }\n  if (tag) {\n    url = url(tag)\n  }\n  if (timeline === 'media') {\n    params.push(['only_media', 1])\n  }\n  if (timeline === 'public') {\n    params.push(['local', true])\n  }\n  if (timeline === 'public' || timeline === 'publicAndExternal') {\n    params.push(['only_media', false])\n  }\n  if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n    params.push(['with_muted', withMuted])\n  }\n  if (replyVisibility !== 'all') {\n    params.push(['reply_visibility', replyVisibility])\n  }\n\n  params.push(['limit', 20])\n\n  const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  let status = ''\n  let statusText = ''\n\n  let pagination = {}\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      status = data.status\n      statusText = data.statusText\n      pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n        flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n      })\n      return data\n    })\n    .then((data) => data.json())\n    .then((data) => {\n      if (!data.errors) {\n        return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n      } else {\n        data.status = status\n        data.statusText = statusText\n        return data\n      }\n    })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n  const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n  return promisedRequest({ url, credentials })\n    .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n  return fetch(MASTODON_LOGIN_URL, {\n    headers: authHeaders(user)\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return {\n          error: response\n        }\n      }\n    })\n    .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_BOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst postStatus = ({\n  credentials,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  mediaIds = [],\n  inReplyToStatusId,\n  contentType,\n  preview,\n  idempotencyKey\n}) => {\n  const form = new FormData()\n  const pollOptions = poll.options || []\n\n  form.append('status', status)\n  form.append('source', 'Pleroma FE')\n  if (spoilerText) form.append('spoiler_text', spoilerText)\n  if (visibility) form.append('visibility', visibility)\n  if (sensitive) form.append('sensitive', sensitive)\n  if (contentType) form.append('content_type', contentType)\n  mediaIds.forEach(val => {\n    form.append('media_ids[]', val)\n  })\n  if (pollOptions.some(option => option !== '')) {\n    const normalizedPoll = {\n      expires_in: poll.expiresIn,\n      multiple: poll.multiple\n    }\n    Object.keys(normalizedPoll).forEach(key => {\n      form.append(`poll[${key}]`, normalizedPoll[key])\n    })\n\n    pollOptions.forEach(option => {\n      form.append('poll[options][]', option)\n    })\n  }\n  if (inReplyToStatusId) {\n    form.append('in_reply_to_id', inReplyToStatusId)\n  }\n  if (preview) {\n    form.append('preview', 'true')\n  }\n\n  let postHeaders = authHeaders(credentials)\n  if (idempotencyKey) {\n    postHeaders['idempotency-key'] = idempotencyKey\n  }\n\n  return fetch(MASTODON_POST_STATUS_URL, {\n    body: form,\n    method: 'POST',\n    headers: postHeaders\n  })\n    .then((response) => {\n      return response.json()\n    })\n    .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n  return fetch(MASTODON_DELETE_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n  return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((data) => data.json())\n    .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n  return promisedRequest({\n    url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n    method: 'PUT',\n    headers: authHeaders(credentials),\n    payload: {\n      description\n    }\n  }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(MUTES_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(BLOCKS_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(FOLLOW_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(DELETE_ACCOUNT_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n  const form = new FormData()\n\n  form.append('email', email)\n  form.append('password', password)\n\n  return fetch(CHANGE_EMAIL_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('new_password', newPassword)\n  form.append('new_password_confirmation', newPasswordConfirmation)\n\n  return fetch(CHANGE_PASSWORD_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n  return fetch(MFA_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(MFA_DISABLE_OTP_URL, {\n    body: form,\n    method: 'DELETE',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('code', token)\n\n  return fetch(MFA_CONFIRM_OTP_URL, {\n    body: form,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n  return fetch(MFA_SETUP_OTP_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n  return fetch(MFA_BACKUP_CODES_URL, {\n    headers: authHeaders(credentials),\n    method: 'GET'\n  }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n    .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n  const url = '/api/oauth_tokens.json'\n\n  return fetch(url, {\n    headers: authHeaders(credentials)\n  }).then((data) => {\n    if (data.ok) {\n      return data.json()\n    }\n    throw new Error('Error fetching auth tokens', data)\n  })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n  const url = `/api/oauth_tokens/${id}`\n\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst suggestions = ({ credentials }) => {\n  return fetch(SUGGESTIONS_URL, {\n    headers: authHeaders(credentials)\n  }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n  const body = new FormData()\n\n  if (single) {\n    body.append('id', id)\n  } else {\n    body.append('max_id', id)\n  }\n\n  return fetch(NOTIFICATION_READ_URL, {\n    body,\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n  const form = new FormData()\n  form.append('choices', choices)\n\n  return promisedRequest({\n    url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n    method: 'POST',\n    credentials,\n    payload: {\n      choices: choices\n    }\n  })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n  return promisedRequest(\n    {\n      url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n      method: 'GET',\n      credentials\n    }\n  )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n    method: 'GET',\n    credentials\n  }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n  return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n    .then((reactions) => reactions.map(r => {\n      r.accounts = r.accounts.map(parseUser)\n      return r\n    }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n    method: 'PUT',\n    credentials\n  }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n    method: 'DELETE',\n    credentials\n  }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n  return promisedRequest({\n    url: MASTODON_REPORT_USER_URL,\n    method: 'POST',\n    payload: {\n      'account_id': userId,\n      'status_ids': statusIds,\n      comment,\n      forward\n    },\n    credentials\n  })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n  return promisedRequest({\n    url: MASTODON_USER_SEARCH_URL,\n    params: {\n      q: query,\n      resolve: true\n    },\n    credentials\n  })\n    .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n  let url = MASTODON_SEARCH_2\n  let params = []\n\n  if (q) {\n    params.push(['q', encodeURIComponent(q)])\n  }\n\n  if (resolve) {\n    params.push(['resolve', resolve])\n  }\n\n  if (limit) {\n    params.push(['limit', limit])\n  }\n\n  if (offset) {\n    params.push(['offset', offset])\n  }\n\n  if (following) {\n    params.push(['following', true])\n  }\n\n  params.push(['with_relationships', true])\n\n  let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching search result', data)\n    })\n    .then((data) => { return data.json() })\n    .then((data) => {\n      data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n      data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n      return data\n    })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'POST',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'DELETE',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n  return promisedRequest({\n    url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n    method: 'POST',\n    payload: { id },\n    credentials\n  })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n  return Object.entries({\n    ...(credentials\n      ? { access_token: credentials }\n      : {}\n    ),\n    stream,\n    ...args\n  }).reduce((acc, [key, val]) => {\n    return acc + `${key}=${val}&`\n  }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n  'update',\n  'notification',\n  'delete',\n  'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n  'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n  url,\n  preprocessor = handleMastoWS,\n  id = 'Unknown'\n}) => {\n  const eventTarget = new EventTarget()\n  const socket = new WebSocket(url)\n  if (!socket) throw new Error(`Failed to create socket ${id}`)\n  const proxy = (original, eventName, processor = a => a) => {\n    original.addEventListener(eventName, (eventData) => {\n      eventTarget.dispatchEvent(new CustomEvent(\n        eventName,\n        { detail: processor(eventData) }\n      ))\n    })\n  }\n  socket.addEventListener('open', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket connected`, wsEvent)\n  })\n  socket.addEventListener('error', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket errored`, wsEvent)\n  })\n  socket.addEventListener('close', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n      wsEvent\n    )\n  })\n  // Commented code reason: very spammy, uncomment to enable message debug logging\n  /*\n  socket.addEventListener('message', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Message received`,\n      wsEvent\n    )\n  })\n  /**/\n\n  proxy(socket, 'open')\n  proxy(socket, 'close')\n  proxy(socket, 'message', preprocessor)\n  proxy(socket, 'error')\n\n  // 1000 = Normal Closure\n  eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n  eventTarget.getState = () => socket.readyState\n\n  return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n  const { data } = wsEvent\n  if (!data) return\n  const parsedEvent = JSON.parse(data)\n  const { event, payload } = parsedEvent\n  if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n    // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n    if (event === 'delete') {\n      return { event, id: payload }\n    }\n    const data = payload ? JSON.parse(payload) : null\n    if (event === 'update') {\n      return { event, status: parseStatus(data) }\n    } else if (event === 'notification') {\n      return { event, notification: parseNotification(data) }\n    } else if (event === 'pleroma:chat_update') {\n      return { event, chatUpdate: parseChat(data) }\n    }\n  } else {\n    console.warn('Unknown event', wsEvent)\n    return null\n  }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n  'JOINED': 1,\n  'CLOSED': 2,\n  'ERROR': 3,\n  'DISABLED': 4,\n  'STARTING': 5,\n  'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n  return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => {\n      return { chats: data.map(parseChat).filter(c => c) }\n    })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_URL(accountId),\n    method: 'POST',\n    credentials\n  })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n  let url = PLEROMA_CHAT_MESSAGES_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n\n  return promisedRequest({\n    url,\n    method: 'GET',\n    credentials\n  })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n  const payload = {\n    'content': content\n  }\n\n  if (mediaId) {\n    payload['media_id'] = mediaId\n  }\n\n  const headers = {}\n\n  if (idempotencyKey) {\n    headers['idempotency-key'] = idempotencyKey\n  }\n\n  return promisedRequest({\n    url: PLEROMA_CHAT_MESSAGES_URL(id),\n    method: 'POST',\n    payload: payload,\n    credentials,\n    headers\n  })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_READ_URL(id),\n    method: 'POST',\n    payload: {\n      'last_read_id': lastReadId\n    },\n    credentials\n  })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n    method: 'DELETE',\n    credentials\n  })\n}\n\nconst apiService = {\n  verifyCredentials,\n  fetchTimeline,\n  fetchPinnedStatuses,\n  fetchConversation,\n  fetchStatus,\n  fetchFriends,\n  exportFriends,\n  fetchFollowers,\n  followUser,\n  unfollowUser,\n  pinOwnStatus,\n  unpinOwnStatus,\n  muteConversation,\n  unmuteConversation,\n  blockUser,\n  unblockUser,\n  fetchUser,\n  fetchUserRelationship,\n  favorite,\n  unfavorite,\n  retweet,\n  unretweet,\n  bookmarkStatus,\n  unbookmarkStatus,\n  postStatus,\n  deleteStatus,\n  uploadMedia,\n  setMediaDescription,\n  fetchMutes,\n  muteUser,\n  unmuteUser,\n  subscribeUser,\n  unsubscribeUser,\n  fetchBlocks,\n  fetchOAuthTokens,\n  revokeOAuthToken,\n  tagUser,\n  untagUser,\n  deleteUser,\n  addRight,\n  deleteRight,\n  activateUser,\n  deactivateUser,\n  register,\n  getCaptcha,\n  updateProfileImages,\n  updateProfile,\n  importMutes,\n  importBlocks,\n  importFollows,\n  deleteAccount,\n  changeEmail,\n  changePassword,\n  settingsMFA,\n  mfaDisableOTP,\n  generateMfaBackupCodes,\n  mfaSetupOTP,\n  mfaConfirmOTP,\n  fetchFollowRequests,\n  approveUser,\n  denyUser,\n  suggestions,\n  markNotificationsAsSeen,\n  dismissNotification,\n  vote,\n  fetchPoll,\n  fetchFavoritedByUsers,\n  fetchRebloggedByUsers,\n  fetchEmojiReactions,\n  reactWithEmoji,\n  unreactWithEmoji,\n  reportUser,\n  updateNotificationSettings,\n  search2,\n  searchUsers,\n  fetchKnownDomains,\n  fetchDomainMutes,\n  muteDomain,\n  unmuteDomain,\n  chats,\n  getOrCreateChat,\n  chatMessages,\n  sendChatMessage,\n  readChat,\n  deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n  if (r === null || typeof r === 'undefined') {\n    return undefined\n  }\n  // TODO: clean up this mess\n  if (r[0] === '#' || r === 'transparent') {\n    return r\n  }\n  if (typeof r === 'object') {\n    ({ r, g, b } = r)\n  }\n  [r, g, b] = [r, g, b].map(val => {\n    val = Math.ceil(val)\n    val = val < 0 ? 0 : val\n    val = val > 255 ? 255 : val\n    return val\n  })\n  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n  // W3C gives 0.03928 while wikipedia states 0.04045\n  // what those magical numbers mean - I don't know.\n  // something about gamma-correction, i suppose.\n  // Sticking with W3C example.\n  const c = bit / 255\n  if (c < 0.03928) {\n    return c / 12.92\n  } else {\n    return Math.pow((c + 0.055) / 1.055, 2.4)\n  }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n  return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n  const { r, g, b } = srgbToLinear(srgb)\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n  const la = relativeLuminance(a)\n  const lb = relativeLuminance(b)\n  const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n  return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n  return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n  if (fga === 1 || typeof fga === 'undefined') return fg\n  return 'rgb'.split('').reduce((acc, c) => {\n    // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n    // for opaque bg and transparent fg\n    acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n    return acc\n  }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n  return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n  return 'rgb'.split('').reduce((acc, c) => {\n    acc[c] = 255 - rgb[c]\n    return acc\n  }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result ? {\n    r: parseInt(result[1], 16),\n    g: parseInt(result[2], 16),\n    b: parseInt(result[3], 16)\n  } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n  return 'rgb'.split('').reduce((acc, k) => {\n    acc[k] = (a[k] + b[k]) / 2\n    return acc\n  }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n  return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n  const contrast = getContrastRatio(bg, text)\n\n  if (contrast < 4.5) {\n    const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n    const result = Object.assign(base, invertLightness(text).rgb)\n    if (!preserve && getContrastRatio(bg, result) < 4.5) {\n      // B&W\n      return contrastRatio(bg, text).rgb\n    }\n    // Inverted color\n    return result\n  }\n  return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n  let rgb = {}\n  if (typeof input === 'object') {\n    rgb = input\n  } else if (typeof input === 'string') {\n    if (input.startsWith('#')) {\n      rgb = hex2rgb(input)\n    } else {\n      return input\n    }\n  }\n  return rgba2css({ ...rgb, a })\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n  const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n  return {\n    name: (complicated ? 'external-user-profile' : 'user-profile'),\n    params: (complicated ? { id } : { name: screenName })\n  }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","import StillImage from '../still-image/still-image.vue'\n\nconst UserAvatar = {\n  props: [\n    'user',\n    'betterShadow',\n    'compact'\n  ],\n  data () {\n    return {\n      showPlaceholder: false,\n      defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n    }\n  },\n  components: {\n    StillImage\n  },\n  methods: {\n    imgSrc (src) {\n      return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n    },\n    imageLoadError () {\n      this.showPlaceholder = true\n    }\n  }\n}\n\nexport default UserAvatar\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_avatar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_avatar.js\"\nimport __vue_script__ from \"!!babel-loader!./user_avatar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1bc06501\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.user)?_c('StillImage',{staticClass:\"Avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name_ui,\"title\":_vm.user.screen_name_ui,\"src\":_vm.imgSrc(_vm.user.profile_image_url_original),\"image-load-error\":_vm.imageLoadError}}):_c('div',{staticClass:\"Avatar -placeholder\",class:{ 'avatar-compact': _vm.compact }})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Popover = {\n  name: 'Popover',\n  props: {\n    // Action to trigger popover: either 'hover' or 'click'\n    trigger: String,\n\n    // Either 'top' or 'bottom'\n    placement: String,\n\n    // Takes object with properties 'x' and 'y', values of these can be\n    // 'container' for using offsetParent as boundaries for either axis\n    // or 'viewport'\n    boundTo: Object,\n\n    // Takes a selector to use as a replacement for the parent container\n    // for getting boundaries for x an y axis\n    boundToSelector: String,\n\n    // Takes a top/bottom/left/right object, how much space to leave\n    // between boundary and popover element\n    margin: Object,\n\n    // Takes a x/y object and tells how many pixels to offset from\n    // anchor point on either axis\n    offset: Object,\n\n    // Replaces the classes you may want for the popover container.\n    // Use 'popover-default' in addition to get the default popover\n    // styles with your custom class.\n    popoverClass: String,\n\n    // If true, subtract padding when calculating position for the popover,\n    // use it when popover offset looks to be different on top vs bottom.\n    removePadding: Boolean\n  },\n  data () {\n    return {\n      hidden: true,\n      styles: { opacity: 0 },\n      oldSize: { width: 0, height: 0 }\n    }\n  },\n  methods: {\n    containerBoundingClientRect () {\n      const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n      return container.getBoundingClientRect()\n    },\n    updateStyles () {\n      if (this.hidden) {\n        this.styles = {\n          opacity: 0\n        }\n        return\n      }\n\n      // Popover will be anchored around this element, trigger ref is the container, so\n      // its children are what are inside the slot. Expect only one v-slot:trigger.\n      const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n      // SVGs don't have offsetWidth/Height, use fallback\n      const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n      const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n      const screenBox = anchorEl.getBoundingClientRect()\n      // Screen position of the origin point for popover\n      const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n      const content = this.$refs.content\n      // Minor optimization, don't call a slow reflow call if we don't have to\n      const parentBounds = this.boundTo &&\n        (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n        this.containerBoundingClientRect()\n\n      const margin = this.margin || {}\n\n      // What are the screen bounds for the popover? Viewport vs container\n      // when using viewport, using default margin values to dodge the navbar\n      const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n        min: parentBounds.left + (margin.left || 0),\n        max: parentBounds.right - (margin.right || 0)\n      } : {\n        min: 0 + (margin.left || 10),\n        max: window.innerWidth - (margin.right || 10)\n      }\n\n      const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n        min: parentBounds.top + (margin.top || 0),\n        max: parentBounds.bottom - (margin.bottom || 0)\n      } : {\n        min: 0 + (margin.top || 50),\n        max: window.innerHeight - (margin.bottom || 5)\n      }\n\n      let horizOffset = 0\n\n      // If overflowing from left, move it so that it doesn't\n      if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n        horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n      }\n\n      // If overflowing from right, move it so that it doesn't\n      if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n        horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n      }\n\n      // Default to whatever user wished with placement prop\n      let usingTop = this.placement !== 'bottom'\n\n      // Handle special cases, first force to displaying on top if there's not space on bottom,\n      // regardless of what placement value was. Then check if there's not space on top, and\n      // force to bottom, again regardless of what placement value was.\n      if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n      if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n      let vPadding = 0\n      if (this.removePadding && usingTop) {\n        const anchorStyle = getComputedStyle(anchorEl)\n        vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n      }\n\n      const yOffset = (this.offset && this.offset.y) || 0\n      const translateY = usingTop\n        ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n        : yOffset\n\n      const xOffset = (this.offset && this.offset.x) || 0\n      const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n      // Note, separate translateX and translateY avoids blurry text on chromium,\n      // single translate or translate3d resulted in blurry text.\n      this.styles = {\n        opacity: 1,\n        transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n      }\n    },\n    showPopover () {\n      const wasHidden = this.hidden\n      this.hidden = false\n      this.$nextTick(() => {\n        if (wasHidden) this.$emit('show')\n        this.updateStyles()\n      })\n    },\n    hidePopover () {\n      if (!this.hidden) this.$emit('close')\n      this.hidden = true\n      this.styles = { opacity: 0 }\n    },\n    onMouseenter (e) {\n      if (this.trigger === 'hover') this.showPopover()\n    },\n    onMouseleave (e) {\n      if (this.trigger === 'hover') this.hidePopover()\n    },\n    onClick (e) {\n      if (this.trigger === 'click') {\n        if (this.hidden) {\n          this.showPopover()\n        } else {\n          this.hidePopover()\n        }\n      }\n    },\n    onClickOutside (e) {\n      if (this.hidden) return\n      if (this.$el.contains(e.target)) return\n      this.hidePopover()\n    }\n  },\n  updated () {\n    // Monitor changes to content size, update styles only when content sizes have changed,\n    // that should be the only time we need to move the popover box if we don't care about scroll\n    // or resize\n    const content = this.$refs.content\n    if (!content) return\n    if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n      this.updateStyles()\n      this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n    }\n  },\n  created () {\n    document.addEventListener('click', this.onClickOutside)\n  },\n  destroyed () {\n    document.removeEventListener('click', this.onClickOutside)\n    this.hidePopover()\n  }\n}\n\nexport default Popover\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./popover.js\"\nimport __vue_script__ from \"!!babel-loader!./popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-67137541\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"mouseenter\":_vm.onMouseenter,\"mouseleave\":_vm.onMouseleave}},[_c('button',{ref:\"trigger\",staticClass:\"button-unstyled -fullwidth popover-trigger-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass || 'popover-default',style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n  const rootState = store.rootState || store.state\n\n  return ([\n    rootState.config.notificationVisibility.likes && 'like',\n    rootState.config.notificationVisibility.mentions && 'mention',\n    rootState.config.notificationVisibility.repeats && 'repeat',\n    rootState.config.notificationVisibility.follows && 'follow',\n    rootState.config.notificationVisibility.followRequest && 'follow_request',\n    rootState.config.notificationVisibility.moves && 'move',\n    rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n  ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n  if (isStatusNotification(notification.type) && !notification.status) {\n    return false\n  }\n  return true\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst isMutedNotification = (store, notification) => {\n  if (!notification.status) return\n  return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n  const rootState = store.rootState || store.state\n\n  if (notification.seen) return\n  if (!visibleTypes(store).includes(notification.type)) return\n  if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n  const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n  showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n  // map is just to clone the array since sort mutates it and it causes some issues\n  let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n  sortedNotifications = sortBy(sortedNotifications, 'seen')\n  return sortedNotifications.filter(\n    (notification) => (types || visibleTypes(store)).includes(notification.type)\n  )\n}\n\nexport const unseenNotificationsFromStore = store =>\n  filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n  const notifObj = {\n    tag: notification.id\n  }\n  const status = notification.status\n  const title = notification.from_profile.name\n  notifObj.title = title\n  notifObj.icon = notification.from_profile.profile_image_url\n  let i18nString\n  switch (notification.type) {\n    case 'like':\n      i18nString = 'favorited_you'\n      break\n    case 'repeat':\n      i18nString = 'repeated_you'\n      break\n    case 'follow':\n      i18nString = 'followed_you'\n      break\n    case 'move':\n      i18nString = 'migrated_to'\n      break\n    case 'follow_request':\n      i18nString = 'follow_request'\n      break\n  }\n\n  if (notification.type === 'pleroma:emoji_reaction') {\n    notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n  } else if (i18nString) {\n    notifObj.body = i18n.t('notifications.' + i18nString)\n  } else if (isStatusNotification(notification.type)) {\n    notifObj.body = notification.status.text\n  }\n\n  // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n  if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n    status.attachments[0].mimetype.startsWith('image/')) {\n    notifObj.image = status.attachments[0].url\n  }\n\n  return notifObj\n}\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n  if (mimetype.match(/flash/)) {\n    return 'flash'\n  }\n\n  if (mimetype.match(/text\\/html/)) {\n    return 'html'\n  }\n\n  if (mimetype.match(/image/)) {\n    return 'image'\n  }\n\n  if (mimetype.match(/video/)) {\n    return 'video'\n  }\n\n  if (mimetype.match(/audio/)) {\n    return 'audio'\n  }\n\n  return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n  types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n  fileType,\n  fileMatchesSomeType\n}\n\nexport default fileTypeService\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n  const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n  return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n *   attributes without values represented as boolean true\n */\nexport const getAttrs = tag => {\n  const innertag = tag\n    .substring(1, tag.length - 1)\n    .replace(new RegExp('^' + getTagName(tag)), '')\n    .replace(/\\/?$/, '')\n    .trim()\n  const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n    .map(([trash, key, value]) => [key, value])\n    .map(([k, v]) => {\n      if (!v) return [k, true]\n      return [k, v.substring(1, v.length - 1)]\n    })\n  return Object.fromEntries(attrs)\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n *   function is passed single object containing matching emoji ({ url, shortcode })\n *   return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n *   returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n  const buffer = []\n  let textBuffer = ''\n  for (let i = 0; i < text.length; i++) {\n    const char = text[i]\n    if (char === ':') {\n      const next = text.slice(i + 1)\n      let found = false\n      for (let emoji of emojis) {\n        if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n          found = emoji\n          break\n        }\n      }\n      if (found) {\n        buffer.push(textBuffer)\n        textBuffer = ''\n        buffer.push(processor(found))\n        i += found.shortcode.length + 1\n      } else {\n        textBuffer += char\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (textBuffer) buffer.push(textBuffer)\n  return buffer\n}\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n  name: 'HashtagLink',\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    tag: {\n      required: false,\n      type: String,\n      default: ''\n    }\n  },\n  methods: {\n    onClick () {\n      const tag = this.tag || extractTagFromUrl(this.url)\n      if (tag) {\n        const link = this.generateTagLink(tag)\n        this.$router.push(link)\n      } else {\n        window.open(this.url, '_blank')\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default HashtagLink\n","export const mentionMatchesUrl = (attention, url) => {\n  if (url === attention.statusnet_profile_url) {\n    return true\n  }\n  const [namepart, instancepart] = attention.screen_name.split('@')\n  const matchstring = new RegExp('://' + instancepart + '/.*' + namepart + '$', 'g')\n\n  return !!url.match(matchstring)\n}\n\n/**\n * Extract tag name from pleroma or mastodon url.\n * i.e https://bikeshed.party/tag/photo or https://quey.org/tags/sky\n * @param {string} url\n */\nexport const extractTagFromUrl = (url) => {\n  const regex = /tag[s]*\\/(\\w+)$/g\n  const result = regex.exec(url)\n  if (!result) {\n    return false\n  }\n  return result[1]\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./hashtag_link.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./hashtag_link.js\"\nimport __vue_script__ from \"!!babel-loader!./hashtag_link.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c545d9d6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./hashtag_link.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"HashtagLink\"},[_c('a',{staticClass:\"original\",attrs:{\"href\":_vm.url,\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.content)},on:{\"click\":function($event){$event.preventDefault();return _vm.onClick($event)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n *   of where they are (beginning/middle/end), even single mentions are converted\n *   to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n *    proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n *    possible in vue. Current solution is to emit 'parseReady' event when parsing\n *    is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default Vue.component('RichContent', {\n  name: 'RichContent',\n  props: {\n    // Original html content\n    html: {\n      required: true,\n      type: String\n    },\n    attentions: {\n      required: false,\n      default: () => []\n    },\n    // Emoji object, as in status.emojis, note the \"s\" at the end...\n    emoji: {\n      required: true,\n      type: Array\n    },\n    // Whether to handle links or not (posts: yes, everything else: no)\n    handleLinks: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Meme arrows\n    greentext: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  // NEVER EVER TOUCH DATA INSIDE RENDER\n  render (h) {\n    // Pre-process HTML\n    const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n    let currentMentions = null // Current chain of mentions, we group all mentions together\n    // This is used to recover spacing removed when parsing mentions\n    let lastSpacing = ''\n\n    const lastTags = [] // Tags that appear at the end of post body\n    const writtenMentions = [] // All mentions that appear in post body\n    const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n    // to collapse too many mentions in a row\n    const writtenTags = [] // All tags that appear in post body\n    // unique index for vue \"tag\" property\n    let mentionIndex = 0\n    let tagsIndex = 0\n\n    const renderImage = (tag) => {\n      return <StillImage\n        {...{ attrs: getAttrs(tag) }}\n        class=\"img\"\n      />\n    }\n\n    const renderHashtag = (attrs, children, encounteredTextReverse) => {\n      const linkData = getLinkData(attrs, children, tagsIndex++)\n      writtenTags.push(linkData)\n      if (!encounteredTextReverse) {\n        lastTags.push(linkData)\n      }\n      return <HashtagLink {...{ props: linkData }}/>\n    }\n\n    const renderMention = (attrs, children) => {\n      const linkData = getLinkData(attrs, children, mentionIndex++)\n      linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n      writtenMentions.push(linkData)\n      if (currentMentions === null) {\n        currentMentions = []\n      }\n      currentMentions.push(linkData)\n      if (currentMentions.length > MENTIONS_LIMIT) {\n        invisibleMentions.push(linkData)\n      }\n      if (currentMentions.length === 1) {\n        return <MentionsLine mentions={ currentMentions } />\n      } else {\n        return ''\n      }\n    }\n\n    // Processor to use with html_tree_converter\n    const processItem = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (item.includes('\\n')) {\n          currentMentions = null\n        }\n        if (emptyText) {\n          // don't include spaces when processing mentions - we'll include them\n          // in MentionsLine\n          lastSpacing = item\n          return currentMentions !== null ? item.trim() : item\n        }\n\n        currentMentions = null\n        if (item.includes(':')) {\n          item = ['', processTextForEmoji(\n            item,\n            this.emoji,\n            ({ shortcode, url }) => {\n              return <StillImage\n                class=\"emoji img\"\n                src={url}\n                title={`:${shortcode}:`}\n                alt={`:${shortcode}:`}\n              />\n            }\n          )]\n        }\n        return item\n      }\n\n      // Handle tag nodes\n      if (Array.isArray(item)) {\n        const [opener, children, closer] = item\n        const Tag = getTagName(opener)\n        const attrs = getAttrs(opener)\n        const previouslyMentions = currentMentions !== null\n        /* During grouping of mentions we trim all the empty text elements\n         * This padding is added to recover last space removed in case\n         * we have a tag right next to mentions\n         */\n        const mentionsLinePadding =\n              // Padding is only needed if we just finished parsing mentions\n              previouslyMentions &&\n              // Don't add padding if content is string and has padding already\n              !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n                ? lastSpacing\n                : ''\n        switch (Tag) {\n          case 'br':\n            currentMentions = null\n            break\n          case 'img': // replace images with StillImage\n            return ['', [mentionsLinePadding, renderImage(opener)], '']\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            if (attrs['class'] && attrs['class'].includes('mention')) {\n              // Handling mentions here\n              return renderMention(attrs, children)\n            } else {\n              currentMentions = null\n              break\n            }\n          case 'span':\n            if (this.handleLinks && attrs['class'] && attrs['class'].includes('h-card')) {\n              return ['', children.map(processItem), '']\n            }\n        }\n\n        if (children !== undefined) {\n          return [\n            '',\n            [\n              mentionsLinePadding,\n              [opener, children.map(processItem), closer]\n            ],\n            ''\n          ]\n        } else {\n          return ['', [mentionsLinePadding, item], '']\n        }\n      }\n    }\n\n    // Processor for back direction (for finding \"last\" stuff, just easier this way)\n    let encounteredTextReverse = false\n    const processItemReverse = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (emptyText) return item\n        if (!encounteredTextReverse) encounteredTextReverse = true\n        return unescape(item)\n      } else if (Array.isArray(item)) {\n        // Handle tag nodes\n        const [opener, children] = item\n        const Tag = opener === '' ? '' : getTagName(opener)\n        switch (Tag) {\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            const attrs = getAttrs(opener)\n            // should only be this\n            if (\n              (attrs['class'] && attrs['class'].includes('hashtag')) || // Pleroma style\n                (attrs['rel'] === 'tag') // Mastodon style\n            ) {\n              return renderHashtag(attrs, children, encounteredTextReverse)\n            } else {\n              attrs.target = '_blank'\n              const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n              return <a {...{ attrs }}>\n                { newChildren }\n              </a>\n            }\n          case '':\n            return [...children].reverse().map(processItemReverse).reverse()\n        }\n\n        // Render tag as is\n        if (children !== undefined) {\n          const newChildren = Array.isArray(children)\n            ? [...children].reverse().map(processItemReverse).reverse()\n            : children\n          return <Tag {...{ attrs: getAttrs(opener) }}>\n            { newChildren }\n          </Tag>\n        } else {\n          return <Tag/>\n        }\n      }\n      return item\n    }\n\n    const pass1 = convertHtmlToTree(html).map(processItem)\n    const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n    // DO NOT USE SLOTS they cause a re-render feedback loop here.\n    // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n    // at least until vue3?\n    const result = <span class=\"RichContent\">\n      { pass2 }\n    </span>\n\n    const event = {\n      lastTags,\n      writtenMentions,\n      writtenTags,\n      invisibleMentions\n    }\n\n    // DO NOT MOVE TO UPDATE. BAD IDEA.\n    this.$emit('parseReady', event)\n\n    return result\n  }\n})\n\nconst getLinkData = (attrs, children, index) => {\n  const stripTags = (item) => {\n    if (typeof item === 'string') {\n      return item\n    } else {\n      return item[1].map(stripTags).join('')\n    }\n  }\n  const textContent = children.map(stripTags).join('')\n  return {\n    index,\n    url: attrs.href,\n    tag: attrs['data-tag'],\n    content: flattenDeep(children).join(''),\n    textContent\n  }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n  const greentextHandle = new Set(['p', 'div'])\n\n  const lines = convertHtmlToLines(html)\n  const newHtml = lines.reverse().map((item, index, array) => {\n    if (!item.text) return item\n    const string = item.text\n\n    // Greentext stuff\n    if (\n      // Only if greentext is engaged\n      greentext &&\n        // Only handle p's and divs. Don't want to affect blockquotes, code etc\n        item.level.every(l => greentextHandle.has(l)) &&\n        // Only if line begins with '>' or '<'\n        (string.includes('&gt;') || string.includes('&lt;'))\n    ) {\n      const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n        .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n        .trim()\n      if (cleanedString.startsWith('&gt;')) {\n        return `<span class='greentext'>${string}</span>`\n      } else if (cleanedString.startsWith('&lt;')) {\n        return `<span class='cyantext'>${string}</span>`\n      }\n    }\n\n    return string\n  }).reverse().join('')\n\n  return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // TODO For future - also parse HTML5 multi-source components?\n\n  const buffer = [] // Current output buffer\n  const levels = [['', buffer]] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const getCurrentBuffer = () => {\n    return levels[levels.length - 1][1]\n  }\n\n  const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer === '') return\n    getCurrentBuffer().push(textBuffer)\n    textBuffer = ''\n  }\n\n  const handleSelfClosing = (tag) => {\n    getCurrentBuffer().push([tag])\n  }\n\n  const handleOpen = (tag) => {\n    const curBuf = getCurrentBuffer()\n    const newLevel = [tag, []]\n    levels.push(newLevel)\n    curBuf.push(newLevel)\n  }\n\n  const handleClose = (tag) => {\n    const currentTag = levels[levels.length - 1]\n    if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n      currentTag.push(tag)\n      levels.pop()\n    } else {\n      getCurrentBuffer().push(tag)\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      flushText()\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (tagFull[1] === '/') {\n        handleClose(tagFull)\n      } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n        // self-closing\n        handleSelfClosing(tagFull)\n      } else {\n        handleOpen(tagFull)\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flushText()\n  return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // Block-level element (they make a visual line)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n  const blockElements = new Set([\n    'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n    'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n    'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n    'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n  ])\n  // br is very weird in a way that it's technically not block-level, it's\n  // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n  // guarantee linebreak, only suggest it.\n  const linebreakElements = new Set(['br'])\n\n  const visualLineElements = new Set([\n    ...blockElements.values(),\n    ...linebreakElements.values()\n  ])\n\n  // All block-level elements that aren't empty elements, i.e. not <hr>\n  const nonEmptyElements = new Set(visualLineElements)\n  // Difference\n  for (let elem of emptyElements) {\n    nonEmptyElements.delete(elem)\n  }\n\n  // All elements that we are recognizing\n  const allElements = new Set([\n    ...nonEmptyElements.values(),\n    ...emptyElements.values()\n  ])\n\n  let buffer = [] // Current output buffer\n  const level = [] // How deep we are in tags and which tags were there\n  let textBuffer = '' // Current line content\n  let tagBuffer = null // Current tag buffer, if null = we are not currently reading a tag\n\n  const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer.trim().length > 0) {\n      buffer.push({ level: [...level], text: textBuffer })\n    } else {\n      buffer.push(textBuffer)\n    }\n    textBuffer = ''\n  }\n\n  const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n    flush()\n    buffer.push(tag)\n  }\n\n  const handleOpen = (tag) => { // handles opening tags\n    flush()\n    buffer.push(tag)\n    level.unshift(getTagName(tag))\n  }\n\n  const handleClose = (tag) => { // handles closing tags\n    if (level[0] === getTagName(tag)) {\n      flush()\n      buffer.push(tag)\n      level.shift()\n    } else { // Broken case\n      textBuffer += tag\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      tagBuffer = char\n    } else if (char !== '>' && tagBuffer !== null) {\n      tagBuffer += char\n    } else if (char === '>' && tagBuffer !== null) {\n      tagBuffer += char\n      const tagFull = tagBuffer\n      tagBuffer = null\n      const tagName = getTagName(tagFull)\n      if (allElements.has(tagName)) {\n        if (linebreakElements.has(tagName)) {\n          handleBr(tagFull)\n        } else if (nonEmptyElements.has(tagName)) {\n          if (tagFull[1] === '/') {\n            handleClose(tagFull)\n          } else if (tagFull[tagFull.length - 2] === '/') {\n            // self-closing\n            handleBr(tagFull)\n          } else {\n            handleOpen(tagFull)\n          }\n        } else {\n          textBuffer += tagFull\n        }\n      } else {\n        textBuffer += tagFull\n      }\n    } else if (char === '\\n') {\n      handleBr(char)\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flush()\n\n  return buffer\n}\n","const DialogModal = {\n  props: {\n    darkOverlay: {\n      default: true,\n      type: Boolean\n    },\n    onCancel: {\n      default: () => {},\n      type: Function\n    }\n  }\n}\n\nexport default DialogModal\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dialog_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./dialog_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./dialog_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70b9d662\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dialog_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:{ 'dark-overlay': _vm.darkOverlay },on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }$event.stopPropagation();return _vm.onCancel()}}},[_c('div',{staticClass:\"dialog-modal panel panel-default\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"panel-heading dialog-modal-heading\"},[_c('div',{staticClass:\"title\"},[_vm._t(\"header\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-footer user-interactions panel-footer\"},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      tags: {\n        FORCE_NSFW,\n        STRIP_MEDIA,\n        FORCE_UNLISTED,\n        DISABLE_REMOTE_SUBSCRIPTION,\n        DISABLE_ANY_SUBSCRIPTION,\n        SANDBOX,\n        QUARANTINE\n      },\n      showDeleteUserDialog: false,\n      toggled: false\n    }\n  },\n  components: {\n    DialogModal,\n    Popover\n  },\n  computed: {\n    tagsSet () {\n      return new Set(this.user.tags)\n    },\n    hasTagPolicy () {\n      return this.$store.state.instance.tagPolicyAvailable\n    }\n  },\n  methods: {\n    hasTag (tagName) {\n      return this.tagsSet.has(tagName)\n    },\n    toggleTag (tag) {\n      const store = this.$store\n      if (this.tagsSet.has(tag)) {\n        store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('untagUser', { user: this.user, tag })\n        })\n      } else {\n        store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n          if (!response.ok) { return }\n          store.commit('tagUser', { user: this.user, tag })\n        })\n      }\n    },\n    toggleRight (right) {\n      const store = this.$store\n      if (this.user.rights[right]) {\n        store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: false })\n        })\n      } else {\n        store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n          if (!response.ok) { return }\n          store.commit('updateRight', { user: this.user, right, value: true })\n        })\n      }\n    },\n    toggleActivationStatus () {\n      this.$store.dispatch('toggleActivationStatus', { user: this.user })\n    },\n    deleteUserDialog (show) {\n      this.showDeleteUserDialog = show\n    },\n    deleteUser () {\n      const store = this.$store\n      const user = this.user\n      const { id, name } = user\n      store.state.api.backendInteractor.deleteUser({ user })\n        .then(e => {\n          this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n          const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n          const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n          if (isProfile && isTargetUser) {\n            window.history.back()\n          }\n        })\n    },\n    setToggled (value) {\n      this.toggled = value\n    }\n  }\n}\n\nexport default ModerationTools\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./moderation_tools.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./moderation_tools.js\"\nimport __vue_script__ from \"!!babel-loader!./moderation_tools.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3f96e1c9\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./moderation_tools.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Popover',{staticClass:\"moderation-tools-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"offset\":{ y: 5 }},on:{\"show\":function($event){return _vm.setToggled(true)},\"close\":function($event){return _vm.setToggled(false)}},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n          \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n          \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleActivationStatus()}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n        \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.deleteUserDialog(true)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n        \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n          \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n          \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n          \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.SANDBOX)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n          \")]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.QUARANTINE)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }}),_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n          \")]):_vm._e()]):_vm._e()])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"btn button-default btn-block moderation-tools-button\",class:{ toggled: _vm.toggled }},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n        \"),_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}})],1)]},proxy:true}])}),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n      \")]},proxy:true},{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn button-default\",on:{\"click\":function($event){return _vm.deleteUserDialog(false)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('general.cancel'))+\"\\n        \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n        \")])]},proxy:true}],null,false,2753940671)},[_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEllipsisV\n)\n\nconst AccountActions = {\n  props: [\n    'user', 'relationship'\n  ],\n  data () {\n    return { }\n  },\n  components: {\n    ProgressButton,\n    Popover\n  },\n  methods: {\n    showRepeats () {\n      this.$store.dispatch('showReblogs', this.user.id)\n    },\n    hideRepeats () {\n      this.$store.dispatch('hideReblogs', this.user.id)\n    },\n    blockUser () {\n      this.$store.dispatch('blockUser', this.user.id)\n    },\n    unblockUser () {\n      this.$store.dispatch('unblockUser', this.user.id)\n    },\n    reportUser () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n    },\n    openChat () {\n      this.$router.push({\n        name: 'chat',\n        params: { recipient_id: this.user.id }\n      })\n    }\n  },\n  computed: {\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    })\n  }\n}\n\nexport default AccountActions\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./account_actions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./account_actions.js\"\nimport __vue_script__ from \"!!babel-loader!./account_actions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3b4867b7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"AccountActions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.relationship.following)?[(_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(!_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.relationship.blocking)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n        \")]):_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.block'))+\"\\n        \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.report'))+\"\\n        \")]),_vm._v(\" \"),(_vm.pleromaChatMessagesAvailable)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.openChat}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.message'))+\"\\n        \")]):_vm._e()],2)]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled ellipsis-button\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"ellipsis-v\"}})],1)]},proxy:true}])})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBell,\n  faRss,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRss,\n  faBell,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit\n)\n\nexport default {\n  props: [\n    'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n  ],\n  data () {\n    return {\n      followRequestInProgress: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchUserRelationship', this.user.id)\n  },\n  computed: {\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.userId)\n    },\n    classes () {\n      return [{\n        'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n        'user-card-rounded': this.rounded === true, // set border-radius for all sides\n        'user-card-bordered': this.bordered === true // set border for all sides\n      }]\n    },\n    style () {\n      return {\n        backgroundImage: [\n          `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n          `url(${this.user.cover_photo})`\n        ].join(', ')\n      }\n    },\n    isOtherUser () {\n      return this.user.id !== this.$store.state.users.currentUser.id\n    },\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    dailyAvg () {\n      const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n      return Math.round(this.user.statuses_count / days)\n    },\n    userHighlightType: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return (data && data.type) || 'disabled'\n      },\n      set (type) {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        if (type !== 'disabled') {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n        } else {\n          this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n        }\n      },\n      ...mapGetters(['mergedConfig'])\n    },\n    userHighlightColor: {\n      get () {\n        const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n        return data && data.color\n      },\n      set (color) {\n        this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n      }\n    },\n    visibleRole () {\n      const rights = this.user.rights\n      if (!rights) { return }\n      const validRole = rights.admin || rights.moderator\n      const roleTitle = rights.admin ? 'admin' : 'moderator'\n      return validRole && roleTitle\n    },\n    hideFollowsCount () {\n      return this.isOtherUser && this.user.hide_follows_count\n    },\n    hideFollowersCount () {\n      return this.isOtherUser && this.user.hide_followers_count\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    UserAvatar,\n    RemoteFollow,\n    ModerationTools,\n    AccountActions,\n    ProgressButton,\n    FollowButton,\n    Select,\n    RichContent\n  },\n  methods: {\n    muteUser () {\n      this.$store.dispatch('muteUser', this.user.id)\n    },\n    unmuteUser () {\n      this.$store.dispatch('unmuteUser', this.user.id)\n    },\n    subscribeUser () {\n      return this.$store.dispatch('subscribeUser', this.user.id)\n    },\n    unsubscribeUser () {\n      return this.$store.dispatch('unsubscribeUser', this.user.id)\n    },\n    setProfileView (v) {\n      if (this.switcher) {\n        const store = this.$store\n        store.commit('setProfileView', { v })\n      }\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    userProfileLink (user) {\n      return generateProfileLink(\n        user.id, user.screen_name,\n        this.$store.state.instance.restrictedNicknames\n      )\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    },\n    zoomAvatar () {\n      const attachment = {\n        url: this.user.profile_image_url_original,\n        mimetype: 'image'\n      }\n      this.$store.dispatch('setMedia', [attachment])\n      this.$store.dispatch('setCurrent', attachment)\n    },\n    mentionUser () {\n      this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-03077cba\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-card\",class:_vm.classes},[_c('div',{staticClass:\"background-image\",class:{ 'hide-bio': _vm.hideBio },style:(_vm.style)}),_vm._v(\" \"),_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"container\"},[(_vm.allowZoomingAvatar)?_c('a',{staticClass:\"user-info-avatar-link\",on:{\"click\":_vm.zoomAvatar}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}}),_vm._v(\" \"),_c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search-plus\"}})],1)],1):_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}})],1),_vm._v(\" \"),_c('div',{staticClass:\"user-summary\"},[_c('div',{staticClass:\"top-line\"},[_c('RichContent',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name,\"html\":_vm.user.name,\"emoji\":_vm.user.emoji}}),_vm._v(\" \"),(!_vm.isOtherUser && _vm.user.is_local)?_c('button',{staticClass:\"button-unstyled edit-profile-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openProfileTab($event)}}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"fixed-width\":\"\",\"icon\":\"edit\",\"title\":_vm.$t('user_card.edit_profile')}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('a',{staticClass:\"button-unstyled external-link-button\",attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"external-link-alt\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user,\"relationship\":_vm.relationship}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"title\":_vm.user.screen_name_ui,\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n              @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n            \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n                \"+_vm._s(_vm.$t((\"general.role.\" + _vm.visibleRole)))+\"\\n              \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n                \"+_vm._s(_vm.$t('user_card.bot'))+\"\\n              \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('FAIcon',{staticClass:\"lock-icon\",attrs:{\"icon\":\"lock\",\"size\":\"sm\"}})],1):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],2)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.relationship.followed_by && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('Select',{staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},model:{value:(_vm.userHighlightType),callback:function ($$v) {_vm.userHighlightType=$$v},expression:\"userHighlightType\"}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('user_card.highlight.disabled'))+\"\\n            \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('user_card.highlight.solid'))+\"\\n            \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('user_card.highlight.striped'))+\"\\n            \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('user_card.highlight.side'))+\"\\n            \")])])],1):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"relationship\":_vm.relationship}}),_vm._v(\" \"),(_vm.relationship.following)?[(!_vm.relationship.subscribing)?_c('ProgressButton',{staticClass:\"btn button-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1):_c('ProgressButton',{staticClass:\"btn button-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('FALayers',[_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"left-5 shrink-6 up-3 rotate-20\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"right-5 shrink-6 up-3 rotate-20\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1)],1)]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn button-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n          \")]):_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n          \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n          \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio)?_c('RichContent',{staticClass:\"user-card-bio\",attrs:{\"html\":_vm.user.description_html,\"emoji\":_vm.user.emoji}}):_vm._e()],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n  undelay: null, // root\n  topBar: null, // no transparency support\n  badge: null, //  no transparency support\n  profileTint: null, // doesn't matter\n  fg: null,\n  bg: 'underlay',\n  highlight: 'bg',\n  panel: 'bg',\n  popover: 'bg',\n  selectedMenu: 'popover',\n  btn: 'bg',\n  btnPanel: 'panel',\n  btnTopBar: 'topBar',\n  input: 'bg',\n  inputPanel: 'panel',\n  inputTopBar: 'topBar',\n  alert: 'bg',\n  alertPanel: 'panel',\n  poll: 'bg',\n  chatBg: 'underlay',\n  chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n  profileTint: 0.5,\n  alert: 0.5,\n  input: 0.5,\n  faint: 0.5,\n  underlay: 0.15,\n  alertPopup: 0.95\n}\n\n/**  SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n *     dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n *     defined in hexadecimal representation (i.e. #FFFFFF) and will be\n *     used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n *   cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n *   opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n *   that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n *   used to determine the color. By default it just copies first color in\n *   dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n *   depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n *   color from `depends` array. All colors take user customizations into\n *   account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n *   color. This enables automatic text color generation for the slot. Use\n *   'preserve' string if you don't want text color to fall back to\n *   black/white. Use 'bw' to only ever use black or white. This also makes\n *   following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n *   to account for transparency in text color calculation\n *   layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n *   above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n  bg: {\n    depends: [],\n    opacity: 'bg',\n    priority: 1\n  },\n  wallpaper: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(-2 * mod, bg).rgb\n  },\n  fg: {\n    depends: [],\n    priority: 1\n  },\n  text: {\n    depends: [],\n    layer: 'bg',\n    opacity: null,\n    priority: 1\n  },\n  underlay: {\n    default: '#000000',\n    opacity: 'underlay'\n  },\n  link: {\n    depends: ['accent'],\n    priority: 1\n  },\n  accent: {\n    depends: ['link'],\n    priority: 1\n  },\n  faint: {\n    depends: ['text'],\n    opacity: 'faint'\n  },\n  faintLink: {\n    depends: ['link'],\n    opacity: 'faint'\n  },\n  postFaintLink: {\n    depends: ['postLink'],\n    opacity: 'faint'\n  },\n\n  cBlue: '#0000ff',\n  cRed: '#FF0000',\n  cGreen: '#00FF00',\n  cOrange: '#E3FF00',\n\n  profileBg: {\n    depends: ['bg'],\n    color: (mod, bg) => ({\n      r: Math.floor(bg.r * 0.53),\n      g: Math.floor(bg.g * 0.56),\n      b: Math.floor(bg.b * 0.59)\n    })\n  },\n  profileTint: {\n    depends: ['bg'],\n    layer: 'profileTint',\n    opacity: 'profileTint'\n  },\n\n  highlight: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  highlightLightText: {\n    depends: ['lightText'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightPostLink: {\n    depends: ['postLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightFaintText: {\n    depends: ['faint'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightFaintLink: {\n    depends: ['faintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightText: {\n    depends: ['text'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightLink: {\n    depends: ['link'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightIcon: {\n    depends: ['highlight', 'highlightText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  popover: {\n    depends: ['bg'],\n    opacity: 'popover'\n  },\n  popoverLightText: {\n    depends: ['lightText'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverPostLink: {\n    depends: ['postLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverFaintText: {\n    depends: ['faint'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverFaintLink: {\n    depends: ['faintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverText: {\n    depends: ['text'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverLink: {\n    depends: ['link'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverIcon: {\n    depends: ['popover', 'popoverText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedPost: '--highlight',\n  selectedPostFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLightText: {\n    depends: ['highlightLightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostPostLink: {\n    depends: ['highlightPostLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostText: {\n    depends: ['highlightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLink: {\n    depends: ['highlightLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostIcon: {\n    depends: ['selectedPost', 'selectedPostText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenu: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuLightText: {\n    depends: ['highlightLightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuText: {\n    depends: ['highlightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuLink: {\n    depends: ['highlightLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuIcon: {\n    depends: ['selectedMenu', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenuPopover: {\n    depends: ['popover'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuPopoverLightText: {\n    depends: ['selectedMenuLightText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintText: {\n    depends: ['selectedMenuFaintText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintLink: {\n    depends: ['selectedMenuFaintLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverText: {\n    depends: ['selectedMenuText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverLink: {\n    depends: ['selectedMenuLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverIcon: {\n    depends: ['selectedMenuPopover', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  lightText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: 'preserve',\n    color: (mod, text) => brightness(20 * mod, text).rgb\n  },\n\n  postLink: {\n    depends: ['link'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postGreentext: {\n    depends: ['cGreen'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postCyantext: {\n    depends: ['cBlue'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  border: {\n    depends: ['fg'],\n    opacity: 'border',\n    color: (mod, fg) => brightness(2 * mod, fg).rgb\n  },\n\n  poll: {\n    depends: ['accent', 'bg'],\n    copacity: 'poll',\n    color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n  },\n  pollText: {\n    depends: ['text'],\n    layer: 'poll',\n    textColor: true\n  },\n\n  icon: {\n    depends: ['bg', 'text'],\n    inheritsOpacity: false,\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  // Foreground\n  fgText: {\n    depends: ['text'],\n    layer: 'fg',\n    textColor: true\n  },\n  fgLink: {\n    depends: ['link'],\n    layer: 'fg',\n    textColor: 'preserve'\n  },\n\n  // Panel header\n  panel: {\n    depends: ['fg'],\n    opacity: 'panel'\n  },\n  panelText: {\n    depends: ['text'],\n    layer: 'panel',\n    textColor: true\n  },\n  panelFaint: {\n    depends: ['fgText'],\n    layer: 'panel',\n    opacity: 'faint',\n    textColor: true\n  },\n  panelLink: {\n    depends: ['fgLink'],\n    layer: 'panel',\n    textColor: 'preserve'\n  },\n\n  // Top bar\n  topBar: '--fg',\n  topBarText: {\n    depends: ['fgText'],\n    layer: 'topBar',\n    textColor: true\n  },\n  topBarLink: {\n    depends: ['fgLink'],\n    layer: 'topBar',\n    textColor: 'preserve'\n  },\n\n  // Tabs\n  tab: {\n    depends: ['btn']\n  },\n  tabText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    textColor: true\n  },\n  tabActiveText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: true\n  },\n\n  // Buttons\n  btn: {\n    depends: ['fg'],\n    variant: 'btn',\n    opacity: 'btn'\n  },\n  btnText: {\n    depends: ['fgText'],\n    layer: 'btn',\n    textColor: true\n  },\n  btnPanelText: {\n    depends: ['btnText'],\n    layer: 'btnPanel',\n    variant: 'btn',\n    textColor: true\n  },\n  btnTopBarText: {\n    depends: ['btnText'],\n    layer: 'btnTopBar',\n    variant: 'btn',\n    textColor: true\n  },\n\n  // Buttons: pressed\n  btnPressed: {\n    depends: ['btn'],\n    layer: 'btn'\n  },\n  btnPressedText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedPanel: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedTopBar: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnPressed',\n    textColor: true\n  },\n\n  // Buttons: toggled\n  btnToggled: {\n    depends: ['btn'],\n    layer: 'btn',\n    color: (mod, btn) => brightness(mod * 20, btn).rgb\n  },\n  btnToggledText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnToggled',\n    textColor: true\n  },\n\n  // Buttons: disabled\n  btnDisabled: {\n    depends: ['btn', 'bg'],\n    color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n  },\n  btnDisabledText: {\n    depends: ['btnText', 'btnDisabled'],\n    layer: 'btn',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledPanelText: {\n    depends: ['btnPanelText', 'btnDisabled'],\n    layer: 'btnPanel',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledTopBarText: {\n    depends: ['btnTopBarText', 'btnDisabled'],\n    layer: 'btnTopBar',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n\n  // Input fields\n  input: {\n    depends: ['fg'],\n    opacity: 'input'\n  },\n  inputText: {\n    depends: ['text'],\n    layer: 'input',\n    textColor: true\n  },\n  inputPanelText: {\n    depends: ['panelText'],\n    layer: 'inputPanel',\n    variant: 'input',\n    textColor: true\n  },\n  inputTopbarText: {\n    depends: ['topBarText'],\n    layer: 'inputTopBar',\n    variant: 'input',\n    textColor: true\n  },\n\n  alertError: {\n    depends: ['cRed'],\n    opacity: 'alert'\n  },\n  alertErrorText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertError',\n    textColor: true\n  },\n  alertErrorPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertError',\n    textColor: true\n  },\n\n  alertWarning: {\n    depends: ['cOrange'],\n    opacity: 'alert'\n  },\n  alertWarningText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertWarning',\n    textColor: true\n  },\n  alertWarningPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertWarning',\n    textColor: true\n  },\n\n  alertSuccess: {\n    depends: ['cGreen'],\n    opacity: 'alert'\n  },\n  alertSuccessText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n  alertSuccessPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n\n  alertNeutral: {\n    depends: ['text'],\n    opacity: 'alert'\n  },\n  alertNeutralText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertNeutral',\n    color: (mod, text) => invertLightness(text).rgb,\n    textColor: true\n  },\n  alertNeutralPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertNeutral',\n    textColor: true\n  },\n\n  alertPopupError: {\n    depends: ['alertError'],\n    opacity: 'alertPopup'\n  },\n  alertPopupErrorText: {\n    depends: ['alertErrorText'],\n    layer: 'popover',\n    variant: 'alertPopupError',\n    textColor: true\n  },\n\n  alertPopupWarning: {\n    depends: ['alertWarning'],\n    opacity: 'alertPopup'\n  },\n  alertPopupWarningText: {\n    depends: ['alertWarningText'],\n    layer: 'popover',\n    variant: 'alertPopupWarning',\n    textColor: true\n  },\n\n  alertPopupSuccess: {\n    depends: ['alertSuccess'],\n    opacity: 'alertPopup'\n  },\n  alertPopupSuccessText: {\n    depends: ['alertSuccessText'],\n    layer: 'popover',\n    variant: 'alertPopupSuccess',\n    textColor: true\n  },\n\n  alertPopupNeutral: {\n    depends: ['alertNeutral'],\n    opacity: 'alertPopup'\n  },\n  alertPopupNeutralText: {\n    depends: ['alertNeutralText'],\n    layer: 'popover',\n    variant: 'alertPopupNeutral',\n    textColor: true\n  },\n\n  badgeNotification: '--cRed',\n  badgeNotificationText: {\n    depends: ['text', 'badgeNotification'],\n    layer: 'badge',\n    variant: 'badgeNotification',\n    textColor: 'bw'\n  },\n\n  chatBg: {\n    depends: ['bg']\n  },\n\n  chatMessageIncomingBg: {\n    depends: ['chatBg']\n  },\n\n  chatMessageIncomingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: true\n  },\n\n  chatMessageIncomingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageIncomingBorder: {\n    depends: ['border'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  },\n\n  chatMessageOutgoingBg: {\n    depends: ['chatMessageIncomingBg'],\n    color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n  },\n\n  chatMessageOutgoingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: true\n  },\n\n  chatMessageOutgoingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageOutgoingBorder: {\n    depends: ['chatMessageOutgoingBg'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  }\n}\n","import { hex2rgb } from '../color_convert/color_convert.js'\nconst highlightStyle = (prefs) => {\n  if (prefs === undefined) return\n  const { color, type } = prefs\n  if (typeof color !== 'string') return\n  const rgb = hex2rgb(color)\n  if (rgb == null) return\n  const solidColor = `rgb(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)})`\n  const tintColor = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .1)`\n  const tintColor2 = `rgba(${Math.floor(rgb.r)}, ${Math.floor(rgb.g)}, ${Math.floor(rgb.b)}, .2)`\n  const customProps = {\n    '--____highlight-solidColor': solidColor,\n    '--____highlight-tintColor': tintColor,\n    '--____highlight-tintColor2': tintColor2\n  }\n  if (type === 'striped') {\n    return {\n      backgroundImage: [\n        'repeating-linear-gradient(135deg,',\n        `${tintColor} ,`,\n        `${tintColor} 20px,`,\n        `${tintColor2} 20px,`,\n        `${tintColor2} 40px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  } else if (type === 'solid') {\n    return {\n      backgroundColor: tintColor2,\n      ...customProps\n    }\n  } else if (type === 'side') {\n    return {\n      backgroundImage: [\n        'linear-gradient(to right,',\n        `${solidColor} ,`,\n        `${solidColor} 2px,`,\n        `transparent 6px`\n      ].join(' '),\n      backgroundPosition: '0 0',\n      ...customProps\n    }\n  }\n}\n\nconst highlightClass = (user) => {\n  return 'USER____' + user.screen_name\n    .replace(/\\./g, '_')\n    .replace(/@/g, '_AT_')\n}\n\nexport {\n  highlightClass,\n  highlightStyle\n}\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n  const { rules } = generatePreset(input)\n  const head = document.head\n  const body = document.body\n  body.classList.add('hidden')\n\n  const styleEl = document.createElement('style')\n  head.appendChild(styleEl)\n  const styleSheet = styleEl.sheet\n\n  styleSheet.toString()\n  styleSheet.insertRule(`body { ${rules.radii} }`, 'index-max')\n  styleSheet.insertRule(`body { ${rules.colors} }`, 'index-max')\n  styleSheet.insertRule(`body { ${rules.shadows} }`, 'index-max')\n  styleSheet.insertRule(`body { ${rules.fonts} }`, 'index-max')\n  body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n    .filter(_ => usesDropShadow ? _.inset : _)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      shad.blur,\n      shad.spread\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha),\n      shad.inset ? 'inset' : ''\n    ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n  // drop-shadow doesn't support inset or spread\n    .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      // drop-shadow's blur is twice as strong compared to box-shadow\n      shad.blur / 2\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha)\n    ]).join(' '))\n    .map(_ => `drop-shadow(${_})`)\n    .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n  const sourceColors = !themeData.themeEngineVersion\n    ? colors2to3(themeData.colors || themeData)\n    : themeData.colors || themeData\n\n  const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n  const htmlColors = Object.entries(colors)\n    .reduce((acc, [k, v]) => {\n      if (!v) return acc\n      acc.solid[k] = rgb2hex(v)\n      acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n      return acc\n    }, { complete: {}, solid: {} })\n  return {\n    rules: {\n      colors: Object.entries(htmlColors.complete)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}: ${v}`)\n        .join(';')\n    },\n    theme: {\n      colors: htmlColors.solid,\n      opacity\n    }\n  }\n}\n\nexport const generateRadii = (input) => {\n  let inputRadii = input.radii || {}\n  // v1 -> v2\n  if (typeof input.btnRadius !== 'undefined') {\n    inputRadii = Object\n      .entries(input)\n      .filter(([k, v]) => k.endsWith('Radius'))\n      .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n  }\n  const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = v\n    return acc\n  }, {\n    btn: 4,\n    input: 4,\n    checkbox: 2,\n    panel: 10,\n    avatar: 5,\n    avatarAlt: 50,\n    tooltip: 2,\n    attachment: 5,\n    chatMessage: inputRadii.panel\n  })\n\n  return {\n    rules: {\n      radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n    },\n    theme: {\n      radii\n    }\n  }\n}\n\nexport const generateFonts = (input) => {\n  const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n      acc[k] = v\n      return acc\n    }, acc[k])\n    return acc\n  }, {\n    interface: {\n      family: 'sans-serif'\n    },\n    input: {\n      family: 'inherit'\n    },\n    post: {\n      family: 'inherit'\n    },\n    postCode: {\n      family: 'monospace'\n    }\n  })\n\n  return {\n    rules: {\n      fonts: Object\n        .entries(fonts)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n    },\n    theme: {\n      fonts\n    }\n  }\n}\n\nconst border = (top, shadow) => ({\n  x: 0,\n  y: top ? 1 : -1,\n  blur: 0,\n  spread: 0,\n  color: shadow ? '#000000' : '#FFFFFF',\n  alpha: 0.2,\n  inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n  x: 0,\n  y: 0,\n  blur: 4,\n  spread: 0,\n  color: '--faint',\n  alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n  panel: [{\n    x: 1,\n    y: 1,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  topBar: [{\n    x: 0,\n    y: 0,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  popup: [{\n    x: 2,\n    y: 2,\n    blur: 3,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.5\n  }],\n  avatar: [{\n    x: 0,\n    y: 1,\n    blur: 8,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.7\n  }],\n  avatarStatus: [],\n  panelHeader: [],\n  button: [{\n    x: 0,\n    y: 0,\n    blur: 2,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }, ...buttonInsetFakeBorders],\n  buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n  buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n  input: [...inputInsetFakeBorders, {\n    x: 0,\n    y: 0,\n    blur: 2,\n    inset: true,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }]\n}\nexport const generateShadows = (input, colors) => {\n  // TODO this is a small hack for `mod` to work with shadows\n  // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n  const hackContextDict = {\n    button: 'btn',\n    panel: 'bg',\n    top: 'topBar',\n    popup: 'popover',\n    avatar: 'bg',\n    panelHeader: 'panel',\n    input: 'input'\n  }\n\n  const cleanInputShadows = Object.fromEntries(\n    Object.entries(input.shadows || {})\n      .map(([name, shadowSlot]) => [\n        name,\n        // defaulting color to black to avoid potential problems\n        shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n      ])\n  )\n  const inputShadows = cleanInputShadows && !input.themeEngineVersion\n    ? shadows2to3(cleanInputShadows, input.opacity)\n    : cleanInputShadows || {}\n  const shadows = Object.entries({\n    ...DEFAULT_SHADOWS,\n    ...inputShadows\n  }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n    const colorSlotName = hackContextDict[slotFirstWord]\n    const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n    const mod = isLightOnDark ? 1 : -1\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        color: rgb2hex(computeDynamicColor(\n          def.color,\n          (variableSlot) => convert(colors[variableSlot]).rgb,\n          mod\n        ))\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n\n  return {\n    rules: {\n      shadows: Object\n        .entries(shadows)\n      // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n      // convert all non-inset shadows into filter: drop-shadow() to boost performance\n        .map(([k, v]) => [\n          `--${k}Shadow: ${getCssShadow(v)}`,\n          `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n          `--${k}ShadowInset: ${getCssShadow(v, true)}`\n        ].join(';'))\n        .join(';')\n    },\n    theme: {\n      shadows\n    }\n  }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n  return {\n    rules: {\n      ...shadows.rules,\n      ...colors.rules,\n      ...radii.rules,\n      ...fonts.rules\n    },\n    theme: {\n      ...shadows.theme,\n      ...colors.theme,\n      ...radii.theme,\n      ...fonts.theme\n    }\n  }\n}\n\nexport const generatePreset = (input) => {\n  const colors = generateColors(input)\n  return composePreset(\n    colors,\n    generateRadii(input),\n    generateShadows(input, colors.theme.colors, colors.mod),\n    generateFonts(input)\n  )\n}\n\nexport const getThemes = () => {\n  const cache = 'no-store'\n\n  return window.fetch('/static/styles.json', { cache })\n    .then((data) => data.json())\n    .then((themes) => {\n      return Object.entries(themes).map(([k, v]) => {\n        let promise = null\n        if (typeof v === 'object') {\n          promise = Promise.resolve(v)\n        } else if (typeof v === 'string') {\n          promise = window.fetch(v, { cache })\n            .then((data) => data.json())\n            .catch((e) => {\n              console.error(e)\n              return null\n            })\n        }\n        return [k, promise]\n      })\n    })\n    .then((promises) => {\n      return promises\n        .reduce((acc, [k, v]) => {\n          acc[k] = v\n          return acc\n        }, {})\n    })\n}\nexport const colors2to3 = (colors) => {\n  return Object.entries(colors).reduce((acc, [slotName, color]) => {\n    const btnPositions = ['', 'Panel', 'TopBar']\n    switch (slotName) {\n      case 'lightBg':\n        return { ...acc, highlight: color }\n      case 'btnText':\n        return {\n          ...acc,\n          ...btnPositions\n            .reduce(\n              (statePositionAcc, position) =>\n                ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n              , {}\n            )\n        }\n      default:\n        return { ...acc, [slotName]: color }\n    }\n  }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n  return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n    const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n}\n\nexport const getPreset = (val) => {\n  return getThemes()\n    .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n    .then((theme) => {\n      const isV1 = Array.isArray(theme)\n      const data = isV1 ? {} : theme.theme\n\n      if (isV1) {\n        const bg = hex2rgb(theme[1])\n        const fg = hex2rgb(theme[2])\n        const text = hex2rgb(theme[3])\n        const link = hex2rgb(theme[4])\n\n        const cRed = hex2rgb(theme[5] || '#FF0000')\n        const cGreen = hex2rgb(theme[6] || '#00FF00')\n        const cBlue = hex2rgb(theme[7] || '#0000FF')\n        const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n        data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n      }\n\n      return { theme: data, source: theme.source }\n    })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n  name: 'ReplyButton',\n  props: ['status', 'replying'],\n  computed: {\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  }\n}\n\nexport default ReplyButton\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./reply_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./reply_button.js\"\nimport __vue_script__ from \"!!babel-loader!./reply_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56f413c0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./reply_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ReplyButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:{'-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('toggle')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\"}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"title\":_vm.$t('tool_tip.reply')}})],1),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n    \"+_vm._s(_vm.status.replies_count)+\"\\n  \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n  faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faStar,\n  faStarRegular\n)\n\nconst FavoriteButton = {\n  props: ['status', 'loggedIn'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    favorite () {\n      if (!this.status.favorited) {\n        this.$store.dispatch('favorite', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unfavorite', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig'])\n  }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21f861d8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"FavoriteButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.favorited && '-favorited',attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":[_vm.status.favorited ? 'fas' : 'far', 'star'],\"spin\":_vm.animated}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"title\":_vm.$t('tool_tip.favorite'),\"icon\":['far', 'star']}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n    \"+_vm._s(_vm.status.fave_num)+\"\\n  \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n  props: ['status'],\n  data () {\n    return {\n      filterWord: ''\n    }\n  },\n  components: {\n    Popover\n  },\n  methods: {\n    addReaction (event, emoji, close) {\n      const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n      if (existingReaction && existingReaction.me) {\n        this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n      } else {\n        this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n      }\n      close()\n    },\n    focusInput () {\n      this.$nextTick(() => {\n        const input = this.$el.querySelector('input')\n        if (input) input.focus()\n      })\n    }\n  },\n  computed: {\n    commonEmojis () {\n      return [\n        { displayText: 'thumbsup', replacement: '👍' },\n        { displayText: 'angry', replacement: '😠' },\n        { displayText: 'eyes', replacement: '👀' },\n        { displayText: 'joy', replacement: '😂' },\n        { displayText: 'fire', replacement: '🔥' }\n      ]\n    },\n    emojis () {\n      if (this.filterWord !== '') {\n        const filterWordLowercase = this.filterWord.toLowerCase()\n        let orderedEmojiList = []\n        for (const emoji of this.$store.state.instance.emoji) {\n          if (emoji.replacement === this.filterWord) return [emoji]\n\n          const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n          if (indexOfFilterWord > -1) {\n            if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n              orderedEmojiList[indexOfFilterWord] = []\n            }\n            orderedEmojiList[indexOfFilterWord].push(emoji)\n          }\n        }\n        return orderedEmojiList.flat()\n      }\n      return this.$store.state.instance.emoji || []\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a936ed34\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ReactButton\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},on:{\"show\":_vm.focusInput},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"size\":\"1\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji.replacement,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n        \"+_vm._s(emoji.replacement)+\"\\n      \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n        \"+_vm._s(emoji.replacement)+\"\\n      \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)]}},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled popover-trigger\",attrs:{\"title\":_vm.$t('tool_tip.add_reaction')}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":['far', 'smile-beam']}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n  props: ['status', 'loggedIn', 'visibility'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    retweet () {\n      if (!this.status.repeated) {\n        this.$store.dispatch('retweet', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unretweet', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46fe49c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"RetweetButton\"},[(_vm.visibility !== 'private' && _vm.visibility !== 'direct' && _vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.repeated && '-repeated',attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"spin\":_vm.animated}})],1):(_vm.loggedIn)?_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\",\"title\":_vm.$t('timeline.no_retweet_hint')}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',{staticClass:\"no-event\"},[_vm._v(\"\\n    \"+_vm._s(_vm.status.repeat_num)+\"\\n  \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisH,\n  faBookmark,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faBookmark as faBookmarkReg,\n  faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faEllipsisH,\n  faBookmark,\n  faBookmarkReg,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt,\n  faFlag\n)\n\nconst ExtraButtons = {\n  props: [ 'status' ],\n  components: { Popover },\n  methods: {\n    deleteStatus () {\n      const confirmed = window.confirm(this.$t('status.delete_confirm'))\n      if (confirmed) {\n        this.$store.dispatch('deleteStatus', { id: this.status.id })\n      }\n    },\n    pinStatus () {\n      this.$store.dispatch('pinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unpinStatus () {\n      this.$store.dispatch('unpinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    muteConversation () {\n      this.$store.dispatch('muteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unmuteConversation () {\n      this.$store.dispatch('unmuteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    copyLink () {\n      navigator.clipboard.writeText(this.statusLink)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    bookmarkStatus () {\n      this.$store.dispatch('bookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unbookmarkStatus () {\n      this.$store.dispatch('unbookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    reportStatus () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n    }\n  },\n  computed: {\n    currentUser () { return this.$store.state.users.currentUser },\n    canDelete () {\n      if (!this.currentUser) { return }\n      const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n      return superuser || this.status.user.id === this.currentUser.id\n    },\n    ownStatus () {\n      return this.status.user.id === this.currentUser.id\n    },\n    canPin () {\n      return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n    },\n    canMute () {\n      return !!this.currentUser\n    },\n    statusLink () {\n      return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n    }\n  }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3a956a44\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ExtraButtons\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'bookmark']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"share-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])],1),_vm._v(\" \"),(!_vm.status.is_local)?_c('a',{staticClass:\"button-default dropdown-item dropdown-item-icon\",attrs:{\"title\":\"Source\",\"href\":_vm.status.external_url,\"target\":\"_blank\"}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"external-link-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.external_source\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.reportStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'flag']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"user_card.report\")))])],1)])]}},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled popover-trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"ellipsis-h\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst StatusPopover = {\n  name: 'StatusPopover',\n  props: [\n    'statusId'\n  ],\n  data () {\n    return {\n      error: false\n    }\n  },\n  computed: {\n    status () {\n      return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n    }\n  },\n  components: {\n    Status: () => import('../status/status.vue'),\n    Popover: () => import('../popover/popover.vue')\n  },\n  methods: {\n    enter () {\n      if (!this.status) {\n        if (!this.statusId) {\n          this.error = true\n          return\n        }\n        this.$store.dispatch('fetchStatus', this.statusId)\n          .then(data => (this.error = false))\n          .catch(e => (this.error = true))\n      }\n    }\n  }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fa4a5d94\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"popover-class\":\"popover-default status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"default\")]},proxy:true},{key:\"content\",fn:function(){return [(_vm.status)?_c('Status',{attrs:{\"is-preview\":true,\"statusoid\":_vm.status,\"compact\":true}}):(_vm.error)?_c('div',{staticClass:\"status-preview-no-content faint\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('status.status_unavailable'))+\"\\n    \")]):_c('div',{staticClass:\"status-preview-no-content\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"2x\"}})],1)]},proxy:true}],null,true)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst UserListPopover = {\n  name: 'UserListPopover',\n  props: [\n    'users'\n  ],\n  components: {\n    Popover: () => import('../popover/popover.vue'),\n    UserAvatar: () => import('../user_avatar/user_avatar.vue')\n  },\n  computed: {\n    usersCapped () {\n      return this.users.slice(0, 16)\n    }\n  }\n}\n\nexport default UserListPopover\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_list_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_list_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./user_list_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c55da98a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_list_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"default\")]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticClass:\"user-list-popover\"},[(_vm.users.length)?_vm._l((_vm.usersCapped),function(user){return _c('div',{key:user.id,staticClass:\"user-list-row\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"user-list-names\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(user.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"user-list-screen-name\"},[_vm._v(_vm._s(user.screen_name_ui))])])],1)}):[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}})]],2)]},proxy:true}],null,true)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n  name: 'EmojiReactions',\n  components: {\n    UserAvatar,\n    UserListPopover\n  },\n  props: ['status'],\n  data: () => ({\n    showAll: false\n  }),\n  computed: {\n    tooManyReactions () {\n      return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n    },\n    emojiReactions () {\n      return this.showAll\n        ? this.status.emoji_reactions\n        : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n    },\n    showMoreString () {\n      return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n    },\n    accountsForEmoji () {\n      return this.status.emoji_reactions.reduce((acc, reaction) => {\n        acc[reaction.name] = reaction.accounts || []\n        return acc\n      }, {})\n    },\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    toggleShowAll () {\n      this.showAll = !this.showAll\n    },\n    reactedWith (emoji) {\n      return this.status.emoji_reactions.find(r => r.name === emoji).me\n    },\n    fetchEmojiReactionsByIfMissing () {\n      const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n      if (hasNoAccounts) {\n        this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n      }\n    },\n    reactWith (emoji) {\n      this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n    },\n    unreact (emoji) {\n      this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n    },\n    emojiOnClick (emoji, event) {\n      if (!this.loggedIn) return\n\n      if (this.reactedWith(emoji)) {\n        this.unreact(emoji)\n      } else {\n        this.reactWith(emoji)\n      }\n    }\n  }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a9f972b4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('UserListPopover',{key:reaction.name,attrs:{\"users\":_vm.accountsForEmoji[reaction.name]}},[_c('button',{staticClass:\"emoji-reaction btn button-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}}},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n    \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n  \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faSmileBeam,\n  faEllipsisH,\n  faStar,\n  faEyeSlash,\n  faEye,\n  faThumbtack\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faStar,\n  faSmileBeam,\n  faEllipsisH,\n  faEyeSlash,\n  faEye,\n  faThumbtack\n)\n\nconst Status = {\n  name: 'Status',\n  components: {\n    ReplyButton,\n    FavoriteButton,\n    ReactButton,\n    RetweetButton,\n    ExtraButtons,\n    PostStatusForm,\n    UserCard,\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    StatusPopover,\n    UserListPopover,\n    EmojiReactions,\n    StatusContent,\n    RichContent,\n    MentionLink,\n    MentionsLine\n  },\n  props: [\n    'statusoid',\n    'expandable',\n    'inConversation',\n    'focused',\n    'highlight',\n    'compact',\n    'replies',\n    'isPreview',\n    'noHeading',\n    'inlineExpanded',\n    'showPinned',\n    'inProfile',\n    'profileUserId'\n  ],\n  data () {\n    return {\n      replying: false,\n      unmuted: false,\n      userExpanded: false,\n      mediaPlaying: [],\n      suspendable: true,\n      error: null,\n      headTailLinks: null\n    }\n  },\n  computed: {\n    muteWords () {\n      return this.mergedConfig.muteWords\n    },\n    showReasonMutedThread () {\n      return (\n        this.status.thread_muted ||\n          (this.status.reblog && this.status.reblog.thread_muted)\n      ) && !this.inConversation\n    },\n    repeaterClass () {\n      const user = this.statusoid.user\n      return highlightClass(user)\n    },\n    userClass () {\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      return highlightClass(user)\n    },\n    deleted () {\n      return this.statusoid.deleted\n    },\n    repeaterStyle () {\n      const user = this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userStyle () {\n      if (this.noHeading) return\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n    },\n    replyProfileLink () {\n      if (this.isReply) {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        // FIXME Why user not found sometimes???\n        return user ? user.statusnet_profile_url : 'NOT_FOUND'\n      }\n    },\n    retweet () { return !!this.statusoid.retweeted_status },\n    retweeterUser () { return this.statusoid.user },\n    retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n    retweeterHtml () { return this.statusoid.user.name },\n    retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n    status () {\n      if (this.retweet) {\n        return this.statusoid.retweeted_status\n      } else {\n        return this.statusoid\n      }\n    },\n    statusFromGlobalRepository () {\n      // NOTE: Consider to replace status with statusFromGlobalRepository\n      return this.$store.state.statuses.allStatusesObject[this.status.id]\n    },\n    loggedIn () {\n      return !!this.currentUser\n    },\n    muteWordHits () {\n      return muteWordHits(this.status, this.muteWords)\n    },\n    mentionsLine () {\n      if (!this.headTailLinks) return []\n      const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n      return this.status.attentions.filter(attn => {\n        // no reply user\n        return attn.id !== this.status.in_reply_to_user_id &&\n          // no self-replies\n          attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n          // don't include if mentions is written\n          !writtenSet.has(attn.statusnet_profile_url)\n      }).map(attn => ({\n        url: attn.statusnet_profile_url,\n        content: attn.screen_name,\n        userId: attn.id\n      }))\n    },\n    hasMentionsLine () {\n      return this.mentionsLine.length > 0\n    },\n    muted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const { status } = this\n      const { reblog } = status\n      const relationship = this.$store.getters.relationship(status.user.id)\n      const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n      const reasonsToMute = (\n        // Post is muted according to BE\n        status.muted ||\n        // Reprööt of a muted post according to BE\n        (reblog && reblog.muted) ||\n        // Muted user\n        relationship.muting ||\n        // Muted user of a reprööt\n        (relationshipReblog && relationshipReblog.muting) ||\n        // Thread is muted\n        status.thread_muted ||\n        // Wordfiltered\n        this.muteWordHits.length > 0\n      )\n      const excusesNotToMute = (\n        (\n          this.inProfile && (\n            // Don't mute user's posts on user timeline (except reblogs)\n            (!reblog && status.user.id === this.profileUserId) ||\n            // Same as above but also allow self-reblogs\n            (reblog && reblog.user.id === this.profileUserId)\n          )\n        ) ||\n        // Don't mute statuses in muted conversation when said conversation is opened\n        (this.inConversation && status.thread_muted)\n        // No excuses if post has muted words\n      ) && !this.muteWordHits.length > 0\n\n      return !this.unmuted && !excusesNotToMute && reasonsToMute\n    },\n    hideFilteredStatuses () {\n      return this.mergedConfig.hideFilteredStatuses\n    },\n    hideStatus () {\n      return (this.muted && this.hideFilteredStatuses) || this.virtualHidden\n    },\n    isFocused () {\n      // retweet or root of an expanded conversation\n      if (this.focused) {\n        return true\n      } else if (!this.inConversation) {\n        return false\n      }\n      // use conversation highlight only when in conversation\n      return this.status.id === this.highlight\n    },\n    isReply () {\n      return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n    },\n    replyToName () {\n      if (this.status.in_reply_to_screen_name) {\n        return this.status.in_reply_to_screen_name\n      } else {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        return user && user.screen_name_ui\n      }\n    },\n    replySubject () {\n      if (!this.status.summary) return ''\n      const decodedSummary = unescape(this.status.summary)\n      const behavior = this.mergedConfig.subjectLineBehavior\n      const startsWithRe = decodedSummary.match(/^re[: ]/i)\n      if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n        return decodedSummary\n      } else if (behavior === 'email') {\n        return 're: '.concat(decodedSummary)\n      } else if (behavior === 'noop') {\n        return ''\n      }\n    },\n    combinedFavsAndRepeatsUsers () {\n      // Use the status from the global status repository since favs and repeats are saved in it\n      const combinedUsers = [].concat(\n        this.statusFromGlobalRepository.favoritedBy,\n        this.statusFromGlobalRepository.rebloggedBy\n      )\n      return uniqBy(combinedUsers, 'id')\n    },\n    tags () {\n      return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n    },\n    hidePostStats () {\n      return this.mergedConfig.hidePostStats\n    },\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    betterShadow () {\n      return this.$store.state.interface.browserSupport.cssFilter\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    },\n    isSuspendable () {\n      return !this.replying && this.mediaPlaying.length === 0\n    }\n  },\n  methods: {\n    visibilityIcon (visibility) {\n      switch (visibility) {\n        case 'private':\n          return 'lock'\n        case 'unlisted':\n          return 'lock-open'\n        case 'direct':\n          return 'envelope'\n        default:\n          return 'globe'\n      }\n    },\n    showError (error) {\n      this.error = error\n    },\n    clearError () {\n      this.error = undefined\n    },\n    toggleReplying () {\n      this.replying = !this.replying\n    },\n    gotoOriginal (id) {\n      if (this.inConversation) {\n        this.$emit('goto', id)\n      }\n    },\n    toggleExpanded () {\n      this.$emit('toggleExpanded')\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    },\n    addMediaPlaying (id) {\n      this.mediaPlaying.push(id)\n    },\n    removeMediaPlaying (id) {\n      this.mediaPlaying = this.mediaPlaying.filter(mediaId => mediaId !== id)\n    },\n    setHeadTailLinks (headTailLinks) {\n      this.headTailLinks = headTailLinks\n    }\n  },\n  watch: {\n    'highlight': function (id) {\n      if (this.status.id === id) {\n        let rect = this.$el.getBoundingClientRect()\n        if (rect.top < 100) {\n          // Post is above screen, match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.height >= (window.innerHeight - 50)) {\n          // Post we want to see is taller than screen so match its top to screen top\n          window.scrollBy(0, rect.top - 100)\n        } else if (rect.bottom > window.innerHeight - 50) {\n          // Post is below screen, match its bottom to screen bottom\n          window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n        }\n      }\n    },\n    'status.repeat_num': function (num) {\n      // refetch repeats when repeat_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n        this.$store.dispatch('fetchRepeats', this.status.id)\n      }\n    },\n    'status.fave_num': function (num) {\n      // refetch favs when fave_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n        this.$store.dispatch('fetchFavs', this.status.id)\n      }\n    },\n    'isSuspendable': function (val) {\n      this.suspendable = val\n    }\n  },\n  filters: {\n    capitalize: function (str) {\n      return str.charAt(0).toUpperCase() + str.slice(1)\n    }\n  }\n}\n\nexport default Status\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./status.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./status.js\"\nimport __vue_script__ from \"!!babel-loader!./status.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-27382b3f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Status\",class:[{ '-focused': _vm.isFocused }, { '-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n    \"+_vm._s(_vm.error)+\"\\n    \"),_c('span',{staticClass:\"fa-scale-110 fa-old-padding\",on:{\"click\":_vm.clearError}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"status-container muted\"},[_c('small',{staticClass:\"status-username\"},[(_vm.muted && _vm.retweet)?_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding repeat-icon\",attrs:{\"icon\":\"retweet\"}}):_vm._e(),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n          \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n        \")])],1),_vm._v(\" \"),(_vm.showReasonMutedThread)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('status.thread_muted'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(_vm.showReasonMutedThread && _vm.muteWordHits.length > 0)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('status.thread_muted_and_words'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),_c('small',{staticClass:\"mute-words\",attrs:{\"title\":_vm.muteWordHits.join(', ')}},[_vm._v(\"\\n        \"+_vm._s(_vm.muteWordHits.join(', '))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"unmute button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)])]:[(_vm.showPinned)?_c('div',{staticClass:\"pin\"},[_c('FAIcon',{staticClass:\"faint\",attrs:{\"icon\":\"thumbtack\"}}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])],1):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"status-container repeat-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"left-side repeater-avatar\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side faint\"},[_c('span',{staticClass:\"status-username repeater-name\",attrs:{\"title\":_vm.retweeter}},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_c('RichContent',{attrs:{\"html\":_vm.retweeterHtml,\"emoji\":_vm.retweeterUser.emoji}})],1):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('FAIcon',{staticClass:\"repeat-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n        \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n      \")],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.deleted)?_c('div',{staticClass:\"status-container\",class:[_vm.userClass, { highlighted: _vm.userStyle, '-repeat': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"left-side\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink},nativeOn:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact,\"better-shadow\":_vm.betterShadow,\"user\":_vm.status.user}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"usercard\",attrs:{\"user-id\":_vm.status.user.id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"status-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"heading-left\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name}},[_c('RichContent',{attrs:{\"html\":_vm.status.user.name,\"emoji\":_vm.status.user.emoji}})],1):_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name}},[_vm._v(\"\\n                \"+_vm._s(_vm.status.user.name)+\"\\n              \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"title\":_vm.status.user.screen_name_ui,\"to\":_vm.userProfileLink}},[_vm._v(\"\\n                \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n              \")]),_vm._v(\" \"),(!!(_vm.status.user && _vm.status.user.favicon))?_c('img',{staticClass:\"status-favicon\",attrs:{\"src\":_vm.status.user.favicon}}):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"},[_c('router-link',{staticClass:\"timeago faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.status.created_at,\"auto-update\":60}})],1),_vm._v(\" \"),(_vm.status.visibility)?_c('span',{staticClass:\"visibility-icon\",attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.visibilityIcon(_vm.status.visibility)}})],1):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?_c('button',{staticClass:\"button-unstyled\",attrs:{\"title\":_vm.$t('status.expand')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"plus-square\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}})],1):_vm._e()],1)]),_vm._v(\" \"),(_vm.isReply || _vm.hasMentionsLine)?_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('span',{staticClass:\"glued-label\"},[(!_vm.isPreview)?_c('StatusPopover',{staticClass:\"reply-to-popover\",class:{ '-strikethrough': !_vm.status.parent_visible },staticStyle:{\"min-width\":\"0\"},attrs:{\"status-id\":_vm.status.parent_visible && _vm.status.in_reply_to_status_id}},[_c('button',{staticClass:\"button-unstyled reply-to\",attrs:{\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('span',{staticClass:\"reply-to-text\"},[_vm._v(\"\\n                    \"+_vm._s(_vm.$t('status.reply_to'))+\"\\n                  \")])],1)]):_c('span',{staticClass:\"reply-to-no-popover\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('MentionLink',{attrs:{\"content\":_vm.replyToName,\"url\":_vm.replyProfileLink,\"user-id\":_vm.status.in_reply_to_user_id,\"user-screen-name\":_vm.status.in_reply_to_screen_name,\"first-mention\":false}})],1):_vm._e(),_vm._v(\" \"),(_vm.hasMentionsLine)?_c('span',{staticClass:\"glued-label\"},[_c('span',{staticClass:\"mentions\",attrs:{\"aria-label\":_vm.$t('tool_tip.mentions')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('span',{staticClass:\"mentions-text\"},[_vm._v(\"\\n                  \"+_vm._s(_vm.$t('status.mentions'))+\"\\n                \")])]),_vm._v(\" \"),(_vm.hasMentionsLine)?_c('MentionsLine',{staticClass:\"mentions-line-first\",attrs:{\"mentions\":_vm.mentionsLine.slice(0, 1)}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.hasMentionsLine)?_c('MentionsLine',{staticClass:\"mentions-line\",attrs:{\"mentions\":_vm.mentionsLine.slice(1)}}):_vm._e()],1):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('StatusContent',{ref:\"content\",attrs:{\"status\":_vm.status,\"no-heading\":_vm.noHeading,\"highlight\":_vm.highlight,\"focused\":_vm.isFocused},on:{\"mediaplay\":function($event){return _vm.addMediaPlaying($event)},\"mediapause\":function($event){return _vm.removeMediaPlaying($event)},\"parseReady\":_vm.setHeadTailLinks}}),_vm._v(\" \"),(_vm.inConversation && !_vm.isPreview && _vm.replies && _vm.replies.length)?_c('div',{staticClass:\"replies\"},[_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.replies_list')))]),_vm._v(\" \"),_vm._l((_vm.replies),function(reply){return _c('StatusPopover',{key:reply.id,attrs:{\"status-id\":reply.id}},[_c('button',{staticClass:\"button-unstyled -link reply-link\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(reply.id)}}},[_vm._v(\"\\n              \"+_vm._s(reply.name)+\"\\n            \")])])})],2):_vm._e(),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.hidePostStats && _vm.isFocused && _vm.combinedFavsAndRepeatsUsers.length > 0)?_c('div',{staticClass:\"favs-repeated-users\"},[_c('div',{staticClass:\"stats\"},[(_vm.statusFromGlobalRepository.rebloggedBy && _vm.statusFromGlobalRepository.rebloggedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.rebloggedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.repeats')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n                    \"+_vm._s(_vm.statusFromGlobalRepository.rebloggedBy.length)+\"\\n                  \")])])]):_vm._e(),_vm._v(\" \"),(_vm.statusFromGlobalRepository.favoritedBy && _vm.statusFromGlobalRepository.favoritedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.favoritedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.favorites')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n                    \"+_vm._s(_vm.statusFromGlobalRepository.favoritedBy.length)+\"\\n                  \")])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"avatar-row\"},[_c('AvatarList',{attrs:{\"users\":_vm.combinedFavsAndRepeatsUsers}})],1)],1)]):_vm._e()]),_vm._v(\" \"),((_vm.mergedConfig.emojiReactionsOnTimeline || _vm.isFocused) && (!_vm.noHeading && !_vm.isPreview))?_c('EmojiReactions',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading && !_vm.isPreview)?_c('div',{staticClass:\"status-actions\"},[_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}),_vm._v(\" \"),_c('retweet-button',{attrs:{\"visibility\":_vm.status.visibility,\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('favorite-button',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),(_vm.loggedIn)?_c('ReactButton',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),_c('extra-buttons',{attrs:{\"status\":_vm.status},on:{\"onError\":_vm.showError,\"onSuccess\":_vm.clearError}})],1):_vm._e()],1)]):_c('div',{staticClass:\"gravestone\"},[_c('div',{staticClass:\"left-side\"},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact}})],1),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[_c('div',{staticClass:\"deleted-text\"},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('status.status_deleted'))+\"\\n        \")]),_vm._v(\" \"),(_vm.replying)?_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}):_vm._e()],1)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"status-container reply-form\"},[_c('PostStatusForm',{staticClass:\"reply-body\",attrs:{\"reply-to\":_vm.status.id,\"attentions\":_vm.status.attentions,\"replied-user\":_vm.status.user,\"copy-message-scope\":_vm.status.visibility,\"subject\":_vm.replySubject},on:{\"posted\":_vm.toggleReplying}})],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n  name: 'Poll',\n  props: ['basePoll', 'emoji'],\n  components: {\n    Timeago,\n    RichContent\n  },\n  data () {\n    return {\n      loading: false,\n      choices: []\n    }\n  },\n  created () {\n    if (!this.$store.state.polls.pollsObject[this.pollId]) {\n      this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n    }\n    this.$store.dispatch('trackPoll', this.pollId)\n  },\n  destroyed () {\n    this.$store.dispatch('untrackPoll', this.pollId)\n  },\n  computed: {\n    pollId () {\n      return this.basePoll.id\n    },\n    poll () {\n      const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n      return storePoll || {}\n    },\n    options () {\n      return (this.poll && this.poll.options) || []\n    },\n    expiresAt () {\n      return (this.poll && this.poll.expires_at) || 0\n    },\n    expired () {\n      return (this.poll && this.poll.expired) || false\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    showResults () {\n      return this.poll.voted || this.expired || !this.loggedIn\n    },\n    totalVotesCount () {\n      return this.poll.votes_count\n    },\n    containerClass () {\n      return {\n        loading: this.loading\n      }\n    },\n    choiceIndices () {\n      // Convert array of booleans into an array of indices of the\n      // items that were 'true', so [true, false, false, true] becomes\n      // [0, 3].\n      return this.choices\n        .map((entry, index) => entry && index)\n        .filter(value => typeof value === 'number')\n    },\n    isDisabled () {\n      const noChoice = this.choiceIndices.length === 0\n      return this.loading || noChoice\n    }\n  },\n  methods: {\n    percentageForOption (count) {\n      return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n    },\n    resultTitle (option) {\n      return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n    },\n    fetchPoll () {\n      this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n    },\n    activateOption (index) {\n      // forgive me father: doing checking the radio/checkboxes\n      // in code because of customized input elements need either\n      // a) an extra element for the actual graphic, or b) use a\n      // pseudo element for the label. We use b) which mandates\n      // using \"for\" and \"id\" matching which isn't nice when the\n      // same poll appears multiple times on the site (notifs and\n      // timeline for example). With code we can make sure it just\n      // works without altering the pseudo element implementation.\n      const allElements = this.$el.querySelectorAll('input')\n      const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n      if (this.poll.multiple) {\n        // Checkboxes, toggle only the clicked one\n        clickedElement.checked = !clickedElement.checked\n      } else {\n        // Radio button, uncheck everything and check the clicked one\n        forEach(allElements, element => { element.checked = false })\n        clickedElement.checked = true\n      }\n      this.choices = map(allElements, e => e.checked)\n    },\n    optionId (index) {\n      return `poll${this.poll.id}-${index}`\n    },\n    vote () {\n      if (this.choiceIndices.length === 0) return\n      this.loading = true\n      this.$store.dispatch(\n        'votePoll',\n        { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n      ).then(poll => {\n        this.loading = false\n      })\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll.js\"\nimport __vue_script__ from \"!!babel-loader!./poll.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8dd00ddc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"poll\",class:_vm.containerClass},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[(_vm.showResults)?_c('div',{staticClass:\"option-result\",attrs:{\"title\":_vm.resultTitle(option)}},[_c('div',{staticClass:\"option-result-label\"},[_c('span',{staticClass:\"result-percentage\"},[_vm._v(\"\\n          \"+_vm._s(_vm.percentageForOption(option.votes_count))+\"%\\n        \")]),_vm._v(\" \"),_c('RichContent',{attrs:{\"html\":option.title_html,\"handle-links\":false,\"emoji\":_vm.emoji}})],1),_vm._v(\" \"),_c('div',{staticClass:\"result-fill\",style:({ 'width': ((_vm.percentageForOption(option.votes_count)) + \"%\") })})]):_c('div',{on:{\"click\":function($event){return _vm.activateOption(index)}}},[(_vm.poll.multiple)?_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.loading},domProps:{\"value\":index}}):_c('input',{attrs:{\"type\":\"radio\",\"disabled\":_vm.loading},domProps:{\"value\":index}}),_vm._v(\" \"),_c('label',{staticClass:\"option-vote\"},[_c('RichContent',{attrs:{\"html\":option.title_html,\"handle-links\":false,\"emoji\":_vm.emoji}})],1)])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn button-default poll-vote-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.vote}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('polls.vote'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"total\"},[(typeof _vm.poll.voters_count === 'number')?[_vm._v(\"\\n        \"+_vm._s(_vm.$tc(\"polls.people_voted_count\", _vm.poll.voters_count, { count: _vm.poll.voters_count }))+\" · \\n      \")]:[_vm._v(\"\\n        \"+_vm._s(_vm.$tc(\"polls.votes_count\", _vm.poll.votes_count, { count: _vm.poll.votes_count }))+\" · \\n      \")]],2),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":_vm.expired ? 'polls.expired' : 'polls.expires_in'}},[_c('Timeago',{attrs:{\"time\":_vm.expiresAt,\"auto-update\":60,\"now-threshold\":0}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'status',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine'\n  ],\n  data () {\n    return {\n      showingTall: this.fullContent || (this.inConversation && this.focused),\n      showingLongSubject: false,\n      // not as computed because it sets the initial state which will be changed later\n      expandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject,\n      postLength: this.status.text.length,\n      parseReadyDone: false\n    }\n  },\n  computed: {\n    localCollapseSubjectDefault () {\n      return this.mergedConfig.collapseMessageWithSubject\n    },\n    // This is a bit hacky, but we want to approximate post height before rendering\n    // so we count newlines (masto uses <p> for paragraphs, GS uses <br> between them)\n    // as well as approximate line count by counting characters and approximating ~80\n    // per line.\n    //\n    // Using max-height + overflow: auto for status components resulted in false positives\n    // very often with japanese characters, and it was very annoying.\n    tallStatus () {\n      const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n      return lengthScore > 20\n    },\n    longSubject () {\n      return this.status.summary.length > 240\n    },\n    // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n    mightHideBecauseSubject () {\n      return !!this.status.summary && this.localCollapseSubjectDefault\n    },\n    mightHideBecauseTall () {\n      return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n    },\n    hideSubjectStatus () {\n      return this.mightHideBecauseSubject && !this.expandingSubject\n    },\n    hideTallStatus () {\n      return this.mightHideBecauseTall && !this.showingTall\n    },\n    showingMore () {\n      return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n    },\n    attachmentTypes () {\n      return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    RichContent\n  },\n  mounted () {\n    this.status.attentions && this.status.attentions.forEach(attn => {\n      const { id } = attn\n      this.$store.dispatch('fetchUserIfMissing', id)\n    })\n  },\n  methods: {\n    onParseReady (event) {\n      if (this.parseReadyDone) return\n      this.parseReadyDone = true\n      this.$emit('parseReady', event)\n      const { writtenMentions, invisibleMentions } = event\n      writtenMentions\n        .filter(mention => !mention.notifying)\n        .forEach(mention => {\n          const { content, url } = mention\n          const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n          if (!cleanedString.startsWith('@')) return\n          const handle = cleanedString.slice(1)\n          const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n          this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n        })\n      /* This is a bit of a hack to make current tall status detector work\n       * with rich mentions. Invisible mentions are detected at RichContent level\n       * and also we generate plaintext version of mentions by stripping tags\n       * so here we subtract from post length by each mention that became invisible\n       * via MentionsLine\n       */\n      this.postLength = invisibleMentions.reduce((acc, mention) => {\n        return acc - mention.textContent.length - 1\n      }, this.postLength)\n    },\n    toggleShowMore () {\n      if (this.mightHideBecauseTall) {\n        this.showingTall = !this.showingTall\n      } else if (this.mightHideBecauseSubject) {\n        this.expandingSubject = !this.expandingSubject\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default StatusContent\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./status_body.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_body.js\"\nimport __vue_script__ from \"!!babel-loader!./status_body.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-606ca8c6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_body.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"StatusBody\"},[_c('div',{staticClass:\"body\"},[(_vm.status.summary_raw_html)?_c('div',{staticClass:\"summary-wrapper\",class:{ '-tall': (_vm.longSubject && !_vm.showingLongSubject) }},[_c('RichContent',{staticClass:\"media-body summary\",attrs:{\"html\":_vm.status.summary_raw_html,\"emoji\":_vm.status.emojis}}),_vm._v(\" \"),(_vm.longSubject && _vm.showingLongSubject)?_c('button',{staticClass:\"button-unstyled -link tall-subject-hider\",on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"status.hide_full_subject\"))+\"\\n      \")]):(_vm.longSubject)?_c('button',{staticClass:\"button-unstyled -link tall-subject-hider\",on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"status.show_full_subject\"))+\"\\n      \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\",class:{'-tall-status': _vm.hideTallStatus}},[(_vm.hideTallStatus)?_c('button',{staticClass:\"button-unstyled -link tall-status-hider\",class:{ '-focused': _vm.focused },on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus && !(_vm.singleLine && _vm.status.summary_raw_html))?_c('RichContent',{staticClass:\"text media-body\",class:{ '-single-line': _vm.singleLine },attrs:{\"html\":_vm.status.raw_html,\"emoji\":_vm.status.emojis,\"handle-links\":true,\"greentext\":_vm.mergedConfig.greentext,\"attentions\":_vm.status.attentions},on:{\"parseReady\":_vm.onParseReady}}):_vm._e(),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('button',{staticClass:\"button-unstyled -link cw-status-hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"status.show_content\"))+\"\\n        \"),(_vm.attachmentTypes.includes('image'))?_c('FAIcon',{attrs:{\"icon\":\"image\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('video'))?_c('FAIcon',{attrs:{\"icon\":\"video\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('audio'))?_c('FAIcon',{attrs:{\"icon\":\"music\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('unknown'))?_c('FAIcon',{attrs:{\"icon\":\"file\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('FAIcon',{attrs:{\"icon\":\"link\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showingMore && !_vm.fullContent)?_c('button',{staticClass:\"button-unstyled -link status-unhider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.tallStatus ? _vm.$t(\"general.show_less\") : _vm.$t(\"status.hide_content\"))+\"\\n      \")]):_vm._e()],1)]),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_vm._t(\"default\"):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'status',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine'\n  ],\n  computed: {\n    hideAttachments () {\n      return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\n    },\n    nsfwClickthrough () {\n      if (!this.status.nsfw) {\n        return false\n      }\n      if (this.status.summary && this.localCollapseSubjectDefault) {\n        return false\n      }\n      return true\n    },\n    attachmentSize () {\n      if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n        (this.status.attachments.length > this.maxThumbnails)) {\n        return 'hide'\n      } else if (this.compact) {\n        return 'small'\n      }\n      return 'normal'\n    },\n    galleryTypes () {\n      if (this.attachmentSize === 'hide') {\n        return []\n      }\n      return this.mergedConfig.playVideosInModal\n        ? ['image', 'video']\n        : ['image']\n    },\n    galleryAttachments () {\n      return this.status.attachments.filter(\n        file => fileType.fileMatchesSomeType(this.galleryTypes, file)\n      )\n    },\n    nonGalleryAttachments () {\n      return this.status.attachments.filter(\n        file => !fileType.fileMatchesSomeType(this.galleryTypes, file)\n      )\n    },\n    maxThumbnails () {\n      return this.mergedConfig.maxThumbnails\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  },\n  components: {\n    Attachment,\n    Poll,\n    Gallery,\n    LinkPreview,\n    StatusBody\n  },\n  methods: {\n    setMedia () {\n      const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments\n      return () => this.$store.dispatch('setMedia', attachments)\n    }\n  }\n}\n\nexport default StatusContent\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_content.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_content.js\"\nimport __vue_script__ from \"!!babel-loader!./status_content.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7cff84ce\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"StatusContent\"},[_vm._t(\"header\"),_vm._v(\" \"),_c('StatusBody',{attrs:{\"status\":_vm.status,\"single-line\":_vm.singleLine},on:{\"parseReady\":function($event){return _vm.$emit('parseReady', $event)}}},[(_vm.status.poll && _vm.status.poll.options)?_c('div',[_c('Poll',{attrs:{\"base-poll\":_vm.status.poll,\"emoji\":_vm.status.emojis}})],1):_vm._e(),_vm._v(\" \"),(_vm.status.attachments.length !== 0)?_c('div',{staticClass:\"attachments media-body\"},[_vm._l((_vm.nonGalleryAttachments),function(attachment){return _c('attachment',{key:attachment.id,staticClass:\"non-gallery\",attrs:{\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough,\"attachment\":attachment,\"allow-play\":true,\"set-media\":_vm.setMedia()},on:{\"play\":function($event){return _vm.$emit('mediaplay', attachment.id)},\"pause\":function($event){return _vm.$emit('mediapause', attachment.id)}}})}),_vm._v(\" \"),(_vm.galleryAttachments.length > 0)?_c('gallery',{attrs:{\"nsfw\":_vm.nsfwClickthrough,\"attachments\":_vm.galleryAttachments,\"set-media\":_vm.setMedia()}}):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.status.card && !_vm.noHeading)?_c('div',{staticClass:\"link-preview media-body\"},[_c('link-preview',{attrs:{\"card\":_vm.status.card,\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough}})],1):_vm._e()]),_vm._v(\" \"),_vm._t(\"footer\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export const SECOND = 1000\nexport const MINUTE = 60 * SECOND\nexport const HOUR = 60 * MINUTE\nexport const DAY = 24 * HOUR\nexport const WEEK = 7 * DAY\nexport const MONTH = 30 * DAY\nexport const YEAR = 365.25 * DAY\n\nexport const relativeTime = (date, nowThreshold = 1) => {\n  if (typeof date === 'string') date = Date.parse(date)\n  const round = Date.now() > date ? Math.floor : Math.ceil\n  const d = Math.abs(Date.now() - date)\n  let r = { num: round(d / YEAR), key: 'time.years' }\n  if (d < nowThreshold * SECOND) {\n    r.num = 0\n    r.key = 'time.now'\n  } else if (d < MINUTE) {\n    r.num = round(d / SECOND)\n    r.key = 'time.seconds'\n  } else if (d < HOUR) {\n    r.num = round(d / MINUTE)\n    r.key = 'time.minutes'\n  } else if (d < DAY) {\n    r.num = round(d / HOUR)\n    r.key = 'time.hours'\n  } else if (d < WEEK) {\n    r.num = round(d / DAY)\n    r.key = 'time.days'\n  } else if (d < MONTH) {\n    r.num = round(d / WEEK)\n    r.key = 'time.weeks'\n  } else if (d < YEAR) {\n    r.num = round(d / MONTH)\n    r.key = 'time.months'\n  }\n  // Remove plural form when singular\n  if (r.num === 1) r.key = r.key.slice(0, -1)\n  return r\n}\n\nexport const relativeTimeShort = (date, nowThreshold = 1) => {\n  const r = relativeTime(date, nowThreshold)\n  r.key += '_short'\n  return r\n}\n","const StillImage = {\n  props: [\n    'src',\n    'referrerpolicy',\n    'mimetype',\n    'imageLoadError',\n    'imageLoadHandler',\n    'alt'\n  ],\n  data () {\n    return {\n      stopGifs: this.$store.getters.mergedConfig.stopGifs\n    }\n  },\n  computed: {\n    animated () {\n      return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n    }\n  },\n  methods: {\n    onLoad () {\n      const image = this.$refs.src\n      if (!image) return\n      this.imageLoadHandler && this.imageLoadHandler(image)\n      const canvas = this.$refs.canvas\n      if (!canvas) return\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      canvas.width = width\n      canvas.height = height\n      canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n    },\n    onError () {\n      this.imageLoadError && this.imageLoadError()\n    }\n  }\n}\n\nexport default StillImage\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./still-image.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./still-image.js\"\nimport __vue_script__ from \"!!babel-loader!./still-image.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-32b8386f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./still-image.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"still-image\",class:{ animated: _vm.animated }},[(_vm.animated)?_c('canvas',{ref:\"canvas\"}):_vm._e(),_vm._v(\" \"),_c('img',{key:_vm.src,ref:\"src\",attrs:{\"alt\":_vm.alt,\"title\":_vm.alt,\"src\":_vm.src,\"referrerpolicy\":_vm.referrerpolicy},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      userExpanded: false\n    }\n  },\n  components: {\n    UserCard,\n    UserAvatar,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default BasicUserCard\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./basic_user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./basic_user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./basic_user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-823e2eae\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./basic_user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"basic-user-card\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{staticClass:\"avatar\",attrs:{\"user\":_vm.user},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.toggleUserExpanded($event)}}})],1),_vm._v(\" \"),(_vm.userExpanded)?_c('div',{staticClass:\"basic-user-card-expanded-content\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"rounded\":true,\"bordered\":true}})],1):_c('div',{staticClass:\"basic-user-card-collapsed-content\"},[_c('div',{staticClass:\"basic-user-card-user-name\",attrs:{\"title\":_vm.user.name}},[_c('RichContent',{staticClass:\"basic-user-card-user-name-value\",attrs:{\"html\":_vm.user.name,\"emoji\":_vm.user.emoji}})],1),_vm._v(\" \"),_c('div',[_c('router-link',{staticClass:\"basic-user-card-screen-name\",attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n        @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n      \")])],1),_vm._v(\" \"),_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n  let array = [layer]\n  let parent = data[layer]\n  while (parent) {\n    array.unshift(parent)\n    parent = data[parent]\n  }\n  return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n  return getLayersArray(layer).map((currentLayer) => ([\n    currentLayer === layer\n      ? colors[variant]\n      : colors[currentLayer],\n    currentLayer === layer\n      ? opacity[opacitySlot] || 1\n      : opacity[currentLayer]\n  ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n  const data = inheritance[key]\n  if (typeof data === 'string' && data.startsWith('--')) {\n    return [data.substring(2)]\n  } else {\n    if (data === null) return []\n    const { depends, layer, variant } = data\n    const layerDeps = layer\n      ? getLayersArray(layer).map(currentLayer => {\n        return currentLayer === layer\n          ? variant || layer\n          : currentLayer\n      })\n      : []\n    if (Array.isArray(depends)) {\n      return [...depends, ...layerDeps]\n    } else {\n      return [...layerDeps]\n    }\n  }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n *   given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n *   order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n  const allKeys = Object.keys(inheritance)\n  const whites = new Set(allKeys)\n  const grays = new Set()\n  const blacks = new Set()\n  const unprocessed = [...allKeys]\n  const output = []\n\n  const step = (node) => {\n    if (whites.has(node)) {\n      // Make node \"gray\"\n      whites.delete(node)\n      grays.add(node)\n      // Do step for each node connected to it (one way)\n      getDeps(node, inheritance).forEach(step)\n      // Make node \"black\"\n      grays.delete(node)\n      blacks.add(node)\n      // Put it into the output list\n      output.push(node)\n    } else if (grays.has(node)) {\n      console.debug('Cyclic depenency in topoSort, ignoring')\n      output.push(node)\n    } else if (blacks.has(node)) {\n      // do nothing\n    } else {\n      throw new Error('Unintended condition in topoSort!')\n    }\n  }\n  while (unprocessed.length > 0) {\n    step(unprocessed.pop())\n  }\n\n  // The index thing is to make sorting stable on browsers\n  // where Array.sort() isn't stable\n  return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n    const depsA = getDeps(a, inheritance).length\n    const depsB = getDeps(b, inheritance).length\n\n    if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n    if (depsA === 0 && depsB !== 0) return -1\n    if (depsB === 0 && depsA !== 0) return 1\n  }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n  if (typeof value === 'object') return value\n  return {\n    depends: value.startsWith('--') ? [value.substring(2)] : [],\n    default: value.startsWith('#') ? value : undefined\n  }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (value.opacity === null) return\n  if (value.opacity) return value.opacity\n  const findInheritedOpacity = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.opacity || dependency === null) {\n      return dependency.opacity\n    } else if (dependency.depends && visited.includes(depSlot)) {\n      return findInheritedOpacity(depSlot, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedOpacity(k)\n  }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (LAYERS[k]) return k\n  if (value.layer === null) return\n  if (value.layer) return value.layer\n  const findInheritedLayer = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.layer || dependency === null) {\n      return dependency.layer\n    } else if (dependency.depends) {\n      return findInheritedLayer(dependency, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedLayer(k)\n  }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n  Object.entries(SLOT_INHERITANCE)\n    .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n  const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n  if (opacity) {\n    return {\n      ...acc,\n      [opacity]: {\n        defaultValue: DEFAULT_OPACITY[opacity] || 1,\n        affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n      }\n    }\n  } else {\n    return acc\n  }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n  if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n  let targetColor = null\n  // Color references other color\n  const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n  const variableSlot = variable.substring(2)\n  targetColor = getColor(variableSlot)\n  if (modifier) {\n    targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n  }\n  return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n  const sourceColor = sourceColors[key]\n  const value = expandSlotValue(SLOT_INHERITANCE[key])\n  const deps = getDependencies(key, SLOT_INHERITANCE)\n  const isTextColor = !!value.textColor\n  const variant = value.variant || value.layer\n\n  let backgroundColor = null\n\n  if (isTextColor) {\n    backgroundColor = alphaBlendLayers(\n      { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n      getLayers(\n        getLayerSlot(key) || 'bg',\n        variant || 'bg',\n        getOpacitySlot(variant),\n        colors,\n        opacity\n      )\n    )\n  } else if (variant && variant !== key) {\n    backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n  } else {\n    backgroundColor = colors.bg || convert(sourceColors.bg)\n  }\n\n  const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n  const mod = isLightOnDark ? 1 : -1\n\n  let outputColor = null\n  if (sourceColor) {\n    // Color is defined in source color\n    let targetColor = sourceColor\n    if (targetColor === 'transparent') {\n      // We take only layers below current one\n      const layers = getLayers(\n        getLayerSlot(key),\n        key,\n        getOpacitySlot(key) || key,\n        colors,\n        opacity\n      ).slice(0, -1)\n      targetColor = {\n        ...alphaBlendLayers(\n          convert('#FF00FF').rgb,\n          layers\n        ),\n        a: 0\n      }\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n      targetColor = computeDynamicColor(\n        sourceColor,\n        variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n        mod\n      )\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n      targetColor = convert(targetColor).rgb\n    }\n    outputColor = { ...targetColor }\n  } else if (value.default) {\n    // same as above except in object form\n    outputColor = convert(value.default).rgb\n  } else {\n    // calculate color\n    const defaultColorFunc = (mod, dep) => ({ ...dep })\n    const colorFunc = value.color || defaultColorFunc\n\n    if (value.textColor) {\n      if (value.textColor === 'bw') {\n        outputColor = contrastRatio(backgroundColor).rgb\n      } else {\n        let color = { ...colors[deps[0]] }\n        if (value.color) {\n          color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n        }\n        outputColor = getTextColor(\n          backgroundColor,\n          { ...color },\n          value.textColor === 'preserve'\n        )\n      }\n    } else {\n      // background color case\n      outputColor = colorFunc(\n        mod,\n        ...deps.map((dep) => ({ ...colors[dep] }))\n      )\n    }\n  }\n  if (!outputColor) {\n    throw new Error('Couldn\\'t generate color for ' + key)\n  }\n\n  const opacitySlot = value.opacity || getOpacitySlot(key)\n  const ownOpacitySlot = value.opacity\n\n  if (ownOpacitySlot === null) {\n    outputColor.a = 1\n  } else if (sourceColor === 'transparent') {\n    outputColor.a = 0\n  } else {\n    const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n    const dependencySlot = deps[0]\n    const dependencyColor = dependencySlot && colors[dependencySlot]\n\n    if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n      // Inheriting color from dependency (weird, i know)\n      // except if it's a text color or opacity slot is set to 'null'\n      outputColor.a = dependencyColor.a\n    } else if (!dependencyColor && !opacitySlot) {\n      // Remove any alpha channel if no dependency and no opacitySlot found\n      delete outputColor.a\n    } else {\n      // Otherwise try to assign opacity\n      if (dependencyColor && dependencyColor.a === 0) {\n        // transparent dependency shall make dependents transparent too\n        outputColor.a = 0\n      } else {\n        // Otherwise check if opacity is overriden and use that or default value instead\n        outputColor.a = Number(\n          opacityOverriden\n            ? sourceOpacity[opacitySlot]\n            : (OPACITIES[opacitySlot] || {}).defaultValue\n        )\n      }\n    }\n  }\n\n  if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n    outputColor.a = 1\n  }\n\n  if (opacitySlot) {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity: { ...opacity, [opacitySlot]: outputColor.a }\n    }\n  } else {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity\n    }\n  }\n}, { colors: {}, opacity: {} })\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUpload,\n  faCircleNotch\n)\n\nconst mediaUpload = {\n  data () {\n    return {\n      uploadCount: 0,\n      uploadReady: true\n    }\n  },\n  computed: {\n    uploading () {\n      return this.uploadCount > 0\n    }\n  },\n  methods: {\n    uploadFile (file) {\n      const self = this\n      const store = this.$store\n      if (file.size > store.state.instance.uploadlimit) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n        self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n        return\n      }\n      const formData = new FormData()\n      formData.append('file', file)\n\n      self.$emit('uploading')\n      self.uploadCount++\n\n      statusPosterService.uploadMedia({ store, formData })\n        .then((fileData) => {\n          self.$emit('uploaded', fileData)\n          self.decreaseUploadCount()\n        }, (error) => { // eslint-disable-line handle-callback-err\n          self.$emit('upload-failed', 'default')\n          self.decreaseUploadCount()\n        })\n    },\n    decreaseUploadCount () {\n      this.uploadCount--\n      if (this.uploadCount === 0) {\n        this.$emit('all-uploaded')\n      }\n    },\n    clearFile () {\n      this.uploadReady = false\n      this.$nextTick(() => {\n        this.uploadReady = true\n      })\n    },\n    multiUpload (files) {\n      for (const file of files) {\n        this.uploadFile(file)\n      }\n    },\n    change ({ target }) {\n      this.multiUpload(target.files)\n    }\n  },\n  props: [\n    'dropFiles',\n    'disabled'\n  ],\n  watch: {\n    'dropFiles': function (fileInfos) {\n      if (!this.uploading) {\n        this.multiUpload(fileInfos)\n      }\n    }\n  }\n}\n\nexport default mediaUpload\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_upload.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_upload.js\"\nimport __vue_script__ from \"!!babel-loader!./media_upload.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9d0f738a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_upload.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"media-upload\",class:{ disabled: _vm.disabled },attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('FAIcon',{staticClass:\"progress-icon\",attrs:{\"icon\":\"circle-notch\",\"spin\":\"\"}}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('FAIcon',{staticClass:\"new-icon\",attrs:{\"icon\":\"upload\"}}):_vm._e(),_vm._v(\" \"),(_vm.uploadReady)?_c('input',{staticStyle:{\"position\":\"fixed\",\"top\":\"-100em\"},attrs:{\"disabled\":_vm.disabled,\"type\":\"file\",\"multiple\":\"true\"},on:{\"change\":_vm.change}}):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n  faTimes,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus\n)\n\nexport default {\n  components: {\n    Select\n  },\n  name: 'PollForm',\n  props: ['visible'],\n  data: () => ({\n    pollType: 'single',\n    options: ['', ''],\n    expiryAmount: 10,\n    expiryUnit: 'minutes'\n  }),\n  computed: {\n    pollLimits () {\n      return this.$store.state.instance.pollLimits\n    },\n    maxOptions () {\n      return this.pollLimits.max_options\n    },\n    maxLength () {\n      return this.pollLimits.max_option_chars\n    },\n    expiryUnits () {\n      const allUnits = ['minutes', 'hours', 'days']\n      const expiry = this.convertExpiryFromUnit\n      return allUnits.filter(\n        unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n      )\n    },\n    minExpirationInCurrentUnit () {\n      return Math.ceil(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.min_expiration\n        )\n      )\n    },\n    maxExpirationInCurrentUnit () {\n      return Math.floor(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.max_expiration\n        )\n      )\n    }\n  },\n  methods: {\n    clear () {\n      this.pollType = 'single'\n      this.options = ['', '']\n      this.expiryAmount = 10\n      this.expiryUnit = 'minutes'\n    },\n    nextOption (index) {\n      const element = this.$el.querySelector(`#poll-${index + 1}`)\n      if (element) {\n        element.focus()\n      } else {\n        // Try adding an option and try focusing on it\n        const addedOption = this.addOption()\n        if (addedOption) {\n          this.$nextTick(function () {\n            this.nextOption(index)\n          })\n        }\n      }\n    },\n    addOption () {\n      if (this.options.length < this.maxOptions) {\n        this.options.push('')\n        return true\n      }\n      return false\n    },\n    deleteOption (index, event) {\n      if (this.options.length > 2) {\n        this.options.splice(index, 1)\n        this.updatePollToParent()\n      }\n    },\n    convertExpiryToUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n        case 'hours': return (1000 * amount) / DateUtils.HOUR\n        case 'days': return (1000 * amount) / DateUtils.DAY\n      }\n    },\n    convertExpiryFromUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n        case 'hours': return 0.001 * amount * DateUtils.HOUR\n        case 'days': return 0.001 * amount * DateUtils.DAY\n      }\n    },\n    expiryAmountChange () {\n      this.expiryAmount =\n        Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n      this.expiryAmount =\n        Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n      this.updatePollToParent()\n    },\n    updatePollToParent () {\n      const expiresIn = this.convertExpiryFromUnit(\n        this.expiryUnit,\n        this.expiryAmount\n      )\n\n      const options = uniq(this.options.filter(option => option !== ''))\n      if (options.length < 2) {\n        this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n        return\n      }\n      this.$emit('update-poll', {\n        options,\n        multiple: this.pollType === 'multiple',\n        expiresIn\n      })\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1d460e1a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"size\":\"1\",\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('button',{staticClass:\"delete-option button-unstyled -hover-highlight\",on:{\"click\":function($event){return _vm.deleteOption(index)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('button',{staticClass:\"add-option faint button-unstyled -hover-highlight\",on:{\"click\":_vm.addOption}},[_c('FAIcon',{attrs:{\"icon\":\"plus\",\"size\":\"sm\"}}),_vm._v(\"\\n\\n    \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n  \")],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('Select',{staticClass:\"poll-type-select\",attrs:{\"unstyled\":\"true\"},on:{\"change\":_vm.updatePollToParent},model:{value:(_vm.pollType),callback:function ($$v) {_vm.pollType=$$v},expression:\"pollType\"}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('polls.single_choice'))+\"\\n        \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('polls.multiple_choices'))+\"\\n        \")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('Select',{staticClass:\"expiry-unit\",attrs:{\"unstyled\":\"true\"},on:{\"change\":_vm.expiryAmountChange},model:{value:(_vm.expiryUnit),callback:function ($$v) {_vm.expiryUnit=$$v},expression:\"expiryUnit\"}},_vm._l((_vm.expiryUnits),function(unit){return _c('option',{key:unit,domProps:{\"value\":unit}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t((\"time.\" + unit + \"_short\"), ['']))+\"\\n        \")])}),0)],1)])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n  let allAttentions = [...attentions]\n\n  allAttentions.unshift(user)\n\n  allAttentions = uniqBy(allAttentions, 'id')\n  allAttentions = reject(allAttentions, { id: currentUser.id })\n\n  let mentions = map(allAttentions, (attention) => {\n    return `@${attention.screen_name}`\n  })\n\n  return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n  return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n  props: [\n    'replyTo',\n    'repliedUser',\n    'attentions',\n    'copyMessageScope',\n    'subject',\n    'disableSubject',\n    'disableScopeSelector',\n    'disableNotice',\n    'disableLockWarning',\n    'disablePolls',\n    'disableSensitivityCheckbox',\n    'disableSubmit',\n    'disablePreview',\n    'placeholder',\n    'maxHeight',\n    'postHandler',\n    'preserveFocus',\n    'autoFocus',\n    'fileLimit',\n    'submitOnEnter',\n    'emojiPickerPlacement',\n    'optimisticPosting'\n  ],\n  components: {\n    MediaUpload,\n    EmojiInput,\n    PollForm,\n    ScopeSelector,\n    Checkbox,\n    Select,\n    Attachment,\n    StatusContent\n  },\n  mounted () {\n    this.updateIdempotencyKey()\n    this.resize(this.$refs.textarea)\n\n    if (this.replyTo) {\n      const textLength = this.$refs.textarea.value.length\n      this.$refs.textarea.setSelectionRange(textLength, textLength)\n    }\n\n    if (this.replyTo || this.autoFocus) {\n      this.$refs.textarea.focus()\n    }\n  },\n  data () {\n    const preset = this.$route.query.message\n    let statusText = preset || ''\n\n    const { scopeCopy } = this.$store.getters.mergedConfig\n\n    if (this.replyTo) {\n      const currentUser = this.$store.state.users.currentUser\n      statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n    }\n\n    const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n      ? this.copyMessageScope\n      : this.$store.state.users.currentUser.default_scope\n\n    const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n    return {\n      dropFiles: [],\n      uploadingFiles: false,\n      error: null,\n      posting: false,\n      highlighted: 0,\n      newStatus: {\n        spoilerText: this.subject || '',\n        status: statusText,\n        nsfw: !!sensitiveByDefault,\n        files: [],\n        poll: {},\n        mediaDescriptions: {},\n        visibility: scope,\n        contentType\n      },\n      caret: 0,\n      pollFormVisible: false,\n      showDropIcon: 'hide',\n      dropStopTimeout: null,\n      preview: null,\n      previewLoading: false,\n      emojiInputShown: false,\n      idempotencyKey: ''\n    }\n  },\n  computed: {\n    users () {\n      return this.$store.state.users.users\n    },\n    userDefaultScope () {\n      return this.$store.state.users.currentUser.default_scope\n    },\n    showAllScopes () {\n      return !this.mergedConfig.minimalScopesMode\n    },\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.state.instance.emoji,\n          ...this.$store.state.instance.customEmoji\n        ]\n      })\n    },\n    emoji () {\n      return this.$store.state.instance.emoji || []\n    },\n    customEmoji () {\n      return this.$store.state.instance.customEmoji || []\n    },\n    statusLength () {\n      return this.newStatus.status.length\n    },\n    spoilerTextLength () {\n      return this.newStatus.spoilerText.length\n    },\n    statusLengthLimit () {\n      return this.$store.state.instance.textlimit\n    },\n    hasStatusLengthLimit () {\n      return this.statusLengthLimit > 0\n    },\n    charactersLeft () {\n      return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n    },\n    isOverLengthLimit () {\n      return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n    },\n    minimalScopesMode () {\n      return this.$store.state.instance.minimalScopesMode\n    },\n    alwaysShowSubject () {\n      return this.mergedConfig.alwaysShowSubjectInput\n    },\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    safeDMEnabled () {\n      return this.$store.state.instance.safeDM\n    },\n    pollsAvailable () {\n      return this.$store.state.instance.pollsAvailable &&\n        this.$store.state.instance.pollLimits.max_options >= 2 &&\n        this.disablePolls !== true\n    },\n    hideScopeNotice () {\n      return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n    },\n    pollContentError () {\n      return this.pollFormVisible &&\n        this.newStatus.poll &&\n        this.newStatus.poll.error\n    },\n    showPreview () {\n      return !this.disablePreview && (!!this.preview || this.previewLoading)\n    },\n    emptyStatus () {\n      return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n    },\n    uploadFileLimitReached () {\n      return this.newStatus.files.length >= this.fileLimit\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      mobileLayout: state => state.interface.mobileLayout\n    })\n  },\n  watch: {\n    'newStatus': {\n      deep: true,\n      handler () {\n        this.statusChanged()\n      }\n    }\n  },\n  methods: {\n    statusChanged () {\n      this.autoPreview()\n      this.updateIdempotencyKey()\n    },\n    clearStatus () {\n      const newStatus = this.newStatus\n      this.newStatus = {\n        status: '',\n        spoilerText: '',\n        files: [],\n        visibility: newStatus.visibility,\n        contentType: newStatus.contentType,\n        poll: {},\n        mediaDescriptions: {}\n      }\n      this.pollFormVisible = false\n      this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n      this.clearPollForm()\n      if (this.preserveFocus) {\n        this.$nextTick(() => {\n          this.$refs.textarea.focus()\n        })\n      }\n      let el = this.$el.querySelector('textarea')\n      el.style.height = 'auto'\n      el.style.height = undefined\n      this.error = null\n      if (this.preview) this.previewStatus()\n    },\n    async postStatus (event, newStatus, opts = {}) {\n      if (this.posting && !this.optimisticPosting) { return }\n      if (this.disableSubmit) { return }\n      if (this.emojiInputShown) { return }\n      if (this.submitOnEnter) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n\n      if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n      if (this.emptyStatus) {\n        this.error = this.$t('post_status.empty_status_error')\n        return\n      }\n\n      const poll = this.pollFormVisible ? this.newStatus.poll : {}\n      if (this.pollContentError) {\n        this.error = this.pollContentError\n        return\n      }\n\n      this.posting = true\n\n      try {\n        await this.setAllMediaDescriptions()\n      } catch (e) {\n        this.error = this.$t('post_status.media_description_error')\n        this.posting = false\n        return\n      }\n\n      const postingOptions = {\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: newStatus.files,\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll,\n        idempotencyKey: this.idempotencyKey\n      }\n\n      const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n      postHandler(postingOptions).then((data) => {\n        if (!data.error) {\n          this.clearStatus()\n          this.$emit('posted', data)\n        } else {\n          this.error = data.error\n        }\n        this.posting = false\n      })\n    },\n    previewStatus () {\n      if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n        this.preview = { error: this.$t('post_status.preview_empty') }\n        this.previewLoading = false\n        return\n      }\n      const newStatus = this.newStatus\n      this.previewLoading = true\n      statusPoster.postStatus({\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: [],\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll: {},\n        preview: true\n      }).then((data) => {\n        // Don't apply preview if not loading, because it means\n        // user has closed the preview manually.\n        if (!this.previewLoading) return\n        if (!data.error) {\n          this.preview = data\n        } else {\n          this.preview = { error: data.error }\n        }\n      }).catch((error) => {\n        this.preview = { error }\n      }).finally(() => {\n        this.previewLoading = false\n      })\n    },\n    debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n    autoPreview () {\n      if (!this.preview) return\n      this.previewLoading = true\n      this.debouncePreviewStatus()\n    },\n    closePreview () {\n      this.preview = null\n      this.previewLoading = false\n    },\n    togglePreview () {\n      if (this.showPreview) {\n        this.closePreview()\n      } else {\n        this.previewStatus()\n      }\n    },\n    addMediaFile (fileInfo) {\n      this.newStatus.files.push(fileInfo)\n      this.$emit('resize', { delayed: true })\n    },\n    removeMediaFile (fileInfo) {\n      let index = this.newStatus.files.indexOf(fileInfo)\n      this.newStatus.files.splice(index, 1)\n      this.$emit('resize')\n    },\n    uploadFailed (errString, templateArgs) {\n      templateArgs = templateArgs || {}\n      this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n    },\n    startedUploadingFiles () {\n      this.uploadingFiles = true\n    },\n    finishedUploadingFiles () {\n      this.$emit('resize')\n      this.uploadingFiles = false\n    },\n    type (fileInfo) {\n      return fileTypeService.fileType(fileInfo.mimetype)\n    },\n    paste (e) {\n      this.autoPreview()\n      this.resize(e)\n      if (e.clipboardData.files.length > 0) {\n        // prevent pasting of file as text\n        e.preventDefault()\n        // Strangely, files property gets emptied after event propagation\n        // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n        // to hold more than one file in clipboard.\n        this.dropFiles = [e.clipboardData.files[0]]\n      }\n    },\n    fileDrop (e) {\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        e.preventDefault() // allow dropping text like before\n        this.dropFiles = e.dataTransfer.files\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'hide'\n      }\n    },\n    fileDragStop (e) {\n      // The false-setting is done with delay because just using leave-events\n      // directly caused unwanted flickering, this is not perfect either but\n      // much less noticable.\n      clearTimeout(this.dropStopTimeout)\n      this.showDropIcon = 'fade'\n      this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n    },\n    fileDrag (e) {\n      e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'show'\n      }\n    },\n    onEmojiInputInput (e) {\n      this.$nextTick(() => {\n        this.resize(this.$refs['textarea'])\n      })\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n\n      // Reset to default height for empty form, nothing else to do here.\n      if (target.value === '') {\n        target.style.height = null\n        this.$emit('resize')\n        this.$refs['emoji-input'].resize()\n        return\n      }\n\n      const formRef = this.$refs['form']\n      const bottomRef = this.$refs['bottom']\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n      const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n      const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n\n      // Getting info about padding we have to account for, removing 'px' part\n      const topPaddingStr = window.getComputedStyle(target)['padding-top']\n      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n      const topPadding = pxStringToNumber(topPaddingStr)\n      const bottomPadding = pxStringToNumber(bottomPaddingStr)\n      const vertPadding = topPadding + bottomPadding\n\n      const oldHeight = pxStringToNumber(target.style.height)\n\n      /* Explanation:\n       *\n       * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n       * scrollHeight returns element's scrollable content height, i.e. visible\n       * element + overscrolled parts of it. We use it to determine when text\n       * inside the textarea exceeded its height, so we can set height to prevent\n       * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n       * explicitly set new height, scrollHeight won't go below that, so we can't\n       * SHRINK the textarea when there's extra space. To workaround that we set\n       * height to 'auto' which makes textarea tiny again, so that scrollHeight\n       * will match text height again. HOWEVER, shrinking textarea can screw with\n       * the scroll since there might be not enough padding around form-bottom to even\n       * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n       * so we check current scroll position before shrinking and then restore it\n       * with needed delta.\n       */\n\n      // this part has to be BEFORE the content size update\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n\n      // BEGIN content size update\n      target.style.height = 'auto'\n      const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n      let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n      // This is a bit of a hack to combat target.scrollHeight being different on every other input\n      // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n      if (Math.abs(newHeight - oldHeight) <= 1) {\n        newHeight = oldHeight\n      }\n      target.style.height = `${newHeight}px`\n      this.$emit('resize', newHeight)\n      // END content size update\n\n      // We check where the bottom border of form-bottom element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n      const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n      const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n      const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n      // The intention is basically this;\n      // Keep form-bottom always visible so that submit button is in view EXCEPT\n      // if form element bigger than scroller and caret isn't at the end, so that\n      // if you scroll up and edit middle of text you won't get scrolled back to bottom\n      const shouldScrollToBottom = isBottomObstructed &&\n            !(isFormBiggerThanScroller &&\n              this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n      const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n      const targetScroll = Math.round(currentScroll + totalDelta)\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$refs['emoji-input'].resize()\n    },\n    showEmojiPicker () {\n      this.$refs['textarea'].focus()\n      this.$refs['emoji-input'].triggerShowPicker()\n    },\n    clearError () {\n      this.error = null\n    },\n    changeVis (visibility) {\n      this.newStatus.visibility = visibility\n    },\n    togglePollForm () {\n      this.pollFormVisible = !this.pollFormVisible\n    },\n    setPoll (poll) {\n      this.newStatus.poll = poll\n    },\n    clearPollForm () {\n      if (this.$refs.pollForm) {\n        this.$refs.pollForm.clear()\n      }\n    },\n    dismissScopeNotice () {\n      this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n    },\n    setMediaDescription (id) {\n      const description = this.newStatus.mediaDescriptions[id]\n      if (!description || description.trim() === '') return\n      return statusPoster.setMediaDescription({ store: this.$store, id, description })\n    },\n    setAllMediaDescriptions () {\n      const ids = this.newStatus.files.map(file => file.id)\n      return Promise.all(ids.map(id => this.setMediaDescription(id)))\n    },\n    handleEmojiInputShow (value) {\n      this.emojiInputShown = value\n    },\n    updateIdempotencyKey () {\n      this.idempotencyKey = Date.now().toString()\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    }\n  }\n}\n\nexport default PostStatusForm\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_form.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7d4cd85a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"form\",staticClass:\"post-status-form\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();},\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropIcon !== 'hide'),expression:\"showDropIcon !== 'hide'\"}],staticClass:\"drop-indicator\",style:({ animation: _vm.showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }),on:{\"dragleave\":_vm.fileDragStop,\"drop\":function($event){$event.stopPropagation();return _vm.fileDrop($event)}}},[_c('FAIcon',{attrs:{\"icon\":_vm.uploadFileLimitReached ? 'ban' : 'upload'}})],1),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private' && !_vm.disableLockWarning)?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":_vm.openProfileTab}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n        \")])]):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),(!_vm.disablePreview)?_c('div',{staticClass:\"preview-heading faint\"},[_c('a',{staticClass:\"preview-toggle faint\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePreview($event)}}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('post_status.preview'))+\"\\n          \"),_c('FAIcon',{attrs:{\"icon\":_vm.showPreview ? 'chevron-left' : 'chevron-right'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"preview-spinner\"},[_c('FAIcon',{staticClass:\"fa-old-padding\",attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.showPreview)?_c('div',{staticClass:\"preview-container\"},[(!_vm.preview)?_c('div',{staticClass:\"preview-status\"},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('general.loading'))+\"\\n        \")]):(_vm.preview.error)?_c('div',{staticClass:\"preview-status preview-error\"},[_vm._v(\"\\n          \"+_vm._s(_vm.preview.error)+\"\\n        \")]):_c('StatusContent',{staticClass:\"preview-status\",attrs:{\"status\":_vm.preview}})],1):_vm._e(),_vm._v(\" \"),(!_vm.disableSubject && (_vm.newStatus.spoilerText || _vm.alwaysShowSubject))?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning'),\"disabled\":_vm.posting && !_vm.optimisticPosting,\"size\":\"1\"},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"placement\":_vm.emojiPickerPlacement,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"newline-on-ctrl-enter\":_vm.submitOnEnter,\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed,\"shown\":_vm.handleEmojiInputShow},model:{value:(_vm.newStatus.status),callback:function ($$v) {_vm.$set(_vm.newStatus, \"status\", $$v)},expression:\"newStatus.status\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.status),expression:\"newStatus.status\"}],ref:\"textarea\",staticClass:\"form-post-body\",class:{ 'scrollable-form': !!_vm.maxHeight },attrs:{\"placeholder\":_vm.placeholder || _vm.$t('post_status.default'),\"rows\":\"1\",\"cols\":\"1\",\"disabled\":_vm.posting && !_vm.optimisticPosting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }return _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }!_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)}],\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"status\", $event.target.value)},_vm.resize],\"compositionupdate\":_vm.resize,\"paste\":_vm.paste}}),_vm._v(\" \"),(_vm.hasStatusLengthLimit)?_c('p',{staticClass:\"character-counter faint\",class:{ error: _vm.isOverLengthLimit }},[_vm._v(\"\\n          \"+_vm._s(_vm.charactersLeft)+\"\\n        \")]):_vm._e()]),_vm._v(\" \"),(!_vm.disableScopeSelector)?_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('Select',{staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},model:{value:(_vm.newStatus.contentType),callback:function ($$v) {_vm.$set(_vm.newStatus, \"contentType\", $$v)},expression:\"newStatus.contentType\"}},_vm._l((_vm.postFormats),function(postFormat){return _c('option',{key:postFormat,domProps:{\"value\":postFormat}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + postFormat + \"\\\"]\")))+\"\\n            \")])}),0)],1):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n            \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n          \")])]):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('poll-form',{ref:\"pollForm\",attrs:{\"visible\":_vm.pollFormVisible},on:{\"update-poll\":_vm.setPoll}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"bottom\",staticClass:\"form-bottom\"},[_c('div',{staticClass:\"form-bottom-left\"},[_c('media-upload',{ref:\"mediaUpload\",staticClass:\"media-upload-icon\",attrs:{\"drop-files\":_vm.dropFiles,\"disabled\":_vm.uploadFileLimitReached},on:{\"uploading\":_vm.startedUploadingFiles,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed,\"all-uploaded\":_vm.finishedUploadingFiles}}),_vm._v(\" \"),_c('button',{staticClass:\"emoji-icon button-unstyled\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}},[_c('FAIcon',{attrs:{\"icon\":\"smile-beam\"}})],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('button',{staticClass:\"poll-icon button-unstyled\",class:{ selected: _vm.pollFormVisible },attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}},[_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n      \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('post_status.post'))+\"\\n      \")]):_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.uploadingFiles || _vm.disableSubmit},on:{\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('post_status.post'))+\"\\n      \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n      Error: \"+_vm._s(_vm.error)+\"\\n      \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1),_vm._v(\" \"),_c('attachment',{attrs:{\"attachment\":file,\"set-media\":function () { return _vm.$store.dispatch('setMedia', _vm.newStatus.files); },\"size\":\"small\",\"allow-play\":\"false\"}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.mediaDescriptions[file.id]),expression:\"newStatus.mediaDescriptions[file.id]\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.media_description')},domProps:{\"value\":(_vm.newStatus.mediaDescriptions[file.id])},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus.mediaDescriptions, file.id, $event.target.value)}}})],1)}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0 && !_vm.disableSensitivityCheckbox)?_c('div',{staticClass:\"upload_settings\"},[_c('Checkbox',{model:{value:(_vm.newStatus.nsfw),callback:function ($$v) {_vm.$set(_vm.newStatus, \"nsfw\", $$v)},expression:\"newStatus.nsfw\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('post_status.attachments_sensitive'))+\"\\n      \")])],1):_vm._e()],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const createRuffleService = () => {\n  let ruffleInstance = null\n\n  const getRuffle = () => new Promise((resolve, reject) => {\n    if (ruffleInstance) {\n      resolve(ruffleInstance)\n      return\n    }\n    // Ruffle needs these to be set before it's loaded\n    // https://github.com/ruffle-rs/ruffle/issues/3952\n    window.RufflePlayer = {}\n    window.RufflePlayer.config = {\n      polyfills: false,\n      publicPath: '/static/ruffle'\n    }\n\n    // Currently it's seems like a better way of loading ruffle\n    // because it needs the wasm publically accessible, but it needs path to it\n    // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n    const script = document.createElement('script')\n    // see webpack config, using CopyPlugin to copy it from node_modules\n    // provided via ruffle-mirror\n    script.src = '/static/ruffle/ruffle.js'\n    script.type = 'text/javascript'\n    script.onerror = (e) => { reject(e) }\n    script.onabort = (e) => { reject(e) }\n    script.oncancel = (e) => { reject(e) }\n    script.onload = () => {\n      ruffleInstance = window.RufflePlayer\n      resolve(ruffleInstance)\n    }\n    document.body.appendChild(script)\n  })\n\n  return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faStop,\n  faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faStop,\n  faExclamationTriangle\n)\n\nconst Flash = {\n  props: [ 'src' ],\n  data () {\n    return {\n      player: false, // can be true, \"hidden\", false. hidden = element exists\n      loaded: false,\n      ruffleInstance: null\n    }\n  },\n  methods: {\n    openPlayer () {\n      if (this.player) return // prevent double-loading, or re-loading on failure\n      this.player = 'hidden'\n      RuffleService.getRuffle().then((ruffle) => {\n        const player = ruffle.newest().createPlayer()\n        player.config = {\n          letterbox: 'on'\n        }\n        const container = this.$refs.container\n        container.appendChild(player)\n        player.style.width = '100%'\n        player.style.height = '100%'\n        player.load(this.src).then(() => {\n          this.player = true\n        }).catch((e) => {\n          console.error('Error loading ruffle', e)\n          this.player = 'error'\n        })\n        this.ruffleInstance = player\n      })\n    },\n    closePlayer () {\n      console.log(this.ruffleInstance)\n      this.ruffleInstance.remove()\n      this.player = false\n    }\n  }\n}\n\nexport default Flash\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./flash.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./flash.js\"\nimport __vue_script__ from \"!!babel-loader!./flash.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-41d6a8a4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./flash.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Flash\"},[(_vm.player === true || _vm.player === 'hidden')?_c('div',{ref:\"container\",staticClass:\"player\",class:{ hidden: _vm.player === 'hidden' }}):_vm._e(),_vm._v(\" \"),(_vm.player !== true)?_c('button',{staticClass:\"button-unstyled placeholder\",on:{\"click\":_vm.openPlayer}},[(_vm.player === 'hidden')?_c('span',{staticClass:\"label\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.loading'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.player === 'error')?_c('span',{staticClass:\"label\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.flash_fail'))+\"\\n    \")]):_c('span',{staticClass:\"label\"},[_c('p',[_vm._v(\"\\n        \"+_vm._s(_vm.$t('general.flash_content'))+\"\\n      \")]),_vm._v(\" \"),_c('p',[_c('FAIcon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\"\\n        \"+_vm._s(_vm.$t('general.flash_security'))+\"\\n      \")],1)])]):_vm._e(),_vm._v(\" \"),(_vm.player)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":_vm.closePlayer}},[_c('FAIcon',{attrs:{\"icon\":\"stop\"}})],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes\n)\n\nconst Attachment = {\n  props: [\n    'attachment',\n    'nsfw',\n    'size',\n    'allowPlay',\n    'setMedia',\n    'naturalSizeLoad'\n  ],\n  data () {\n    return {\n      nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n      hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n      preloadImage: this.$store.getters.mergedConfig.preloadImage,\n      loading: false,\n      img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n      modalOpen: false,\n      showHidden: false\n    }\n  },\n  components: {\n    Flash,\n    StillImage,\n    VideoAttachment\n  },\n  computed: {\n    usePlaceholder () {\n      return this.size === 'hide' || this.type === 'unknown'\n    },\n    placeholderName () {\n      if (this.attachment.description === '' || !this.attachment.description) {\n        return this.type.toUpperCase()\n      }\n      return this.attachment.description\n    },\n    placeholderIconClass () {\n      if (this.type === 'image') return 'image'\n      if (this.type === 'video') return 'video'\n      if (this.type === 'audio') return 'music'\n      return 'file'\n    },\n    referrerpolicy () {\n      return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n    },\n    type () {\n      return fileTypeService.fileType(this.attachment.mimetype)\n    },\n    hidden () {\n      return this.nsfw && this.hideNsfwLocal && !this.showHidden\n    },\n    isEmpty () {\n      return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n    },\n    isSmall () {\n      return this.size === 'small'\n    },\n    fullwidth () {\n      if (this.size === 'hide') return false\n      return this.type === 'html' || this.type === 'audio' || this.type === 'unknown'\n    },\n    useModal () {\n      const modalTypes = this.size === 'hide' ? ['image', 'video', 'audio']\n        : this.mergedConfig.playVideosInModal\n          ? ['image', 'video']\n          : ['image']\n      return modalTypes.includes(this.type)\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    linkClicked ({ target }) {\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    openModal (event) {\n      if (this.useModal) {\n        event.stopPropagation()\n        event.preventDefault()\n        this.setMedia()\n        this.$store.dispatch('setCurrent', this.attachment)\n      }\n    },\n    toggleHidden (event) {\n      if (\n        (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n        (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n      ) {\n        this.openModal(event)\n        return\n      }\n      if (this.img && !this.preloadImage) {\n        if (this.img.onload) {\n          this.img.onload()\n        } else {\n          this.loading = true\n          this.img.src = this.attachment.url\n          this.img.onload = () => {\n            this.loading = false\n            this.showHidden = !this.showHidden\n          }\n        }\n      } else {\n        this.showHidden = !this.showHidden\n      }\n    },\n    onImageLoad (image) {\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n    }\n  }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1c20d79c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceholder)?_c('div',{class:{ 'fullwidth': _vm.fullwidth },on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description}},[_c('FAIcon',{attrs:{\"icon\":_vm.placeholderIconClass}}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n  \")],1):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] =  _vm.fullwidth, _obj['nsfw-placeholder'] =  _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\"},on:{\"click\":_vm.openModal}},[_c('StillImage',{staticClass:\"image\",attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad,\"alt\":_vm.attachment.description}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"controls\":\"\"},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e(),_vm._v(\" \"),(_vm.type === 'flash')?_c('Flash',{attrs:{\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url}}):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <time\n    :datetime=\"time\"\n    :title=\"localeDateString\"\n  >\n    {{ $t(relativeTime.key, [relativeTime.num]) }}\n  </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n  data () {\n    return {\n      relativeTime: { key: 'time.now', num: 0 },\n      interval: null\n    }\n  },\n  computed: {\n    localeDateString () {\n      const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n      return typeof this.time === 'string'\n        ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n        : this.time.toLocaleString(browserLocale)\n    }\n  },\n  created () {\n    this.refreshRelativeTimeObject()\n  },\n  destroyed () {\n    clearTimeout(this.interval)\n  },\n  methods: {\n    refreshRelativeTimeObject () {\n      const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n      this.relativeTime = this.longFormat\n        ? DateUtils.relativeTime(this.time, nowThreshold)\n        : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n      if (this.autoUpdate) {\n        this.interval = setTimeout(\n          this.refreshRelativeTimeObject,\n          1000 * this.autoUpdate\n        )\n      }\n    }\n  }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-afc3a092\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n  \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <div class=\"list\">\n    <div\n      v-for=\"item in items\"\n      :key=\"getKey(item)\"\n      class=\"list-item\"\n    >\n      <slot\n        name=\"item\"\n        :item=\"item\"\n      />\n    </div>\n    <div\n      v-if=\"items.length === 0 && !!$slots.empty\"\n      class=\"list-empty-content faint\"\n    >\n      <slot name=\"empty\" />\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    items: {\n      type: Array,\n      default: () => []\n    },\n    getKey: {\n      type: Function,\n      default: item => item.id\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n  &-item:not(:last-child) {\n    border-bottom: 1px solid;\n    border-bottom-color: $fallback--border;\n    border-bottom-color: var(--border, $fallback--border);\n  }\n\n  &-empty-content {\n    text-align: center;\n    padding: 10px;\n  }\n}\n</style>\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c1790f52\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"list\"},[_vm._l((_vm.items),function(item){return _c('div',{key:_vm.getKey(item),staticClass:\"list-item\"},[_vm._t(\"item\",null,{\"item\":item})],2)}),_vm._v(\" \"),(_vm.items.length === 0 && !!_vm.$slots.empty)?_c('div',{staticClass:\"list-empty-content faint\"},[_vm._t(\"empty\")],2):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <label\n    class=\"checkbox\"\n    :class=\"{ disabled, indeterminate }\"\n  >\n    <input\n      type=\"checkbox\"\n      :disabled=\"disabled\"\n      :checked=\"checked\"\n      :indeterminate.prop=\"indeterminate\"\n      @change=\"$emit('change', $event.target.checked)\"\n    >\n    <i class=\"checkbox-indicator\" />\n    <span\n      v-if=\"!!$slots.default\"\n      class=\"label\"\n    >\n      <slot />\n    </span>\n  </label>\n</template>\n\n<script>\nexport default {\n  model: {\n    prop: 'checked',\n    event: 'change'\n  },\n  props: [\n    'checked',\n    'indeterminate',\n    'disabled'\n  ]\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.checkbox {\n  position: relative;\n  display: inline-block;\n  min-height: 1.2em;\n\n  &-indicator {\n    position: relative;\n    padding-left: 1.2em;\n  }\n\n  &-indicator::before {\n    position: absolute;\n    right: 0;\n    top: 0;\n    display: block;\n    content: '✓';\n    transition: color 200ms;\n    width: 1.1em;\n    height: 1.1em;\n    border-radius: $fallback--checkboxRadius;\n    border-radius: var(--checkboxRadius, $fallback--checkboxRadius);\n    box-shadow: 0px 0px 2px black inset;\n    box-shadow: var(--inputShadow);\n    background-color: $fallback--fg;\n    background-color: var(--input, $fallback--fg);\n    vertical-align: top;\n    text-align: center;\n    line-height: 1.1em;\n    font-size: 1.1em;\n    color: transparent;\n    overflow: hidden;\n    box-sizing: border-box;\n  }\n\n  &.disabled {\n    .checkbox-indicator::before,\n    .label {\n      opacity: .5;\n    }\n    .label {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  input[type=checkbox] {\n    display: none;\n\n    &:checked + .checkbox-indicator::before {\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n    &:indeterminate + .checkbox-indicator::before {\n      content: '–';\n      color: $fallback--text;\n      color: var(--inputText, $fallback--text);\n    }\n\n  }\n\n  & > span {\n    margin-left: .5em;\n  }\n}\n</style>\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./checkbox.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./checkbox.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0631206a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./checkbox.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"checkbox\",class:{ disabled: _vm.disabled, indeterminate: _vm.indeterminate }},[_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.disabled},domProps:{\"checked\":_vm.checked,\"indeterminate\":_vm.indeterminate},on:{\"change\":function($event){return _vm.$emit('change', $event.target.checked)}}}),_vm._v(\" \"),_c('i',{staticClass:\"checkbox-indicator\"}),_vm._v(\" \"),(!!_vm.$slots.default)?_c('span',{staticClass:\"label\"},[_vm._t(\"default\")],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown\n)\n\nexport default {\n  model: {\n    prop: 'value',\n    event: 'change'\n  },\n  props: [\n    'value',\n    'disabled',\n    'unstyled',\n    'kind'\n  ]\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./select.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./select.js\"\nimport __vue_script__ from \"!!babel-loader!./select.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07c8d34f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./select.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"Select input\",class:{ disabled: _vm.disabled, unstyled: _vm.unstyled }},[_c('select',{attrs:{\"disabled\":_vm.disabled},domProps:{\"value\":_vm.value},on:{\"change\":function($event){return _vm.$emit('change', $event.target.value)}}},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n  store,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  media = [],\n  inReplyToStatusId = undefined,\n  contentType = 'text/plain',\n  preview = false,\n  idempotencyKey = ''\n}) => {\n  const mediaIds = map(media, 'id')\n\n  return apiService.postStatus({\n    credentials: store.state.users.currentUser.credentials,\n    status,\n    spoilerText,\n    visibility,\n    sensitive,\n    mediaIds,\n    inReplyToStatusId,\n    contentType,\n    poll,\n    preview,\n    idempotencyKey\n  })\n    .then((data) => {\n      if (!data.error && !preview) {\n        store.dispatch('addNewStatuses', {\n          statuses: [data],\n          timeline: 'friends',\n          showImmediately: true,\n          noIdUpdate: true // To prevent missing notices on next pull.\n        })\n      }\n      return data\n    })\n    .catch((err) => {\n      return {\n        error: err.message\n      }\n    })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n  postStatus,\n  uploadMedia,\n  setMediaDescription\n}\n\nexport default statusPosterService\n","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n  ar: () => import('./ar.json'),\n  ca: () => import('./ca.json'),\n  cs: () => import('./cs.json'),\n  de: () => import('./de.json'),\n  eo: () => import('./eo.json'),\n  es: () => import('./es.json'),\n  et: () => import('./et.json'),\n  eu: () => import('./eu.json'),\n  fi: () => import('./fi.json'),\n  fr: () => import('./fr.json'),\n  ga: () => import('./ga.json'),\n  he: () => import('./he.json'),\n  hu: () => import('./hu.json'),\n  it: () => import('./it.json'),\n  ja: () => import('./ja_pedantic.json'),\n  ja_easy: () => import('./ja_easy.json'),\n  ko: () => import('./ko.json'),\n  nb: () => import('./nb.json'),\n  nl: () => import('./nl.json'),\n  oc: () => import('./oc.json'),\n  pl: () => import('./pl.json'),\n  pt: () => import('./pt.json'),\n  ro: () => import('./ro.json'),\n  ru: () => import('./ru.json'),\n  te: () => import('./te.json'),\n  uk: () => import('./uk.json'),\n  zh: () => import('./zh.json'),\n  zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n  languages: ['en', ...Object.keys(loaders)],\n  default: {\n    en: require('./en.json')\n  },\n  setLanguage: async (i18n, language) => {\n    if (loaders[language]) {\n      let messages = await loaders[language]()\n      i18n.setLocaleMessage(language, messages)\n    }\n    i18n.locale = language\n  }\n}\n\nexport default messages\n","const fileSizeFormat = (num) => {\n  var exponent\n  var unit\n  var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n  if (num < 1) {\n    return num + ' ' + units[0]\n  }\n\n  exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n  num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n  unit = units[exponent]\n  return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n  fileSizeFormat\n}\nexport default fileSizeFormatService\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n  name: 'MentionsLine',\n  props: {\n    mentions: {\n      required: true,\n      type: Array\n    }\n  },\n  data: () => ({ expanded: false }),\n  components: {\n    MentionLink\n  },\n  computed: {\n    mentionsComputed () {\n      return this.mentions.slice(0, MENTIONS_LIMIT)\n    },\n    extraMentions () {\n      return this.mentions.slice(MENTIONS_LIMIT)\n    },\n    manyMentions () {\n      return this.extraMentions.length > 0\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    toggleShowMore () {\n      this.expanded = !this.expanded\n    }\n  }\n}\n\nexport default MentionsLine\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./mentions_line.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./mentions_line.js\"\nimport __vue_script__ from \"!!babel-loader!./mentions_line.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-68e65af2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mentions_line.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"MentionsLine\"},[_vm._l((_vm.mentionsComputed),function(mention){return _c('MentionLink',{key:mention.index,staticClass:\"mention-link\",attrs:{\"content\":mention.content,\"url\":mention.url,\"first-mention\":false}})}),(_vm.manyMentions)?_c('span',{staticClass:\"extraMentions\"},[(_vm.expanded)?_c('span',{staticClass:\"fullExtraMentions\"},_vm._l((_vm.extraMentions),function(mention){return _c('MentionLink',{key:mention.index,staticClass:\"mention-link\",attrs:{\"content\":mention.content,\"url\":mention.url,\"first-mention\":false}})}),1):_vm._e(),(!_vm.expanded)?_c('button',{staticClass:\"button-unstyled showMoreLess\",on:{\"click\":_vm.toggleShowMore}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('status.plus_more', { number: _vm.extraMentions.length }))+\"\\n    \")]):_vm._e(),(_vm.expanded)?_c('button',{staticClass:\"button-unstyled showMoreLess\",on:{\"click\":_vm.toggleShowMore}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.show_less'))+\"\\n    \")]):_vm._e()]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <button\n    :disabled=\"progress || disabled\"\n    @click=\"onClick\"\n  >\n    <template v-if=\"progress && $slots.progress\">\n      <slot name=\"progress\" />\n    </template>\n    <template v-else>\n      <slot />\n    </template>\n  </button>\n</template>\n\n<script>\nexport default {\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    click: { // click event handler. Must return a promise\n      type: Function,\n      default: () => Promise.resolve()\n    }\n  },\n  data () {\n    return {\n      progress: false\n    }\n  },\n  methods: {\n    onClick () {\n      this.progress = true\n      this.click().then(() => { this.progress = false })\n    }\n  }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f751ae6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./progress_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{attrs:{\"disabled\":_vm.progress || _vm.disabled},on:{\"click\":_vm.onClick}},[(_vm.progress && _vm.$slots.progress)?[_vm._t(\"progress\")]:[_vm._t(\"default\")]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const specialLanguageCodes = {\n  'ja_easy': 'ja',\n  'zh_Hant': 'zh-HANT'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst localeService = {\n  internalToBrowserLocale\n}\n\nexport default localeService\n","import { set, delete as del } from 'vue'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n  'postContentType',\n  'subjectLineBehavior'\n]\n\nexport const defaultState = {\n  colors: {},\n  theme: undefined,\n  customTheme: undefined,\n  customThemeSource: undefined,\n  hideISP: false,\n  hideInstanceWallpaper: false,\n  hideShoutbox: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: undefined, // instance default\n  collapseMessageWithSubject: undefined, // instance default\n  padEmoji: true,\n  hideAttachments: false,\n  hideAttachmentsInConv: false,\n  maxThumbnails: 16,\n  hideNsfw: true,\n  preloadImage: true,\n  loopVideo: true,\n  loopVideoSilentOnly: true,\n  streaming: false,\n  emojiReactionsOnTimeline: true,\n  alwaysShowNewPostButton: false,\n  autohideFloatingPostButton: false,\n  pauseOnUnfocused: true,\n  stopGifs: false,\n  replyVisibility: 'all',\n  notificationVisibility: {\n    follows: true,\n    mentions: true,\n    likes: true,\n    repeats: true,\n    moves: true,\n    emojiReactions: true,\n    followRequest: true,\n    chatMention: true\n  },\n  webPushNotifications: false,\n  muteWords: [],\n  highlight: {},\n  interfaceLanguage: browserLocale,\n  hideScopeNotice: false,\n  useStreamingApi: false,\n  sidebarRight: undefined, // instance default\n  scopeCopy: undefined, // instance default\n  subjectLineBehavior: undefined, // instance default\n  alwaysShowSubjectInput: undefined, // instance default\n  postContentType: undefined, // instance default\n  minimalScopesMode: undefined, // instance default\n  // This hides statuses filtered via a word filter\n  hideFilteredStatuses: undefined, // instance default\n  playVideosInModal: false,\n  useOneClickNsfw: false,\n  useContainFit: false,\n  greentext: undefined, // instance default\n  hidePostStats: undefined, // instance default\n  hideUserStats: undefined, // instance default\n  virtualScrolling: undefined, // instance default\n  sensitiveByDefault: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n  .filter(([key, value]) => value === undefined)\n  .map(([key, value]) => key)\n\nconst config = {\n  state: { ...defaultState },\n  getters: {\n    defaultConfig (state, getters, rootState, rootGetters) {\n      const { instance } = rootState\n      return {\n        ...defaultState,\n        ...Object.fromEntries(\n          instanceDefaultProperties.map(key => [key, instance[key]])\n        )\n      }\n    },\n    mergedConfig (state, getters, rootState, rootGetters) {\n      const { defaultConfig } = rootGetters\n      return {\n        ...defaultConfig,\n        // Do not override with undefined\n        ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n      }\n    }\n  },\n  mutations: {\n    setOption (state, { name, value }) {\n      set(state, name, value)\n    },\n    setHighlight (state, { user, color, type }) {\n      const data = this.state.config.highlight[user]\n      if (color || type) {\n        set(state.highlight, user, { color: color || data.color, type: type || data.type })\n      } else {\n        del(state.highlight, user)\n      }\n    }\n  },\n  actions: {\n    loadSettings ({ dispatch }, data) {\n      const knownKeys = new Set(Object.keys(defaultState))\n      const presentKeys = new Set(Object.keys(data))\n      const intersection = new Set()\n      for (let elem of presentKeys) {\n        if (knownKeys.has(elem)) {\n          intersection.add(elem)\n        }\n      }\n\n      intersection.forEach(\n        name => dispatch('setOption', { name, value: data[name] })\n      )\n    },\n    setHighlight ({ commit, dispatch }, { user, color, type }) {\n      commit('setHighlight', { user, color, type })\n    },\n    setOption ({ commit, dispatch }, { name, value }) {\n      commit('setOption', { name, value })\n      switch (name) {\n        case 'theme':\n          setPreset(value)\n          break\n        case 'customTheme':\n        case 'customThemeSource':\n          applyTheme(value)\n          break\n        case 'interfaceLanguage':\n          messages.setLanguage(this.getters.i18n, value)\n          break\n      }\n    }\n  }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n  const statusText = status.text.toLowerCase()\n  const statusSummary = status.summary.toLowerCase()\n  const hits = filter(muteWords, (muteWord) => {\n    return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n  })\n\n  return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n  if (!('Notification' in window && window.Notification.permission === 'granted')) return\n  if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n  const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n  // Chrome is known for not closing notifications automatically\n  // according to MDN, anyway.\n  setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n  const result = {\n    top: top + child.offsetTop,\n    left: left + child.offsetLeft\n  }\n  if (!ignorePadding && child !== window) {\n    const { topPadding, leftPadding } = findPadding(child)\n    result.top += ignorePadding ? 0 : topPadding\n    result.left += ignorePadding ? 0 : leftPadding\n  }\n\n  if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n    return findOffset(child.offsetParent, parent, result, false)\n  } else {\n    if (parent !== window) {\n      const { topPadding, leftPadding } = findPadding(parent)\n      result.top += topPadding\n      result.left += leftPadding\n    }\n    return result\n  }\n}\n\nconst findPadding = (el) => {\n  const topPaddingStr = window.getComputedStyle(el)['padding-top']\n  const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n  const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n  const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n  return { topPadding, leftPadding }\n}\n","export const newExporter = ({\n  filename = 'data',\n  getExportedObject\n}) => ({\n  exportData () {\n    const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n    // Create an invisible link with a data url and simulate a click\n    const e = document.createElement('a')\n    e.setAttribute('download', `${filename}.json`)\n    e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n    e.style.display = 'none'\n\n    document.body.appendChild(e)\n    e.click()\n    document.body.removeChild(e)\n  }\n})\n\nexport const newImporter = ({\n  onImport,\n  onImportFailure,\n  validator = () => true\n}) => ({\n  importData () {\n    const filePicker = document.createElement('input')\n    filePicker.setAttribute('type', 'file')\n    filePicker.setAttribute('accept', '.json')\n\n    filePicker.addEventListener('change', event => {\n      if (event.target.files[0]) {\n        // eslint-disable-next-line no-undef\n        const reader = new FileReader()\n        reader.onload = ({ target }) => {\n          try {\n            const parsed = JSON.parse(target.result)\n            const validationResult = validator(parsed)\n            if (validationResult === true) {\n              onImport(parsed)\n            } else {\n              onImportFailure({ validationResult })\n            }\n          } catch (error) {\n            onImportFailure({ error })\n          }\n        }\n        reader.readAsText(event.target.files[0])\n      }\n    })\n\n    document.body.appendChild(filePicker)\n    filePicker.click()\n    document.body.removeChild(filePicker)\n  }\n})\n","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n  setTimeout(() => {\n    store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n      .then((relationship) => {\n        store.commit('updateUserRelationship', [relationship])\n        return relationship\n      })\n      .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n      .catch((e) => reject(e))\n  }, 500)\n}).then(([following, sent, locked, attempt]) => {\n  if (!following && !(locked && sent) && attempt <= 3) {\n    // If we BE reports that we still not following that user - retry,\n    // increment attempts by one\n    fetchRelationship(++attempt, userId, store)\n  }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.followUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n\n      if (updated.following || (updated.locked && updated.requested)) {\n        // If we get result immediately or the account is locked, just stop.\n        resolve()\n        return\n      }\n\n      // But usually we don't get result immediately, so we ask server\n      // for updated user profile to confirm if we are following them\n      // Sometimes it takes several tries. Sometimes we end up not following\n      // user anyway, probably because they locked themselves and we\n      // don't know that yet.\n      // Recursive Promise, it will call itself up to 3 times.\n\n      return fetchRelationship(1, updated, store)\n        .then(() => {\n          resolve()\n        })\n    })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n  store.state.api.backendInteractor.unfollowUser({ id: userId })\n    .then((updated) => {\n      store.commit('updateUserRelationship', [updated])\n      resolve({\n        updated\n      })\n    })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n  props: ['relationship', 'labelFollowing', 'buttonClass'],\n  data () {\n    return {\n      inProgress: false\n    }\n  },\n  computed: {\n    isPressed () {\n      return this.inProgress || this.relationship.following\n    },\n    title () {\n      if (this.inProgress || this.relationship.following) {\n        return this.$t('user_card.follow_unfollow')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_cancel')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    },\n    label () {\n      if (this.inProgress) {\n        return this.$t('user_card.follow_progress')\n      } else if (this.relationship.following) {\n        return this.labelFollowing || this.$t('user_card.following')\n      } else if (this.relationship.requested) {\n        return this.$t('user_card.follow_sent')\n      } else {\n        return this.$t('user_card.follow')\n      }\n    }\n  },\n  methods: {\n    onClick () {\n      this.relationship.following || this.relationship.requested ? this.unfollow() : this.follow()\n    },\n    follow () {\n      this.inProgress = true\n      requestFollow(this.relationship.id, this.$store).then(() => {\n        this.inProgress = false\n      })\n    },\n    unfollow () {\n      const store = this.$store\n      this.inProgress = true\n      requestUnfollow(this.relationship.id, store).then(() => {\n        this.inProgress = false\n        store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n      })\n    }\n  }\n}\n","/* script */\nexport * from \"!!babel-loader!./follow_button.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d23ef426\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn button-default follow-button\",class:{ toggled: _vm.isPressed },attrs:{\"disabled\":_vm.inProgress,\"title\":_vm.title},on:{\"click\":_vm.onClick}},[_vm._v(\"\\n  \"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst VideoAttachment = {\n  props: ['attachment', 'controls'],\n  data () {\n    return {\n      blocksSuspend: false,\n      // Start from true because removing \"loop\" property seems buggy in Vue\n      hasAudio: true\n    }\n  },\n  computed: {\n    loopVideo () {\n      if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n        return !this.hasAudio\n      }\n      return this.$store.getters.mergedConfig.loopVideo\n    }\n  },\n  methods: {\n    onPlaying (e) {\n      this.setHasAudio(e)\n      if (this.loopVideo) {\n        this.$emit('play', { looping: true })\n        return\n      }\n      this.$emit('play')\n    },\n    onPaused (e) {\n      this.$emit('pause')\n    },\n    setHasAudio (e) {\n      const target = e.srcElement || e.target\n      // If hasAudio is false, we've already marked this video to not have audio,\n      // a video can't gain audio out of nowhere so don't bother checking again.\n      if (!this.hasAudio) return\n      if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n        // non-zero if video has audio track\n        if (target.webkitAudioDecodedByteCount > 0) return\n      }\n      if (typeof target.mozHasAudio !== 'undefined') {\n        // true if video has audio track\n        if (target.mozHasAudio) return\n      }\n      if (typeof target.audioTracks !== 'undefined') {\n        if (target.audioTracks.length > 0) return\n      }\n      this.hasAudio = false\n    }\n  }\n}\n\nexport default VideoAttachment\n","/* script */\nexport * from \"!!babel-loader!./video_attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./video_attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dda2841a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./video_attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{staticClass:\"video\",attrs:{\"preload\":\"metadata\",\"src\":_vm.attachment.url,\"loop\":_vm.loopVideo,\"controls\":_vm.controls,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"playsinline\":\"\"},on:{\"playing\":_vm.onPlaying,\"pause\":_vm.onPaused}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAt\n)\n\nconst MentionLink = {\n  name: 'MentionLink',\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    userId: {\n      required: false,\n      type: String\n    },\n    userScreenName: {\n      required: false,\n      type: String\n    }\n  },\n  methods: {\n    onClick () {\n      const link = generateProfileLink(\n        this.userId || this.user.id,\n        this.userScreenName || this.user.screen_name\n      )\n      this.$router.push(link)\n    }\n  },\n  computed: {\n    user () {\n      return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n    },\n    isYou () {\n      // FIXME why user !== currentUser???\n      return this.user && this.user.id === this.currentUser.id\n    },\n    userName () {\n      return this.user && this.userNameFullUi.split('@')[0]\n    },\n    userNameFull () {\n      return this.user && this.user.screen_name\n    },\n    userNameFullUi () {\n      return this.user && this.user.screen_name_ui\n    },\n    highlight () {\n      return this.user && this.mergedConfig.highlight[this.user.screen_name]\n    },\n    highlightType () {\n      return this.highlight && ('-' + this.highlight.type)\n    },\n    highlightClass () {\n      if (this.highlight) return highlightClass(this.user)\n    },\n    style () {\n      if (this.highlight) {\n        const {\n          backgroundColor,\n          backgroundPosition,\n          backgroundImage,\n          ...rest\n        } = highlightStyle(this.highlight)\n        return rest\n      }\n    },\n    classnames () {\n      return [\n        {\n          '-you': this.isYou,\n          '-highlighted': this.highlight\n        },\n        this.highlightType\n      ]\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default MentionLink\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./mention_link.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./mention_link.js\"\nimport __vue_script__ from \"!!babel-loader!./mention_link.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9e9097c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mention_link.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"MentionLink\"},[(!_vm.user)?_c('a',{staticClass:\"original\",attrs:{\"href\":_vm.url,\"target\":\"_blank\"},domProps:{\"innerHTML\":_vm._s(_vm.content)}}):_vm._e(),_vm._v(\" \"),(_vm.user)?_c('span',{staticClass:\"new\",class:_vm.classnames,style:(_vm.style)},[_c('a',{staticClass:\"short button-unstyled\",attrs:{\"href\":_vm.url},on:{\"click\":function($event){$event.preventDefault();return _vm.onClick($event)}}},[_c('FAIcon',{staticClass:\"at\",attrs:{\"size\":\"sm\",\"icon\":\"at\"}}),_c('span',{staticClass:\"shortName\"},[_c('span',{staticClass:\"userName\",domProps:{\"innerHTML\":_vm._s(_vm.userName)}})]),_vm._v(\" \"),(_vm.isYou)?_c('span',{staticClass:\"you\"},[_vm._v(_vm._s(_vm.$t('status.you')))]):_vm._e()],1),_vm._v(\" \"),(_vm.userName !== _vm.userNameFull)?_c('span',{staticClass:\"full popover-default\",class:[_vm.highlightType]},[_c('span',{staticClass:\"userNameFull\",domProps:{\"textContent\":_vm._s('@' + _vm.userNameFull)}})]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport { chunk, last, dropRight, sumBy } from 'lodash'\n\nconst Gallery = {\n  props: [\n    'attachments',\n    'nsfw',\n    'setMedia'\n  ],\n  data () {\n    return {\n      sizes: {}\n    }\n  },\n  components: { Attachment },\n  computed: {\n    rows () {\n      if (!this.attachments) {\n        return []\n      }\n      const rows = chunk(this.attachments, 3)\n      if (last(rows).length === 1 && rows.length > 1) {\n        // if 1 attachment on last row -> add it to the previous row instead\n        const lastAttachment = last(rows)[0]\n        const allButLastRow = dropRight(rows)\n        last(allButLastRow).push(lastAttachment)\n        return allButLastRow\n      }\n      return rows\n    },\n    useContainFit () {\n      return this.$store.getters.mergedConfig.useContainFit\n    }\n  },\n  methods: {\n    onNaturalSizeLoad (id, size) {\n      this.$set(this.sizes, id, size)\n    },\n    rowStyle (itemsPerRow) {\n      return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }\n    },\n    itemStyle (id, row) {\n      const total = sumBy(row, item => this.getAspectRatio(item.id))\n      return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n    },\n    getAspectRatio (id) {\n      const size = this.sizes[id]\n      return size ? size.width / size.height : 1\n    }\n  }\n}\n\nexport default Gallery\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./gallery.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./gallery.js\"\nimport __vue_script__ from \"!!babel-loader!./gallery.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3db94942\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./gallery.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"galleryContainer\",staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rows),function(row,index){return _c('div',{key:index,staticClass:\"gallery-row\",class:{ 'contain-fit': _vm.useContainFit, 'cover-fit': !_vm.useContainFit },style:(_vm.rowStyle(row.length))},[_c('div',{staticClass:\"gallery-row-inner\"},_vm._l((row),function(attachment){return _c('attachment',{key:attachment.id,style:(_vm.itemStyle(attachment.id, row)),attrs:{\"set-media\":_vm.setMedia,\"nsfw\":_vm.nsfw,\"attachment\":attachment,\"allow-play\":false,\"natural-size-load\":_vm.onNaturalSizeLoad.bind(null, attachment.id)}})}),1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n  name: 'LinkPreview',\n  props: [\n    'card',\n    'size',\n    'nsfw'\n  ],\n  data () {\n    return {\n      imageLoaded: false\n    }\n  },\n  computed: {\n    useImage () {\n      // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n      // as it makes sure to hide the image if somehow NSFW tagged preview can\n      // exist.\n      return this.card.image && !this.censored && this.size !== 'hide'\n    },\n    censored () {\n      return this.nsfw && this.hideNsfwConfig\n    },\n    useDescription () {\n      return this.card.description && /\\S/.test(this.card.description)\n    },\n    hideNsfwConfig () {\n      return this.mergedConfig.hideNsfw\n    },\n    ...mapGetters([\n      'mergedConfig'\n    ])\n  },\n  created () {\n    if (this.useImage) {\n      const newImg = new Image()\n      newImg.onload = () => {\n        this.imageLoaded = true\n      }\n      newImg.src = this.card.image\n    }\n  }\n}\n\nexport default LinkPreview\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./link-preview.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./link-preview.js\"\nimport __vue_script__ from \"!!babel-loader!./link-preview.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-25194025\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./link-preview.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"link-preview-card\",attrs:{\"href\":_vm.card.url,\"target\":\"_blank\",\"rel\":\"noopener\"}},[(_vm.useImage && _vm.imageLoaded)?_c('div',{staticClass:\"card-image\"},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[(_vm.censored)?_c('span',{staticClass:\"nsfw-alert alert warning\"},[_vm._v(_vm._s(_vm.$t('status.nsfw')))]):_vm._e(),_vm._v(\"\\n        \"+_vm._s(_vm.card.provider_name)+\"\\n      \")]),_vm._v(\" \"),_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.card.title))]),_vm._v(\" \"),(_vm.useDescription)?_c('p',{staticClass:\"card-description\"},[_vm._v(_vm._s(_vm.card.description))]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export default {\n  props: [ 'user' ],\n  computed: {\n    subscribeUrl () {\n      // eslint-disable-next-line no-undef\n      const serverUrl = new URL(this.user.statusnet_profile_url)\n      return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ae39779\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote-follow\"},[_c('form',{attrs:{\"method\":\"POST\",\"action\":_vm.subscribeUrl}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"nickname\"},domProps:{\"value\":_vm.user.screen_name}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"profile\",\"value\":\"\"}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default remote-button\",attrs:{\"click\":\"submit\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('user_card.remote_follow'))+\"\\n    \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n  props: ['users'],\n  computed: {\n    slicedUsers () {\n      return this.users ? this.users.slice(0, 15) : []\n    }\n  },\n  components: {\n    UserAvatar\n  },\n  methods: {\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    }\n  }\n}\n\nexport default AvatarList\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./avatar_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./avatar_list.js\"\nimport __vue_script__ from \"!!babel-loader!./avatar_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4cea5bcf\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./avatar_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"avatars\"},_vm._l((_vm.slicedUsers),function(user){return _c('router-link',{key:user.id,staticClass:\"avatars-item\",attrs:{\"to\":_vm.userProfileLink(user)}},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user}})],1)}),1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n *   (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n  const emojiCurry = suggestEmoji(data.emoji)\n  const usersCurry = data.store && suggestUsers(data.store)\n  return input => {\n    const firstChar = input[0]\n    if (firstChar === ':' && data.emoji) {\n      return emojiCurry(input)\n    }\n    if (firstChar === '@' && usersCurry) {\n      return usersCurry(input)\n    }\n    return []\n  }\n}\n\nexport const suggestEmoji = emojis => input => {\n  const noPrefix = input.toLowerCase().substr(1)\n  return emojis\n    .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n    .sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // An exact match always wins\n      aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n      bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n      // Prioritize custom emoji a lot\n      aScore += a.imageUrl ? 100 : 0\n      bScore += b.imageUrl ? 100 : 0\n\n      // Prioritize prefix matches somewhat\n      aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n      bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n      // Sort by length\n      aScore -= a.displayText.length\n      bScore -= b.displayText.length\n\n      // Break ties alphabetically\n      const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n      return bScore - aScore + alphabetically\n    })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n  // Keep some persistent values in closure, most importantly for the\n  // custom debounce to work. Lodash debounce does not return a promise.\n  let suggestions = []\n  let previousQuery = ''\n  let timeout = null\n  let cancelUserSearch = null\n\n  const userSearch = (query) => dispatch('searchUsers', { query })\n  const debounceUserSearch = (query) => {\n    cancelUserSearch && cancelUserSearch()\n    return new Promise((resolve, reject) => {\n      timeout = setTimeout(() => {\n        userSearch(query).then(resolve).catch(reject)\n      }, 300)\n      cancelUserSearch = () => {\n        clearTimeout(timeout)\n        resolve([])\n      }\n    })\n  }\n\n  return async input => {\n    const noPrefix = input.toLowerCase().substr(1)\n    if (previousQuery === noPrefix) return suggestions\n\n    suggestions = []\n    previousQuery = noPrefix\n    // Fetch more and wait, don't fetch if there's the 2nd @ because\n    // the backend user search can't deal with it.\n    // Reference semantics make it so that we get the updated data after\n    // the await.\n    if (!noPrefix.includes('@')) {\n      await debounceUserSearch(noPrefix)\n    }\n\n    const newSuggestions = state.users.users.filter(\n      user =>\n        user.screen_name.toLowerCase().startsWith(noPrefix) ||\n        user.name.toLowerCase().startsWith(noPrefix)\n    ).slice(0, 20).sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // Matches on screen name (i.e. user@instance) makes a priority\n      aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n      bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n      // Matches on name takes second priority\n      aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n      bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n      const diff = (bScore - aScore) * 10\n\n      // Then sort alphabetically\n      const nameAlphabetically = a.name > b.name ? 1 : -1\n      const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n      return diff + nameAlphabetically + screenNameAlphabetically\n      /* eslint-disable camelcase */\n    }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n      displayText: screen_name_ui,\n      detailText: name,\n      imageUrl: profile_image_url_original,\n      replacement: '@' + screen_name + ' '\n    }))\n    /* eslint-enable camelcase */\n\n    suggestions = newSuggestions || []\n    return suggestions\n  }\n}\n","import Vue from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nexport default Vue.component('tab-switcher', {\n  name: 'TabSwitcher',\n  props: {\n    renderOnlyFocused: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    onSwitch: {\n      required: false,\n      type: Function,\n      default: undefined\n    },\n    activeTab: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    scrollableTabs: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    sideTabBar: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      active: this.$slots.default.findIndex(_ => _.tag)\n    }\n  },\n  computed: {\n    activeIndex () {\n      // In case of controlled component\n      if (this.activeTab) {\n        return this.$slots.default.findIndex(slot => this.activeTab === slot.key)\n      } else {\n        return this.active\n      }\n    },\n    settingsModalVisible () {\n      return this.settingsModalState === 'visible'\n    },\n    ...mapState({\n      settingsModalState: state => state.interface.settingsModalState\n    })\n  },\n  beforeUpdate () {\n    const currentSlot = this.$slots.default[this.active]\n    if (!currentSlot.tag) {\n      this.active = this.$slots.default.findIndex(_ => _.tag)\n    }\n  },\n  methods: {\n    clickTab (index) {\n      return (e) => {\n        e.preventDefault()\n        this.setTab(index)\n      }\n    },\n    setTab (index) {\n      if (typeof this.onSwitch === 'function') {\n        this.onSwitch.call(null, this.$slots.default[index].key)\n      }\n      this.active = index\n      if (this.scrollableTabs) {\n        this.$refs.contents.scrollTop = 0\n      }\n    }\n  },\n  render (h) {\n    const tabs = this.$slots.default\n      .map((slot, index) => {\n        if (!slot.tag) return\n        const classesTab = ['tab', 'button-default']\n        const classesWrapper = ['tab-wrapper']\n        if (this.activeIndex === index) {\n          classesTab.push('active')\n          classesWrapper.push('active')\n        }\n        if (slot.data.attrs.image) {\n          return (\n            <div class={classesWrapper.join(' ')}>\n              <button\n                disabled={slot.data.attrs.disabled}\n                onClick={this.clickTab(index)}\n                class={classesTab.join(' ')}\n                type=\"button\"\n              >\n                <img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>\n                {slot.data.attrs.label ? '' : slot.data.attrs.label}\n              </button>\n            </div>\n          )\n        }\n        return (\n          <div class={classesWrapper.join(' ')}>\n            <button\n              disabled={slot.data.attrs.disabled}\n              onClick={this.clickTab(index)}\n              class={classesTab.join(' ')}\n              type=\"button\"\n            >\n              {!slot.data.attrs.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={slot.data.attrs.icon}/>)}\n              <span class=\"text\">\n                {slot.data.attrs.label}\n              </span>\n            </button>\n          </div>\n        )\n      })\n\n    const contents = this.$slots.default.map((slot, index) => {\n      if (!slot.tag) return\n      const active = this.activeIndex === index\n      const classes = [ active ? 'active' : 'hidden' ]\n      if (slot.data.attrs.fullHeight) {\n        classes.push('full-height')\n      }\n      const renderSlot = (!this.renderOnlyFocused || active)\n        ? slot\n        : ''\n\n      return (\n        <div class={classes}>\n          {\n            this.sideTabBar\n              ? <h1 class=\"mobile-label\">{slot.data.attrs.label}</h1>\n              : ''\n          }\n          {renderSlot}\n        </div>\n      )\n    })\n\n    return (\n      <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n        <div class=\"tabs\">\n          {tabs}\n        </div>\n        <div ref=\"contents\" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')} v-body-scroll-lock={this.settingsModalVisible}>\n          {contents}\n        </div>\n      </div>\n    )\n  }\n})\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n  getComponentOptions,\n  getComponentProps\n}\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n  return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n  const words = splitByWhitespaceBoundary(str)\n  const wordsWithPosition = addPositionToWords(words)\n\n  return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n  return reduce(words, (result, word) => {\n    const data = {\n      word,\n      start: 0,\n      end: word.length\n    }\n\n    if (result.length > 0) {\n      const previous = result.pop()\n\n      data.start += previous.end\n      data.end += previous.end\n\n      result.push(previous)\n    }\n\n    result.push(data)\n\n    return result\n  }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n  let result = []\n  let currentWord = ''\n  for (let i = 0; i < str.length; i++) {\n    const currentChar = str[i]\n    // Starting a new word\n    if (!currentWord) {\n      currentWord = currentChar\n      continue\n    }\n    // current character is whitespace while word isn't, or vice versa:\n    // add our current word to results, start over the current word.\n    if (!!currentChar.trim() !== !!currentWord.trim()) {\n      result.push(currentWord)\n      currentWord = currentChar\n      continue\n    }\n    currentWord += currentChar\n  }\n  // Add the last word we were working on\n  if (currentWord) {\n    result.push(currentWord)\n  }\n  return result\n}\n\nconst completion = {\n  wordAtPosition,\n  addPositionToWords,\n  splitByWhitespaceBoundary,\n  replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n  if (keyword === '') return list\n\n  const keywordLowercase = keyword.toLowerCase()\n  let orderedEmojiList = []\n  for (const emoji of list) {\n    const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n    if (indexOfKeyword > -1) {\n      if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n        orderedEmojiList[indexOfKeyword] = []\n      }\n      orderedEmojiList[indexOfKeyword].push(emoji)\n    }\n  }\n  return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n  props: {\n    enableStickerPicker: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      keyword: '',\n      activeGroup: 'custom',\n      showingStickers: false,\n      groupsScrolledClass: 'scrolled-top',\n      keepOpen: false,\n      customEmojiBufferSlice: LOAD_EMOJI_BY,\n      customEmojiTimeout: null,\n      customEmojiLoadAllConfirmed: false\n    }\n  },\n  components: {\n    StickerPicker: () => import('../sticker_picker/sticker_picker.vue'),\n    Checkbox\n  },\n  methods: {\n    onStickerUploaded (e) {\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.$emit('sticker-upload-failed', e)\n    },\n    onEmoji (emoji) {\n      const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n      this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n    },\n    onScroll (e) {\n      const target = (e && e.target) || this.$refs['emoji-groups']\n      this.updateScrolledClass(target)\n      this.scrolledGroup(target)\n      this.triggerLoadMore(target)\n    },\n    highlight (key) {\n      const ref = this.$refs['group-' + key]\n      const top = ref[0].offsetTop\n      this.setShowStickers(false)\n      this.activeGroup = key\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = top + 1\n      })\n    },\n    updateScrolledClass (target) {\n      if (target.scrollTop <= 5) {\n        this.groupsScrolledClass = 'scrolled-top'\n      } else if (target.scrollTop >= target.scrollTopMax - 5) {\n        this.groupsScrolledClass = 'scrolled-bottom'\n      } else {\n        this.groupsScrolledClass = 'scrolled-middle'\n      }\n    },\n    triggerLoadMore (target) {\n      const ref = this.$refs['group-end-custom'][0]\n      if (!ref) return\n      const bottom = ref.offsetTop + ref.offsetHeight\n\n      const scrollerBottom = target.scrollTop + target.clientHeight\n      const scrollerTop = target.scrollTop\n      const scrollerMax = target.scrollHeight\n\n      // Loads more emoji when they come into view\n      const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n      // Always load when at the very top in case there's no scroll space yet\n      const atTop = scrollerTop < 5\n      // Don't load when looking at unicode category or at the very bottom\n      const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n      if (!bottomAboveViewport && (approachingBottom || atTop)) {\n        this.loadEmoji()\n      }\n    },\n    scrolledGroup (target) {\n      const top = target.scrollTop + 5\n      this.$nextTick(() => {\n        this.emojisView.forEach(group => {\n          const ref = this.$refs['group-' + group.id]\n          if (ref[0].offsetTop <= top) {\n            this.activeGroup = group.id\n          }\n        })\n      })\n    },\n    loadEmoji () {\n      const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n      if (allLoaded) {\n        return\n      }\n\n      this.customEmojiBufferSlice += LOAD_EMOJI_BY\n    },\n    startEmojiLoad (forceUpdate = false) {\n      if (!forceUpdate) {\n        this.keyword = ''\n      }\n      this.$nextTick(() => {\n        this.$refs['emoji-groups'].scrollTop = 0\n      })\n      const bufferSize = this.customEmojiBuffer.length\n      const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n      if (bufferPrefilledAll && !forceUpdate) {\n        return\n      }\n      this.customEmojiBufferSlice = LOAD_EMOJI_BY\n    },\n    toggleStickers () {\n      this.showingStickers = !this.showingStickers\n    },\n    setShowStickers (value) {\n      this.showingStickers = value\n    }\n  },\n  watch: {\n    keyword () {\n      this.customEmojiLoadAllConfirmed = false\n      this.onScroll()\n      this.startEmojiLoad(true)\n    }\n  },\n  computed: {\n    activeGroupView () {\n      return this.showingStickers ? '' : this.activeGroup\n    },\n    stickersAvailable () {\n      if (this.$store.state.instance.stickers) {\n        return this.$store.state.instance.stickers.length > 0\n      }\n      return 0\n    },\n    filteredEmoji () {\n      return filterByKeyword(\n        this.$store.state.instance.customEmoji || [],\n        this.keyword\n      )\n    },\n    customEmojiBuffer () {\n      return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n    },\n    emojis () {\n      const standardEmojis = this.$store.state.instance.emoji || []\n      const customEmojis = this.customEmojiBuffer\n\n      return [\n        {\n          id: 'custom',\n          text: this.$t('emoji.custom'),\n          icon: 'smile-beam',\n          emojis: customEmojis\n        },\n        {\n          id: 'standard',\n          text: this.$t('emoji.unicode'),\n          icon: 'box-open',\n          emojis: filterByKeyword(standardEmojis, this.keyword)\n        }\n      ]\n    },\n    emojisView () {\n      return this.emojis.filter(value => value.emojis.length > 0)\n    },\n    stickerPickerEnabled () {\n      return (this.$store.state.instance.stickers || []).length !== 0\n    }\n  }\n}\n\nexport default EmojiPicker\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./emoji_picker.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_picker.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_picker.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-50bb08b3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-picker panel panel-default panel-body\"},[_c('div',{staticClass:\"heading\"},[_c('span',{staticClass:\"emoji-tabs\"},_vm._l((_vm.emojis),function(group){return _c('span',{key:group.id,staticClass:\"emoji-tabs-item\",class:{\n          active: _vm.activeGroupView === group.id,\n          disabled: group.emojis.length === 0\n        },attrs:{\"title\":group.text},on:{\"click\":function($event){$event.preventDefault();return _vm.highlight(group.id)}}},[_c('FAIcon',{attrs:{\"icon\":group.icon,\"fixed-width\":\"\"}})],1)}),0),_vm._v(\" \"),(_vm.stickerPickerEnabled)?_c('span',{staticClass:\"additional-tabs\"},[_c('span',{staticClass:\"stickers-tab-icon additional-tabs-item\",class:{active: _vm.showingStickers},attrs:{\"title\":_vm.$t('emoji.stickers')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleStickers($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"sticky-note\",\"fixed-width\":\"\"}})],1)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"emoji-content\",class:{hidden: _vm.showingStickers}},[_c('div',{staticClass:\"emoji-search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keyword),expression:\"keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keyword=$event.target.value}}})]),_vm._v(\" \"),_c('div',{ref:\"emoji-groups\",staticClass:\"emoji-groups\",class:_vm.groupsScrolledClass,on:{\"scroll\":_vm.onScroll}},_vm._l((_vm.emojisView),function(group){return _c('div',{key:group.id,staticClass:\"emoji-group\"},[_c('h6',{ref:'group-' + group.id,refInFor:true,staticClass:\"emoji-group-title\"},[_vm._v(\"\\n            \"+_vm._s(group.text)+\"\\n          \")]),_vm._v(\" \"),_vm._l((group.emojis),function(emoji){return _c('span',{key:group.id + emoji.displayText,staticClass:\"emoji-item\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onEmoji(emoji)}}},[(!emoji.imageUrl)?_c('span',[_vm._v(_vm._s(emoji.replacement))]):_c('img',{attrs:{\"src\":emoji.imageUrl}})])}),_vm._v(\" \"),_c('span',{ref:'group-end-' + group.id,refInFor:true})],2)}),0),_vm._v(\" \"),_c('div',{staticClass:\"keep-open\"},[_c('Checkbox',{model:{value:(_vm.keepOpen),callback:function ($$v) {_vm.keepOpen=$$v},expression:\"keepOpen\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('emoji.keep_open'))+\"\\n        \")])],1)]),_vm._v(\" \"),(_vm.showingStickers)?_c('div',{staticClass:\"stickers-content\"},[_c('sticker-picker',{on:{\"uploaded\":_vm.onStickerUploaded,\"upload-failed\":_vm.onStickerUploadFailed}})],1):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n *   <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n  props: {\n    suggest: {\n      /**\n       * suggest: function (input: String) => Suggestion[]\n       *\n       * Function that takes input string which takes string (textAtCaret)\n       * and returns an array of Suggestions\n       *\n       * Suggestion is an object containing following properties:\n       * displayText: string. Main display text, what actual suggestion\n       *    represents (user's screen name/emoji shortcode)\n       * replacement: string. Text that should replace the textAtCaret\n       * detailText: string, optional. Subtitle text, providing additional info\n       *    if present (user's nickname)\n       * imageUrl: string, optional. Image to display alongside with suggestion,\n       *    currently if no image is provided, replacement will be used (for\n       *    unicode emojis)\n       *\n       * TODO: make it asynchronous when adding proper server-provided user\n       * suggestions\n       *\n       * For commonly used suggestors (emoji, users, both) use suggestor.js\n       */\n      required: true,\n      type: Function\n    },\n    // TODO VUE3: change to modelValue, change 'input' event to 'input'\n    value: {\n      /**\n       * Used for v-model\n       */\n      required: true,\n      type: String\n    },\n    enableEmojiPicker: {\n      /**\n       * Enables emoji picker support, this implies that custom emoji are supported\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    hideEmojiButton: {\n      /**\n       * intended to use with external picker trigger, i.e. you have a button outside\n       * input that will open up the picker, see triggerShowPicker()\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    enableStickerPicker: {\n      /**\n       * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    placement: {\n      /**\n       * Forces the panel to take a specific position relative to the input element.\n       * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n       */\n      required: false,\n      type: String, // 'auto', 'top', 'bottom'\n      default: 'auto'\n    },\n    newlineOnCtrlEnter: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      input: undefined,\n      highlighted: 0,\n      caret: 0,\n      focused: false,\n      blurTimeout: null,\n      showPicker: false,\n      temporarilyHideSuggestions: false,\n      keepOpen: false,\n      disableClickOutside: false,\n      suggestions: []\n    }\n  },\n  components: {\n    EmojiPicker\n  },\n  computed: {\n    padEmoji () {\n      return this.$store.getters.mergedConfig.padEmoji\n    },\n    showSuggestions () {\n      return this.focused &&\n        this.suggestions &&\n        this.suggestions.length > 0 &&\n        !this.showPicker &&\n        !this.temporarilyHideSuggestions\n    },\n    textAtCaret () {\n      return (this.wordAtCaret || {}).word || ''\n    },\n    wordAtCaret () {\n      if (this.value && this.caret) {\n        const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}\n        return word\n      }\n    }\n  },\n  mounted () {\n    const { root } = this.$refs\n    const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n    if (!input) return\n    this.input = input\n    this.resize()\n    input.addEventListener('blur', this.onBlur)\n    input.addEventListener('focus', this.onFocus)\n    input.addEventListener('paste', this.onPaste)\n    input.addEventListener('keyup', this.onKeyUp)\n    input.addEventListener('keydown', this.onKeyDown)\n    input.addEventListener('click', this.onClickInput)\n    input.addEventListener('transitionend', this.onTransition)\n    input.addEventListener('input', this.onInput)\n  },\n  unmounted () {\n    const { input } = this\n    if (input) {\n      input.removeEventListener('blur', this.onBlur)\n      input.removeEventListener('focus', this.onFocus)\n      input.removeEventListener('paste', this.onPaste)\n      input.removeEventListener('keyup', this.onKeyUp)\n      input.removeEventListener('keydown', this.onKeyDown)\n      input.removeEventListener('click', this.onClickInput)\n      input.removeEventListener('transitionend', this.onTransition)\n      input.removeEventListener('input', this.onInput)\n    }\n  },\n  watch: {\n    showSuggestions: function (newValue) {\n      this.$emit('shown', newValue)\n    },\n    textAtCaret: async function (newWord) {\n      const firstchar = newWord.charAt(0)\n      this.suggestions = []\n      if (newWord === firstchar) return\n      const matchedSuggestions = await this.suggest(newWord)\n      // Async: cancel if textAtCaret has changed during wait\n      if (this.textAtCaret !== newWord) return\n      if (matchedSuggestions.length <= 0) return\n      this.suggestions = take(matchedSuggestions, 5)\n        .map(({ imageUrl, ...rest }) => ({\n          ...rest,\n          img: imageUrl || ''\n        }))\n    },\n    suggestions (newValue) {\n      this.$nextTick(this.resize)\n    }\n  },\n  methods: {\n    focusPickerInput () {\n      const pickerEl = this.$refs.picker.$el\n      if (!pickerEl) return\n      const pickerInput = pickerEl.querySelector('input')\n      if (pickerInput) pickerInput.focus()\n    },\n    triggerShowPicker () {\n      this.showPicker = true\n      this.$refs.picker.startEmojiLoad()\n      this.$nextTick(() => {\n        this.scrollIntoView()\n        this.focusPickerInput()\n      })\n      // This temporarily disables \"click outside\" handler\n      // since external trigger also means click originates\n      // from outside, thus preventing picker from opening\n      this.disableClickOutside = true\n      setTimeout(() => {\n        this.disableClickOutside = false\n      }, 0)\n    },\n    togglePicker () {\n      this.input.focus()\n      this.showPicker = !this.showPicker\n      if (this.showPicker) {\n        this.scrollIntoView()\n        this.$refs.picker.startEmojiLoad()\n        this.$nextTick(this.focusPickerInput)\n      }\n    },\n    replace (replacement) {\n      const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n      this.$emit('input', newValue)\n      this.caret = 0\n    },\n    insert ({ insertion, keepOpen, surroundingSpace = true }) {\n      const before = this.value.substring(0, this.caret) || ''\n      const after = this.value.substring(this.caret) || ''\n\n      /* Using a bit more smart approach to padding emojis with spaces:\n       * - put a space before cursor if there isn't one already, unless we\n       *   are at the beginning of post or in spam mode\n       * - put a space after emoji if there isn't one already unless we are\n       *   in spam mode\n       *\n       * The idea is that when you put a cursor somewhere in between sentence\n       * inserting just ' :emoji: ' will add more spaces to post which might\n       * break the flow/spacing, as well as the case where user ends sentence\n       * with a space before adding emoji.\n       *\n       * Spam mode is intended for creating multi-part emojis and overall spamming\n       * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n       */\n      const isSpaceRegex = /\\s/\n      const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n      const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n      const newValue = [\n        before,\n        spaceBefore,\n        insertion,\n        spaceAfter,\n        after\n      ].join('')\n      this.keepOpen = keepOpen\n      this.$emit('input', newValue)\n      const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n      if (!keepOpen) {\n        this.input.focus()\n      }\n\n      this.$nextTick(function () {\n        // Re-focus inputbox after clicking suggestion\n        // Set selection right after the replacement instead of the very end\n        this.input.setSelectionRange(position, position)\n        this.caret = position\n      })\n    },\n    replaceText (e, suggestion) {\n      const len = this.suggestions.length || 0\n      if (this.textAtCaret.length === 1) { return }\n      if (len > 0 || suggestion) {\n        const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n        const replacement = chosenSuggestion.replacement\n        const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n        this.$emit('input', newValue)\n        this.highlighted = 0\n        const position = this.wordAtCaret.start + replacement.length\n\n        this.$nextTick(function () {\n          // Re-focus inputbox after clicking suggestion\n          this.input.focus()\n          // Set selection right after the replacement instead of the very end\n          this.input.setSelectionRange(position, position)\n          this.caret = position\n        })\n        e.preventDefault()\n      }\n    },\n    cycleBackward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted -= 1\n        if (this.highlighted < 0) {\n          this.highlighted = this.suggestions.length - 1\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    cycleForward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted += 1\n        if (this.highlighted >= len) {\n          this.highlighted = 0\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    scrollIntoView () {\n      const rootRef = this.$refs['picker'].$el\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n      // We check where the bottom border of root element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n      const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n      // could also check top delta but there's no case for it\n      const targetScroll = currentScroll + bottomDelta\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight } = this.input\n        const { picker } = this.$refs\n        const pickerBottom = picker.$el.getBoundingClientRect().bottom\n        if (pickerBottom > window.innerHeight) {\n          picker.$el.style.top = 'auto'\n          picker.$el.style.bottom = offsetHeight + 'px'\n        }\n      })\n    },\n    onTransition (e) {\n      this.resize()\n    },\n    onBlur (e) {\n      // Clicking on any suggestion removes focus from autocomplete,\n      // preventing click handler ever executing.\n      this.blurTimeout = setTimeout(() => {\n        this.focused = false\n        this.setCaret(e)\n        this.resize()\n      }, 200)\n    },\n    onClick (e, suggestion) {\n      this.replaceText(e, suggestion)\n    },\n    onFocus (e) {\n      if (this.blurTimeout) {\n        clearTimeout(this.blurTimeout)\n        this.blurTimeout = null\n      }\n\n      if (!this.keepOpen) {\n        this.showPicker = false\n      }\n      this.focused = true\n      this.setCaret(e)\n      this.resize()\n      this.temporarilyHideSuggestions = false\n    },\n    onKeyUp (e) {\n      const { key } = e\n      this.setCaret(e)\n      this.resize()\n\n      // Setting hider in keyUp to prevent suggestions from blinking\n      // when moving away from suggested spot\n      if (key === 'Escape') {\n        this.temporarilyHideSuggestions = true\n      } else {\n        this.temporarilyHideSuggestions = false\n      }\n    },\n    onPaste (e) {\n      this.setCaret(e)\n      this.resize()\n    },\n    onKeyDown (e) {\n      const { ctrlKey, shiftKey, key } = e\n      if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n        this.insert({ insertion: '\\n', surroundingSpace: false })\n        // Ensure only one new line is added on macos\n        e.stopPropagation()\n        e.preventDefault()\n\n        // Scroll the input element to the position of the cursor\n        this.$nextTick(() => {\n          this.input.blur()\n          this.input.focus()\n        })\n      }\n      // Disable suggestions hotkeys if suggestions are hidden\n      if (!this.temporarilyHideSuggestions) {\n        if (key === 'Tab') {\n          if (shiftKey) {\n            this.cycleBackward(e)\n          } else {\n            this.cycleForward(e)\n          }\n        }\n        if (key === 'ArrowUp') {\n          this.cycleBackward(e)\n        } else if (key === 'ArrowDown') {\n          this.cycleForward(e)\n        }\n        if (key === 'Enter') {\n          if (!ctrlKey) {\n            this.replaceText(e)\n          }\n        }\n      }\n      // Probably add optional keyboard controls for emoji picker?\n\n      // Escape hides suggestions, if suggestions are hidden it\n      // de-focuses the element (i.e. default browser behavior)\n      if (key === 'Escape') {\n        if (!this.temporarilyHideSuggestions) {\n          this.input.focus()\n        }\n      }\n\n      this.showPicker = false\n      this.resize()\n    },\n    onInput (e) {\n      this.showPicker = false\n      this.setCaret(e)\n      this.resize()\n      this.$emit('input', e.target.value)\n    },\n    onClickInput (e) {\n      this.showPicker = false\n    },\n    onClickOutside (e) {\n      if (this.disableClickOutside) return\n      this.showPicker = false\n    },\n    onStickerUploaded (e) {\n      this.showPicker = false\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.showPicker = false\n      this.$emit('sticker-upload-Failed', e)\n    },\n    setCaret ({ target: { selectionStart } }) {\n      this.caret = selectionStart\n    },\n    resize () {\n      const panel = this.$refs.panel\n      if (!panel) return\n      const picker = this.$refs.picker.$el\n      const panelBody = this.$refs['panel-body']\n      const { offsetHeight, offsetTop } = this.input\n      const offsetBottom = offsetTop + offsetHeight\n\n      this.setPlacement(panelBody, panel, offsetBottom)\n      this.setPlacement(picker, picker, offsetBottom)\n    },\n    setPlacement (container, target, offsetBottom) {\n      if (!container || !target) return\n\n      target.style.top = offsetBottom + 'px'\n      target.style.bottom = 'auto'\n\n      if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n        target.style.top = 'auto'\n        target.style.bottom = this.input.offsetHeight + 'px'\n      }\n    },\n    overflowsBottom (el) {\n      return el.getBoundingClientRect().bottom > window.innerHeight\n    }\n  }\n}\n\nexport default EmojiInput\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_input.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_input.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_input.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a09d1882\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_input.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],ref:\"root\",staticClass:\"emoji-input\",class:{ 'with-picker': !_vm.hideEmojiButton }},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.enableEmojiPicker)?[(!_vm.hideEmojiButton)?_c('button',{staticClass:\"button-unstyled emoji-picker-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('FAIcon',{attrs:{\"icon\":['far', 'smile-beam']}})],1):_vm._e(),_vm._v(\" \"),(_vm.enableEmojiPicker)?_c('EmojiPicker',{ref:\"picker\",staticClass:\"emoji-picker-panel\",class:{ hide: !_vm.showPicker },attrs:{\"enable-sticker-picker\":_vm.enableStickerPicker},on:{\"emoji\":_vm.insert,\"sticker-uploaded\":_vm.onStickerUploaded,\"sticker-upload-failed\":_vm.onStickerUploadFailed}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"autocomplete-panel\",class:{ hide: !_vm.showSuggestions }},[_c('div',{ref:\"panel-body\",staticClass:\"autocomplete-panel-body\"},_vm._l((_vm.suggestions),function(suggestion,index){return _c('div',{key:index,staticClass:\"autocomplete-item\",class:{ highlighted: index === _vm.highlighted },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onClick($event, suggestion)}}},[_c('span',{staticClass:\"image\"},[(suggestion.img)?_c('img',{attrs:{\"src\":suggestion.img}}):_c('span',[_vm._v(_vm._s(suggestion.replacement))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_c('span',{staticClass:\"displayText\"},[_vm._v(_vm._s(suggestion.displayText))]),_vm._v(\" \"),_c('span',{staticClass:\"detailText\"},[_vm._v(_vm._s(suggestion.detailText))])])])}),0)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen\n)\n\nconst ScopeSelector = {\n  props: [\n    'showAll',\n    'userDefault',\n    'originalScope',\n    'initialScope',\n    'onScopeChange'\n  ],\n  data () {\n    return {\n      currentScope: this.initialScope\n    }\n  },\n  computed: {\n    showNothing () {\n      return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n    },\n    showPublic () {\n      return this.originalScope !== 'direct' && this.shouldShow('public')\n    },\n    showUnlisted () {\n      return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n    },\n    showPrivate () {\n      return this.originalScope !== 'direct' && this.shouldShow('private')\n    },\n    showDirect () {\n      return this.shouldShow('direct')\n    },\n    css () {\n      return {\n        public: { selected: this.currentScope === 'public' },\n        unlisted: { selected: this.currentScope === 'unlisted' },\n        private: { selected: this.currentScope === 'private' },\n        direct: { selected: this.currentScope === 'direct' }\n      }\n    }\n  },\n  methods: {\n    shouldShow (scope) {\n      return this.showAll ||\n        this.currentScope === scope ||\n        this.originalScope === scope ||\n        this.userDefault === scope ||\n        scope === 'direct'\n    },\n    changeVis (scope) {\n      this.currentScope = scope\n      this.onScopeChange && this.onScopeChange(scope)\n    }\n  }\n}\n\nexport default ScopeSelector\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./scope_selector.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./scope_selector.js\"\nimport __vue_script__ from \"!!babel-loader!./scope_selector.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b1abde80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./scope_selector.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showNothing)?_c('div',{staticClass:\"ScopeSelector\"},[(_vm.showDirect)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('direct')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"envelope\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('private')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock-open\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('public')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"globe\"}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"static/img/nsfw.74818f9.png\";","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b92cece\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Timeline .loadmore-text{opacity:1}.Timeline.-blocked{cursor:progress}.Timeline .timeline-heading{max-width:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:center;align-items:center;position:relative}.Timeline .timeline-heading .loadmore-button{-ms-flex-negative:0;flex-shrink:0}.Timeline .timeline-heading .loadmore-text{-ms-flex-negative:0;flex-shrink:0;line-height:1em}.Timeline .timeline-footer{border:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./status.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80571546\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Status{min-width:0;white-space:normal}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status.-focused{background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba);--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon)}.Status.-conversation{border-left-width:4px;border-left-style:solid;border-left-color:red;border-left-color:var(--cRed,red)}.Status .gravestone{padding:.75em;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));display:-ms-flexbox;display:flex}.Status .gravestone .deleted-text{margin:.5em 0;-ms-flex-align:center;align-items:center}.Status .status-container{display:-ms-flexbox;display:flex;padding:.75em}.Status .status-container.-repeat{padding-top:0}.Status .pin{padding:.75em .75em 0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{pointer-events:auto;cursor:auto}.Status .left-side{margin-right:.75em}.Status .right-side{-ms-flex:1;flex:1;min-width:0}.Status .usercard{margin-bottom:.75em}.Status .status-username{white-space:nowrap;font-size:14px;overflow:hidden;max-width:85%;font-weight:700;-ms-flex-negative:1;flex-shrink:1;margin-right:.4em;text-overflow:ellipsis;--_still_image-label-scale:0.25;--emoji-size:14px}.Status .status-favicon{height:18px;width:18px;margin-right:.4em}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;line-height:18px}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{min-width:1.6em;margin-right:.4em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-ms-flex:1 1 0px;flex:1 1 0}.Status .heading-left{display:-ms-flexbox;display:flex;min-width:0}.Status .heading-right{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.Status .heading-right .button-unstyled{padding:5px;margin:-5px}.Status .heading-right .button-unstyled:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .glued-label{display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap}.Status .timeago{margin-right:.2em}.Status .heading-reply-row{position:relative;-ms-flex-line-pack:baseline;align-content:baseline;font-size:12px;line-height:160%;max-width:100%;-ms-flex-align:stretch;align-items:stretch}.Status .reply-to-no-popover,.Status .reply-to-popover{min-width:0;margin-right:.4em;-ms-flex-negative:0;flex-shrink:0}.Status .reply-to-popover .reply-to:hover:before{content:\\\"\\\";display:block;position:absolute;bottom:0;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{content:\\\"\\\";display:block;position:absolute;top:50%;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .mentions,.Status .reply-to{white-space:nowrap;position:relative;padding-right:.25em}.Status .mentions-text,.Status .reply-to-text{color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .mentions-line{display:inline}.Status .replies{margin-top:.25em;line-height:18px;font-size:12px;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em .75em}.Status .repeat-info .repeat-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Status .repeater-avatar{border-radius:var(--avatarAltRadius,10px);margin-left:28px;width:20px;height:20px}.Status .repeater-name{text-overflow:ellipsis;margin-right:0}.Status .repeater-name .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{position:relative;width:100%;display:-ms-flexbox;display:flex;margin-top:.75em}.Status .status-actions>*{max-width:4em;-ms-flex:1;flex:1}.Status .muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Status .muted .mute-words,.Status .muted .status-username{text-overflow:ellipsis;overflow:hidden}.Status .muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Status .muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Status .muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:\\\" \\\"}.Status .muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Status .reply-form{padding-top:0;padding-bottom:0}.Status .reply-body{-ms-flex:1;flex:1}.Status .favs-repeated-users{margin-top:.75em}.Status .stats{width:100%;display:-ms-flexbox;display:flex;line-height:1em}.Status .avatar-row{-ms-flex:1;flex:1;overflow:hidden;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Status .avatar-row:before{content:\\\"\\\";position:absolute;height:100%;width:1px;left:0;background-color:var(--faint,hsla(240,1%,73%,.5))}.Status .stat-count{margin-right:.75em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:12px;text-transform:uppercase;position:relative}.Status .stat-count .stat-number{font-weight:bolder;font-size:16px;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .avatar:not(.repeater-avatar){width:40px;height:40px}.Status .avatar:not(.repeater-avatar).avatar-compact{width:32px;height:32px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./reply_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2b13c1d7\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReplyButton{display:-ms-flexbox;display:flex}.ReplyButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./favorite_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7d4fb47f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".FavoriteButton{display:-ms-flexbox;display:flex}.FavoriteButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:orange;color:var(--cOrange,orange)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./react_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b98558e8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReactButton .reaction-picker-filter{padding:.5em;display:-ms-flexbox;display:flex}.ReactButton .reaction-picker-filter input{-ms-flex:1;flex:1}.ReactButton .reaction-picker-divider{height:1px;width:100%;margin:.5em;background-color:var(--border,#222)}.ReactButton .reaction-picker{width:10em;height:9em;font-size:1.5em;overflow-y:scroll;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5em;text-align:center;-ms-flex-line-pack:start;align-content:flex-start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.ReactButton .reaction-picker .emoji-button{cursor:pointer;-ms-flex-preferred-size:20%;flex-basis:20%;line-height:1.5em;-ms-flex-line-pack:center;align-content:center}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger-button{width:auto}.ReactButton .popover-trigger{padding:10px;margin:-10px}.ReactButton .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"92bf6e22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".popover-trigger-button{display:block}.popover{z-index:8;position:absolute;min-width:0}.popover-default{transition:opacity .3s;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);border-radius:4px;border-radius:var(--btnRadius,4px);background-color:#121a24;background-color:var(--popover,#121a24);color:#b9b9ba;color:var(--popoverText,#b9b9ba);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.dropdown-menu{display:block;padding:.5rem 0;font-size:1rem;text-align:left;list-style:none;max-width:100vw;z-index:10;white-space:nowrap}.dropdown-menu .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #222;border-top:1px solid var(--border,#222)}.dropdown-menu .dropdown-item{line-height:21px;overflow:auto;display:block;padding:.5em .75em;clear:both;font-weight:400;text-align:inherit;white-space:nowrap;border:none;border-radius:0;background-color:transparent;box-shadow:none;width:100%;height:100%;box-sizing:border-box;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon svg{width:22px;margin-right:.75rem;color:var(--menuPopoverIcon,#666)}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.dropdown-menu .dropdown-item:active svg,.dropdown-menu .dropdown-item:hover svg{color:var(--selectedMenuPopoverIcon,#666)}.dropdown-menu .dropdown-item .menu-checkbox{display:inline-block;vertical-align:middle;min-width:22px;max-width:22px;min-height:22px;max-height:22px;line-height:22px;text-align:center;border-radius:0;background-color:#182230;background-color:var(--input,#182230);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.75em}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{font-size:1.25em;content:\\\"\\\\2713\\\"}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-radio:after{font-size:2em;content:\\\"\\\\2022\\\"}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./retweet_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c52cbcb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RetweetButton{display:-ms-flexbox;display:flex}.RetweetButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./extra_buttons.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0d2c533c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger{position:static;padding:10px;margin:-10px}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce7966a8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tribute-container ul{padding:0}.tribute-container ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.tribute-container img{padding:3px;width:16px;height:16px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.post-status-form{position:relative}.post-status-form .form-bottom{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:.5em;height:32px}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.post-status-form .form-bottom-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding-right:7px;margin-right:7px;max-width:10em}.post-status-form .preview-heading{display:-ms-flexbox;display:flex;padding-left:.5em}.post-status-form .preview-toggle{-ms-flex:1;flex:1;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{margin-left:.2em;font-size:.8em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{font-style:italic;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);padding:.5em;margin:0;line-height:1.4em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-top:5px}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{font-size:26px;line-height:1.1;-ms-flex:1;flex:1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{cursor:not-allowed;color:#666;color:var(--btnDisabledText,#666)}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .media-upload-icon{-ms-flex-order:1;order:1;text-align:left}.post-status-form .emoji-icon{-ms-flex-order:2;order:2;text-align:center}.post-status-form .poll-icon{-ms-flex-order:3;order:3;text-align:right;cursor:pointer}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-right:.2em;margin-bottom:.5em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{-o-object-fit:contain;object-fit:contain;max-height:10em}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{-ms-flex:1;flex:1;width:100%}.post-status-form .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .attachments .media-upload-wrapper{position:relative}.post-status-form .attachments .media-upload-wrapper .attachment{margin:0;padding:0}.post-status-form form{margin:.6em;position:relative}.post-status-form .form-group,.post-status-form form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.post-status-form .form-group{padding:.25em .5em .5em;line-height:24px}.post-status-form .form-post-body,.post-status-form form textarea.form-cw{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:1px}.post-status-form .form-post-body{height:16px;padding-bottom:1.75em;box-sizing:content-box}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{position:absolute;bottom:0;right:0;padding:0;margin:0 .5em}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}.post-status-form .btn{cursor:pointer}.post-status-form .btn[disabled]{cursor:not-allowed}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{position:absolute;z-index:1;width:100%;height:100%;font-size:5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;opacity:.6;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24);border-radius:5px;border-radius:var(--tooltipRadius,5px);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba)}.media-upload-container>video,img.media-upload{line-height:0;max-height:200px;max-width:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_upload.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8585287c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-upload{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scope_selector.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"770eecd8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ScopeSelector .scope{display:inline-block;cursor:pointer;min-width:1.3em;min-height:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_input.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d6bd964a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:relative}.emoji-input.with-picker input{padding-right:30px}.emoji-input .emoji-picker-icon{position:absolute;top:0;right:0;margin:.2em .25em;font-size:16px;cursor:pointer;line-height:24px}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input .autocomplete-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .autocomplete-panel.hide{display:none}.emoji-input .autocomplete-panel-body{margin:0 .5em;border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:1px 2px 4px rgba(0,0,0,.5);box-shadow:var(--popupShadow);min-width:75%;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.emoji-input .autocomplete-item{display:-ms-flexbox;display:flex;cursor:pointer;padding:.2em .4em;border-bottom:1px solid rgba(0,0,0,.4);height:32px}.emoji-input .autocomplete-item .image{width:32px;height:32px;line-height:32px;text-align:center;font-size:32px;margin-right:4px}.emoji-input .autocomplete-item .image img{width:32px;height:32px;-o-object-fit:contain;object-fit:contain}.emoji-input .autocomplete-item .label{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;margin:0 .1em 0 .2em}.emoji-input .autocomplete-item .label .displayText{line-height:1.5}.emoji-input .autocomplete-item .label .detailText{font-size:9px;line-height:9px}.emoji-input .autocomplete-item.highlighted{background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.emoji-input input,.emoji-input textarea{-ms-flex:1 0 auto;flex:1 0 auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bb72e68\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-picker{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;right:0;left:0;margin:0!important;z-index:1;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--lightText:var(--popoverLightText,$fallback--faint);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{padding:7px;line-height:normal}.emoji-picker .too-many-emoji{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.emoji-picker .keep-open-label{padding:0 7px;display:-ms-flexbox;display:flex}.emoji-picker .heading{display:-ms-flexbox;display:flex;height:32px;padding:10px 7px 5px}.emoji-picker .content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-tabs{-ms-flex-positive:1;flex-grow:1}.emoji-picker .emoji-groups{min-height:200px}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:#666;border-left-color:var(--icon,#666);padding-left:7px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{display:block;min-width:0;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-negative:1;flex-shrink:1}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{padding:0 7px;cursor:pointer;font-size:24px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{-ms-flex:1 1 auto;flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{padding:5px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{-ms-flex:1 1 1px;flex:1 1 1px;position:relative;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:5px;-ms-flex-pack:left;justify-content:left}.emoji-picker .emoji-group-title{font-size:12px;width:100%;margin:0}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{width:32px;height:32px;box-sizing:border-box;display:-ms-flexbox;display:flex;font-size:32px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:4px;cursor:pointer}.emoji-picker .emoji-item img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"002629bb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox{position:relative;display:inline-block;min-height:1.2em}.checkbox-indicator{position:relative;padding-left:1.2em}.checkbox-indicator:before{position:absolute;right:0;top:0;display:block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]{display:none}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{content:\\\"\\\\2013\\\";color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox>span{margin-left:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60db0262\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{-ms-flex-item-align:start;align-self:flex-start;padding-top:.25em;padding-left:.1em}.poll-form .poll-option{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{width:1.5em;margin-left:-1.5em;z-index:1}.poll-form .poll-type-expiry{margin-top:.5em;display:-ms-flexbox;display:flex;width:100%}.poll-form .poll-type{margin-right:.75em;-ms-flex:1 1 60%;flex:1 1 60%}.poll-form .poll-type .poll-type-select{padding-right:.75em}.poll-form .poll-expiry{display:-ms-flexbox;display:flex}.poll-form .poll-expiry .expiry-amount{width:3em;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./select.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fc9a36fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Select{padding:0}.Select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);margin:0;padding:0 2em 0 .2em;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;width:100%;z-index:1;height:28px;line-height:16px}.Select .select-down-icon{position:absolute;top:0;bottom:0;right:5px;height:100%;color:#b9b9ba;color:var(--inputText,#b9b9ba);line-height:28px;z-index:0;pointer-events:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./attachment.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60b296ca\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".attachments{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachments .non-gallery{max-width:100%}.attachments .placeholder{display:inline-block;padding:.3em 1em .3em 0;color:#d8a070;color:var(--postLink,#d8a070);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.attachments .placeholder svg{color:inherit}.attachments .nsfw-placeholder{cursor:pointer}.attachments .nsfw-placeholder.loading{cursor:progress}.attachments .attachment{position:relative;margin-top:.5em;-ms-flex-item-align:start;align-self:flex-start;line-height:0;border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222);overflow:hidden}.attachments .non-gallery.attachment.flash,.attachments .non-gallery.attachment.video{-ms-flex:1 0 40%;flex:1 0 40%}.attachments .non-gallery.attachment .nsfw{height:260px}.attachments .non-gallery.attachment .small{height:120px;-ms-flex-positive:0;flex-grow:0}.attachments .non-gallery.attachment .video{height:260px;display:-ms-flexbox;display:flex}.attachments .non-gallery.attachment video{max-height:100%;-o-object-fit:contain;object-fit:contain}.attachments .fullwidth{-ms-flex-preferred-size:100%;flex-basis:100%}.attachments.video{line-height:0}.attachments .video-container{display:-ms-flexbox;display:flex;max-height:100%}.attachments .video{width:100%;height:100%}.attachments .play-icon{position:absolute;font-size:64px;top:calc(50% - 32px);left:calc(50% - 32px);color:hsla(0,0%,100%,.75);text-shadow:0 0 2px rgba(0,0,0,.4)}.attachments .play-icon:before{margin:0}.attachments.html{-ms-flex-preferred-size:90%;flex-basis:90%;width:100%;display:-ms-flexbox;display:flex}.attachments .hider{position:absolute;right:0;margin:10px;padding:0;z-index:4;border-radius:5px;border-radius:var(--tooltipRadius,5px);text-align:center;width:2em;height:2em;font-size:1.25em;background:hsla(0,0%,90%,.7)}.attachments .hider .svg-inline--fa{color:rgba(0,0,0,.6)}.attachments .hider:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.attachments video{z-index:0}.attachments audio{width:100%}.attachments img.media-upload{line-height:0;max-height:200px;max-width:100%}.attachments .oembed{line-height:1.2em;-ms-flex:1 0 100%;flex:1 0 100%;width:100%;margin-right:15px;display:-ms-flexbox;display:flex}.attachments .oembed img{width:100%}.attachments .oembed .image{-ms-flex:1;flex:1}.attachments .oembed .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.attachments .oembed .text{-ms-flex:2;flex:2;margin:8px;word-break:break-all}.attachments .oembed .text h1{font-size:14px;margin:0}.attachments .image-attachment,.attachments .image-attachment .image{width:100%;height:100%}.attachments .image-attachment.hidden{display:none}.attachments .image-attachment .nsfw{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.attachments .image-attachment img{image-orientation:from-image}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./still-image.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"24ab97e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".still-image{position:relative;line-height:0;overflow:hidden;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center}.still-image canvas{position:absolute;top:0;bottom:0;left:0;right:0;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.still-image.animated:before{zoom:var(--_still_image-label-scale,1);content:\\\"gif\\\";position:absolute;line-height:10px;font-size:10px;top:5px;left:5px;background:hsla(0,0%,50%,.5);color:#fff;display:block;padding:2px 4px;border-radius:5px;border-radius:var(--tooltipRadius,5px);z-index:2;visibility:var(--_still-image-label-visibility,visible)}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./flash.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34e407cc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Flash{width:100%;height:260px;position:relative}.Flash .player{height:100%;width:100%}.Flash .hider{top:0}.Flash .label{text-align:center;-ms-flex:1 1 0px;flex:1 1 0;line-height:1.2;white-space:normal;word-wrap:normal}.Flash .hidden{display:none;visibility:\\\"hidden\\\"}.Flash .placeholder{height:100%;-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_content.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af4a4f5c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StatusContent{-ms-flex:1;flex:1;min-width:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1a8b173f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll .votes{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;position:relative;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.poll .option-result-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.1em .25em;z-index:1;word-break:break-word}.poll .result-percentage{width:3.5em;-ms-flex-negative:0;flex-shrink:0}.poll .result-fill{height:100%;position:absolute;color:#b9b9ba;color:var(--pollText,#b9b9ba);background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);top:0;left:0;transition:width .5s}.poll .option-vote{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll input{width:3.5em}.poll .footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll.loading *{cursor:progress}.poll .poll-vote-button{padding:0 .5em;margin-right:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./mentions_line.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"462437e3\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MentionsLine .showMoreLess{white-space:normal;color:var(--link)}.MentionsLine .fullExtraMentions,.MentionsLine .mention-link:not(:last-child){margin-right:.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./mention_link.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6119d7e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MentionLink{position:relative;white-space:normal;display:inline-block;color:var(--link)}.MentionLink .new,.MentionLink .original{display:inline-block;border-radius:2px}.MentionLink .full{position:absolute;display:inline-block;pointer-events:none;opacity:0;top:100%;left:0;height:100%;word-wrap:normal;white-space:nowrap;transition:opacity .2s ease;z-index:1;margin-top:.25em;padding:.5em;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.MentionLink .short{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.MentionLink .full,.MentionLink .short{white-space:nowrap}.MentionLink .new.-you .full,.MentionLink .new.-you .shortName{font-weight:600}.MentionLink .new .at{color:var(--link);opacity:.8;display:inline-block;height:50%;line-height:1;padding:0 .1em;vertical-align:-25%;margin:0}.MentionLink .new.-striped .full,.MentionLink .new.-striped .userName{background-image:repeating-linear-gradient(135deg,var(--____highlight-tintColor),var(--____highlight-tintColor) 5px,var(--____highlight-tintColor2) 0,var(--____highlight-tintColor2) 10px)}.MentionLink .new.-solid .full,.MentionLink .new.-solid .userName{background-image:linear-gradient(var(--____highlight-tintColor2),var(--____highlight-tintColor2))}.MentionLink .new.-side .userName,.MentionLink .new.-side .userNameFull{box-shadow:0 -5px 3px -4px inset var(--____highlight-solidColor)}.MentionLink:hover .new .full{opacity:1;pointer-events:auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./hashtag_link.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"729b8582\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".HashtagLink{position:relative;white-space:normal;display:inline-block;color:var(--link)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./gallery.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c9d5cbc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".gallery-row{position:relative;height:0;width:100%;-ms-flex-positive:1;flex-grow:1;margin-top:.5em}.gallery-row .gallery-row-inner{position:absolute;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-line-pack:stretch;align-content:stretch}.gallery-row .gallery-row-inner .attachment{margin:0 .5em 0 0;-ms-flex-positive:1;flex-grow:1;height:100%;box-sizing:border-box;min-width:2em}.gallery-row .gallery-row-inner .attachment:last-child{margin:0}.gallery-row .image-attachment{width:100%;height:100%}.gallery-row .video-container{height:100%}.gallery-row.contain-fit canvas,.gallery-row.contain-fit img,.gallery-row.contain-fit video{-o-object-fit:contain;object-fit:contain;height:100%}.gallery-row.cover-fit canvas,.gallery-row.cover-fit img,.gallery-row.cover-fit video{-o-object-fit:cover;object-fit:cover}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./status_body.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fde60958\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StatusBody .emoji{--_still_image-label-scale:0.5}.StatusBody .summary,.StatusBody .text{font-family:var(--postFont,sans-serif);white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;line-height:1.4em}.StatusBody .summary{display:block;font-style:italic;padding-bottom:.5em}.StatusBody .text.-single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;height:1.4em}.StatusBody .summary-wrapper{margin-bottom:.5em;border-style:solid;border-width:0 0 1px;border-color:var(--border,#222);-ms-flex-positive:0;flex-grow:0}.StatusBody .summary-wrapper.-tall{position:relative}.StatusBody .summary-wrapper.-tall .summary{max-height:2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.StatusBody .text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.StatusBody .text-wrapper.-tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.StatusBody .text-wrapper.-tall-status .media-body{min-height:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude}.StatusBody .cw-status-hider,.StatusBody .status-unhider,.StatusBody .tall-status-hider,.StatusBody .tall-subject-hider{display:inline-block;word-break:break-all;width:100%;text-align:center}.StatusBody .tall-status-hider{position:absolute;height:70px;margin-top:150px;line-height:110px;z-index:2}.StatusBody .tall-subject-hider{padding-bottom:.5em}.StatusBody .cw-status-hider,.StatusBody .status-unhider{word-break:break-all}.StatusBody .cw-status-hider svg,.StatusBody .status-unhider svg{color:inherit}.StatusBody .greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}.StatusBody .cyantext{color:var(--postCyantext,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./link-preview.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c13d6bee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".link-preview-card{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;cursor:pointer;overflow:hidden;margin-top:.5em;color:#b9b9ba;color:var(--text,#b9b9ba);border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222)}.link-preview-card .card-image{-ms-flex-negative:0;flex-shrink:0;width:120px;max-width:25%}.link-preview-card .card-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:10px;border-radius:var(--attachmentRadius,10px)}.link-preview-card .card-content{max-height:100%;margin:.5em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.link-preview-card .card-host{font-size:12px}.link-preview-card .card-description{margin:.5em 0 0;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.2em;max-height:calc(1.2em * 3 - 1px)}.link-preview-card .nsfw-alert{margin:2em 0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0060b6a4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-card{position:relative}.user-card:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.user-card .panel-heading{padding:.5em 0;text-align:center;box-shadow:none;background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;position:relative}.user-card .panel-body{word-wrap:break-word;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit;position:relative}.user-card .background-image{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude;background-size:cover;-webkit-mask-size:100% 60%;mask-size:100% 60%;border-top-left-radius:calc(var(--panelRadius) - 1px);border-top-right-radius:calc(var(--panelRadius) - 1px);background-color:var(--profileBg)}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card-bio{text-align:center;display:block;line-height:18px;padding:1em;margin:0}.user-card-bio a{color:#d8a070;color:var(--postLink,#d8a070)}.user-card-bio img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-card-rounded-t{border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.user-card-rounded{border-radius:10px;border-radius:var(--panelRadius,10px)}.user-card-bordered{border-color:#222;border:1px solid var(--border,#222)}.user-info{color:#b9b9ba;color:var(--lightText,#b9b9ba);padding:0 26px}.user-info .container{padding:16px 0 6px;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;max-height:56px}.user-info .container .Avatar{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);-ms-flex:1 0 100%;flex:1 0 100%;width:56px;height:56px;-o-object-fit:cover;object-fit:cover}.user-info-avatar-link{position:relative;cursor:pointer}.user-info-avatar-link-overlay{position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border-radius:4px;border-radius:var(--avatarRadius,4px);opacity:0;transition:opacity .2s ease}.user-info-avatar-link-overlay svg{color:#fff}.user-info-avatar-link:hover .user-info-avatar-link-overlay{opacity:1}.user-info .edit-profile-button,.user-info .external-link-button{cursor:pointer;width:2.5em;text-align:center;margin:-.5em 0;padding:.5em 0}.user-info .edit-profile-button:not(:hover) .icon,.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .user-summary{display:block;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1 1 0px;flex:1 1 0;z-index:1}.user-info .user-summary .top-line{display:-ms-flexbox;display:flex}.user-info .user-name{text-overflow:ellipsis;overflow:hidden;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:1em;font-size:15px;--emoji-size:14px}.user-info .bottom-line{display:-ms-flexbox;display:flex;font-weight:light;font-size:15px}.user-info .bottom-line .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{min-width:1px;-ms-flex:0 1 auto;flex:0 1 auto;text-overflow:ellipsis;overflow:hidden;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line .dailyAvg{min-width:1px;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1em;font-size:.7em;color:#b9b9ba;color:var(--text,#b9b9ba)}.user-info .bottom-line .user-role{-ms-flex:none;flex:none;color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);background-color:#182230;background-color:var(--alertNeutral,#182230)}.user-info .user-meta{margin-bottom:.15em;display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;font-size:14px;line-height:22px;-ms-flex-wrap:wrap;flex-wrap:wrap}.user-info .user-meta .following{-ms-flex:1 0 auto;flex:1 0 auto;margin:0;margin-bottom:.25em;text-align:left}.user-info .user-meta .highlighter{-ms-flex:0 1 auto;flex:0 1 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5em;-ms-flex-item-align:start;align-self:start}.user-info .user-meta .highlighter .userHighlightCl{padding:2px 10px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel{padding-top:0;padding-bottom:0;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightText{width:70px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightText{vertical-align:top;margin-right:.5em;margin-bottom:.25em}.user-info .user-interactions{position:relative;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-.75em}.user-info .user-interactions>*{margin:0 .75em .6em 0;white-space:nowrap;min-width:95px}.user-info .user-interactions button{margin:0}.sidebar .edit-profile-button{display:none}.user-counts{display:-ms-flexbox;display:flex;line-height:16px;padding:.5em 1.5em 0;text-align:center;-ms-flex-pack:justify;justify-content:space-between;color:#b9b9ba;color:var(--lightText,#b9b9ba);-ms-flex-wrap:wrap;flex-wrap:wrap}.user-count{-ms-flex:1 0 auto;flex:1 0 auto;padding:.5em 0;margin:0 .5em}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_avatar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b6f3617\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Avatar{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;width:48px;height:48px;box-shadow:var(--_avatarShadowBox);border-radius:4px;border-radius:var(--avatarRadius,4px)}.Avatar img{width:100%;height:100%}.Avatar.better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar.animated:before{display:none}.Avatar.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4852bbb4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".remote-follow{max-width:220px}.remote-follow .remote-button{width:100%;min-height:28px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./moderation_tools.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0672fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:-ms-flexbox!important;display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dialog_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"56d82e88\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dark-overlay:before{bottom:0;content:\\\" \\\";left:0;right:0;background:rgba(27,31,35,.5);z-index:99}.dark-overlay:before,.dialog-modal.panel{display:block;cursor:default;position:fixed;top:0}.dialog-modal.panel{left:50%;max-height:80vh;max-width:90vw;margin:15vh auto;transform:translateX(-50%);z-index:999;background-color:#121a24;background-color:var(--bg,#121a24)}.dialog-modal.panel .dialog-modal-heading{padding:.5em;margin-right:auto;margin-bottom:0;white-space:nowrap;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230)}.dialog-modal.panel .dialog-modal-heading .title{margin-bottom:0;text-align:center}.dialog-modal.panel .dialog-modal-content{margin:0;padding:1rem;background-color:#121a24;background-color:var(--bg,#121a24);white-space:normal}.dialog-modal.panel .dialog-modal-footer{margin:0;padding:.5em;background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end}.dialog-modal.panel .dialog-modal-footer button{width:auto;margin-left:.5rem}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./account_actions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8c9d5016\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".AccountActions button.dropdown-item{margin-left:0}.AccountActions .ellipsis-button{width:2.5em;margin:-.5em 0;padding:.5em 0;text-align:center}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./avatar_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7096a06e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatars{display:-ms-flexbox;display:flex;margin:0;padding:0;-ms-flex-wrap:wrap;flex-wrap:wrap;height:24px}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"14cff5b4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-popover.popover{font-size:1rem;min-width:15em;max-width:95%;border-color:#222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow)}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_list_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50540f22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-list-popover{padding:.5em}.user-list-popover .user-list-row{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.user-list-popover .user-list-row .user-list-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{width:1em;height:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:9px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_reactions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cf35b50a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-reactions{display:-ms-flexbox;display:flex;margin-top:.25em;-ms-flex-wrap:wrap;flex-wrap:wrap}.emoji-reaction{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box}.emoji-reaction .reaction-emoji{width:1.25em;margin-right:.25em}.emoji-reaction:focus{outline:none}.emoji-reaction.not-clickable{cursor:default}.emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.emoji-reaction-expand{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.emoji-reaction-expand:hover{text-decoration:underline}.picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./conversation.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"93498d0a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Conversation .conversation-status{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:var(--border,#222);border-radius:0}.Conversation.-expanded .conversation-status:last-child{border-bottom:none;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_menu.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b449a0b2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineMenu{-ms-flex-negative:1;flex-shrink:1;margin-right:auto;min-width:0;width:24rem}.TimelineMenu .timeline-menu-popover-wrap{overflow:hidden;margin-top:.6rem;padding:0 15px 15px}.TimelineMenu .timeline-menu-popover{width:24rem;max-width:100vw;margin:0;font-size:1rem;transform:translateY(-100%);transition:transform .1s}.TimelineMenu .panel:after,.TimelineMenu .timeline-menu-popover{border-top-right-radius:0;border-top-left-radius:0}.TimelineMenu.open .timeline-menu-popover{transform:translateY(0)}.TimelineMenu .timeline-menu-title{margin:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;display:-ms-flexbox;display:flex}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;-ms-flex-positive:1;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.TimelineMenu ul{list-style:none;margin:0;padding:0}.TimelineMenu li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.TimelineMenu li:last-child a{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.TimelineMenu li:last-child{border:none}.TimelineMenu a{display:block;padding:.6em .65em}.TimelineMenu a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.TimelineMenu a.router-link-active,.TimelineMenu a:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.TimelineMenu a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.TimelineMenu a.router-link-active:hover{text-decoration:underline}.TimelineMenu a svg{margin-right:.4em;margin-left:-.2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_quick_settings.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b6e5d822\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineQuickSettings{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.TimelineQuickSettings>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.TimelineQuickSettings .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"87e1cf2e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Notifications:not(.minimal){padding-bottom:15em}.Notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.Notifications .notifications-footer{border:none}.Notifications .notification{position:relative}.Notifications .notification .notification-overlay{position:absolute;top:0;right:0;left:0;bottom:0;pointer-events:none}.Notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-wrap:break-word;word-break:break-word}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification .non-mention{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.6em;min-width:0;--link:var(--faintLink);--text:var(--faint)}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .follow-request-accept{cursor:pointer}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject{cursor:pointer}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{padding:.5em 0;overflow-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{-ms-flex:1;flex:1}.notification time{white-space:nowrap}.notification .notification-right{-ms-flex:1;flex:1;padding-left:.8em;min-width:0}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .emoji-reaction-emoji{font-size:16px}.notification .notification-details{min-width:0;word-wrap:break-word;line-height:18px;position:relative;overflow:hidden;width:100%;-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between}.notification .notification-details .name-and-action{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{word-break:break-all;margin:0 0 .3em;padding:0;font-size:1em;line-height:20px}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0;margin-top:0;margin-bottom:.3em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notification.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"41041624\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Notification{--emoji-size:14px}.Notification.-muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Notification.-muted .mute-words,.Notification.-muted .status-username{text-overflow:ellipsis;overflow:hidden}.Notification.-muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Notification.-muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Notification.-muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:\\\" \\\"}.Notification.-muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Notification.-type--follow-request .type-icon,.Notification.-type--follow .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notification.-type--like .type-icon{color:orange;color:var(--cOrange,orange)}.Notification.-type--move .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./notification_filters.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"590c30d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NotificationFilters{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.NotificationFilters>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.NotificationFilters .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3a6f72a2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list{min-height:25em;margin-bottom:0}.emtpy-chat-list-alert{padding:3em;font-size:1.2em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;color:#b9b9ba;color:var(--faint,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list_item.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33c6b65e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list-item{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:.75em;height:5em;overflow:hidden;box-sizing:border-box;cursor:pointer}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{width:100%;box-sizing:border-box;overflow:hidden;word-wrap:break-word}.chat-list-item .heading{width:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:justify;justify-content:space-between;line-height:1em}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-ms-flex-negative:1;flex-shrink:1;line-height:1.4em}.chat-list-item .chat-preview{display:-ms-inline-flexbox;display:inline-flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:.35em 0;color:#b9b9ba;color:var(--faint,#b9b9ba);width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);text-decoration:none;pointer-events:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .chat-preview-body{--emoji-size:1.4em}.chat-list-item .time-wrapper{line-height:1.4em}.chat-list-item .chat-preview-body{padding-right:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_title.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3dcd538d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-title{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.chat-title,.chat-title .username{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-title .username{max-width:100%;display:inline;word-wrap:break-word}.chat-title .username .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.chat-title .Avatar{width:23px;height:23px;margin-right:.5em;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-title .Avatar.animated:before{display:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_new.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ca48b176\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-new .input-wrap{display:-ms-flexbox;display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .basic-user-card:hover{cursor:pointer;background-color:var(--selectedPost,#151e2a)}.chat-new .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./basic_user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"119ab786\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".basic-user-card{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;margin:0;padding:.6em 1em}.basic-user-card-collapsed-content{margin-left:.7em;text-align:left;-ms-flex:1;flex:1;min-width:0}.basic-user-card-user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.basic-user-card-expanded-content{-ms-flex:1;flex:1;margin-left:.7em;min-width:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33745640\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".list-item:not(:last-child){border-bottom:1px solid;border-bottom-color:#222;border-bottom-color:var(--border,#222)}.list-empty-content{text-align:center;padding:10px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0f673926\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-view{display:-ms-flexbox;display:flex;height:calc(100vh - 60px);width:100%}.chat-view .chat-title{height:28px}.chat-view .chat-view-inner{height:auto;margin:.5em .5em 0}.chat-view .chat-view-body,.chat-view .chat-view-inner{width:100%;overflow:visible;display:-ms-flexbox;display:flex}.chat-view .chat-view-body{background-color:var(--chatBg,#121a24);-ms-flex-direction:column;flex-direction:column;min-height:100%;margin:0;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0}.chat-view .chat-view-body:after{border-radius:0}.chat-view .scrollable-message-list{padding:0 .8em;height:100%;overflow-y:scroll;overflow-x:hidden;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:0}.chat-view .chat-view-heading{-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;top:50px;display:-ms-flexbox;display:flex;z-index:2;position:-webkit-sticky;position:sticky;overflow:hidden}.chat-view .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}.chat-view .jump-to-bottom-button{width:2.5em;height:2.5em;border-radius:100%;position:absolute;right:1.3em;top:-3.2em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);z-index:10;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);opacity:0;visibility:hidden;cursor:pointer}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button i{font-size:1em;color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-view .jump-to-bottom-button .unread-message-count{font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;border-radius:50px;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:end;align-items:flex-end;height:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}@media (max-width:800px){.chat-view{height:100%;overflow:hidden}.chat-view .chat-view-inner{overflow:hidden;height:100%;margin-top:0;margin-left:0;margin-right:0}.chat-view .chat-view-body{display:-ms-flexbox;display:flex;min-height:auto;overflow:hidden;height:100%;margin:0;border-radius:0}.chat-view .chat-view-heading{box-sizing:border-box;position:static;z-index:9999;top:0;margin-top:0;border-radius:0;background:linear-gradient(0deg,var(--panel),var(--panel)),linear-gradient(0deg,var(--bg),var(--bg));height:50px}.chat-view .scrollable-message-list{display:unset;overflow-y:scroll;overflow-x:hidden;-webkit-overflow-scrolling:touch}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:auto}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_message.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"20b81e5e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{transition:opacity .1s;opacity:0;position:absolute;top:-.8em}.chat-message-wrapper .chat-message-menu button{padding-top:.2em;padding-bottom:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .menu-icon:hover,.extra-button-popover.open .chat-message-wrapper .menu-icon{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:-ms-flexbox;display:flex;padding-bottom:.5em}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .chat-message-inner{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .chat-message-inner.with-media{width:100%}.chat-message-wrapper .chat-message-inner.with-media .gallery-row{overflow:hidden}.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .status{border-radius:10px;border-radius:var(--chatMessageRadius,10px);display:-ms-flexbox;display:flex;padding:.75em}.chat-message-wrapper .created-at{position:relative;float:right;font-size:.8em;margin:-1em 0 -.5em;font-style:italic;opacity:.8}.chat-message-wrapper .without-attachment .message-content .RichContent:after{margin-right:5.4em;content:\\\" \\\";display:inline-block}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:red;color:var(--badgeNotification,red)}.chat-message-wrapper .incoming a{color:var(--chatMessageIncomingLink,#d8a070)}.chat-message-wrapper .incoming .status{background-color:var(--chatMessageIncomingBg,#121a24);border:1px solid var(--chatMessageIncomingBorder,--border)}.chat-message-wrapper .incoming .created-at a,.chat-message-wrapper .incoming .status{color:var(--chatMessageIncomingText,#b9b9ba)}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .outgoing{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:end;align-content:end;-ms-flex-pack:end;justify-content:flex-end}.chat-message-wrapper .outgoing a{color:var(--chatMessageOutgoingLink,#d8a070)}.chat-message-wrapper .outgoing .status{color:var(--chatMessageOutgoingText,#b9b9ba);background-color:var(--chatMessageOutgoingBg,#151e2a);border:1px solid var(--chatMessageOutgoingBorder,--lightBg)}.chat-message-wrapper .outgoing .chat-message-inner{-ms-flex-align:end;align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{text-align:center;margin:1.4em 0;font-size:.9em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#b9b9ba;color:var(--faintedText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_profile.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7563b46e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-profile{-ms-flex:2;flex:2;-ms-flex-preferred-size:500px;flex-basis:500px}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-profile .user-profile-fields img.emoji{width:18px;height:18px}.user-profile .user-profile-fields .user-profile-field{display:-ms-flexbox;display:flex;margin:.25em;border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{-ms-flex:0 1 30%;flex:0 1 30%;font-weight:500;text-align:right;color:var(--lightText);min-width:120px;border-right:1px solid var(--border,#222)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{-ms-flex:1 1 70%;flex:1 1 70%;color:var(--text);margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{line-height:18px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:.5em 1.5em;box-sizing:border-box}.user-profile .userlist-placeholder{-ms-flex-align:middle;align-items:middle;padding:2em}.user-profile .timeline-heading,.user-profile .userlist-placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.user-profile .timeline-heading .alert,.user-profile .timeline-heading .loadmore-button{-ms-flex:1;flex:1}.user-profile .timeline-heading .loadmore-button{height:28px;margin:10px .6em}.user-profile .timeline-heading .loadmore-text,.user-profile .timeline-heading .title{display:none}.user-profile-placeholder .panel-body{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:middle;align-items:middle;padding:7em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ae955a70\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-card-content-container{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5em}.follow-card-follow-button{margin-top:.5em;margin-left:auto;width:10em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"354d66d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;-ms-flex-pack:center;justify-content:center;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}}.search-result{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.search-result-footer{border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;background-color:#182230;background-color:var(--panel,#182230)}.search-input-container{padding:.8rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.search-input-container .search-input{width:100%;line-height:1.125rem;font-size:1rem;padding:.5rem;box-sizing:border-box}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.trend .hashtag{-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{-ms-flex:0 0 auto;flex:0 0 auto;width:2rem;font-size:1.5rem;line-height:2.25rem;font-weight:500;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./registration.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"16815f76\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".registration-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:.6em}.registration-form .container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.registration-form .terms-of-service{-ms-flex:0 1 50%;flex:0 1 50%;margin:.8em}.registration-form .text-fields{margin-top:.6em;-ms-flex:1 0;flex:1 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em 0;line-height:24px;margin-bottom:1em}.registration-form .form-group--error{animation-name:shakeError;animation-duration:.6s;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:12px}.registration-form .form-error ul{list-style:none;padding:0 0 0 5px;margin-top:0}.registration-form .form-error ul li:before{content:\\\"\\\\2022   \\\"}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{max-width:350px;margin-bottom:.4em}.registration-form .btn{margin-top:.6em;height:28px}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./password_reset.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1ef4fd93\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".password-reset-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;margin:.6em}.password-reset-form .container{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;-ms-flex-direction:column;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-bottom:1em;padding:.3em 0;line-height:24px}.password-reset-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}.password-reset-form .alert{padding:.5em;margin:.3em 0 1em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_request_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ad510f10\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-request-card-content-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.follow-request-card-content-container button{margin-top:.5em;margin-right:.5em;-ms-flex:1 1;flex:1 1;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./login_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42704024\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".login-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.6em}.login-form .btn{min-height:28px;width:10em}.login-form .register{-ms-flex:1 1;flex:1 1}.login-form .login-bottom{margin-top:1em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.login-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em .5em .6em;line-height:24px}.login-form .form-bottom{display:-ms-flexbox;display:flex;padding:.5em;height:32px}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.login-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./shout_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50606708\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".floating-shout{position:fixed;bottom:0;z-index:1000;max-width:25em}.floating-shout.left{left:0}.floating-shout:not(.left){right:0}.shout-panel .shout-heading{cursor:pointer}.shout-panel .shout-heading .icon{color:#b9b9ba;color:var(--text,#b9b9ba);margin-right:.5em}.shout-panel .shout-heading .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.shout-panel .shout-window{overflow-y:auto;overflow-x:hidden;max-height:20em}.shout-panel .shout-window-container{height:100%}.shout-panel .shout-message{display:-ms-flexbox;display:flex;padding:.2em .5em}.shout-panel .shout-avatar img{height:24px;width:24px;border-radius:4px;border-radius:var(--avatarRadius,4px);margin-right:.5em;margin-top:.25em}.shout-panel .shout-input{display:-ms-flexbox;display:flex}.shout-panel .shout-input textarea{-ms-flex:1;flex:1;margin:.6em;min-height:3.5em;resize:none}.shout-panel .shout-panel .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c74f4f44\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./about.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7dfaed97\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./features_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55ca8508\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".features-panel li{line-height:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./terms_of_service_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42aabc98\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tos-content{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./staff_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5aa588af\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mrf_transparency_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72647543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mrf-section{margin:1em}.mrf-section table{width:100%;text-align:left;padding-left:10px;padding-bottom:20px}.mrf-section table td,.mrf-section table th{width:180px;max-width:360px;overflow:hidden;vertical-align:text-top}.mrf-section table td+td,.mrf-section table th+th{width:auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_user_resolver.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"67a8aa3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js?minimize!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../node_modules/sass-loader/lib/loader.js!./App.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c806d03\", content, true, {});","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#app{min-height:100vh;max-width:100%;overflow:hidden}.app-bg-wrapper{position:fixed;z-index:-1;height:100%;left:0;right:-20px;background-size:cover;background-repeat:no-repeat;background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50px}i[class^=icon-]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}h4{margin:0}#content{box-sizing:border-box;padding-top:60px;margin:auto;min-height:100vh;max-width:980px;-ms-flex-line-pack:start;align-content:flex-start}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15))}.text-center{text-align:center}html{font-size:14px}body{overscroll-behavior-y:none;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;color:#b9b9ba;color:var(--text,#b9b9ba);max-width:100vw;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.hidden{display:none}a{text-decoration:none;color:#d8a070;color:var(--link,#d8a070)}.button-default{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#b9b9ba;color:var(--btnText,#b9b9ba);background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);cursor:pointer;box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);font-size:14px;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif)}.button-default.-sublime{background:transparent}.button-default .svg-inline--fa,.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.button-default::-moz-focus-inner{border:none}.button-default:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}.button-default:active{box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow);background-color:#182230;background-color:var(--btnPressed,#182230)}.button-default:active,.button-default:active i,.button-default:active svg{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}.button-default:disabled{cursor:not-allowed;background-color:#182230;background-color:var(--btnDisabled,#182230)}.button-default:disabled,.button-default:disabled i,.button-default:disabled svg{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.button-default.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default.toggled,.button-default.toggled i,.button-default.toggled svg{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.button-default.danger{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba);background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5))}.button-unstyled{background:none;border:none;outline:none;display:inline;text-align:initial;font-size:100%;font-family:inherit;padding:0;line-height:unset;cursor:pointer;box-sizing:content-box;color:inherit}.button-unstyled.-link{color:#d8a070;color:var(--link,#d8a070)}.button-unstyled.-fullwidth{width:100%}.button-unstyled.-hover-highlight:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.input,input,textarea{border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);color:#b9b9ba;color:var(--inputText,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;margin:0;box-sizing:border-box;display:inline-block;position:relative;height:28px;line-height:16px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;padding:8px .5em}.input.unstyled,input.unstyled,textarea.unstyled{border-radius:0;background:none;box-shadow:none;height:unset}.input.disabled,.input:disabled,.input[disabled=disabled],input.disabled,input:disabled,input[disabled=disabled],textarea.disabled,textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input[type=range],input[type=range],textarea[type=range]{background:none;border:none;margin:0;box-shadow:none;-ms-flex:1;flex:1}.input[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset;background-color:var(--accent,#d8a070)}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\";transition:box-shadow .2s;width:1.1em;height:1.1em;border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input[type=checkbox],input[type=checkbox],textarea[type=checkbox]{display:none}.input[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input.resize-height,input.resize-height,textarea.resize-height{resize:vertical}option{color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.hide-number-spinner{-moz-appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{opacity:0;display:none}.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.btn-block{display:block;width:100%}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group button{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.auto-size,main-router{-ms-flex:1;flex:1}.status.compact{color:rgba(0,0,0,.42);font-weight:300}.status.compact p{margin:0;font-size:.8em}.panel{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:column;flex-direction:column;margin:.5em;background-color:#121a24;background-color:var(--bg,#121a24)}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{content:\\\"\\\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow)}.panel-body:empty:before{content:\\\"\\\\AF\\\\\\\\_(\\\\30C4)_/\\\\AF\\\";display:block;margin:1em;text-align:center}.panel-heading{display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;background-size:cover;padding:.6em;text-align:left;line-height:28px;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230);-ms-flex-align:baseline;align-items:baseline;box-shadow:var(--panelHeaderShadow)}.panel-heading .title{-ms-flex:1 0 auto;flex:1 0 auto;font-size:1.3em}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading .alert{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.panel-heading .alert,.panel-heading .button-default{line-height:21px;min-height:0;box-sizing:border-box;margin:0;margin-left:.5em;min-width:1px;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.panel-heading .button-default{-ms-flex-negative:0;flex-shrink:0}.panel-heading .button-default,.panel-heading .button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading .button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading .button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer,.timeline-footer{display:-ms-flexbox;display:flex;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);-ms-flex:none;flex:none;padding:.6em;text-align:left;line-height:28px;-ms-flex-align:baseline;align-items:baseline;border-width:1px 0 0;border-style:solid;border-color:var(--border,#222)}.panel-footer .faint,.timeline-footer .faint{color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-footer .-link,.panel-footer a,.timeline-footer .-link,.timeline-footer a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-body>p{line-height:18px;padding:1em;margin:0}.container>*{min-width:0}.fa{color:grey}nav{z-index:1000;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);box-sizing:border-box}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.main{-ms-flex-preferred-size:50%;flex-basis:50%;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.sidebar-bounds{-ms-flex:0;flex:0;-ms-flex-preferred-size:35%;flex-basis:35%}.sidebar-flexer{-ms-flex:1;flex:1;-ms-flex-preferred-size:345px;flex-basis:345px;width:365px}.mobile-shown{display:none}@media (min-width:800px){body{overflow-y:scroll}.sidebar-bounds{overflow:hidden;max-height:100vh;width:345px;position:fixed;margin-top:-10px}.sidebar-bounds .sidebar-scroller{height:96vh;width:365px;padding-top:10px;padding-right:50px;overflow-x:hidden;overflow-y:scroll}.sidebar-bounds .sidebar{width:345px}.sidebar-flexer{max-height:96vh;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}}.badge{box-sizing:border-box;display:inline-block;border-radius:99px;max-width:10em;min-width:1.7em;height:1.3em;padding:.15em;vertical-align:middle;font-weight:400;font-style:normal;font-size:.9em;line-height:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{margin:.35em;padding:.25em;border-radius:5px;border-radius:var(--tooltipRadius,5px);min-height:28px;line-height:28px}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.alert.success{background-color:var(--alertSuccess,rgba(111,111,20,.5));color:var(--alertSuccessText,#b9b9ba)}.panel-heading .alert.success{color:var(--alertSuccessPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{padding:.5em;border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px)}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{position:absolute;top:0;right:0;padding:.5em;color:inherit}.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding.svg-inline--fa{padding:0 .3em}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}@media (max-width:800px){.mobile-hidden{display:none}.panel-switcher{display:-ms-flexbox;display:flex}.container{padding:0}.panel{margin:.5em 0}.menu-button{display:block;margin-right:.8em}.main{margin-bottom:7em}}.option-list,.setting-list{list-style-type:none;padding-left:2em}.option-list li,.setting-list li{margin-bottom:.5em}.option-list .suboptions,.setting-list .suboptions{margin-top:.3em}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:28px}.animate-spin{animation:spin 2s infinite linear;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.new-status-notification{position:relative;font-size:1.1em;z-index:1;-ms-flex:1;flex:1}.chat-layout{height:100%}.chat-layout,.chat-layout body{overflow:hidden}@media (max-width:800px){.chat-layout body{height:100%}.chat-layout #app{height:100%;overflow:hidden;min-height:auto}.chat-layout #app_bg_wrapper{overflow:hidden}.chat-layout .main{overflow:hidden;height:100%}.chat-layout #content{padding-top:0;height:100%;overflow:visible}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"04d46dee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-panel .signed-in{overflow:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./nav_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b030addc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NavPanel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{position:relative;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.NavPanel li:first-child .menu-item{border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px);border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child .menu-item{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child{border:none}.NavPanel .menu-item{display:block;box-sizing:border-box;height:3.5em;line-height:3.5em;padding:0 1em;width:100%;color:#d8a070;color:var(--link,#d8a070)}.NavPanel .menu-item:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavPanel .menu-item.router-link-active,.NavPanel .menu-item:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.NavPanel .menu-item.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.NavPanel .menu-item.router-link-active:hover{text-decoration:underline}.NavPanel .timelines-chevron{margin-left:.8em;font-size:1.1em}.NavPanel .timelines-background{padding:0 0 0 .6em;background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);border-top:1px solid;border-color:#222;border-color:var(--border,#222)}.NavPanel .timelines{background-color:#121a24;background-color:var(--bg,#121a24)}.NavPanel .fa-scale-110{margin-right:.8em}.NavPanel .badge{position:absolute;right:.6rem;top:1.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f18dd03\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".who-to-follow *{vertical-align:middle}.who-to-follow img{width:32px;height:32px}.who-to-follow{padding:0 1em;margin:0}.who-to-follow-items{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:1em 0}.who-to-follow-more{padding:0;margin:1em 0;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7272e6fe\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".settings-modal{overflow:hidden}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(((100vh - 100%) / 2 + 100%) - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}}.settings-modal .settings-modal-panel{overflow:hidden;transition:transform;transition-timing-function:ease-in-out;transition-duration:.3s;width:1000px;max-width:90vw;height:90vh}@media (max-width:800px){.settings-modal .settings-modal-panel{max-width:100vw;height:100%}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:28px;min-width:10em;padding:0 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"f7395e92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view{z-index:1000;position:fixed;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow:auto;pointer-events:none;animation-duration:.2s;animation-name:modal-background-fadein;opacity:0}.modal-view>*{pointer-events:auto}.modal-view.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5)}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel_loading.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1c82888b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".panel-loading{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:2em;color:#b9b9ba;color:var(--text,#b9b9ba)}.panel-loading .loading-text svg{line-height:0;vertical-align:middle;color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./async_component_error.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2970b266\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".async-component-error{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"23b00cfc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.media-modal-view{z-index:1001}.modal-view.media-modal-view .modal-view-button-arrow{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover{outline:none;box-shadow:none}.modal-view.media-modal-view .modal-view-button-arrow:hover{opacity:1}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image;animation:.1s cubic-bezier(.7,0,1,.6) media-fadein}.modal-view-button-arrow{position:absolute;display:block;top:50%;margin-top:-50px;width:70px;height:100px;border:0;padding:0;opacity:0;box-shadow:none;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:visible;cursor:pointer;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.modal-view-button-arrow .arrow-icon{position:absolute;top:35px;height:30px;width:32px;font-size:14px;line-height:30px;color:#fff;text-align:center;background-color:rgba(0,0,0,.3)}.modal-view-button-arrow--prev{left:0}.modal-view-button-arrow--prev .arrow-icon{left:6px}.modal-view-button-arrow--next{right:0}.modal-view-button-arrow--next .arrow-icon{right:6px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side_drawer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34992fba\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".side-drawer-container{position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;transition-duration:0s;transition-property:transform}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transition-delay:.35s;transform:translate(-100%)}.side-drawer-darken{top:0;left:0;width:100vw;height:100vh;position:fixed;z-index:-1;transition:.35s;transition-property:background-color;background-color:rgba(0,0,0,.5)}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{-ms-flex:1 1 100%;flex:1 1 100%}.side-drawer{overflow-x:hidden;transition-timing-function:cubic-bezier(0,1,.5,1);transition:.35s;transition-property:transform;margin:0 0 0 -100px;padding:0 0 1em 100px;width:80%;max-width:20em;-ms-flex:0 0 80%;flex:0 0 80%;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.side-drawer .badge{margin-left:10px}.side-drawer-logo-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.85em}.side-drawer-logo-wrapper img{-ms-flex:none;flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{-ms-flex:0 0 0px;flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;padding:0;margin:0}.side-drawer ul{list-style:none;margin:0;padding:0;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_post_status_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f8eca07\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".new-status-button{width:5em;height:5em;border-radius:100%;position:fixed;bottom:1.5em;right:1.5em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);z-index:10;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1)}.new-status-button.hidden{transform:translateY(150%)}.new-status-button svg{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button:not(.always-show){display:none}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_nav.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1e0fbcf8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobileNav .mobile-nav{display:-ms-grid;display:grid;line-height:50px;height:50px;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto;grid-template-columns:2fr auto;width:100%;position:fixed;box-sizing:border-box}.MobileNav .mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.MobileNav .mobile-nav-button{display:inline-block;text-align:center;padding:0 1em;position:relative;cursor:pointer}.MobileNav .site-name{padding:0 .3em;display:inline-block}.MobileNav .item{display:-ms-flexbox;display:flex}.MobileNav .alert-dot{border-radius:100%;height:8px;width:8px;position:absolute;left:calc(50% - 4px);top:calc(50% - 4px);margin-left:6px;margin-top:-6px;background-color:red;background-color:var(--badgeNotification,red)}.MobileNav .mobile-notifications-drawer{width:100%;height:100vh;overflow-x:hidden;position:fixed;top:0;left:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);transition-property:transform;transition-duration:.25s;transform:translateX(0);z-index:1001;-webkit-overflow-scrolling:touch}.MobileNav .mobile-notifications-drawer.closed{transform:translateX(100%)}.MobileNav .mobile-notifications-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;z-index:1;width:100%;height:50px;line-height:50px;position:absolute;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .mobile-notifications{margin-top:50px;width:100vw;height:calc(100vh - 50px);overflow-x:hidden;overflow-y:scroll;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.MobileNav .mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"385f563e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DesktopNav{height:50px;width:100%;position:fixed}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{display:-ms-grid;display:grid;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto 2fr;grid-template-columns:2fr auto 2fr;grid-template-areas:\\\"sitename logo actions\\\";box-sizing:border-box;padding:0 1.2em;margin:auto;max-width:980px}.DesktopNav.-logoLeft{-ms-grid-columns:auto 2fr 2fr;grid-template-columns:auto 2fr 2fr;grid-template-areas:\\\"logo sitename actions\\\"}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;background-color:#182230;background-color:var(--topBarText,#182230);position:absolute;top:0;bottom:0;left:0;right:0}.DesktopNav .logo img{display:inline-block;height:50px}.DesktopNav .nav-icon{margin-left:.2em;width:2em;height:100%;text-align:center}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.DesktopNav .item.right{-ms-flex-pack:end;justify-content:flex-end;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search_bar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ea9aafc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchBar{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;vertical-align:baseline;-ms-flex-pack:end;justify-content:flex-end}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{-ms-flex:1 0 auto;flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_reporting_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10c04f96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-reporting-panel{width:90vw;max-width:700px;min-height:20vh;max-height:80vh}.user-reporting-panel .panel-heading .title{text-align:center;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-reporting-panel .panel-body{display:-ms-flexbox;display:flex;-ms-flex-direction:column-reverse;flex-direction:column-reverse;border-top:1px solid;border-color:#222;border-color:var(--border,#222);overflow:hidden}.user-reporting-panel-left{padding:1.1em .7em .7em;line-height:1.4em;box-sizing:border-box}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:44px;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{margin:1em 0 0;line-height:1.3em}.user-reporting-panel-right{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.user-reporting-panel-sitem>.Status{-ms-flex:1;flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{-ms-flex-direction:row;flex-direction:row}.user-reporting-panel-left{width:50%;max-width:320px;border-right:1px solid;border-color:#222;border-color:var(--border,#222);padding:1.1em}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{width:50%;-ms-flex:1 1 auto;flex:1 1 auto;margin-bottom:12px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7628c2ae\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.post-form-modal-view{-ms-flex-align:start;align-items:flex-start}.post-form-modal-panel{-ms-flex-negative:0;flex-shrink:0;margin-top:25%;margin-bottom:2em;width:100%;max-width:700px}@media (orientation:landscape){.post-form-modal-panel{margin-top:8%}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./global_notice_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cdffaf96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".global-notice-list{position:fixed;top:50px;width:100%;pointer-events:none;z-index:1001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.global-notice-list .global-notice{pointer-events:auto;text-align:center;width:40em;max-width:calc(100% - 3em);display:-ms-flexbox;display:flex;padding-left:1.5em;line-height:2em}.global-notice-list .global-notice .notice-message{-ms-flex:1 1 100%;flex:1 1 100%}.global-notice-list .global-notice i{-ms-flex:0 0;flex:0 0;width:1.5em;cursor:pointer}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-success{background-color:var(--alertPopupSuccess,#0fa00f)}.global-notice-list .global-success,.global-notice-list .global-success .svg-inline--fa{color:var(--alertPopupSuccessText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}\", \"\"]);\n\n// exports\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n  /* eslint-disable no-new  */\n  new EventTarget()\n  /* eslint-enable no-new  */\n} catch (e) {\n  window.EventTarget = EventTargetPolyfill\n}\n","import { set, delete as del } from 'vue'\n\nconst defaultState = {\n  settingsModalState: 'hidden',\n  settingsModalLoaded: false,\n  settingsModalTargetTab: null,\n  settings: {\n    currentSaveStateNotice: null,\n    noticeClearTimeout: null,\n    notificationPermission: null\n  },\n  browserSupport: {\n    cssFilter: window.CSS && window.CSS.supports && (\n      window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n      window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n    )\n  },\n  mobileLayout: false,\n  globalNotices: [],\n  layoutHeight: 0,\n  lastTimeline: null\n}\n\nconst interfaceMod = {\n  state: defaultState,\n  mutations: {\n    settingsSaved (state, { success, error }) {\n      if (success) {\n        if (state.noticeClearTimeout) {\n          clearTimeout(state.noticeClearTimeout)\n        }\n        set(state.settings, 'currentSaveStateNotice', { error: false, data: success })\n        set(state.settings, 'noticeClearTimeout',\n          setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))\n      } else {\n        set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })\n      }\n    },\n    setNotificationPermission (state, permission) {\n      state.notificationPermission = permission\n    },\n    setMobileLayout (state, value) {\n      state.mobileLayout = value\n    },\n    closeSettingsModal (state) {\n      state.settingsModalState = 'hidden'\n    },\n    togglePeekSettingsModal (state) {\n      switch (state.settingsModalState) {\n        case 'minimized':\n          state.settingsModalState = 'visible'\n          return\n        case 'visible':\n          state.settingsModalState = 'minimized'\n          return\n        default:\n          throw new Error('Illegal minimization state of settings modal')\n      }\n    },\n    openSettingsModal (state) {\n      state.settingsModalState = 'visible'\n      if (!state.settingsModalLoaded) {\n        state.settingsModalLoaded = true\n      }\n    },\n    setSettingsModalTargetTab (state, value) {\n      state.settingsModalTargetTab = value\n    },\n    pushGlobalNotice (state, notice) {\n      state.globalNotices.push(notice)\n    },\n    removeGlobalNotice (state, notice) {\n      state.globalNotices = state.globalNotices.filter(n => n !== notice)\n    },\n    setLayoutHeight (state, value) {\n      state.layoutHeight = value\n    },\n    setLastTimeline (state, value) {\n      state.lastTimeline = value\n    }\n  },\n  actions: {\n    setPageTitle ({ rootState }, option = '') {\n      document.title = `${option} ${rootState.instance.name}`\n    },\n    settingsSaved ({ commit, dispatch }, { success, error }) {\n      commit('settingsSaved', { success, error })\n    },\n    setNotificationPermission ({ commit }, permission) {\n      commit('setNotificationPermission', permission)\n    },\n    setMobileLayout ({ commit }, value) {\n      commit('setMobileLayout', value)\n    },\n    closeSettingsModal ({ commit }) {\n      commit('closeSettingsModal')\n    },\n    openSettingsModal ({ commit }) {\n      commit('openSettingsModal')\n    },\n    togglePeekSettingsModal ({ commit }) {\n      commit('togglePeekSettingsModal')\n    },\n    clearSettingsModalTargetTab ({ commit }) {\n      commit('setSettingsModalTargetTab', null)\n    },\n    openSettingsModalTab ({ commit }, value) {\n      commit('setSettingsModalTargetTab', value)\n      commit('openSettingsModal')\n    },\n    pushGlobalNotice (\n      { commit, dispatch },\n      {\n        messageKey,\n        messageArgs = {},\n        level = 'error',\n        timeout = 0\n      }) {\n      const notice = {\n        messageKey,\n        messageArgs,\n        level\n      }\n      if (timeout) {\n        setTimeout(() => dispatch('removeGlobalNotice', notice), timeout)\n      }\n      commit('pushGlobalNotice', notice)\n      return notice\n    },\n    removeGlobalNotice ({ commit }, notice) {\n      commit('removeGlobalNotice', notice)\n    },\n    setLayoutHeight ({ commit }, value) {\n      commit('setLayoutHeight', value)\n    },\n    setLastTimeline ({ commit }, value) {\n      commit('setLastTimeline', value)\n    }\n  }\n}\n\nexport default interfaceMod\n","import { set } from 'vue'\nimport { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n  // Stuff from apiConfig\n  name: 'Pleroma FE',\n  registrationOpen: true,\n  server: 'http://localhost:4040/',\n  textlimit: 5000,\n  themeData: undefined,\n  vapidPublicKey: undefined,\n\n  // Stuff from static/config.json\n  alwaysShowSubjectInput: true,\n  defaultAvatar: '/images/avi.png',\n  defaultBanner: '/images/banner.png',\n  background: '/static/aurora_borealis.jpg',\n  collapseMessageWithSubject: false,\n  greentext: false,\n  hideFilteredStatuses: false,\n  hideMutedPosts: false,\n  hidePostStats: false,\n  hideSitename: false,\n  hideUserStats: false,\n  loginMethod: 'password',\n  logo: '/static/logo.svg',\n  logoMargin: '.2em',\n  logoMask: true,\n  logoLeft: false,\n  minimalScopesMode: false,\n  nsfwCensorImage: undefined,\n  postContentType: 'text/plain',\n  redirectRootLogin: '/main/friends',\n  redirectRootNoLogin: '/main/all',\n  scopeCopy: true,\n  showFeaturesPanel: true,\n  showInstanceSpecificPanel: false,\n  sidebarRight: false,\n  subjectLineBehavior: 'email',\n  theme: 'pleroma-dark',\n  virtualScrolling: true,\n  sensitiveByDefault: false,\n\n  // Nasty stuff\n  customEmoji: [],\n  customEmojiFetched: false,\n  emoji: [],\n  emojiFetched: false,\n  pleromaBackend: true,\n  postFormats: [],\n  restrictedNicknames: [],\n  safeDM: true,\n  knownDomains: [],\n\n  // Feature-set, apparently, not everything here is reported...\n  shoutAvailable: false,\n  pleromaChatMessagesAvailable: false,\n  gopherAvailable: false,\n  mediaProxyAvailable: false,\n  suggestionsEnabled: false,\n  suggestionsWeb: '',\n\n  // Html stuff\n  instanceSpecificPanelContent: '',\n  tos: '',\n\n  // Version Information\n  backendVersion: '',\n  frontendVersion: '',\n\n  pollsAvailable: false,\n  pollLimits: {\n    max_options: 4,\n    max_option_chars: 255,\n    min_expiration: 60,\n    max_expiration: 60 * 60 * 24\n  }\n}\n\nconst instance = {\n  state: defaultState,\n  mutations: {\n    setInstanceOption (state, { name, value }) {\n      if (typeof value !== 'undefined') {\n        set(state, name, value)\n      }\n    },\n    setKnownDomains (state, domains) {\n      state.knownDomains = domains\n    }\n  },\n  getters: {\n    instanceDefaultConfig (state) {\n      return instanceDefaultProperties\n        .map(key => [key, state[key]])\n        .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n    }\n  },\n  actions: {\n    setInstanceOption ({ commit, dispatch }, { name, value }) {\n      commit('setInstanceOption', { name, value })\n      switch (name) {\n        case 'name':\n          dispatch('setPageTitle')\n          break\n        case 'shoutAvailable':\n          if (value) {\n            dispatch('initializeSocket')\n          }\n          break\n        case 'theme':\n          dispatch('setTheme', value)\n          break\n      }\n    },\n    async getStaticEmoji ({ commit }) {\n      try {\n        const res = await window.fetch('/static/emoji.json')\n        if (res.ok) {\n          const values = await res.json()\n          const emoji = Object.keys(values).map((key) => {\n            return {\n              displayText: key,\n              imageUrl: false,\n              replacement: values[key]\n            }\n          }).sort((a, b) => a.name > b.name ? 1 : -1)\n          commit('setInstanceOption', { name: 'emoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load static emoji\")\n        console.warn(e)\n      }\n    },\n\n    async getCustomEmoji ({ commit, state }) {\n      try {\n        const res = await window.fetch('/api/pleroma/emoji.json')\n        if (res.ok) {\n          const result = await res.json()\n          const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n          const emoji = Object.entries(values).map(([key, value]) => {\n            const imageUrl = value.image_url\n            return {\n              displayText: key,\n              imageUrl: imageUrl ? state.server + imageUrl : value,\n              tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n              replacement: `:${key}: `\n            }\n            // Technically could use tags but those are kinda useless right now,\n            // should have been \"pack\" field, that would be more useful\n          }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n          commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load custom emojis\")\n        console.warn(e)\n      }\n    },\n\n    setTheme ({ commit, rootState }, themeName) {\n      commit('setInstanceOption', { name: 'theme', value: themeName })\n      getPreset(themeName)\n        .then(themeData => {\n          commit('setInstanceOption', { name: 'themeData', value: themeData })\n          // No need to apply theme if there's user theme already\n          const { customTheme } = rootState.config\n          if (customTheme) return\n\n          // New theme presets don't have 'theme' property, they use 'source'\n          const themeSource = themeData.source\n          if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n            applyTheme(themeSource)\n          } else {\n            applyTheme(themeData.theme)\n          }\n        })\n    },\n    fetchEmoji ({ dispatch, state }) {\n      if (!state.customEmojiFetched) {\n        state.customEmojiFetched = true\n        dispatch('getCustomEmoji')\n      }\n      if (!state.emojiFetched) {\n        state.emojiFetched = true\n        dispatch('getStaticEmoji')\n      }\n    },\n\n    async getKnownDomains ({ commit, rootState }) {\n      try {\n        const result = await apiService.fetchKnownDomains({\n          credentials: rootState.users.currentUser.credentials\n        })\n        commit('setKnownDomains', result)\n      } catch (e) {\n        console.warn(\"Can't load known domains\")\n        console.warn(e)\n      }\n    }\n  }\n}\n\nexport default instance\n","import {\n  remove,\n  slice,\n  each,\n  findIndex,\n  find,\n  maxBy,\n  minBy,\n  merge,\n  first,\n  last,\n  isArray,\n  omitBy\n} from 'lodash'\nimport { set } from 'vue'\nimport {\n  isStatusNotification,\n  isValidNotification,\n  maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n  statuses: [],\n  statusesObject: {},\n  faves: [],\n  visibleStatuses: [],\n  visibleStatusesObject: {},\n  newStatusCount: 0,\n  maxId: 0,\n  minId: 0,\n  minVisibleId: 0,\n  loading: false,\n  followers: [],\n  friends: [],\n  userId,\n  flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n  desktopNotificationSilence: true,\n  maxId: 0,\n  minId: Number.POSITIVE_INFINITY,\n  data: [],\n  idStore: {},\n  loading: false\n})\n\nexport const defaultState = () => ({\n  allStatuses: [],\n  allStatusesObject: {},\n  conversationsObject: {},\n  maxId: 0,\n  notifications: emptyNotifications(),\n  favorites: new Set(),\n  timelines: {\n    mentions: emptyTl(),\n    public: emptyTl(),\n    user: emptyTl(),\n    favorites: emptyTl(),\n    media: emptyTl(),\n    publicAndExternal: emptyTl(),\n    friends: emptyTl(),\n    tag: emptyTl(),\n    dms: emptyTl(),\n    bookmarks: emptyTl()\n  }\n})\n\nexport const prepareStatus = (status) => {\n  // Set deleted flag\n  status.deleted = false\n\n  // To make the array reactive\n  status.attachments = status.attachments || []\n\n  return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n  const oldItem = obj[item.id]\n\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    // We ignore null values to avoid overwriting existing properties with missing data\n    // we also skip 'user' because that is handled by users module\n    merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n    // Reactivity fix.\n    oldItem.attachments.splice(oldItem.attachments.length)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    prepareStatus(item)\n    arr.push(item)\n    set(obj, item.id, item)\n    return { item, new: true }\n  }\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst sortTimeline = (timeline) => {\n  timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n  timeline.statuses = timeline.statuses.sort(sortById)\n  timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n  return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n  const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n  if (result.new) {\n    // Add to conversation\n    const status = result.item\n    const conversationsObject = state.conversationsObject\n    const conversationId = status.statusnet_conversation_id\n    if (conversationsObject[conversationId]) {\n      conversationsObject[conversationId].push(status)\n    } else {\n      set(conversationsObject, conversationId, [status])\n    }\n  }\n  return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n  remove(state.allStatuses, { id: status.id })\n\n  // TODO: Need to remove from allStatusesObject?\n\n  // Remove possible notification\n  remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n  // Remove from conversation\n  const conversationId = status.statusnet_conversation_id\n  if (state.conversationsObject[conversationId]) {\n    remove(state.conversationsObject[conversationId], { id: status.id })\n  }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n  // Sanity check\n  if (!isArray(statuses)) {\n    return false\n  }\n\n  const allStatuses = state.allStatuses\n  const timelineObject = state.timelines[timeline]\n\n  // Mismatch between API pagination and our internal minId/maxId tracking systems:\n  // pagination.maxId is the oldest of the returned statuses when fetching older,\n  // and pagination.minId is the newest when fetching newer. The names come directly\n  // from the arguments they're supposed to be passed as for the next fetch.\n  const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n  const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n  const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n  const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n  if (!noIdUpdate && newer) {\n    timelineObject.maxId = maxNew\n  }\n  if (!noIdUpdate && older) {\n    timelineObject.minId = minNew\n  }\n\n  // This makes sure that user timeline won't get data meant for other\n  // user. I.e. opening different user profiles makes request which could\n  // return data late after user already viewing different user profile\n  if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n    return\n  }\n\n  const addStatus = (data, showImmediately, addToTimeline = true) => {\n    const result = addStatusToGlobalStorage(state, data)\n    const status = result.item\n\n    if (result.new) {\n      // We are mentioned in a post\n      if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n        const mentions = state.timelines.mentions\n\n        // Add the mention to the mentions timeline\n        if (timelineObject !== mentions) {\n          mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n          mentions.newStatusCount += 1\n\n          sortTimeline(mentions)\n        }\n      }\n      if (status.visibility === 'direct') {\n        const dms = state.timelines.dms\n\n        mergeOrAdd(dms.statuses, dms.statusesObject, status)\n        dms.newStatusCount += 1\n\n        sortTimeline(dms)\n      }\n    }\n\n    // Decide if we should treat the status as new for this timeline.\n    let resultForCurrentTimeline\n    // Some statuses should only be added to the global status repository.\n    if (timeline && addToTimeline) {\n      resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n    }\n\n    if (timeline && showImmediately) {\n      // Add it directly to the visibleStatuses, don't change\n      // newStatusCount\n      mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n    } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n      // Just change newStatuscount\n      timelineObject.newStatusCount += 1\n    }\n\n    return status\n  }\n\n  const favoriteStatus = (favorite, counter) => {\n    const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n    if (status) {\n      // This is our favorite, so the relevant bit.\n      if (favorite.user.id === user.id) {\n        status.favorited = true\n      } else {\n        status.fave_num += 1\n      }\n    }\n    return status\n  }\n\n  const processors = {\n    'status': (status) => {\n      addStatus(status, showImmediately)\n    },\n    'retweet': (status) => {\n      // RetweetedStatuses are never shown immediately\n      const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n      let retweet\n      // If the retweeted status is already there, don't add the retweet\n      // to the timeline.\n      if (timeline && find(timelineObject.statuses, (s) => {\n        if (s.retweeted_status) {\n          return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n        } else {\n          return s.id === retweetedStatus.id\n        }\n      })) {\n        // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n        retweet = addStatus(status, false, false)\n      } else {\n        retweet = addStatus(status, showImmediately)\n      }\n\n      retweet.retweeted_status = retweetedStatus\n    },\n    'favorite': (favorite) => {\n      // Only update if this is a new favorite.\n      // Ignore our own favorites because we get info about likes as response to like request\n      if (!state.favorites.has(favorite.id)) {\n        state.favorites.add(favorite.id)\n        favoriteStatus(favorite)\n      }\n    },\n    'deletion': (deletion) => {\n      const uri = deletion.uri\n      const status = find(allStatuses, { uri })\n      if (!status) {\n        return\n      }\n\n      removeStatusFromGlobalStorage(state, status)\n\n      if (timeline) {\n        remove(timelineObject.statuses, { uri })\n        remove(timelineObject.visibleStatuses, { uri })\n      }\n    },\n    'follow': (follow) => {\n      // NOOP, it is known status but we don't do anything about it for now\n    },\n    'default': (unknown) => {\n      console.log('unknown status type')\n      console.log(unknown)\n    }\n  }\n\n  each(statuses, (status) => {\n    const type = status.type\n    const processor = processors[type] || processors['default']\n    processor(status)\n  })\n\n  // Keep the visible statuses sorted\n  if (timeline && !(timeline === 'bookmarks')) {\n    sortTimeline(timelineObject)\n  }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n  state.notifications.maxId = notification.id > state.notifications.maxId\n    ? notification.id\n    : state.notifications.maxId\n  state.notifications.minId = notification.id < state.notifications.minId\n    ? notification.id\n    : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n  each(notifications, (notification) => {\n    // If invalid notification, update ids but don't add it to store\n    if (!isValidNotification(notification)) {\n      console.error('Invalid notification:', notification)\n      updateNotificationsMinMaxId(state, notification)\n      return\n    }\n\n    if (isStatusNotification(notification.type)) {\n      notification.action = addStatusToGlobalStorage(state, notification.action).item\n      notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n    }\n\n    if (notification.type === 'pleroma:emoji_reaction') {\n      dispatch('fetchEmojiReactionsBy', notification.status.id)\n    }\n\n    // Only add a new notification if we don't have one for the same action\n    if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n      updateNotificationsMinMaxId(state, notification)\n\n      state.notifications.data.push(notification)\n      state.notifications.idStore[notification.id] = notification\n\n      newNotificationSideEffects(notification)\n    } else if (notification.seen) {\n      state.notifications.idStore[notification.id].seen = true\n    }\n  })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n  const timelineObject = state.timelines[timeline]\n  if (userId) {\n    remove(timelineObject.statuses, { user: { id: userId } })\n    remove(timelineObject.visibleStatuses, { user: { id: userId } })\n    timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n    timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n  }\n}\n\nexport const mutations = {\n  addNewStatuses,\n  addNewNotifications,\n  removeStatus,\n  showNewStatuses (state, { timeline }) {\n    const oldTimeline = (state.timelines[timeline])\n\n    oldTimeline.newStatusCount = 0\n    oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n    oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n    oldTimeline.minId = oldTimeline.minVisibleId\n    oldTimeline.visibleStatusesObject = {}\n    each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n  },\n  resetStatuses (state) {\n    const emptyState = defaultState()\n    Object.entries(emptyState).forEach(([key, value]) => {\n      state[key] = value\n    })\n  },\n  clearTimeline (state, { timeline, excludeUserId = false }) {\n    const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n    state.timelines[timeline] = emptyTl(userId)\n  },\n  clearNotifications (state) {\n    state.notifications = emptyNotifications()\n  },\n  setFavorited (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.favorited !== value) {\n      if (value) {\n        newStatus.fave_num++\n      } else {\n        newStatus.fave_num--\n      }\n    }\n\n    newStatus.favorited = value\n  },\n  setFavoritedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.favorited = status.favorited\n    newStatus.fave_num = status.fave_num\n    const index = findIndex(newStatus.favoritedBy, { id: user.id })\n    if (index !== -1 && !newStatus.favorited) {\n      newStatus.favoritedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.favorited) {\n      newStatus.favoritedBy.push(user)\n    }\n  },\n  setMutedStatus (state, status) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.thread_muted = status.thread_muted\n\n    if (newStatus.thread_muted !== undefined) {\n      state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n    }\n  },\n  setRetweeted (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.repeated !== value) {\n      if (value) {\n        newStatus.repeat_num++\n      } else {\n        newStatus.repeat_num--\n      }\n    }\n\n    newStatus.repeated = value\n  },\n  setRetweetedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.repeated = status.repeated\n    newStatus.repeat_num = status.repeat_num\n    const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n    if (index !== -1 && !newStatus.repeated) {\n      newStatus.rebloggedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.repeated) {\n      newStatus.rebloggedBy.push(user)\n    }\n  },\n  setBookmarked (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = value\n  },\n  setBookmarkedConfirm (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = status.bookmarked\n  },\n  setDeleted (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    if (newStatus) newStatus.deleted = true\n  },\n  setManyDeleted (state, condition) {\n    Object.values(state.allStatusesObject).forEach(status => {\n      if (condition(status)) {\n        status.deleted = true\n      }\n    })\n  },\n  setLoading (state, { timeline, value }) {\n    state.timelines[timeline].loading = value\n  },\n  setNsfw (state, { id, nsfw }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.nsfw = nsfw\n  },\n  setNotificationsLoading (state, { value }) {\n    state.notifications.loading = value\n  },\n  setNotificationsSilence (state, { value }) {\n    state.notifications.desktopNotificationSilence = value\n  },\n  markNotificationsAsSeen (state) {\n    each(state.notifications.data, (notification) => {\n      notification.seen = true\n    })\n  },\n  markSingleNotificationAsSeen (state, { id }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    if (notification) notification.seen = true\n  },\n  dismissNotification (state, { id }) {\n    state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n  },\n  dismissNotifications (state, { finder }) {\n    state.notifications.data = state.notifications.data.filter(n => finder)\n  },\n  updateNotification (state, { id, updater }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    notification && updater(notification)\n  },\n  queueFlush (state, { timeline, id }) {\n    state.timelines[timeline].flushMarker = id\n  },\n  queueFlushAll (state) {\n    Object.keys(state.timelines).forEach((timeline) => {\n      state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n    })\n  },\n  addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n    // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.repeat_num = newStatus.rebloggedBy.length\n    newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n  },\n  addFavs (state, { id, favoritedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n    // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.fave_num = newStatus.favoritedBy.length\n    newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n  },\n  addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n    const status = state.allStatusesObject[id]\n    set(status, 'emoji_reactions', emojiReactions)\n  },\n  addOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count + 1,\n      me: true,\n      accounts: [\n        ...reaction.accounts,\n        currentUser\n      ]\n    }\n\n    // Update count of existing reaction if it exists, otherwise append at the end\n    if (reactionIndex >= 0) {\n      set(status.emoji_reactions, reactionIndex, newReaction)\n    } else {\n      set(status, 'emoji_reactions', [...status.emoji_reactions, newReaction])\n    }\n  },\n  removeOwnReaction (state, { id, emoji, currentUser }) {\n    const status = state.allStatusesObject[id]\n    const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n    if (reactionIndex < 0) return\n\n    const reaction = status.emoji_reactions[reactionIndex]\n    const accounts = reaction.accounts || []\n\n    const newReaction = {\n      ...reaction,\n      count: reaction.count - 1,\n      me: false,\n      accounts: accounts.filter(acc => acc.id !== currentUser.id)\n    }\n\n    if (newReaction.count > 0) {\n      set(status.emoji_reactions, reactionIndex, newReaction)\n    } else {\n      set(status, 'emoji_reactions', status.emoji_reactions.filter(r => r.name !== emoji))\n    }\n  },\n  updateStatusWithPoll (state, { id, poll }) {\n    const status = state.allStatusesObject[id]\n    status.poll = poll\n  },\n  setVirtualHeight (state, { statusId, height }) {\n    state.allStatusesObject[statusId].virtualHeight = height\n  }\n}\n\nconst statuses = {\n  state: defaultState(),\n  actions: {\n    addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n      commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n    },\n    addNewNotifications (store, { notifications, older }) {\n      const { commit, dispatch, rootGetters } = store\n\n      const newNotificationSideEffects = (notification) => {\n        maybeShowNotification(store, notification)\n      }\n      commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n    },\n    setNotificationsLoading ({ rootState, commit }, { value }) {\n      commit('setNotificationsLoading', { value })\n    },\n    setNotificationsSilence ({ rootState, commit }, { value }) {\n      commit('setNotificationsSilence', { value })\n    },\n    fetchStatus ({ rootState, dispatch }, id) {\n      return rootState.api.backendInteractor.fetchStatus({ id })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    deleteStatus ({ rootState, commit }, status) {\n      commit('setDeleted', { status })\n      apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n    },\n    deleteStatusById ({ rootState, commit }, id) {\n      const status = rootState.statuses.allStatusesObject[id]\n      commit('setDeleted', { status })\n    },\n    markStatusesAsDeleted ({ commit }, condition) {\n      commit('setManyDeleted', condition)\n    },\n    favorite ({ rootState, commit }, status) {\n      // Optimistic favoriting...\n      commit('setFavorited', { status, value: true })\n      rootState.api.backendInteractor.favorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    unfavorite ({ rootState, commit }, status) {\n      // Optimistic unfavoriting...\n      commit('setFavorited', { status, value: false })\n      rootState.api.backendInteractor.unfavorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n      rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n        .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n    },\n    pinStatus ({ rootState, dispatch }, statusId) {\n      return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    unpinStatus ({ rootState, dispatch }, statusId) {\n      rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    muteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.muteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    unmuteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    retweet ({ rootState, commit }, status) {\n      // Optimistic retweeting...\n      commit('setRetweeted', { status, value: true })\n      rootState.api.backendInteractor.retweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n    },\n    unretweet ({ rootState, commit }, status) {\n      // Optimistic unretweeting...\n      commit('setRetweeted', { status, value: false })\n      rootState.api.backendInteractor.unretweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    bookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: true })\n      rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    unbookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: false })\n      rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    queueFlush ({ rootState, commit }, { timeline, id }) {\n      commit('queueFlush', { timeline, id })\n    },\n    queueFlushAll ({ rootState, commit }) {\n      commit('queueFlushAll')\n    },\n    markNotificationsAsSeen ({ rootState, commit }) {\n      commit('markNotificationsAsSeen')\n      apiService.markNotificationsAsSeen({\n        id: rootState.statuses.notifications.maxId,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n      commit('markSingleNotificationAsSeen', { id })\n      apiService.markNotificationsAsSeen({\n        single: true,\n        id,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    dismissNotificationLocal ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n    },\n    dismissNotification ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n      rootState.api.backendInteractor.dismissNotification({ id })\n    },\n    updateNotification ({ rootState, commit }, { id, updater }) {\n      commit('updateNotification', { id, updater })\n    },\n    fetchFavsAndRepeats ({ rootState, commit }, id) {\n      Promise.all([\n        rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n        rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n      ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n        commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n        commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n      })\n    },\n    reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('addOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('removeOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    fetchEmojiReactionsBy ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n        emojiReactions => {\n          commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n        }\n      )\n    },\n    fetchFavs ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n        .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    fetchRepeats ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n        .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    search (store, { q, resolve, limit, offset, following }) {\n      return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n        .then((data) => {\n          store.commit('addNewUsers', data.accounts)\n          store.commit('addNewStatuses', { statuses: data.statuses })\n          return data\n        })\n    },\n    setVirtualHeight ({ commit }, { statusId, height }) {\n      commit('setVirtualHeight', { statusId, height })\n    }\n  },\n  mutations\n}\n\nexport default statuses\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n  let stopped = false\n  let timeout = null\n\n  const func = () => {\n    const promise = promiseCall()\n    // something unexpected happened and promiseCall did not\n    // return a promise, abort the loop.\n    if (!(promise && promise.finally)) {\n      console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n      return\n    }\n    promise.finally(() => {\n      if (stopped) return\n      timeout = window.setTimeout(func, interval)\n    })\n  }\n\n  const stopFetcher = () => {\n    stopped = true\n    window.clearTimeout(timeout)\n  }\n\n  timeout = window.setTimeout(func, interval)\n\n  return { stop: stopFetcher }\n}\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n  const ccTimeline = camelCase(timeline)\n\n  store.dispatch('addNewStatuses', {\n    timeline: ccTimeline,\n    userId,\n    statuses,\n    showImmediately,\n    pagination\n  })\n}\n\nconst fetchAndUpdate = ({\n  store,\n  credentials,\n  timeline = 'friends',\n  older = false,\n  showImmediately = false,\n  userId = false,\n  tag = false,\n  until,\n  since\n}) => {\n  const args = { timeline, credentials }\n  const rootState = store.rootState || store.state\n  const { getters } = store\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n  const loggedIn = !!rootState.users.currentUser\n\n  if (older) {\n    args['until'] = until || timelineData.minId\n  } else {\n    if (since === undefined) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n  }\n\n  args['userId'] = userId\n  args['tag'] = tag\n  args['withMuted'] = !hideMutedPosts\n  if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n    args['replyVisibility'] = replyVisibility\n  }\n\n  const numStatusesBeforeFetch = timelineData.statuses.length\n\n  return apiService.fetchTimeline(args)\n    .then(response => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n\n      const { data: statuses, pagination } = response\n      if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n        store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n      }\n      update({ store, statuses, timeline, showImmediately, userId, pagination })\n      return { statuses, pagination }\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'timeline.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const showImmediately = timelineData.visibleStatuses.length === 0\n  timelineData.userId = userId\n  fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n  const boundFetchAndUpdate = () =>\n    fetchAndUpdate({ timeline, credentials, store, userId, tag })\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n  store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n  const args = { credentials }\n  const { getters } = store\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.notifications\n  const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n  const allowFollowingMove = rootState.users.currentUser.allow_following_move\n\n  args['withMuted'] = !hideMutedPosts\n\n  args['withMove'] = !allowFollowingMove\n\n  args['timeline'] = 'notifications'\n  if (older) {\n    if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n      args['until'] = timelineData.minId\n    }\n    return fetchNotifications({ store, args, older })\n  } else {\n    // fetch new notifications\n    if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n      args['since'] = timelineData.maxId\n    } else if (since !== null) {\n      args['since'] = since\n    }\n    const result = fetchNotifications({ store, args, older })\n\n    // If there's any unread notifications, try fetch notifications since\n    // the newest read notification to check if any of the unread notifs\n    // have changed their 'seen' state (marked as read in another session), so\n    // we can update the state in this session to mark them as read as well.\n    // The normal maxId-check does not tell if older notifications have changed\n    const notifications = timelineData.data\n    const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n    const numUnseenNotifs = notifications.length - readNotifsIds.length\n    if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n      args['since'] = Math.max(...readNotifsIds)\n      fetchNotifications({ store, args, older })\n    }\n\n    return result\n  }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n  return apiService.fetchTimeline(args)\n    .then((response) => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n      const notifications = response.data\n      update({ store, notifications, older })\n      return notifications\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'notifications.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ credentials, store }) => {\n  // Initially there's set flag to silence all desktop notifications so\n  // that there won't spam of them when user just opened up the FE we\n  // reset that flag after a while to show new notifications once again.\n  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n  return apiService.fetchFollowRequests({ credentials })\n    .then((requests) => {\n      store.commit('setFollowRequests', requests)\n      store.commit('addNewUsers', requests)\n    }, () => {})\n    .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n  startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n  startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n    return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n  },\n\n  fetchTimeline (args) {\n    return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingNotifications ({ store }) {\n    return notificationsFetcher.startFetching({ store, credentials })\n  },\n\n  fetchNotifications (args) {\n    return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingFollowRequests ({ store }) {\n    return followRequestFetcher.startFetching({ store, credentials })\n  },\n\n  startUserSocket ({ store }) {\n    const serv = store.rootState.instance.server.replace('http', 'ws')\n    const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n    return ProcessedWS({ url, id: 'User' })\n  },\n\n  ...Object.entries(apiService).reduce((acc, [key, func]) => {\n    return {\n      ...acc,\n      [key]: (args) => func({ credentials, ...args })\n    }\n  }, {}),\n\n  verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n  if (clientId && clientSecret) {\n    return Promise.resolve({ clientId, clientSecret })\n  }\n\n  const url = `${instance}/api/v1/apps`\n  const form = new window.FormData()\n\n  form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n  form.append('redirect_uris', REDIRECT_URI)\n  form.append('scopes', 'read write follow push admin')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n    .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n  const data = {\n    response_type: 'code',\n    client_id: clientId,\n    redirect_uri: REDIRECT_URI,\n    scope: 'read write follow push admin'\n  }\n\n  const dataString = reduce(data, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    if (!acc) {\n      return encoded\n    } else {\n      return `${acc}&${encoded}`\n    }\n  }, false)\n\n  // Do the redirect...\n  const url = `${instance}/oauth/authorize?${dataString}`\n\n  window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'password')\n  form.append('username', username)\n  form.append('password', password)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'authorization_code')\n  form.append('code', code)\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  })\n    .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n  const url = `${instance}/oauth/token`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('grant_type', 'client_credentials')\n  form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', app.client_id)\n  form.append('client_secret', app.client_secret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n  const url = `${instance}/oauth/revoke`\n  const form = new window.FormData()\n\n  form.append('client_id', app.clientId)\n  form.append('client_secret', app.clientSecret)\n  form.append('token', token)\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst oauth = {\n  login,\n  getToken,\n  getTokenWithCredentials,\n  getOrCreateApp,\n  verifyOTPCode,\n  verifyRecoveryCode,\n  revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n  const padding = '='.repeat((4 - base64String.length % 4) % 4)\n  const base64 = (base64String + padding)\n    .replace(/-/g, '+')\n    .replace(/_/g, '/')\n\n  const rawData = window.atob(base64)\n  return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n  return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n  return runtime.register()\n    .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n  if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n  if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n  const subscribeOptions = {\n    userVisibleOnly: true,\n    applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n  }\n  return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n  return registration.pushManager.getSubscription()\n    .then((subscribtion) => {\n      if (subscribtion === null) { return }\n      return subscribtion.unsubscribe()\n    })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'DELETE',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    }\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response\n  })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n  return window.fetch('/api/v1/push/subscription/', {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application/json',\n      'Authorization': `Bearer ${token}`\n    },\n    body: JSON.stringify({\n      subscription,\n      data: {\n        alerts: {\n          follow: notificationVisibility.follows,\n          favourite: notificationVisibility.likes,\n          mention: notificationVisibility.mentions,\n          reblog: notificationVisibility.repeats,\n          move: notificationVisibility.moves\n        }\n      }\n    })\n  }).then((response) => {\n    if (!response.ok) throw new Error('Bad status code from server.')\n    return response.json()\n  }).then((responseData) => {\n    if (!responseData.id) throw new Error('Bad response from server.')\n    return responseData\n  })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n  if (isPushSupported()) {\n    getOrCreateServiceWorker()\n      .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n      .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n      .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n  }\n}\n\nexport function unregisterPushNotifications (token) {\n  if (isPushSupported()) {\n    Promise.all([\n      deleteSubscriptionFromBackEnd(token),\n      getOrCreateServiceWorker()\n        .then((registration) => {\n          return unsubscribePush(registration).then((result) => [registration, result])\n        })\n        .then(([registration, unsubResult]) => {\n          if (!unsubResult) {\n            console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n          }\n          return registration.unregister().then((result) => {\n            if (!result) {\n              console.warn('Failed to kill SW')\n            }\n          })\n        })\n    ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n  }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { set } from 'vue'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n  if (!item) { return false }\n  const oldItem = obj[item.id]\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    mergeWith(oldItem, item, mergeArrayLength)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    arr.push(item)\n    set(obj, item.id, item)\n    if (item.screen_name && !item.screen_name.includes('@')) {\n      set(obj, item.screen_name.toLowerCase(), item)\n    }\n    return { item, new: true }\n  }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n  if (isArray(oldValue) && isArray(newValue)) {\n    oldValue.length = newValue.length\n    return mergeWith(oldValue, newValue, mergeArrayLength)\n  }\n}\n\nconst getNotificationPermission = () => {\n  const Notification = window.Notification\n\n  if (!Notification) return Promise.resolve(null)\n  if (Notification.permission === 'default') return Notification.requestPermission()\n  return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.blockUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addBlockId', id)\n      store.commit('removeStatus', { timeline: 'friends', userId: id })\n      store.commit('removeStatus', { timeline: 'public', userId: id })\n      store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n    })\n}\n\nconst unblockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.unblockUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = true\n  store.commit('updateUserRelationship', [predictedRelationship])\n  store.commit('addMuteId', id)\n\n  return store.rootState.api.backendInteractor.muteUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addMuteId', id)\n    })\n}\n\nconst unmuteUser = (store, id) => {\n  const predictedRelationship = store.state.relationships[id] || { id }\n  predictedRelationship.muting = false\n  store.commit('updateUserRelationship', [predictedRelationship])\n\n  return store.rootState.api.backendInteractor.unmuteUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n    })\n}\n\nconst showReblogs = (store, userId) => {\n  return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.muteDomain({ domain })\n    .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n  return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n    .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n  tagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.concat([tag])\n    set(user, 'tags', newTags)\n  },\n  untagUser (state, { user: { id }, tag }) {\n    const user = state.usersObject[id]\n    const tags = user.tags || []\n    const newTags = tags.filter(t => t !== tag)\n    set(user, 'tags', newTags)\n  },\n  updateRight (state, { user: { id }, right, value }) {\n    const user = state.usersObject[id]\n    let newRights = user.rights\n    newRights[right] = value\n    set(user, 'rights', newRights)\n  },\n  updateActivationStatus (state, { user: { id }, deactivated }) {\n    const user = state.usersObject[id]\n    set(user, 'deactivated', deactivated)\n  },\n  setCurrentUser (state, user) {\n    state.lastLoginName = user.screen_name\n    state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n  },\n  clearCurrentUser (state) {\n    state.currentUser = false\n    state.lastLoginName = false\n  },\n  beginLogin (state) {\n    state.loggingIn = true\n  },\n  endLogin (state) {\n    state.loggingIn = false\n  },\n  saveFriendIds (state, { id, friendIds }) {\n    const user = state.usersObject[id]\n    user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n  },\n  saveFollowerIds (state, { id, followerIds }) {\n    const user = state.usersObject[id]\n    user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n  },\n  // Because frontend doesn't have a reason to keep these stuff in memory\n  // outside of viewing someones user profile.\n  clearFriends (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      set(user, 'friendIds', [])\n    }\n  },\n  clearFollowers (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      set(user, 'followerIds', [])\n    }\n  },\n  addNewUsers (state, users) {\n    each(users, (user) => {\n      if (user.relationship) {\n        set(state.relationships, user.relationship.id, user.relationship)\n      }\n      mergeOrAdd(state.users, state.usersObject, user)\n    })\n  },\n  updateUserRelationship (state, relationships) {\n    relationships.forEach((relationship) => {\n      set(state.relationships, relationship.id, relationship)\n    })\n  },\n  saveBlockIds (state, blockIds) {\n    state.currentUser.blockIds = blockIds\n  },\n  addBlockId (state, blockId) {\n    if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n      state.currentUser.blockIds.push(blockId)\n    }\n  },\n  saveMuteIds (state, muteIds) {\n    state.currentUser.muteIds = muteIds\n  },\n  addMuteId (state, muteId) {\n    if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n      state.currentUser.muteIds.push(muteId)\n    }\n  },\n  saveDomainMutes (state, domainMutes) {\n    state.currentUser.domainMutes = domainMutes\n  },\n  addDomainMute (state, domain) {\n    if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n      state.currentUser.domainMutes.push(domain)\n    }\n  },\n  removeDomainMute (state, domain) {\n    const index = state.currentUser.domainMutes.indexOf(domain)\n    if (index !== -1) {\n      state.currentUser.domainMutes.splice(index, 1)\n    }\n  },\n  setPinnedToUser (state, status) {\n    const user = state.usersObject[status.user.id]\n    user.pinnedStatusIds = user.pinnedStatusIds || []\n    const index = user.pinnedStatusIds.indexOf(status.id)\n\n    if (status.pinned && index === -1) {\n      user.pinnedStatusIds.push(status.id)\n    } else if (!status.pinned && index !== -1) {\n      user.pinnedStatusIds.splice(index, 1)\n    }\n  },\n  setUserForStatus (state, status) {\n    status.user = state.usersObject[status.user.id]\n  },\n  setUserForNotification (state, notification) {\n    if (notification.type !== 'follow') {\n      notification.action.user = state.usersObject[notification.action.user.id]\n    }\n    notification.from_profile = state.usersObject[notification.from_profile.id]\n  },\n  setColor (state, { user: { id }, highlighted }) {\n    const user = state.usersObject[id]\n    set(user, 'highlight', highlighted)\n  },\n  signUpPending (state) {\n    state.signUpPending = true\n    state.signUpErrors = []\n  },\n  signUpSuccess (state) {\n    state.signUpPending = false\n  },\n  signUpFailure (state, errors) {\n    state.signUpPending = false\n    state.signUpErrors = errors\n  }\n}\n\nexport const getters = {\n  findUser: state => query => {\n    const result = state.usersObject[query]\n    // In case it's a screen_name, we can try searching case-insensitive\n    if (!result && typeof query === 'string') {\n      return state.usersObject[query.toLowerCase()]\n    }\n    return result\n  },\n  findUserByUrl: state => query => {\n    return state.users\n      .find(u => u.statusnet_profile_url &&\n            u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\n  },\n  relationship: state => id => {\n    const rel = id && state.relationships[id]\n    return rel || { id, loading: true }\n  }\n}\n\nexport const defaultState = {\n  loggingIn: false,\n  lastLoginName: false,\n  currentUser: false,\n  users: [],\n  usersObject: {},\n  signUpPending: false,\n  signUpErrors: [],\n  relationships: {}\n}\n\nconst users = {\n  state: defaultState,\n  mutations,\n  getters,\n  actions: {\n    fetchUserIfMissing (store, id) {\n      if (!store.getters.findUser(id)) {\n        store.dispatch('fetchUser', id)\n      }\n    },\n    fetchUser (store, id) {\n      return store.rootState.api.backendInteractor.fetchUser({ id })\n        .then((user) => {\n          store.commit('addNewUsers', [user])\n          return user\n        })\n    },\n    fetchUserRelationship (store, id) {\n      if (store.state.currentUser) {\n        store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n          .then((relationships) => store.commit('updateUserRelationship', relationships))\n      }\n    },\n    fetchBlocks (store) {\n      return store.rootState.api.backendInteractor.fetchBlocks()\n        .then((blocks) => {\n          store.commit('saveBlockIds', map(blocks, 'id'))\n          store.commit('addNewUsers', blocks)\n          return blocks\n        })\n    },\n    blockUser (store, id) {\n      return blockUser(store, id)\n    },\n    unblockUser (store, id) {\n      return unblockUser(store, id)\n    },\n    blockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => blockUser(store, id)))\n    },\n    unblockUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unblockUser(store, id)))\n    },\n    fetchMutes (store) {\n      return store.rootState.api.backendInteractor.fetchMutes()\n        .then((mutes) => {\n          store.commit('saveMuteIds', map(mutes, 'id'))\n          store.commit('addNewUsers', mutes)\n          return mutes\n        })\n    },\n    muteUser (store, id) {\n      return muteUser(store, id)\n    },\n    unmuteUser (store, id) {\n      return unmuteUser(store, id)\n    },\n    hideReblogs (store, id) {\n      return hideReblogs(store, id)\n    },\n    showReblogs (store, id) {\n      return showReblogs(store, id)\n    },\n    muteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => muteUser(store, id)))\n    },\n    unmuteUsers (store, ids = []) {\n      return Promise.all(ids.map(id => unmuteUser(store, id)))\n    },\n    fetchDomainMutes (store) {\n      return store.rootState.api.backendInteractor.fetchDomainMutes()\n        .then((domainMutes) => {\n          store.commit('saveDomainMutes', domainMutes)\n          return domainMutes\n        })\n    },\n    muteDomain (store, domain) {\n      return muteDomain(store, domain)\n    },\n    unmuteDomain (store, domain) {\n      return unmuteDomain(store, domain)\n    },\n    muteDomains (store, domains = []) {\n      return Promise.all(domains.map(domain => muteDomain(store, domain)))\n    },\n    unmuteDomains (store, domain = []) {\n      return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n    },\n    fetchFriends ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.friendIds)\n      return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n        .then((friends) => {\n          commit('addNewUsers', friends)\n          commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n          return friends\n        })\n    },\n    fetchFollowers ({ rootState, commit }, id) {\n      const user = rootState.users.usersObject[id]\n      const maxId = last(user.followerIds)\n      return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n        .then((followers) => {\n          commit('addNewUsers', followers)\n          commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n          return followers\n        })\n    },\n    clearFriends ({ commit }, userId) {\n      commit('clearFriends', userId)\n    },\n    clearFollowers ({ commit }, userId) {\n      commit('clearFollowers', userId)\n    },\n    subscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.subscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    unsubscribeUser ({ rootState, commit }, id) {\n      return rootState.api.backendInteractor.unsubscribeUser({ id })\n        .then((relationship) => commit('updateUserRelationship', [relationship]))\n    },\n    toggleActivationStatus ({ rootState, commit }, { user }) {\n      const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n      api({ user })\n        .then(({ deactivated }) => commit('updateActivationStatus', { user, deactivated }))\n    },\n    registerPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n      const vapidPublicKey = store.rootState.instance.vapidPublicKey\n      const isEnabled = store.rootState.config.webPushNotifications\n      const notificationVisibility = store.rootState.config.notificationVisibility\n\n      registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n    },\n    unregisterPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n\n      unregisterPushNotifications(token)\n    },\n    addNewUsers ({ commit }, users) {\n      commit('addNewUsers', users)\n    },\n    addNewStatuses (store, { statuses }) {\n      const users = map(statuses, 'user')\n      const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', retweetedUsers)\n\n      each(statuses, (status) => {\n        // Reconnect users to statuses\n        store.commit('setUserForStatus', status)\n        // Set pinned statuses to user\n        store.commit('setPinnedToUser', status)\n      })\n      each(compact(map(statuses, 'retweeted_status')), (status) => {\n        // Reconnect users to retweets\n        store.commit('setUserForStatus', status)\n        // Set pinned retweets to user\n        store.commit('setPinnedToUser', status)\n      })\n    },\n    addNewNotifications (store, { notifications }) {\n      const users = map(notifications, 'from_profile')\n      const targetUsers = map(notifications, 'target').filter(_ => _)\n      const notificationIds = notifications.map(_ => _.id)\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', targetUsers)\n\n      const notificationsObject = store.rootState.statuses.notifications.idStore\n      const relevantNotifications = Object.entries(notificationsObject)\n        .filter(([k, val]) => notificationIds.includes(k))\n        .map(([k, val]) => val)\n\n      // Reconnect users to notifications\n      each(relevantNotifications, (notification) => {\n        store.commit('setUserForNotification', notification)\n      })\n    },\n    searchUsers ({ rootState, commit }, { query }) {\n      return rootState.api.backendInteractor.searchUsers({ query })\n        .then((users) => {\n          commit('addNewUsers', users)\n          return users\n        })\n    },\n    async signUp (store, userInfo) {\n      store.commit('signUpPending')\n\n      let rootState = store.rootState\n\n      try {\n        let data = await rootState.api.backendInteractor.register(\n          { params: { ...userInfo } }\n        )\n        store.commit('signUpSuccess')\n        store.commit('setToken', data.access_token)\n        store.dispatch('loginUser', data.access_token)\n      } catch (e) {\n        let errors = e.message\n        store.commit('signUpFailure', errors)\n        throw e\n      }\n    },\n    async getCaptcha (store) {\n      return store.rootState.api.backendInteractor.getCaptcha()\n    },\n\n    logout (store) {\n      const { oauth, instance } = store.rootState\n\n      const data = {\n        ...oauth,\n        commit: store.commit,\n        instance: instance.server\n      }\n\n      return oauthApi.getOrCreateApp(data)\n        .then((app) => {\n          const params = {\n            app,\n            instance: data.instance,\n            token: oauth.userToken\n          }\n\n          return oauthApi.revokeToken(params)\n        })\n        .then(() => {\n          store.commit('clearCurrentUser')\n          store.dispatch('disconnectFromSocket')\n          store.commit('clearToken')\n          store.dispatch('stopFetchingTimeline', 'friends')\n          store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n          store.dispatch('stopFetchingNotifications')\n          store.dispatch('stopFetchingFollowRequests')\n          store.commit('clearNotifications')\n          store.commit('resetStatuses')\n          store.dispatch('resetChats')\n          store.dispatch('setLastTimeline', 'public-timeline')\n        })\n    },\n    loginUser (store, accessToken) {\n      return new Promise((resolve, reject) => {\n        const commit = store.commit\n        commit('beginLogin')\n        store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n          .then((data) => {\n            if (!data.error) {\n              const user = data\n              // user.credentials = userCredentials\n              user.credentials = accessToken\n              user.blockIds = []\n              user.muteIds = []\n              user.domainMutes = []\n              commit('setCurrentUser', user)\n              commit('addNewUsers', [user])\n\n              store.dispatch('fetchEmoji')\n\n              getNotificationPermission()\n                .then(permission => commit('setNotificationPermission', permission))\n\n              // Set our new backend interactor\n              commit('setBackendInteractor', backendInteractorService(accessToken))\n\n              if (user.token) {\n                store.dispatch('setWsToken', user.token)\n\n                // Initialize the shout socket.\n                store.dispatch('initializeSocket')\n              }\n\n              const startPolling = () => {\n                // Start getting fresh posts.\n                store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n                // Start fetching notifications\n                store.dispatch('startFetchingNotifications')\n\n                // Start fetching chats\n                store.dispatch('startFetchingChats')\n              }\n\n              if (store.getters.mergedConfig.useStreamingApi) {\n                store.dispatch('fetchTimeline', 'friends', { since: null })\n                store.dispatch('fetchNotifications', { since: null })\n                store.dispatch('enableMastoSockets', true).catch((error) => {\n                  console.error('Failed initializing MastoAPI Streaming socket', error)\n                }).then(() => {\n                  store.dispatch('fetchChats', { latest: true })\n                  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n                })\n              } else {\n                startPolling()\n              }\n\n              // Get user mutes\n              store.dispatch('fetchMutes')\n\n              // Fetch our friends\n              store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n                .then((friends) => commit('addNewUsers', friends))\n            } else {\n              const response = data.error\n              // Authentication failed\n              commit('endLogin')\n              if (response.status === 401) {\n                reject(new Error('Wrong username or password'))\n              } else {\n                reject(new Error('An error occurred, please try again'))\n              }\n            }\n            commit('endLogin')\n            resolve()\n          })\n          .catch((error) => {\n            console.log(error)\n            commit('endLogin')\n            reject(new Error('Failed to connect to server, try again'))\n          })\n      })\n    }\n  }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n  if (!chat.lastMessage) return\n  if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n  if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n  const opts = {\n    tag: chat.lastMessage.id,\n    title: chat.account.name,\n    icon: chat.account.profile_image_url,\n    body: chat.lastMessage.content\n  }\n\n  if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n    opts.image = chat.lastMessage.attachment.preview_url\n  }\n\n  showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n  const fakeMessage = {\n    content,\n    chat_id: chatId,\n    created_at: new Date(),\n    id: `${new Date().getTime()}`,\n    attachments: attachments,\n    account_id: userId,\n    idempotency_key: idempotencyKey,\n    emojis: [],\n    pending: true,\n    isNormalized: true\n  }\n\n  if (attachments[0]) {\n    fakeMessage.attachment = attachments[0]\n  }\n\n  return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n  state: {\n    retryMultiplier: 1,\n    backendInteractor: backendInteractorService(),\n    fetchers: {},\n    socket: null,\n    mastoUserSocket: null,\n    mastoUserSocketStatus: null,\n    followRequests: []\n  },\n  mutations: {\n    setBackendInteractor (state, backendInteractor) {\n      state.backendInteractor = backendInteractor\n    },\n    addFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName] = fetcher\n    },\n    removeFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName].stop()\n      delete state.fetchers[fetcherName]\n    },\n    setWsToken (state, token) {\n      state.wsToken = token\n    },\n    setSocket (state, socket) {\n      state.socket = socket\n    },\n    setFollowRequests (state, value) {\n      state.followRequests = value\n    },\n    setMastoUserSocketStatus (state, value) {\n      state.mastoUserSocketStatus = value\n    },\n    incrementRetryMultiplier (state) {\n      state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n    },\n    resetRetryMultiplier (state) {\n      state.retryMultiplier = 1\n    }\n  },\n  actions: {\n    /**\n     * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n     *\n     * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n     */\n    enableMastoSockets (store, initial) {\n      const { state, dispatch, commit } = store\n      // Do not initialize unless nonexistent or closed\n      if (\n        state.mastoUserSocket &&\n          ![\n            WebSocket.CLOSED,\n            WebSocket.CLOSING\n          ].includes(state.mastoUserSocket.getState())\n      ) {\n        return\n      }\n      if (initial) {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n      } else {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n      }\n      return dispatch('startMastoUserSocket')\n    },\n    disableMastoSockets (store) {\n      const { state, dispatch, commit } = store\n      if (!state.mastoUserSocket) return\n      commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n      return dispatch('stopMastoUserSocket')\n    },\n\n    // MastoAPI 'User' sockets\n    startMastoUserSocket (store) {\n      return new Promise((resolve, reject) => {\n        try {\n          const { state, commit, dispatch, rootState } = store\n          const timelineData = rootState.statuses.timelines.friends\n          state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n          state.mastoUserSocket.addEventListener(\n            'message',\n            ({ detail: message }) => {\n              if (!message) return // pings\n              if (message.event === 'notification') {\n                dispatch('addNewNotifications', {\n                  notifications: [message.notification],\n                  older: false\n                })\n              } else if (message.event === 'update') {\n                dispatch('addNewStatuses', {\n                  statuses: [message.status],\n                  userId: false,\n                  showImmediately: timelineData.visibleStatuses.length === 0,\n                  timeline: 'friends'\n                })\n              } else if (message.event === 'delete') {\n                dispatch('deleteStatusById', message.id)\n              } else if (message.event === 'pleroma:chat_update') {\n                // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n                // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n                // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n                // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n                setTimeout(() => {\n                  dispatch('addChatMessages', {\n                    chatId: message.chatUpdate.id,\n                    messages: [message.chatUpdate.lastMessage]\n                  })\n                  dispatch('updateChat', { chat: message.chatUpdate })\n                  maybeShowChatNotification(store, message.chatUpdate)\n                }, 100)\n              }\n            }\n          )\n          state.mastoUserSocket.addEventListener('open', () => {\n            // Do not show notification when we just opened up the page\n            if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n              dispatch('pushGlobalNotice', {\n                level: 'success',\n                messageKey: 'timeline.socket_reconnected',\n                timeout: 5000\n              })\n            }\n            // Stop polling if we were errored or disabled\n            if (new Set([\n              WSConnectionStatus.ERROR,\n              WSConnectionStatus.DISABLED\n            ]).has(state.mastoUserSocketStatus)) {\n              dispatch('stopFetchingTimeline', { timeline: 'friends' })\n              dispatch('stopFetchingNotifications')\n              dispatch('stopFetchingChats')\n            }\n            commit('resetRetryMultiplier')\n            commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n          })\n          state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n            console.error('Error in MastoAPI websocket:', error)\n            // TODO is this needed?\n            dispatch('clearOpenedChats')\n          })\n          state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n            const ignoreCodes = new Set([\n              1000, // Normal (intended) closure\n              1001 // Going away\n            ])\n            const { code } = closeEvent\n            if (ignoreCodes.has(code)) {\n              console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n              commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n            } else {\n              console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n              setTimeout(() => {\n                dispatch('startMastoUserSocket')\n              }, retryTimeout(state.retryMultiplier))\n              commit('incrementRetryMultiplier')\n              if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n                dispatch('startFetchingTimeline', { timeline: 'friends' })\n                dispatch('startFetchingNotifications')\n                dispatch('startFetchingChats')\n                dispatch('pushGlobalNotice', {\n                  level: 'error',\n                  messageKey: 'timeline.socket_broke',\n                  messageArgs: [code],\n                  timeout: 5000\n                })\n              }\n              commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n            }\n            dispatch('clearOpenedChats')\n          })\n          resolve()\n        } catch (e) {\n          reject(e)\n        }\n      })\n    },\n    stopMastoUserSocket ({ state, dispatch }) {\n      dispatch('startFetchingTimeline', { timeline: 'friends' })\n      dispatch('startFetchingNotifications')\n      dispatch('startFetchingChats')\n      state.mastoUserSocket.close()\n    },\n\n    // Timelines\n    startFetchingTimeline (store, {\n      timeline = 'friends',\n      tag = false,\n      userId = false\n    }) {\n      if (store.state.fetchers[timeline]) return\n\n      const fetcher = store.state.backendInteractor.startFetchingTimeline({\n        timeline, store, userId, tag\n      })\n      store.commit('addFetcher', { fetcherName: timeline, fetcher })\n    },\n    stopFetchingTimeline (store, timeline) {\n      const fetcher = store.state.fetchers[timeline]\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n    },\n    fetchTimeline (store, timeline, { ...rest }) {\n      store.state.backendInteractor.fetchTimeline({\n        store,\n        timeline,\n        ...rest\n      })\n    },\n\n    // Notifications\n    startFetchingNotifications (store) {\n      if (store.state.fetchers.notifications) return\n      const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n      store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    stopFetchingNotifications (store) {\n      const fetcher = store.state.fetchers.notifications\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    fetchNotifications (store, { ...rest }) {\n      store.state.backendInteractor.fetchNotifications({\n        store,\n        ...rest\n      })\n    },\n\n    // Follow requests\n    startFetchingFollowRequests (store) {\n      if (store.state.fetchers['followRequests']) return\n      const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n      store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    stopFetchingFollowRequests (store) {\n      const fetcher = store.state.fetchers.followRequests\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    removeFollowRequest (store, request) {\n      let requests = store.state.followRequests.filter((it) => it !== request)\n      store.commit('setFollowRequests', requests)\n    },\n\n    // Pleroma websocket\n    setWsToken (store, token) {\n      store.commit('setWsToken', token)\n    },\n    initializeSocket ({ dispatch, commit, state, rootState }) {\n      // Set up websocket connection\n      const token = state.wsToken\n      if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n        const socket = new Socket('/socket', { params: { token } })\n        socket.connect()\n\n        commit('setSocket', socket)\n        dispatch('initializeShout', socket)\n      }\n    },\n    disconnectFromSocket ({ commit, state }) {\n      state.socket && state.socket.disconnect()\n      commit('setSocket', null)\n    }\n  }\n}\n\nexport default api\n","const shout = {\n  state: {\n    messages: [],\n    channel: { state: '' }\n  },\n  mutations: {\n    setChannel (state, channel) {\n      state.channel = channel\n    },\n    addMessage (state, message) {\n      state.messages.push(message)\n      state.messages = state.messages.slice(-19, 20)\n    },\n    setMessages (state, messages) {\n      state.messages = messages.slice(-19, 20)\n    }\n  },\n  actions: {\n    initializeShout (store, socket) {\n      const channel = socket.channel('chat:public')\n      channel.on('new_msg', (msg) => {\n        store.commit('addMessage', msg)\n      })\n      channel.on('messages', ({ messages }) => {\n        store.commit('setMessages', messages)\n      })\n      channel.join()\n      store.commit('setChannel', channel)\n    }\n  }\n}\n\nexport default shout\n","import { delete as del } from 'vue'\n\nconst oauth = {\n  state: {\n    clientId: false,\n    clientSecret: false,\n    /* App token is authentication for app without any user, used mostly for\n     * MastoAPI's registration of new users, stored so that we can fall back to\n     * it on logout\n     */\n    appToken: false,\n    /* User token is authentication for app with user, this is for every calls\n     * that need authorized user to be successful (i.e. posting, liking etc)\n     */\n    userToken: false\n  },\n  mutations: {\n    setClientData (state, { clientId, clientSecret }) {\n      state.clientId = clientId\n      state.clientSecret = clientSecret\n    },\n    setAppToken (state, token) {\n      state.appToken = token\n    },\n    setToken (state, token) {\n      state.userToken = token\n    },\n    clearToken (state) {\n      state.userToken = false\n      // state.token is userToken with older name, coming from persistent state\n      // let's clear it as well, since it is being used as a fallback of state.userToken\n      del(state, 'token')\n    }\n  },\n  getters: {\n    getToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token || state.appToken\n    },\n    getUserToken: state => () => {\n      // state.token is userToken with older name, coming from persistent state\n      // added here for smoother transition, otherwise user will be logged out\n      return state.userToken || state.token\n    }\n  }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n  settings: {},\n  strategy: PASSWORD_STRATEGY,\n  initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n  state.strategy = state.initStrategy\n  state.settings = {}\n}\n\n// getters\nconst getters = {\n  settings: (state, getters) => {\n    return state.settings\n  },\n  requiredPassword: (state, getters, rootState) => {\n    return state.strategy === PASSWORD_STRATEGY\n  },\n  requiredToken: (state, getters, rootState) => {\n    return state.strategy === TOKEN_STRATEGY\n  },\n  requiredTOTP: (state, getters, rootState) => {\n    return state.strategy === TOTP_STRATEGY\n  },\n  requiredRecovery: (state, getters, rootState) => {\n    return state.strategy === RECOVERY_STRATEGY\n  }\n}\n\n// mutations\nconst mutations = {\n  setInitialStrategy (state, strategy) {\n    if (strategy) {\n      state.initStrategy = strategy\n      state.strategy = strategy\n    }\n  },\n  requirePassword (state) {\n    state.strategy = PASSWORD_STRATEGY\n  },\n  requireToken (state) {\n    state.strategy = TOKEN_STRATEGY\n  },\n  requireMFA (state, { settings }) {\n    state.settings = settings\n    state.strategy = TOTP_STRATEGY // default strategy of MFA\n  },\n  requireRecovery (state) {\n    state.strategy = RECOVERY_STRATEGY\n  },\n  requireTOTP (state) {\n    state.strategy = TOTP_STRATEGY\n  },\n  abortMFA (state) {\n    resetState(state)\n  }\n}\n\n// actions\nconst actions = {\n  // eslint-disable-next-line camelcase\n  async login ({ state, dispatch, commit }, { access_token }) {\n    commit('setToken', access_token, { root: true })\n    await dispatch('loginUser', access_token, { root: true })\n    resetState(state)\n  }\n}\n\nexport default {\n  namespaced: true,\n  state,\n  getters,\n  mutations,\n  actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\n\nconst mediaViewer = {\n  state: {\n    media: [],\n    currentIndex: 0,\n    activated: false\n  },\n  mutations: {\n    setMedia (state, media) {\n      state.media = media\n    },\n    setCurrent (state, index) {\n      state.activated = true\n      state.currentIndex = index\n    },\n    close (state) {\n      state.activated = false\n    }\n  },\n  actions: {\n    setMedia ({ commit }, attachments) {\n      const media = attachments.filter(attachment => {\n        const type = fileTypeService.fileType(attachment.mimetype)\n        return type === 'image' || type === 'video' || type === 'audio'\n      })\n      commit('setMedia', media)\n    },\n    setCurrent ({ commit, state }, current) {\n      const index = state.media.indexOf(current)\n      commit('setCurrent', index || 0)\n    },\n    closeMediaViewer ({ commit }) {\n      commit('close')\n    }\n  }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n  state: {\n    tokens: []\n  },\n  actions: {\n    fetchTokens ({ rootState, commit }) {\n      rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n        commit('swapTokens', tokens)\n      })\n    },\n    revokeToken ({ rootState, commit, state }, id) {\n      rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n        if (response.status === 201) {\n          commit('swapTokens', state.tokens.filter(token => token.id !== id))\n        }\n      })\n    }\n  },\n  mutations: {\n    swapTokens (state, tokens) {\n      state.tokens = tokens\n    }\n  }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n  state: {\n    userId: null,\n    statuses: [],\n    preTickedIds: [],\n    modalActivated: false\n  },\n  mutations: {\n    openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n      state.userId = userId\n      state.statuses = statuses\n      state.preTickedIds = preTickedIds\n      state.modalActivated = true\n    },\n    closeUserReportingModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n      const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n      const preTickedIds = statusIds\n      const statuses = preTickedStatuses.concat(\n        filter(rootState.statuses.allStatuses,\n          status => status.user.id === userId && !preTickedIds.includes(status.id)\n        )\n      )\n      commit('openUserReportingModal', { userId, statuses, preTickedIds })\n    },\n    closeUserReportingModal ({ commit }) {\n      commit('closeUserReportingModal')\n    }\n  }\n}\n\nexport default reports\n","import { merge } from 'lodash'\nimport { set } from 'vue'\n\nconst polls = {\n  state: {\n    // Contains key = id, value = number of trackers for this poll\n    trackedPolls: {},\n    pollsObject: {}\n  },\n  mutations: {\n    mergeOrAddPoll (state, poll) {\n      const existingPoll = state.pollsObject[poll.id]\n      // Make expired-state change trigger re-renders properly\n      poll.expired = Date.now() > Date.parse(poll.expires_at)\n      if (existingPoll) {\n        set(state.pollsObject, poll.id, merge(existingPoll, poll))\n      } else {\n        set(state.pollsObject, poll.id, poll)\n      }\n    },\n    trackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        set(state.trackedPolls, pollId, currentValue + 1)\n      } else {\n        set(state.trackedPolls, pollId, 1)\n      }\n    },\n    untrackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        set(state.trackedPolls, pollId, currentValue - 1)\n      } else {\n        set(state.trackedPolls, pollId, 0)\n      }\n    }\n  },\n  actions: {\n    mergeOrAddPoll ({ commit }, poll) {\n      commit('mergeOrAddPoll', poll)\n    },\n    updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n      rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n        setTimeout(() => {\n          if (rootState.polls.trackedPolls[pollId]) {\n            dispatch('updateTrackedPoll', pollId)\n          }\n        }, 30 * 1000)\n        commit('mergeOrAddPoll', poll)\n      })\n    },\n    trackPoll ({ rootState, commit, dispatch }, pollId) {\n      if (!rootState.polls.trackedPolls[pollId]) {\n        setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n      }\n      commit('trackPoll', pollId)\n    },\n    untrackPoll ({ commit }, pollId) {\n      commit('untrackPoll', pollId)\n    },\n    votePoll ({ rootState, commit }, { id, pollId, choices }) {\n      return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n        commit('mergeOrAddPoll', poll)\n        return poll\n      })\n    }\n  }\n}\n\nexport default polls\n","const postStatus = {\n  state: {\n    params: null,\n    modalActivated: false\n  },\n  mutations: {\n    openPostStatusModal (state, params) {\n      state.params = params\n      state.modalActivated = true\n    },\n    closePostStatusModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openPostStatusModal ({ commit }, params) {\n      commit('openPostStatusModal', params)\n    },\n    closePostStatusModal ({ commit }) {\n      commit('closePostStatusModal')\n    }\n  }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n  return {\n    idIndex: {},\n    idempotencyKeyIndex: {},\n    messages: [],\n    newMessageCount: 0,\n    lastSeenMessageId: '0',\n    chatId: chatId,\n    minId: undefined,\n    maxId: undefined\n  }\n}\n\nconst clear = (storage) => {\n  const failedMessageIds = []\n\n  for (const message of storage.messages) {\n    if (message.error) {\n      failedMessageIds.push(message.id)\n    } else {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n\n  storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = '0'\n  storage.minId = undefined\n  storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n  if (!storage) { return }\n  storage.messages = storage.messages.filter(m => m.id !== messageId)\n  delete storage.idIndex[messageId]\n\n  if (storage.maxId === messageId) {\n    const lastMessage = _.maxBy(storage.messages, 'id')\n    storage.maxId = lastMessage.id\n  }\n\n  if (storage.minId === messageId) {\n    const firstMessage = _.minBy(storage.messages, 'id')\n    storage.minId = firstMessage.id\n  }\n}\n\nconst cullOlderMessages = (storage) => {\n  const maxIndex = storage.messages.length\n  const minIndex = maxIndex - 50\n  if (maxIndex <= 50) return\n\n  storage.messages = _.sortBy(storage.messages, ['id'])\n  storage.minId = storage.messages[minIndex].id\n  for (const message of storage.messages) {\n    if (message.id < storage.minId) {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n  storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n  if (!storage) { return }\n  const fakeMessage = storage.idIndex[fakeId]\n  if (fakeMessage) {\n    fakeMessage.error = true\n    fakeMessage.pending = false\n    if (!isRetry) {\n      // Ensure the failed message doesn't stay at the bottom of the list.\n      const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n      if (lastPersistedMessage) {\n        const oldId = fakeMessage.id\n        fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[oldId]\n      }\n    }\n  }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n  if (!storage) { return }\n  for (let i = 0; i < newMessages.length; i++) {\n    const message = newMessages[i]\n\n    // sanity check\n    if (message.chat_id !== storage.chatId) { return }\n\n    if (message.fakeId) {\n      const fakeMessage = storage.idIndex[message.fakeId]\n      if (fakeMessage) {\n        // In case the same id exists (chat update before POST response)\n        // make sure to remove the older duplicate message.\n        if (storage.idIndex[message.id]) {\n          delete storage.idIndex[message.id]\n          storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n        }\n        Object.assign(fakeMessage, message, { error: false })\n        delete fakeMessage['fakeId']\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[message.fakeId]\n\n        return\n      }\n    }\n\n    if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n      storage.minId = message.id\n    }\n\n    if (!storage.maxId || message.id > storage.maxId) {\n      if (updateMaxId) {\n        storage.maxId = message.id\n      }\n    }\n\n    if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n      if (storage.lastSeenMessageId < message.id) {\n        storage.newMessageCount++\n      }\n      storage.idIndex[message.id] = message\n      storage.messages.push(storage.idIndex[message.id])\n      storage.idempotencyKeyIndex[message.idempotency_key] = true\n    }\n  }\n}\n\nconst isConfirmation = (storage, message) => {\n  if (!message.idempotency_key) return\n  return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n  if (!storage) { return }\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n  if (!storage) { return [] }\n\n  const result = []\n  const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n  const firstMessage = messages[0]\n  let previousMessage = messages[messages.length - 1]\n  let currentMessageChainId\n\n  if (firstMessage) {\n    const date = new Date(firstMessage.created_at)\n    date.setHours(0, 0, 0, 0)\n    result.push({\n      type: 'date',\n      date,\n      id: date.getTime().toString()\n    })\n  }\n\n  let afterDate = false\n\n  for (let i = 0; i < messages.length; i++) {\n    const message = messages[i]\n    const nextMessage = messages[i + 1]\n\n    const date = new Date(message.created_at)\n    date.setHours(0, 0, 0, 0)\n\n    // insert date separator and start a new message chain\n    if (previousMessage && previousMessage.date < date) {\n      result.push({\n        type: 'date',\n        date,\n        id: date.getTime().toString()\n      })\n\n      previousMessage['isTail'] = true\n      currentMessageChainId = undefined\n      afterDate = true\n    }\n\n    const object = {\n      type: 'message',\n      data: message,\n      date,\n      id: message.id,\n      messageChainId: currentMessageChainId\n    }\n\n    // end a message chian\n    if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n      object['isTail'] = true\n      currentMessageChainId = undefined\n    }\n\n    // start a new message chain\n    if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n      currentMessageChainId = _.uniqueId()\n      object['isHead'] = true\n      object['messageChainId'] = currentMessageChainId\n    }\n\n    result.push(object)\n    previousMessage = object\n    afterDate = false\n  }\n\n  return result\n}\n\nconst ChatService = {\n  add,\n  empty,\n  getView,\n  deleteMessage,\n  cullOlderMessages,\n  resetNewMessageCount,\n  clear,\n  handleMessageError\n}\n\nexport default ChatService\n","import Vue from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n  data: [],\n  idStore: {}\n})\n\nconst defaultState = {\n  chatList: emptyChatList(),\n  chatListFetcher: null,\n  openedChats: {},\n  openedChatMessageServices: {},\n  fetcher: undefined,\n  currentChatId: null,\n  lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n  return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n  return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n  return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n  state: { ...defaultState },\n  getters: {\n    currentChat: state => state.openedChats[state.currentChatId],\n    currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n    findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n    sortedChatList,\n    unreadChatCount\n  },\n  actions: {\n    // Chat list\n    startFetchingChats ({ dispatch, commit }) {\n      const fetcher = () => dispatch('fetchChats', { latest: true })\n      fetcher()\n      commit('setChatListFetcher', {\n        fetcher: () => promiseInterval(fetcher, 5000)\n      })\n    },\n    stopFetchingChats ({ commit }) {\n      commit('setChatListFetcher', { fetcher: undefined })\n    },\n    fetchChats ({ dispatch, rootState, commit }, params = {}) {\n      return rootState.api.backendInteractor.chats()\n        .then(({ chats }) => {\n          dispatch('addNewChats', { chats })\n          return chats\n        })\n    },\n    addNewChats (store, { chats }) {\n      const { commit, dispatch, rootGetters } = store\n      const newChatMessageSideEffects = (chat) => {\n        maybeShowChatNotification(store, chat)\n      }\n      commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n    },\n    updateChat ({ commit }, { chat }) {\n      commit('updateChat', { chat })\n    },\n\n    // Opened Chats\n    startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n      dispatch('setCurrentChatFetcher', { fetcher })\n    },\n    setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n      commit('setCurrentChatFetcher', { fetcher })\n    },\n    addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n      commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n      dispatch('addNewUsers', [chat.account])\n    },\n    addChatMessages ({ commit }, value) {\n      commit('addChatMessages', { commit, ...value })\n    },\n    resetChatNewMessageCount ({ commit }, value) {\n      commit('resetChatNewMessageCount', value)\n    },\n    clearCurrentChat ({ rootState, commit, dispatch }, value) {\n      commit('setCurrentChatId', { chatId: undefined })\n      commit('setCurrentChatFetcher', { fetcher: undefined })\n    },\n    readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n      const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n      dispatch('resetChatNewMessageCount')\n      commit('readChat', { id, lastReadId })\n\n      if (isNewMessage) {\n        rootState.api.backendInteractor.readChat({ id, lastReadId })\n      }\n    },\n    deleteChatMessage ({ rootState, commit }, value) {\n      rootState.api.backendInteractor.deleteChatMessage(value)\n      commit('deleteChatMessage', { commit, ...value })\n    },\n    resetChats ({ commit, dispatch }) {\n      dispatch('clearCurrentChat')\n      commit('resetChats', { commit })\n    },\n    clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n      commit('clearOpenedChats', { commit })\n    },\n    handleMessageError ({ commit }, value) {\n      commit('handleMessageError', { commit, ...value })\n    },\n    cullOlderMessages ({ commit }, chatId) {\n      commit('cullOlderMessages', chatId)\n    }\n  },\n  mutations: {\n    setChatListFetcher (state, { commit, fetcher }) {\n      const prevFetcher = state.chatListFetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.chatListFetcher = fetcher && fetcher()\n    },\n    setCurrentChatFetcher (state, { fetcher }) {\n      const prevFetcher = state.fetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.fetcher = fetcher && fetcher()\n    },\n    addOpenedChat (state, { _dispatch, chat }) {\n      state.currentChatId = chat.id\n      Vue.set(state.openedChats, chat.id, chat)\n\n      if (!state.openedChatMessageServices[chat.id]) {\n        Vue.set(state.openedChatMessageServices, chat.id, chatService.empty(chat.id))\n      }\n    },\n    setCurrentChatId (state, { chatId }) {\n      state.currentChatId = chatId\n    },\n    addNewChats (state, { chats, newChatMessageSideEffects }) {\n      chats.forEach((updatedChat) => {\n        const chat = getChatById(state, updatedChat.id)\n\n        if (chat) {\n          const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n          chat.lastMessage = updatedChat.lastMessage\n          chat.unread = updatedChat.unread\n          chat.updated_at = updatedChat.updated_at\n          if (isNewMessage && chat.unread) {\n            newChatMessageSideEffects(updatedChat)\n          }\n        } else {\n          state.chatList.data.push(updatedChat)\n          Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n        }\n      })\n    },\n    updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n      const chat = getChatById(state, updatedChat.id)\n      if (chat) {\n        chat.lastMessage = updatedChat.lastMessage\n        chat.unread = updatedChat.unread\n        chat.updated_at = updatedChat.updated_at\n      }\n      if (!chat) { state.chatList.data.unshift(updatedChat) }\n      Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n    },\n    deleteChat (state, { _dispatch, id, _rootGetters }) {\n      state.chats.data = state.chats.data.filter(conversation =>\n        conversation.last_status.id !== id\n      )\n      state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n    },\n    resetChats (state, { commit }) {\n      state.chatList = emptyChatList()\n      state.currentChatId = null\n      commit('setChatListFetcher', { fetcher: undefined })\n      for (const chatId in state.openedChats) {\n        chatService.clear(state.openedChatMessageServices[chatId])\n        Vue.delete(state.openedChats, chatId)\n        Vue.delete(state.openedChatMessageServices, chatId)\n      }\n    },\n    setChatsLoading (state, { value }) {\n      state.chats.loading = value\n    },\n    addChatMessages (state, { chatId, messages, updateMaxId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n      }\n    },\n    deleteChatMessage (state, { chatId, messageId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.deleteMessage(chatMessageService, messageId)\n      }\n    },\n    resetChatNewMessageCount (state, _value) {\n      const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n      chatService.resetNewMessageCount(chatMessageService)\n    },\n    // Used when a connection loss occurs\n    clearOpenedChats (state) {\n      const currentChatId = state.currentChatId\n      for (const chatId in state.openedChats) {\n        if (currentChatId !== chatId) {\n          chatService.clear(state.openedChatMessageServices[chatId])\n          Vue.delete(state.openedChats, chatId)\n          Vue.delete(state.openedChatMessageServices, chatId)\n        }\n      }\n    },\n    readChat (state, { id, lastReadId }) {\n      state.lastReadMessageId = lastReadId\n      const chat = getChatById(state, id)\n      if (chat) {\n        chat.unread = 0\n      }\n    },\n    handleMessageError (state, { chatId, fakeId, isRetry }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n    },\n    cullOlderMessages (state, chatId) {\n      chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n    }\n  }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n  paths.length === 0 ? state : paths.reduce((substate, path) => {\n    set(substate, path, get(state, path))\n    return substate\n  }, {})\n)\n\nconst saveImmedeatelyActions = [\n  'markNotificationsAsSeen',\n  'clearCurrentUser',\n  'setCurrentUser',\n  'setHighlight',\n  'setOption',\n  'setClientData',\n  'setToken',\n  'clearToken'\n]\n\nconst defaultStorage = (() => {\n  return localforage\n})()\n\nexport default function createPersistedState ({\n  key = 'vuex-lz',\n  paths = [],\n  getState = (key, storage) => {\n    let value = storage.getItem(key)\n    return value\n  },\n  setState = (key, state, storage) => {\n    if (!loaded) {\n      console.log('waiting for old state to be loaded...')\n      return Promise.resolve()\n    } else {\n      return storage.setItem(key, state)\n    }\n  },\n  reducer = defaultReducer,\n  storage = defaultStorage,\n  subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n  return getState(key, storage).then((savedState) => {\n    return store => {\n      try {\n        if (savedState !== null && typeof savedState === 'object') {\n          // build user cache\n          const usersState = savedState.users || {}\n          usersState.usersObject = {}\n          const users = usersState.users || []\n          each(users, (user) => { usersState.usersObject[user.id] = user })\n          savedState.users = usersState\n\n          store.replaceState(\n            merge({}, store.state, savedState)\n          )\n        }\n        loaded = true\n      } catch (e) {\n        console.log(\"Couldn't load state\")\n        console.error(e)\n        loaded = true\n      }\n      subscriber(store)((mutation, state) => {\n        try {\n          if (saveImmedeatelyActions.includes(mutation.type)) {\n            setState(key, reducer(state, paths), storage)\n              .then(success => {\n                if (typeof success !== 'undefined') {\n                  if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                    store.dispatch('settingsSaved', { success })\n                  }\n                }\n              }, error => {\n                if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n                  store.dispatch('settingsSaved', { error })\n                }\n              })\n          }\n        } catch (e) {\n          console.log(\"Couldn't persist state:\")\n          console.log(e)\n        }\n      })\n    }\n  })\n}\n","export default (store) => {\n  store.subscribe((mutation, state) => {\n    const vapidPublicKey = state.instance.vapidPublicKey\n    const webPushNotification = state.config.webPushNotifications\n    const permission = state.interface.notificationPermission === 'granted'\n    const user = state.users.currentUser\n\n    const isUserMutation = mutation.type === 'setCurrentUser'\n    const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n    const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n    const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n    const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n    if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n      if (user && vapidPublicKey && permission && webPushNotification) {\n        return store.dispatch('registerPushNotifications')\n      } else if (isUserConfigMutation && !webPushNotification) {\n        return store.dispatch('unregisterPushNotifications')\n      }\n    }\n  })\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n  const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n  bodyScrollLock.disableBodyScroll(el, {\n    reserveScrollBarGap: true\n  })\n  lockerEls.add(el)\n  setTimeout(() => {\n    if (lockerEls.size <= 1) {\n      // If previousNavPaddingRight is already set, don't set it again.\n      if (previousNavPaddingRight === undefined) {\n        const navEl = document.getElementById('nav')\n        previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n        navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      // If previousAppBgWrapeprRight is already set, don't set it again.\n      if (previousAppBgWrapperRight === undefined) {\n        const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n        previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n        appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n      }\n      document.body.classList.add('scroll-locked')\n    }\n  })\n}\n\nconst enableBodyScroll = (el) => {\n  lockerEls.delete(el)\n  setTimeout(() => {\n    if (lockerEls.size === 0) {\n      if (previousNavPaddingRight !== undefined) {\n        document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n        // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n        previousNavPaddingRight = undefined\n      }\n      if (previousAppBgWrapperRight !== undefined) {\n        document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n        // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n        previousAppBgWrapperRight = undefined\n      }\n      document.body.classList.remove('scroll-locked')\n    }\n  })\n  bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n  inserted: (el, binding) => {\n    if (binding.value) {\n      disableBodyScroll(el)\n    }\n  },\n  componentUpdated: (el, binding) => {\n    if (binding.oldValue === binding.value) {\n      return\n    }\n\n    if (binding.value) {\n      disableBodyScroll(el)\n    } else {\n      enableBodyScroll(el)\n    }\n  },\n  unbind: (el) => {\n    enableBodyScroll(el)\n  }\n}\n\nexport default (Vue) => {\n  Vue.directive('body-scroll-lock', directive)\n}\n","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\n\nconst sortById = (a, b) => {\n  const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n  const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n  const seqA = Number(idA)\n  const seqB = Number(idB)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA < seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return -1\n  } else if (!isSeqA && isSeqB) {\n    return 1\n  } else {\n    return idA < idB ? -1 : 1\n  }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n  if (statusoid.type === 'retweet') {\n    conversation = filter(\n      conversation,\n      (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n    )\n  } else {\n    conversation = filter(conversation, (status) => status.type !== 'retweet')\n  }\n  return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n  data () {\n    return {\n      highlight: null,\n      expanded: false\n    }\n  },\n  props: [\n    'statusId',\n    'collapsable',\n    'isPage',\n    'pinnedStatusIdsObject',\n    'inProfile',\n    'profileUserId',\n    'virtualHidden'\n  ],\n  created () {\n    if (this.isPage) {\n      this.fetchConversation()\n    }\n  },\n  computed: {\n    hideStatus () {\n      if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n        return this.virtualHidden && this.$refs.statusComponent[0].suspendable\n      } else {\n        return this.virtualHidden\n      }\n    },\n    status () {\n      return this.$store.state.statuses.allStatusesObject[this.statusId]\n    },\n    originalStatusId () {\n      if (this.status.retweeted_status) {\n        return this.status.retweeted_status.id\n      } else {\n        return this.statusId\n      }\n    },\n    conversationId () {\n      return this.getConversationId(this.statusId)\n    },\n    conversation () {\n      if (!this.status) {\n        return []\n      }\n\n      if (!this.isExpanded) {\n        return [this.status]\n      }\n\n      const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n      const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n      if (statusIndex !== -1) {\n        conversation[statusIndex] = this.status\n      }\n\n      return sortAndFilterConversation(conversation, this.status)\n    },\n    replies () {\n      let i = 1\n      // eslint-disable-next-line camelcase\n      return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n        /* eslint-disable camelcase */\n        const irid = in_reply_to_status_id\n        /* eslint-enable camelcase */\n        if (irid) {\n          result[irid] = result[irid] || []\n          result[irid].push({\n            name: `#${i}`,\n            id: id\n          })\n        }\n        i++\n        return result\n      }, {})\n    },\n    isExpanded () {\n      return this.expanded || this.isPage\n    },\n    hiddenStyle () {\n      const height = (this.status && this.status.virtualHeight) || '120px'\n      return this.virtualHidden ? { height } : {}\n    }\n  },\n  components: {\n    Status\n  },\n  watch: {\n    statusId (newVal, oldVal) {\n      const newConversationId = this.getConversationId(newVal)\n      const oldConversationId = this.getConversationId(oldVal)\n      if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n        this.setHighlight(this.originalStatusId)\n      } else {\n        this.fetchConversation()\n      }\n    },\n    expanded (value) {\n      if (value) {\n        this.fetchConversation()\n      }\n    },\n    virtualHidden (value) {\n      this.$store.dispatch(\n        'setVirtualHeight',\n        { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n      )\n    }\n  },\n  methods: {\n    fetchConversation () {\n      if (this.status) {\n        this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n          .then(({ ancestors, descendants }) => {\n            this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n            this.$store.dispatch('addNewStatuses', { statuses: descendants })\n            this.setHighlight(this.originalStatusId)\n          })\n      } else {\n        this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n          .then((status) => {\n            this.$store.dispatch('addNewStatuses', { statuses: [status] })\n            this.fetchConversation()\n          })\n      }\n    },\n    getReplies (id) {\n      return this.replies[id] || []\n    },\n    focused (id) {\n      return (this.isExpanded) && id === this.statusId\n    },\n    setHighlight (id) {\n      if (!id) return\n      this.highlight = id\n      this.$store.dispatch('fetchFavsAndRepeats', id)\n      this.$store.dispatch('fetchEmojiReactionsBy', id)\n    },\n    getHighlight () {\n      return this.isExpanded ? this.highlight : null\n    },\n    toggleExpanded () {\n      this.expanded = !this.expanded\n    },\n    getConversationId (statusId) {\n      const status = this.$store.state.statuses.allStatusesObject[statusId]\n      return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n    }\n  }\n}\n\nexport default conversation\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./conversation.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./conversation.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-203ee410\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Conversation\",class:{ '-expanded' : _vm.isExpanded, 'panel' : _vm.isExpanded },style:(_vm.hiddenStyle)},[(_vm.isExpanded)?_c('div',{staticClass:\"panel-heading conversation-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('timeline.conversation'))+\" \")]),_vm._v(\" \"),(_vm.collapsable)?_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('timeline.collapse'))+\"\\n    \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,ref:\"statusComponent\",refInFor:true,staticClass:\"conversation-status status-fadein panel-body\",attrs:{\"inline-expanded\":_vm.collapsable && _vm.isExpanded,\"statusoid\":status,\"expandable\":!_vm.isExpanded,\"show-pinned\":_vm.pinnedStatusIdsObject && _vm.pinnedStatusIdsObject[status.id],\"focused\":_vm.focused(status.id),\"in-conversation\":_vm.isExpanded,\"highlight\":_vm.getHighlight(),\"replies\":_vm.getReplies(status.id),\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.profileUserId},on:{\"goto\":_vm.setHighlight,\"toggleExpanded\":_vm.toggleExpanded}})})],2):_c('div',{style:(_vm.hiddenStyle)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faHome\n)\n\nconst TimelineMenuContent = {\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating\n    })\n  }\n}\n\nexport default TimelineMenuContent\n","/* script */\nexport * from \"!!babel-loader!./timeline_menu_content.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu_content.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9e3b525a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friends' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(_vm._s(_vm.$t(\"nav.home_timeline\"))+\"\\n    \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"users\"}}),_vm._v(_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n    \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"globe\"}}),_vm._v(_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n    \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'bookmarks'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_vm._v(_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n    \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"envelope\"}}),_vm._v(_vm._s(_vm.$t(\"nav.dms\"))+\"\\n    \")],1)],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n  return {\n    'friends': 'nav.home_timeline',\n    'bookmarks': 'nav.bookmarks',\n    'dms': 'nav.dms',\n    'public-timeline': 'nav.public_tl',\n    'public-external-timeline': 'nav.twkn'\n  }\n}\n\nconst TimelineMenu = {\n  components: {\n    Popover,\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      isOpen: false\n    }\n  },\n  created () {\n    if (timelineNames()[this.$route.name]) {\n      this.$store.dispatch('setLastTimeline', this.$route.name)\n    }\n  },\n  methods: {\n    openMenu () {\n      // $nextTick is too fast, animation won't play back but\n      // instead starts in fully open position. Low values\n      // like 1-5 work on fast machines but not on mobile, 25\n      // seems like a good compromise that plays without significant\n      // added lag.\n      setTimeout(() => {\n        this.isOpen = true\n      }, 25)\n    },\n    blockOpen (event) {\n      // For the blank area inside the button element.\n      // Just setting @click.stop=\"\" makes unintuitive behavior when\n      // menu is open and clicking on the blank area doesn't close it.\n      if (!this.isOpen) {\n        event.stopPropagation()\n      }\n    },\n    timelineName () {\n      const route = this.$route.name\n      if (route === 'tag-timeline') {\n        return '#' + this.$route.params.tag\n      }\n      const i18nkey = timelineNames()[this.$route.name]\n      return i18nkey ? this.$t(i18nkey) : route\n    }\n  }\n}\n\nexport default TimelineMenu\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_menu.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_menu.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-82631696\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineMenu\",class:{ 'open': _vm.isOpen },attrs:{\"trigger\":\"click\",\"margin\":{ left: -15, right: -200 },\"bound-to\":{ x: 'container' },\"popover-class\":\"timeline-menu-popover-wrap\"},on:{\"show\":_vm.openMenu,\"close\":function () { return _vm.isOpen = false; }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"timeline-menu-popover popover-default\"},[_c('TimelineMenuContent')],1)]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled title timeline-menu-title\"},[_c('span',{staticClass:\"timeline-title\"},[_vm._v(_vm._s(_vm.timelineName()))]),_vm._v(\" \"),_c('span',[_c('FAIcon',{attrs:{\"size\":\"sm\",\"icon\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"click-blocker\",on:{\"click\":_vm.blockOpen}})])]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter,\n  faFont,\n  faWrench\n)\n\nconst TimelineQuickSettings = {\n  components: {\n    Popover\n  },\n  methods: {\n    setReplyVisibility (visibility) {\n      this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n      this.$store.dispatch('queueFlushAll')\n    },\n    openTab (tab) {\n      this.$store.dispatch('openSettingsModalTab', tab)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    replyVisibilitySelf: {\n      get () { return this.mergedConfig.replyVisibility === 'self' },\n      set () { this.setReplyVisibility('self') }\n    },\n    replyVisibilityFollowing: {\n      get () { return this.mergedConfig.replyVisibility === 'following' },\n      set () { this.setReplyVisibility('following') }\n    },\n    replyVisibilityAll: {\n      get () { return this.mergedConfig.replyVisibility === 'all' },\n      set () { this.setReplyVisibility('all') }\n    },\n    hideMedia: {\n      get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n      set () {\n        const value = !this.hideMedia\n        this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n        this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n      }\n    },\n    hideMutedPosts: {\n      get () { return this.mergedConfig.hideMutedPosts || this.mergedConfig.hideFilteredStatuses },\n      set () {\n        const value = !this.hideMutedPosts\n        this.$store.dispatch('setOption', { name: 'hideMutedPosts', value })\n        this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n      }\n    }\n  }\n}\n\nexport default TimelineQuickSettings\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_quick_settings.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_quick_settings.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_quick_settings.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-38afd010\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_quick_settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineQuickSettings\",attrs:{\"trigger\":\"click\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.loggedIn)?_c('div',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityAll = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityAll }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_all'))+\"\\n        \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityFollowing = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityFollowing }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_following_short'))+\"\\n        \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilitySelf = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilitySelf }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_self_short'))+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMedia = !_vm.hideMedia}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMedia }}),_vm._v(_vm._s(_vm.$t('settings.hide_media_previews'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMutedPosts = !_vm.hideMutedPosts}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMutedPosts }}),_vm._v(_vm._s(_vm.$t('settings.hide_all_muted_posts'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('filtering')}}},[_c('FAIcon',{attrs:{\"icon\":\"font\"}}),_vm._v(_vm._s(_vm.$t('settings.word_filter'))+\"\\n      \")],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('general')}}},[_c('FAIcon',{attrs:{\"icon\":\"wrench\"}}),_vm._v(_vm._s(_vm.$t('settings.more_settings'))+\"\\n      \")],1)])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled\"},[_c('FAIcon',{attrs:{\"icon\":\"filter\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faCog\n)\n\nexport const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {\n  const ids = []\n  if (pinnedStatusIds && pinnedStatusIds.length > 0) {\n    for (let status of statuses) {\n      if (!pinnedStatusIds.includes(status.id)) {\n        break\n      }\n      ids.push(status.id)\n    }\n  }\n  return ids\n}\n\nconst Timeline = {\n  props: [\n    'timeline',\n    'timelineName',\n    'title',\n    'userId',\n    'tag',\n    'embedded',\n    'count',\n    'pinnedStatusIds',\n    'inProfile'\n  ],\n  data () {\n    return {\n      paused: false,\n      unfocused: false,\n      bottomedOut: false,\n      virtualScrollIndex: 0,\n      blockingClicks: false\n    }\n  },\n  components: {\n    Status,\n    Conversation,\n    TimelineMenu,\n    TimelineQuickSettings\n  },\n  computed: {\n    newStatusCount () {\n      return this.timeline.newStatusCount\n    },\n    showLoadButton () {\n      return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n    },\n    loadButtonString () {\n      if (this.timeline.flushMarker !== 0) {\n        return this.$t('timeline.reload')\n      } else {\n        return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n      }\n    },\n    classes () {\n      let rootClasses = !this.embedded ? ['panel', 'panel-default'] : []\n      if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n      return {\n        root: rootClasses,\n        header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),\n        body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n        footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n      }\n    },\n    // id map of statuses which need to be hidden in the main list due to pinning logic\n    excludedStatusIdsObject () {\n      const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)\n      // Convert id array to object\n      return keyBy(ids)\n    },\n    pinnedStatusIdsObject () {\n      return keyBy(this.pinnedStatusIds)\n    },\n    statusesToDisplay () {\n      const amount = this.timeline.visibleStatuses.length\n      const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n      const min = Math.max(0, this.virtualScrollIndex - statusesPerSide)\n      const max = Math.min(amount, this.virtualScrollIndex + statusesPerSide)\n      return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n    },\n    virtualScrollingEnabled () {\n      return this.$store.getters.mergedConfig.virtualScrolling\n    }\n  },\n  created () {\n    const store = this.$store\n    const credentials = store.state.users.currentUser.credentials\n    const showImmediately = this.timeline.visibleStatuses.length === 0\n\n    window.addEventListener('scroll', this.handleScroll)\n\n    if (store.state.api.fetchers[this.timelineName]) { return false }\n\n    timelineFetcher.fetchAndUpdate({\n      store,\n      credentials,\n      timeline: this.timelineName,\n      showImmediately,\n      userId: this.userId,\n      tag: this.tag\n    })\n  },\n  mounted () {\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n      this.unfocused = document.hidden\n    }\n    window.addEventListener('keydown', this.handleShortKey)\n    setTimeout(this.determineVisibleStatuses, 250)\n  },\n  destroyed () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('keydown', this.handleShortKey)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n  },\n  methods: {\n    stopBlockingClicks: debounce(function () {\n      this.blockingClicks = false\n    }, 1000),\n    blockClicksTemporarily () {\n      if (!this.blockingClicks) {\n        this.blockingClicks = true\n      }\n      this.stopBlockingClicks()\n    },\n    handleShortKey (e) {\n      // Ignore when input fields are focused\n      if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n      if (e.key === '.') this.showNewStatuses()\n    },\n    showNewStatuses () {\n      if (this.timeline.flushMarker !== 0) {\n        this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n        this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n        this.fetchOlderStatuses()\n      } else {\n        this.blockClicksTemporarily()\n        this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n        this.paused = false\n      }\n    },\n    fetchOlderStatuses: throttle(function () {\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setLoading', { timeline: this.timelineName, value: true })\n      timelineFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        timeline: this.timelineName,\n        older: true,\n        showImmediately: true,\n        userId: this.userId,\n        tag: this.tag\n      }).then(({ statuses }) => {\n        if (statuses && statuses.length === 0) {\n          this.bottomedOut = true\n        }\n      }).finally(() =>\n        store.commit('setLoading', { timeline: this.timelineName, value: false })\n      )\n    }, 1000, this),\n    determineVisibleStatuses () {\n      if (!this.$refs.timeline) return\n      if (!this.virtualScrollingEnabled) return\n\n      const statuses = this.$refs.timeline.children\n      const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n      if (statuses.length === 0) return\n\n      const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n      const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n      // Start from approximating the index of some visible status by using the\n      // the center of the screen on the timeline.\n      let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n      let err = statuses[approxIndex].getBoundingClientRect().y\n\n      // if we have a previous scroll index that can be used, test if it's\n      // closer than the previous approximation, use it if so\n\n      const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n      if (Math.abs(err) > virtualScrollIndexY) {\n        approxIndex = cappedScrollIndex\n        err = virtualScrollIndexY\n      }\n\n      // if the status is too far from viewport, check the next/previous ones if\n      // they happen to be better\n      while (err < -20 && approxIndex < statuses.length - 1) {\n        err += statuses[approxIndex].offsetHeight\n        approxIndex++\n      }\n      while (err > window.innerHeight + 100 && approxIndex > 0) {\n        approxIndex--\n        err -= statuses[approxIndex].offsetHeight\n      }\n\n      // this status is now the center point for virtual scrolling and visible\n      // statuses will be nearby statuses before and after it\n      this.virtualScrollIndex = approxIndex\n    },\n    scrollLoad (e) {\n      const bodyBRect = document.body.getBoundingClientRect()\n      const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n      if (this.timeline.loading === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n        this.fetchOlderStatuses()\n      }\n    },\n    handleScroll: throttle(function (e) {\n      this.determineVisibleStatuses()\n      this.scrollLoad(e)\n    }, 200),\n    handleVisibilityChange () {\n      this.unfocused = document.hidden\n    }\n  },\n  watch: {\n    newStatusCount (count) {\n      if (!this.$store.getters.mergedConfig.streaming) {\n        return\n      }\n      if (count > 0) {\n        // only 'stream' them when you're scrolled to the top\n        const doc = document.documentElement\n        const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n        if (top < 15 &&\n            !this.paused &&\n            !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n        ) {\n          this.showNewStatuses()\n        } else {\n          this.paused = true\n        }\n      }\n    }\n  }\n}\n\nexport default Timeline\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./timeline.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3c11ece0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.classes.root, 'Timeline']},[_c('div',{class:_vm.classes.header},[(!_vm.embedded)?_c('TimelineMenu'):_vm._e(),_vm._v(\" \"),(_vm.showLoadButton)?_c('button',{staticClass:\"button-default loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n      \"+_vm._s(_vm.loadButtonString)+\"\\n    \")]):_c('div',{staticClass:\"loadmore-text faint\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('timeline.up_to_date'))+\"\\n    \")]),_vm._v(\" \"),(!_vm.embedded)?_c('TimelineQuickSettings'):_vm._e()],1),_vm._v(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{ref:\"timeline\",staticClass:\"timeline\"},[_vm._l((_vm.pinnedStatusIds),function(statusId){return [(_vm.timeline.statusesObject[statusId])?_c('conversation',{key:statusId + '-pinned',staticClass:\"status-fadein\",attrs:{\"status-id\":statusId,\"collapsable\":true,\"pinned-status-ids-object\":_vm.pinnedStatusIdsObject,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]}),_vm._v(\" \"),_vm._l((_vm.timeline.visibleStatuses),function(status){return [(!_vm.excludedStatusIdsObject[status.id])?_c('conversation',{key:status.id,staticClass:\"status-fadein\",attrs:{\"status-id\":status.id,\"collapsable\":true,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId,\"virtual-hidden\":_vm.virtualScrollingEnabled && !_vm.statusesToDisplay.includes(status.id)}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('timeline.no_statuses'))+\"\\n    \")]):(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('timeline.no_more_statuses'))+\"\\n    \")]):(!_vm.timeline.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('timeline.load_older'))+\"\\n      \")])]):_c('div',{staticClass:\"new-status-notification text-center\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.public }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n  },\n  destroyed () {\n    this.$store.dispatch('stopFetchingTimeline', 'public')\n  }\n\n}\n\nexport default PublicTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f2a502e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.public_tl'),\"timeline\":_vm.timeline,\"timeline-name\":'public'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n  },\n  created () {\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n  },\n  destroyed () {\n    this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n  }\n}\n\nexport default PublicAndExternalTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_and_external_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_and_external_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f6923484\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_and_external_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.twkn'),\"timeline\":_vm.timeline,\"timeline-name\":'publicAndExternal'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.friends }\n  }\n}\n\nexport default FriendsTimeline\n","/* script */\nexport * from \"!!babel-loader!./friends_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./friends_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-22490669\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./friends_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.timeline'),\"timeline\":_vm.timeline,\"timeline-name\":'friends'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n  created () {\n    this.$store.commit('clearTimeline', { timeline: 'tag' })\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n  },\n  components: {\n    Timeline\n  },\n  computed: {\n    tag () { return this.$route.params.tag },\n    timeline () { return this.$store.state.statuses.timelines.tag }\n  },\n  watch: {\n    tag () {\n      this.$store.commit('clearTimeline', { timeline: 'tag' })\n      this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n    }\n  },\n  destroyed () {\n    this.$store.dispatch('stopFetchingTimeline', 'tag')\n  }\n}\n\nexport default TagTimeline\n","/* script */\nexport * from \"!!babel-loader!./tag_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./tag_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-047310d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tag_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.tag,\"timeline\":_vm.timeline,\"timeline-name\":'tag',\"tag\":_vm.tag}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.bookmarks\n    }\n  },\n  components: {\n    Timeline\n  },\n  destroyed () {\n    this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n  }\n}\n\nexport default Bookmarks\n","/* script */\nexport * from \"!!babel-loader!./bookmark_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./bookmark_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b9c8ba0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./bookmark_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.bookmarks'),\"timeline\":_vm.timeline,\"timeline-name\":'bookmarks'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n  components: {\n    Conversation\n  },\n  computed: {\n    statusId () {\n      return this.$route.params.id\n    }\n  }\n}\n\nexport default conversationPage\n","/* script */\nexport * from \"!!babel-loader!./conversation-page.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation-page.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46654d24\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('conversation',{attrs:{\"collapsable\":false,\"is-page\":\"true\",\"status-id\":_vm.statusId}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faEyeSlash,\n  faUser,\n  faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faUser,\n  faEyeSlash,\n  faSuitcaseRolling\n)\n\nconst Notification = {\n  data () {\n    return {\n      userExpanded: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n      unmuted: false\n    }\n  },\n  props: [ 'notification' ],\n  components: {\n    StatusContent,\n    UserAvatar,\n    UserCard,\n    Timeago,\n    Status,\n    RichContent\n  },\n  methods: {\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    getUser (notification) {\n      return this.$store.state.users.usersObject[notification.from_profile.id]\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n      this.$store.dispatch('updateNotification', {\n        id: this.notification.id,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  },\n  computed: {\n    userClass () {\n      return highlightClass(this.notification.from_profile)\n    },\n    userStyle () {\n      const highlight = this.$store.getters.mergedConfig.highlight\n      const user = this.notification.from_profile\n      return highlightStyle(highlight[user.screen_name])\n    },\n    user () {\n      return this.$store.getters.findUser(this.notification.from_profile.id)\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.user)\n    },\n    targetUser () {\n      return this.$store.getters.findUser(this.notification.target.id)\n    },\n    targetUserProfileLink () {\n      return this.generateUserProfileLink(this.targetUser)\n    },\n    needMute () {\n      return this.$store.getters.relationship(this.user.id).muting\n    },\n    isStatusNotification () {\n      return isStatusNotification(this.notification.type)\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default Notification\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notification.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notification.js\"\nimport __vue_script__ from \"!!babel-loader!./notification.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ce6ac72a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notification.type === 'mention')?_c('Status',{attrs:{\"compact\":true,\"statusoid\":_vm.notification.status}}):_c('div',[(_vm.needMute && !_vm.unmuted)?_c('div',{staticClass:\"Notification container -muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n        \"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n      \")])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled unmute\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)]):_c('div',{staticClass:\"Notification non-mention\",class:[_vm.userClass, { highlighted: _vm.userStyle }, '-type--' + _vm.notification.type],style:([ _vm.userStyle ])},[_c('a',{staticClass:\"avatar-container\",attrs:{\"href\":_vm.notification.from_profile.statusnet_profile_url},on:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.notification.from_profile}})],1),_vm._v(\" \"),_c('div',{staticClass:\"notification-right\"},[(_vm.userExpanded)?_c('UserCard',{attrs:{\"user-id\":_vm.getUser(_vm.notification).id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"notification-details\"},[_c('div',{staticClass:\"name-and-action\"},[(!!_vm.notification.from_profile.name_html)?_c('bdi',[_c('RichContent',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui,\"html\":_vm.notification.from_profile.name_html,\"emoji\":_vm.notification.from_profile.emoji}})],1):_c('span',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui}},[_vm._v(_vm._s(_vm.notification.from_profile.name))]),_vm._v(\" \"),(_vm.notification.type === 'like')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"star\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.favorited_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'repeat')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.repeated_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user-plus\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.followed_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.follow_request')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'move')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"suitcase-rolling\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.migrated_to')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'pleroma:emoji_reaction')?_c('span',[_c('small',[_c('i18n',{attrs:{\"path\":\"notifications.reacted_with\"}},[_c('span',{staticClass:\"emoji-reaction-emoji\"},[_vm._v(_vm._s(_vm.notification.emoji))])])],1)]):_vm._e()]),_vm._v(\" \"),(_vm.isStatusNotification)?_c('div',{staticClass:\"timeago\"},[(_vm.notification.status)?_c('router-link',{staticClass:\"faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.notification.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1):_vm._e()],1):_c('div',{staticClass:\"timeago\"},[_c('span',{staticClass:\"faint\"},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1)]),_vm._v(\" \"),(_vm.needMute)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1):_vm._e()]),_vm._v(\" \"),(_vm.notification.type === 'follow' || _vm.notification.type === 'follow_request')?_c('div',{staticClass:\"follow-text\"},[_c('router-link',{staticClass:\"follow-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n          @\"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n        \")]),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-accept\",attrs:{\"icon\":\"check\",\"title\":_vm.$t('tool_tip.accept_follow_request')},on:{\"click\":function($event){return _vm.approveUser()}}}),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-reject\",attrs:{\"icon\":\"times\",\"title\":_vm.$t('tool_tip.reject_follow_request')},on:{\"click\":function($event){return _vm.denyUser()}}})],1):_vm._e()],1):(_vm.notification.type === 'move')?_c('div',{staticClass:\"move-text\"},[_c('router-link',{attrs:{\"to\":_vm.targetUserProfileLink}},[_vm._v(\"\\n          @\"+_vm._s(_vm.notification.target.screen_name_ui)+\"\\n        \")])],1):[_c('status-content',{staticClass:\"faint\",attrs:{\"status\":_vm.notification.action}})]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"NotificationFilters\"\n    placement=\"bottom\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template v-slot:content>\n      <div class=\"dropdown-menu\">\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('likes')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n          />{{ $t('settings.notification_visibility_likes') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('repeats')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n          />{{ $t('settings.notification_visibility_repeats') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('follows')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n          />{{ $t('settings.notification_visibility_follows') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('mentions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n          />{{ $t('settings.notification_visibility_mentions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('emojiReactions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n          />{{ $t('settings.notification_visibility_emoji_reactions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('moves')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n          />{{ $t('settings.notification_visibility_moves') }}\n        </button>\n      </div>\n    </template>\n    <template v-slot:trigger>\n      <button class=\"button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter\n)\n\nexport default {\n  components: { Popover },\n  computed: {\n    filters () {\n      return this.$store.getters.mergedConfig.notificationVisibility\n    }\n  },\n  methods: {\n    toggleNotificationFilter (type) {\n      this.$store.dispatch('setOption', {\n        name: 'notificationVisibility',\n        value: {\n          ...this.filters,\n          [type]: !this.filters[type]\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n\n.NotificationFilters {\n  align-self: stretch;\n\n  > button {\n    font-size: 1.2em;\n    padding-left: 0.7em;\n    padding-right: 0.2em;\n    line-height: 100%;\n    height: 100%;\n  }\n\n  .dropdown-item {\n    margin: 0;\n  }\n}\n\n</style>\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./notification_filters.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b3300ab\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification_filters.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","const createFaviconService = () => {\n  const favicons = []\n  const faviconWidth = 128\n  const faviconHeight = 128\n  const badgeRadius = 32\n\n  const initFaviconService = () => {\n    const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n    nodes.forEach(favicon => {\n      if (favicon) {\n        const favcanvas = document.createElement('canvas')\n        favcanvas.width = faviconWidth\n        favcanvas.height = faviconHeight\n        const favimg = new Image()\n        favimg.crossOrigin = 'anonymous'\n        favimg.src = favicon.href\n        const favcontext = favcanvas.getContext('2d')\n        favicons.push({ favcanvas, favimg, favcontext, favicon })\n      }\n    })\n  }\n\n  const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n  const clearFaviconBadge = () => {\n    if (favicons.length === 0) return\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favicon) return\n\n      favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  const drawFaviconBadge = () => {\n    if (favicons.length === 0) return\n    clearFaviconBadge()\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favcontext) return\n\n      const style = getComputedStyle(document.body)\n      const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favcontext.fillStyle = badgeColor\n      favcontext.beginPath()\n      favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n      favcontext.fill()\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  return {\n    initFaviconService,\n    clearFaviconBadge,\n    drawFaviconBadge\n  }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"NotificationFilters\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('likes')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.likes }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_likes'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('repeats')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.repeats }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_repeats'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('follows')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.follows }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_follows'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('mentions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.mentions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_mentions'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('emojiReactions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.emojiReactions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_emoji_reactions'))+\"\\n      \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('moves')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.moves }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_moves'))+\"\\n      \")])])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled\"},[_c('FAIcon',{attrs:{\"icon\":\"filter\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n  notificationsFromStore,\n  filteredNotificationsFromStore,\n  unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n  components: {\n    Notification,\n    NotificationFilters\n  },\n  props: {\n    // Disables display of panel header\n    noHeading: Boolean,\n    // Disables panel styles, unread mark, potentially other notification-related actions\n    // meant for \"Interactions\" timeline\n    minimalMode: Boolean,\n    // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n    filterMode: Array\n  },\n  data () {\n    return {\n      bottomedOut: false,\n      // How many seen notifications to display in the list. The more there are,\n      // the heavier the page becomes. This count is increased when loading\n      // older notifications, and cut back to default whenever hitting \"Read!\".\n      seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n    }\n  },\n  computed: {\n    mainClass () {\n      return this.minimalMode ? '' : 'panel panel-default'\n    },\n    notifications () {\n      return notificationsFromStore(this.$store)\n    },\n    error () {\n      return this.$store.state.statuses.notifications.error\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    filteredNotifications () {\n      return filteredNotificationsFromStore(this.$store, this.filterMode)\n    },\n    unseenCount () {\n      return this.unseenNotifications.length\n    },\n    unseenCountTitle () {\n      return this.unseenCount + (this.unreadChatCount)\n    },\n    loading () {\n      return this.$store.state.statuses.notifications.loading\n    },\n    notificationsToDisplay () {\n      return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  watch: {\n    unseenCountTitle (count) {\n      if (count > 0) {\n        FaviconService.drawFaviconBadge()\n        this.$store.dispatch('setPageTitle', `(${count})`)\n      } else {\n        FaviconService.clearFaviconBadge()\n        this.$store.dispatch('setPageTitle', '')\n      }\n    }\n  },\n  methods: {\n    markAsSeen () {\n      this.$store.dispatch('markNotificationsAsSeen')\n      this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n    },\n    fetchOlderNotifications () {\n      if (this.loading) {\n        return\n      }\n\n      const seenCount = this.filteredNotifications.length - this.unseenCount\n      if (this.seenToDisplayCount < seenCount) {\n        this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n        return\n      } else if (this.seenToDisplayCount > seenCount) {\n        this.seenToDisplayCount = seenCount\n      }\n\n      const store = this.$store\n      const credentials = store.state.users.currentUser.credentials\n      store.commit('setNotificationsLoading', { value: true })\n      notificationsFetcher.fetchAndUpdate({\n        store,\n        credentials,\n        older: true\n      }).then(notifs => {\n        store.commit('setNotificationsLoading', { value: false })\n        if (notifs.length === 0) {\n          this.bottomedOut = true\n        }\n        this.seenToDisplayCount += notifs.length\n      })\n    }\n  }\n}\n\nexport default Notifications\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notifications.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notifications.js\"\nimport __vue_script__ from \"!!babel-loader!./notifications.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-78de60bd\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Notifications\",class:{ minimal: _vm.minimalMode }},[_c('div',{class:_vm.mainClass},[(!_vm.noHeading)?_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('notifications.notifications'))+\"\\n        \"),(_vm.unseenCount)?_c('span',{staticClass:\"badge badge-notification unseen-count\"},[_vm._v(_vm._s(_vm.unseenCount))]):_vm._e()]),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"button-default read-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.markAsSeen($event)}}},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('notifications.read'))+\"\\n      \")]):_vm._e(),_vm._v(\" \"),_c('NotificationFilters')],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.notificationsToDisplay),function(notification){return _c('div',{key:notification.id,staticClass:\"notification\",class:{\"unseen\": !_vm.minimalMode && !notification.seen}},[_c('div',{staticClass:\"notification-overlay\"}),_vm._v(\" \"),_c('notification',{attrs:{\"notification\":notification}})],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer notifications-footer\"},[(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('notifications.no_more_notifications'))+\"\\n      \")]):(!_vm.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderNotifications()}}},[_c('div',{staticClass:\"new-status-notification text-center\"},[_vm._v(\"\\n          \"+_vm._s(_vm.minimalMode ? _vm.$t('interactions.load_older') : _vm.$t('notifications.load_older'))+\"\\n        \")])]):_c('div',{staticClass:\"new-status-notification text-center\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notifications from '../notifications/notifications.vue'\n\nconst tabModeDict = {\n  mentions: ['mention'],\n  'likes+repeats': ['repeat', 'like'],\n  follows: ['follow'],\n  moves: ['move']\n}\n\nconst Interactions = {\n  data () {\n    return {\n      allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n      filterMode: tabModeDict['mentions']\n    }\n  },\n  methods: {\n    onModeSwitch (key) {\n      this.filterMode = tabModeDict[key]\n    }\n  },\n  components: {\n    Notifications\n  }\n}\n\nexport default Interactions\n","/* script */\nexport * from \"!!babel-loader!./interactions.js\"\nimport __vue_script__ from \"!!babel-loader!./interactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-109005c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n    \")])]),_vm._v(\" \"),_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onModeSwitch}},[_c('span',{key:\"mentions\",attrs:{\"label\":_vm.$t('nav.mentions')}}),_vm._v(\" \"),_c('span',{key:\"likes+repeats\",attrs:{\"label\":_vm.$t('interactions.favs_repeats')}}),_vm._v(\" \"),_c('span',{key:\"follows\",attrs:{\"label\":_vm.$t('interactions.follows')}}),_vm._v(\" \"),(!_vm.allowFollowingMove)?_c('span',{key:\"moves\",attrs:{\"label\":_vm.$t('interactions.moves')}}):_vm._e()]),_vm._v(\" \"),_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true,\"minimal-mode\":true,\"filter-mode\":_vm.filterMode}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.dms\n    }\n  },\n  components: {\n    Timeline\n  }\n}\n\nexport default DMs\n","/* script */\nexport * from \"!!babel-loader!./dm_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./dm_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-294f8b6d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dm_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.dms'),\"timeline\":_vm.timeline,\"timeline-name\":'dms'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\n\nexport default Vue.component('chat-title', {\n  name: 'ChatTitle',\n  components: {\n    UserAvatar\n  },\n  props: [\n    'user', 'withAvatar'\n  ],\n  computed: {\n    title () {\n      return this.user ? this.user.screen_name_ui : ''\n    },\n    htmlTitle () {\n      return this.user ? this.user.name_html : ''\n    }\n  },\n  methods: {\n    getUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name)\n    }\n  }\n})\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_title.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_title.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_title.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-392970fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_title.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-title\",attrs:{\"title\":_vm.title}},[(_vm.withAvatar && _vm.user)?_c('router-link',{attrs:{\"to\":_vm.getUserProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"user\":_vm.user,\"width\":\"23px\",\"height\":\"23px\"}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"username\",domProps:{\"innerHTML\":_vm._s(_vm.htmlTitle)}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n  name: 'ChatListItem',\n  props: [\n    'chat'\n  ],\n  components: {\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    ChatTitle,\n    StatusBody\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    attachmentInfo () {\n      if (this.chat.lastMessage.attachments.length === 0) { return }\n\n      const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n      if (types.includes('video')) {\n        return this.$t('file_type.video')\n      } else if (types.includes('audio')) {\n        return this.$t('file_type.audio')\n      } else if (types.includes('image')) {\n        return this.$t('file_type.image')\n      } else {\n        return this.$t('file_type.file')\n      }\n    },\n    messageForStatusContent () {\n      const message = this.chat.lastMessage\n      const messageEmojis = message ? message.emojis : []\n      const isYou = message && message.account_id === this.currentUser.id\n      const content = message ? (this.attachmentInfo || message.content) : ''\n      const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n      return {\n        summary: '',\n        emojis: messageEmojis,\n        raw_html: messagePreview,\n        text: messagePreview,\n        attachments: []\n      }\n    }\n  },\n  methods: {\n    openChat (_e) {\n      if (this.chat.id) {\n        this.$router.push({\n          name: 'chat',\n          params: {\n            username: this.currentUser.screen_name,\n            recipient_id: this.chat.account.id\n          }\n        })\n      }\n    }\n  }\n}\n\nexport default ChatListItem\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_list_item.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_list_item.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_list_item.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0623aed7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list_item.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-list-item\",on:{\"!click\":function($event){$event.preventDefault();return _vm.openChat($event)}}},[_c('div',{staticClass:\"chat-list-item-left\"},[_c('UserAvatar',{attrs:{\"user\":_vm.chat.account,\"height\":\"48px\",\"width\":\"48px\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chat-list-item-center\"},[_c('div',{staticClass:\"heading\"},[(_vm.chat.account)?_c('span',{staticClass:\"name-and-account-name\"},[_c('ChatTitle',{attrs:{\"user\":_vm.chat.account}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"}),_vm._v(\" \"),_c('div',{staticClass:\"time-wrapper\"},[_c('Timeago',{attrs:{\"time\":_vm.chat.updated_at,\"auto-update\":60}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"chat-preview\"},[_c('StatusBody',{staticClass:\"chat-preview-body\",attrs:{\"status\":_vm.messageForStatusContent,\"single-line\":true}}),_vm._v(\" \"),(_vm.chat.unread > 0)?_c('div',{staticClass:\"badge badge-notification unread-chat-count\"},[_vm._v(\"\\n        \"+_vm._s(_vm.chat.unread)+\"\\n      \")]):_vm._e()],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst chatNew = {\n  components: {\n    BasicUserCard,\n    UserAvatar\n  },\n  data () {\n    return {\n      suggestions: [],\n      userIds: [],\n      loading: false,\n      query: ''\n    }\n  },\n  async created () {\n    const { chats } = await this.backendInteractor.chats()\n    chats.forEach(chat => this.suggestions.push(chat.account))\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.findUser(userId))\n    },\n    availableUsers () {\n      if (this.query.length !== 0) {\n        return this.users\n      } else {\n        return this.suggestions\n      }\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      backendInteractor: state => state.api.backendInteractor\n    }),\n    ...mapGetters(['findUser'])\n  },\n  methods: {\n    goBack () {\n      this.$emit('cancel')\n    },\n    goToChat (user) {\n      this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n    },\n    onInput () {\n      this.search(this.query)\n    },\n    addUser (user) {\n      this.selectedUserIds.push(user.id)\n      this.query = ''\n    },\n    removeUser (userId) {\n      this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n        .then(data => {\n          this.loading = false\n          this.userIds = data.accounts.map(a => a.id)\n        })\n    }\n  }\n}\n\nexport default chatNew\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_new.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_new.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_new.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a93dc9e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_new.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-default panel chat-new\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"input-wrap\"},[_c('div',{staticClass:\"input-search\"},[_c('FAIcon',{staticClass:\"search-icon fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"search\",attrs:{\"placeholder\":\"Search people\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInput]}})]),_vm._v(\" \"),_c('div',{staticClass:\"member-list\"},_vm._l((_vm.availableUsers),function(user){return _c('div',{key:user.id,staticClass:\"member\"},[_c('div',{on:{\"!click\":function($event){$event.preventDefault();return _vm.goToChat(user)}}},[_c('BasicUserCard',{attrs:{\"user\":user}})],1)])}),0)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n  components: {\n    ChatListItem,\n    List,\n    ChatNew\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    ...mapGetters(['sortedChatList'])\n  },\n  data () {\n    return {\n      isNew: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchChats', { latest: true })\n  },\n  methods: {\n    cancelNewChat () {\n      this.isNew = false\n      this.$store.dispatch('fetchChats', { latest: true })\n    },\n    newChat () {\n      this.isNew = true\n    }\n  }\n}\n\nexport default ChatList\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_list.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2f573a3c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isNew)?_c('div',[_c('ChatNew',{on:{\"cancel\":_vm.cancelNewChat}})],1):_c('div',{staticClass:\"chat-list panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t(\"chats.chats\"))+\"\\n    \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default\",on:{\"click\":_vm.newChat}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t(\"chats.new\"))+\"\\n    \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.sortedChatList.length > 0)?_c('div',{staticClass:\"timeline\"},[_c('List',{attrs:{\"items\":_vm.sortedChatList},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('ChatListItem',{key:item.id,attrs:{\"compact\":false,\"chat\":item}})]}}],null,false,1412157271)})],1):_c('div',{staticClass:\"emtpy-chat-list-alert\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chats.empty_chat_list_placeholder')))])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <time>\n    {{ displayDate }}\n  </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['date'],\n  computed: {\n    displayDate () {\n      const today = new Date()\n      today.setHours(0, 0, 0, 0)\n\n      if (this.date.getTime() === today.getTime()) {\n        return this.$t('display_date.today')\n      } else {\n        return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n      }\n    }\n  }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23377998\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message_date.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',[_vm._v(\"\\n  \"+_vm._s(_vm.displayDate)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faEllipsisH\n)\n\nconst ChatMessage = {\n  name: 'ChatMessage',\n  props: [\n    'author',\n    'edited',\n    'noHeading',\n    'chatViewItem',\n    'hoveredMessageChain'\n  ],\n  components: {\n    Popover,\n    Attachment,\n    StatusContent,\n    UserAvatar,\n    Gallery,\n    LinkPreview,\n    ChatMessageDate\n  },\n  computed: {\n    // Returns HH:MM (hours and minutes) in local time.\n    createdAt () {\n      const time = this.chatViewItem.data.created_at\n      return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n    },\n    isCurrentUser () {\n      return this.message.account_id === this.currentUser.id\n    },\n    message () {\n      return this.chatViewItem.data\n    },\n    userProfileLink () {\n      return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    isMessage () {\n      return this.chatViewItem.type === 'message'\n    },\n    messageForStatusContent () {\n      return {\n        summary: '',\n        emojis: this.message.emojis,\n        raw_html: this.message.content || '',\n        text: this.message.content || '',\n        attachments: this.message.attachments\n      }\n    },\n    hasAttachment () {\n      return this.message.attachments.length > 0\n    },\n    ...mapState({\n      betterShadow: state => state.interface.browserSupport.cssFilter,\n      currentUser: state => state.users.currentUser,\n      restrictedNicknames: state => state.instance.restrictedNicknames\n    }),\n    popoverMarginStyle () {\n      if (this.isCurrentUser) {\n        return {}\n      } else {\n        return { left: 50 }\n      }\n    },\n    ...mapGetters(['mergedConfig', 'findUser'])\n  },\n  data () {\n    return {\n      hovered: false,\n      menuOpened: false\n    }\n  },\n  methods: {\n    onHover (bool) {\n      this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n    },\n    async deleteMessage () {\n      const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n      if (confirmed) {\n        await this.$store.dispatch('deleteChatMessage', {\n          messageId: this.chatViewItem.data.id,\n          chatId: this.chatViewItem.data.chat_id\n        })\n      }\n      this.hovered = false\n      this.menuOpened = false\n    }\n  }\n}\n\nexport default ChatMessage\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_message.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_message.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_message.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3566ce4a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMessage)?_c('div',{staticClass:\"chat-message-wrapper\",class:{ 'hovered-message-chain': _vm.hoveredMessageChain },on:{\"mouseover\":function($event){return _vm.onHover(true)},\"mouseleave\":function($event){return _vm.onHover(false)}}},[_c('div',{staticClass:\"chat-message\",class:[{ 'outgoing': _vm.isCurrentUser, 'incoming': !_vm.isCurrentUser }]},[(!_vm.isCurrentUser)?_c('div',{staticClass:\"avatar-wrapper\"},[(_vm.chatViewItem.isHead)?_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.author}})],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chat-message-inner\"},[_c('div',{staticClass:\"status-body\",style:({ 'min-width': _vm.message.attachment ? '80%' : '' })},[_c('div',{staticClass:\"media status\",class:{ 'without-attachment': !_vm.hasAttachment, 'pending': _vm.chatViewItem.data.pending, 'error': _vm.chatViewItem.data.error },staticStyle:{\"position\":\"relative\"},on:{\"mouseenter\":function($event){_vm.hovered = true},\"mouseleave\":function($event){_vm.hovered = false}}},[_c('div',{staticClass:\"chat-message-menu\",class:{ 'visible': _vm.hovered || _vm.menuOpened }},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to-selector\":_vm.isCurrentUser ? '' : '.scrollable-message-list',\"bound-to\":{ x: 'container' },\"margin\":_vm.popoverMarginStyle},on:{\"show\":function($event){_vm.menuOpened = true},\"close\":function($event){_vm.menuOpened = false}},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":_vm.deleteMessage}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"chats.delete\"))+\"\\n                  \")],1)])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-default menu-icon\",attrs:{\"title\":_vm.$t('chats.more')}},[_c('FAIcon',{attrs:{\"icon\":\"ellipsis-h\"}})],1)]},proxy:true}],null,false,140024536)})],1),_vm._v(\" \"),_c('StatusContent',{staticClass:\"message-content\",attrs:{\"status\":_vm.messageForStatusContent,\"full-content\":true},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('span',{staticClass:\"created-at\"},[_vm._v(\"\\n                \"+_vm._s(_vm.createdAt)+\"\\n              \")])]},proxy:true}],null,false,4198611077)})],1)])])])]):_c('div',{staticClass:\"chat-message-date-separator\"},[_c('ChatMessageDate',{attrs:{\"date\":_vm.chatViewItem.date}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// Captures a scroll position\nexport const getScrollPosition = (el) => {\n  return {\n    scrollTop: el.scrollTop,\n    scrollHeight: el.scrollHeight,\n    offsetHeight: el.offsetHeight\n  }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n  return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (el, offset = 0) => {\n  if (!el) { return }\n  const scrollHeight = el.scrollTop + offset\n  const totalHeight = el.scrollHeight - el.offsetHeight\n  return totalHeight <= scrollHeight\n}\n\n// Height of the scrollable container. The dynamic height is needed to ensure the mobile browser panel doesn't overlap or hide the posting form.\nexport const scrollableContainerHeight = (inner, header, footer) => {\n  return inner.offsetHeight - header.clientHeight - footer.clientHeight\n}\n\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = (el) => {\n  if (!el) return\n\n  return el.scrollHeight > el.clientHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n  faChevronDown,\n  faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n  components: {\n    ChatMessage,\n    ChatTitle,\n    PostStatusForm\n  },\n  data () {\n    return {\n      jumpToBottomButtonVisible: false,\n      hoveredMessageChainId: undefined,\n      lastScrollPosition: {},\n      scrollableContainerHeight: '100%',\n      errorLoadingChat: false,\n      messageRetriers: {}\n    }\n  },\n  created () {\n    this.startFetching()\n    window.addEventListener('resize', this.handleLayoutChange)\n  },\n  mounted () {\n    window.addEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n    }\n\n    this.$nextTick(() => {\n      this.updateScrollableContainerHeight()\n      this.handleResize()\n    })\n    this.setChatLayout()\n  },\n  destroyed () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('resize', this.handleLayoutChange)\n    this.unsetChatLayout()\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.dispatch('clearCurrentChat')\n  },\n  computed: {\n    recipient () {\n      return this.currentChat && this.currentChat.account\n    },\n    recipientId () {\n      return this.$route.params.recipient_id\n    },\n    formPlaceholder () {\n      if (this.recipient) {\n        return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n      } else {\n        return ''\n      }\n    },\n    chatViewItems () {\n      return chatService.getView(this.currentChatMessageService)\n    },\n    newMessageCount () {\n      return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n    },\n    streamingEnabled () {\n      return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n    },\n    ...mapGetters([\n      'currentChat',\n      'currentChatMessageService',\n      'findOpenedChatByRecipientId',\n      'mergedConfig'\n    ]),\n    ...mapState({\n      backendInteractor: state => state.api.backendInteractor,\n      mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n      mobileLayout: state => state.interface.mobileLayout,\n      layoutHeight: state => state.interface.layoutHeight,\n      currentUser: state => state.users.currentUser\n    })\n  },\n  watch: {\n    chatViewItems () {\n      // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n      // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n      const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n      this.$nextTick(() => {\n        if (bottomedOutBeforeUpdate) {\n          this.scrollDown()\n        }\n      })\n    },\n    '$route': function () {\n      this.startFetching()\n    },\n    layoutHeight () {\n      this.handleResize({ expand: true })\n    },\n    mastoUserSocketStatus (newValue) {\n      if (newValue === WSConnectionStatus.JOINED) {\n        this.fetchChat({ isFirstFetch: true })\n      }\n    }\n  },\n  methods: {\n    // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n    onMessageHover ({ isHovered, messageChainId }) {\n      this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n    },\n    onFilesDropped () {\n      this.$nextTick(() => {\n        this.handleResize()\n        this.updateScrollableContainerHeight()\n      })\n    },\n    handleVisibilityChange () {\n      this.$nextTick(() => {\n        if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n          this.scrollDown({ forceRead: true })\n        }\n      })\n    },\n    setChatLayout () {\n      //   This is a hacky way to adjust the global layout to the mobile chat (without modifying the rest of the app).\n      //   This layout prevents empty spaces from being visible at the bottom\n      //   of the chat on iOS Safari (`safe-area-inset`) when\n      //   - the on-screen keyboard appears and the user starts typing\n      //   - the user selects the text inside the input area\n      //   - the user selects and deletes the text that is multiple lines long\n      //   TODO: unify the chat layout with the global layout.\n      let html = document.querySelector('html')\n      if (html) {\n        html.classList.add('chat-layout')\n      }\n\n      this.$nextTick(() => {\n        this.updateScrollableContainerHeight()\n      })\n    },\n    unsetChatLayout () {\n      let html = document.querySelector('html')\n      if (html) {\n        html.classList.remove('chat-layout')\n      }\n    },\n    handleLayoutChange () {\n      this.$nextTick(() => {\n        this.updateScrollableContainerHeight()\n        this.scrollDown()\n      })\n    },\n    // Ensures the proper position of the posting form in the mobile layout (the mobile browser panel does not overlap or hide it)\n    updateScrollableContainerHeight () {\n      const header = this.$refs.header\n      const footer = this.$refs.footer\n      const inner = this.mobileLayout ? window.document.body : this.$refs.inner\n      this.scrollableContainerHeight = scrollableContainerHeight(inner, header, footer) + 'px'\n    },\n    // Preserves the scroll position when OSK appears or the posting form changes its height.\n    handleResize (opts = {}) {\n      const { expand = false, delayed = false } = opts\n\n      if (delayed) {\n        setTimeout(() => {\n          this.handleResize({ ...opts, delayed: false })\n        }, SAFE_RESIZE_TIME_OFFSET)\n        return\n      }\n\n      this.$nextTick(() => {\n        this.updateScrollableContainerHeight()\n\n        const { offsetHeight = undefined } = this.lastScrollPosition\n        this.lastScrollPosition = getScrollPosition(this.$refs.scrollable)\n\n        const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n        if (diff < 0 || (!this.bottomedOut() && expand)) {\n          this.$nextTick(() => {\n            this.updateScrollableContainerHeight()\n            this.$refs.scrollable.scrollTo({\n              top: this.$refs.scrollable.scrollTop - diff,\n              left: 0\n            })\n          })\n        }\n      })\n    },\n    scrollDown (options = {}) {\n      const { behavior = 'auto', forceRead = false } = options\n      const scrollable = this.$refs.scrollable\n      if (!scrollable) { return }\n      this.$nextTick(() => {\n        scrollable.scrollTo({ top: scrollable.scrollHeight, left: 0, behavior })\n      })\n      if (forceRead) {\n        this.readChat()\n      }\n    },\n    readChat () {\n      if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n      if (document.hidden) { return }\n      const lastReadId = this.currentChatMessageService.maxId\n      this.$store.dispatch('readChat', {\n        id: this.currentChat.id,\n        lastReadId\n      })\n    },\n    bottomedOut (offset) {\n      return isBottomedOut(this.$refs.scrollable, offset)\n    },\n    reachedTop () {\n      const scrollable = this.$refs.scrollable\n      return scrollable && scrollable.scrollTop <= 0\n    },\n    cullOlderCheck () {\n      window.setTimeout(() => {\n        if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n          this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n        }\n      }, 5000)\n    },\n    handleScroll: _.throttle(function () {\n      if (!this.currentChat) { return }\n\n      if (this.reachedTop()) {\n        this.fetchChat({ maxId: this.currentChatMessageService.minId })\n      } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n        this.jumpToBottomButtonVisible = false\n        this.cullOlderCheck()\n        if (this.newMessageCount > 0) {\n          // Use a delay before marking as read to prevent situation where new messages\n          // arrive just as you're leaving the view and messages that you didn't actually\n          // get to see get marked as read.\n          window.setTimeout(() => {\n            // Don't mark as read if the element doesn't exist, user has left chat view\n            if (this.$el) this.readChat()\n          }, MARK_AS_READ_DELAY)\n        }\n      } else {\n        this.jumpToBottomButtonVisible = true\n      }\n    }, 200),\n    handleScrollUp (positionBeforeLoading) {\n      const positionAfterLoading = getScrollPosition(this.$refs.scrollable)\n      this.$refs.scrollable.scrollTo({\n        top: getNewTopPosition(positionBeforeLoading, positionAfterLoading),\n        left: 0\n      })\n    },\n    fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n      const chatMessageService = this.currentChatMessageService\n      if (!chatMessageService) { return }\n      if (fetchLatest && this.streamingEnabled) { return }\n\n      const chatId = chatMessageService.chatId\n      const fetchOlderMessages = !!maxId\n      const sinceId = fetchLatest && chatMessageService.maxId\n\n      return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n        .then((messages) => {\n          // Clear the current chat in case we're recovering from a ws connection loss.\n          if (isFirstFetch) {\n            chatService.clear(chatMessageService)\n          }\n\n          const positionBeforeUpdate = getScrollPosition(this.$refs.scrollable)\n          this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n            this.$nextTick(() => {\n              if (fetchOlderMessages) {\n                this.handleScrollUp(positionBeforeUpdate)\n              }\n\n              if (isFirstFetch) {\n                this.updateScrollableContainerHeight()\n              }\n\n              // In vertical screens, the first batch of fetched messages may not always take the\n              // full height of the scrollable container.\n              // If this is the case, we want to fetch the messages until the scrollable container\n              // is fully populated so that the user has the ability to scroll up and load the history.\n              if (!isScrollable(this.$refs.scrollable) && messages.length > 0) {\n                this.fetchChat({ maxId: this.currentChatMessageService.minId })\n              }\n            })\n          })\n        })\n    },\n    async startFetching () {\n      let chat = this.findOpenedChatByRecipientId(this.recipientId)\n      if (!chat) {\n        try {\n          chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n        } catch (e) {\n          console.error('Error creating or getting a chat', e)\n          this.errorLoadingChat = true\n        }\n      }\n      if (chat) {\n        this.$nextTick(() => {\n          this.scrollDown({ forceRead: true })\n        })\n        this.$store.dispatch('addOpenedChat', { chat })\n        this.doStartFetching()\n      }\n    },\n    doStartFetching () {\n      this.$store.dispatch('startFetchingCurrentChat', {\n        fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n      })\n      this.fetchChat({ isFirstFetch: true })\n    },\n    handleAttachmentPosting () {\n      this.$nextTick(() => {\n        this.handleResize()\n        // When the posting form size changes because of a media attachment, we need an extra resize\n        // to account for the potential delay in the DOM update.\n        setTimeout(() => {\n          this.updateScrollableContainerHeight()\n        }, SAFE_RESIZE_TIME_OFFSET)\n        this.scrollDown({ forceRead: true })\n      })\n    },\n    sendMessage ({ status, media, idempotencyKey }) {\n      const params = {\n        id: this.currentChat.id,\n        content: status,\n        idempotencyKey\n      }\n\n      if (media[0]) {\n        params.mediaId = media[0].id\n      }\n\n      const fakeMessage = buildFakeMessage({\n        attachments: media,\n        chatId: this.currentChat.id,\n        content: status,\n        userId: this.currentUser.id,\n        idempotencyKey\n      })\n\n      this.$store.dispatch('addChatMessages', {\n        chatId: this.currentChat.id,\n        messages: [fakeMessage]\n      }).then(() => {\n        this.handleAttachmentPosting()\n      })\n\n      return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n    },\n    doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n      if (retriesLeft <= 0) return\n\n      this.backendInteractor.sendChatMessage(params)\n        .then(data => {\n          this.$store.dispatch('addChatMessages', {\n            chatId: this.currentChat.id,\n            updateMaxId: false,\n            messages: [{ ...data, fakeId: fakeMessage.id }]\n          })\n\n          return data\n        })\n        .catch(error => {\n          console.error('Error sending message', error)\n          this.$store.dispatch('handleMessageError', {\n            chatId: this.currentChat.id,\n            fakeId: fakeMessage.id,\n            isRetry: retriesLeft !== MAX_RETRIES\n          })\n          if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n            this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n              this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n            }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n          }\n          return {}\n        })\n\n      return Promise.resolve(fakeMessage)\n    },\n    goBack () {\n      this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n    }\n  }\n}\n\nexport default Chat\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat.js\"\nimport __vue_script__ from \"!!babel-loader!./chat.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b3f1f68\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-view\"},[_c('div',{staticClass:\"chat-view-inner\"},[_c('div',{ref:\"inner\",staticClass:\"panel-default panel chat-view-body\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading chat-view-heading mobile-hidden\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"title text-center\"},[_c('ChatTitle',{attrs:{\"user\":_vm.recipient,\"with-avatar\":true}})],1)]),_vm._v(\" \"),[_c('div',{ref:\"scrollable\",staticClass:\"scrollable-message-list\",style:({ height: _vm.scrollableContainerHeight }),on:{\"scroll\":_vm.handleScroll}},[(!_vm.errorLoadingChat)?_vm._l((_vm.chatViewItems),function(chatViewItem){return _c('ChatMessage',{key:chatViewItem.id,attrs:{\"author\":_vm.recipient,\"chat-view-item\":chatViewItem,\"hovered-message-chain\":chatViewItem.messageChainId === _vm.hoveredMessageChainId},on:{\"hover\":_vm.onMessageHover}})}):_c('div',{staticClass:\"chat-loading-error\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('chats.error_loading_chat'))+\"\\n            \")])])],2),_vm._v(\" \"),_c('div',{ref:\"footer\",staticClass:\"panel-body footer\"},[_c('div',{staticClass:\"jump-to-bottom-button\",class:{ 'visible': _vm.jumpToBottomButtonVisible },on:{\"click\":function($event){return _vm.scrollDown({ behavior: 'smooth' })}}},[_c('span',[_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}}),_vm._v(\" \"),(_vm.newMessageCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count unread-message-count\"},[_vm._v(\"\\n                \"+_vm._s(_vm.newMessageCount)+\"\\n              \")]):_vm._e()],1)]),_vm._v(\" \"),_c('PostStatusForm',{attrs:{\"disable-subject\":true,\"disable-scope-selector\":true,\"disable-notice\":true,\"disable-lock-warning\":true,\"disable-polls\":true,\"disable-sensitivity-checkbox\":true,\"disable-submit\":_vm.errorLoadingChat || !_vm.currentChat,\"disable-preview\":true,\"optimistic-posting\":true,\"post-handler\":_vm.sendMessage,\"submit-on-enter\":!_vm.mobileLayout,\"preserve-focus\":!_vm.mobileLayout,\"auto-focus\":!_vm.mobileLayout,\"placeholder\":_vm.formPlaceholder,\"file-limit\":1,\"max-height\":\"160\",\"emoji-picker-placement\":\"top\"},on:{\"resize\":_vm.handleResize}})],1)]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n  props: [\n    'user',\n    'noFollowsYou'\n  ],\n  components: {\n    BasicUserCard,\n    RemoteFollow,\n    FollowButton\n  },\n  computed: {\n    isMe () {\n      return this.$store.state.users.currentUser.id === this.user.id\n    },\n    loggedIn () {\n      return this.$store.state.users.currentUser\n    },\n    relationship () {\n      return this.$store.getters.relationship(this.user.id)\n    }\n  }\n}\n\nexport default FollowCard\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-064803a0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-card-content-container\"},[(_vm.isMe || (!_vm.noFollowsYou && _vm.relationship.followed_by))?_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n      \"+_vm._s(_vm.isMe ? _vm.$t('user_card.its_you') : _vm.$t('user_card.follows_you'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn)?[(!_vm.relationship.following)?_c('div',{staticClass:\"follow-card-follow-button\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()]:(!_vm.isMe)?[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]:_vm._e()],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withLoadMore = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  destroy, // function called at \"destroyed\" lifecycle\n  childPropName = 'entries', // name of the prop to be passed into the wrapped component\n  additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n  const originalProps = Object.keys(getComponentProps(WrappedComponent))\n  const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n  return Vue.component('withLoadMore', {\n    props,\n    data () {\n      return {\n        loading: false,\n        bottomedOut: false,\n        error: false,\n        entries: []\n      }\n    },\n    created () {\n      window.addEventListener('scroll', this.scrollLoad)\n      if (this.entries.length === 0) {\n        this.fetchEntries()\n      }\n    },\n    destroyed () {\n      window.removeEventListener('scroll', this.scrollLoad)\n      destroy && destroy(this.$props, this.$store)\n    },\n    methods: {\n      // Entries is not a computed because computed can't track the dynamic\n      // selector for changes and won't trigger after fetch.\n      updateEntries () {\n        this.entries = select(this.$props, this.$store) || []\n      },\n      fetchEntries () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then((newEntries) => {\n              this.loading = false\n              this.bottomedOut = isEmpty(newEntries)\n            })\n            .catch(() => {\n              this.loading = false\n              this.error = true\n            })\n            .finally(() => {\n              this.updateEntries()\n            })\n        }\n      },\n      scrollLoad (e) {\n        const bodyBRect = document.body.getBoundingClientRect()\n        const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n        if (this.loading === false &&\n          this.bottomedOut === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)\n        ) {\n          this.fetchEntries()\n        }\n      }\n    },\n    render (h) {\n      const props = {\n        props: {\n          ...this.$props,\n          [childPropName]: this.entries\n        },\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }\n      const children = Object.entries(this.$slots).map(([key, value]) => h('template', { slot: key }, value))\n      return (\n        <div class=\"with-load-more\">\n          <WrappedComponent {...props}>\n            {children}\n          </WrappedComponent>\n          <div class=\"with-load-more-footer\">\n            {this.error &&\n              <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n                {this.$t('general.generic_error')}\n              </button>\n            }\n            {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n            {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n          </div>\n        </div>\n      )\n    }\n  })\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.js'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n  data () {\n    return {\n      error: false,\n      userId: null,\n      tab: defaultTabKey\n    }\n  },\n  created () {\n    const routeParams = this.$route.params\n    this.load(routeParams.name || routeParams.id)\n    this.tab = get(this.$route, 'query.tab', defaultTabKey)\n  },\n  destroyed () {\n    this.stopFetching()\n  },\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.user\n    },\n    favorites () {\n      return this.$store.state.statuses.timelines.favorites\n    },\n    media () {\n      return this.$store.state.statuses.timelines.media\n    },\n    isUs () {\n      return this.userId && this.$store.state.users.currentUser.id &&\n        this.userId === this.$store.state.users.currentUser.id\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    isExternal () {\n      return this.$route.name === 'external-user-profile'\n    },\n    followsTabVisible () {\n      return this.isUs || !this.user.hide_follows\n    },\n    followersTabVisible () {\n      return this.isUs || !this.user.hide_followers\n    }\n  },\n  methods: {\n    load (userNameOrId) {\n      const startFetchingTimeline = (timeline, userId) => {\n        // Clear timeline only if load another user's profile\n        if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n          this.$store.commit('clearTimeline', { timeline })\n        }\n        this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n      }\n\n      const loadById = (userId) => {\n        this.userId = userId\n        startFetchingTimeline('user', userId)\n        startFetchingTimeline('media', userId)\n        if (this.isUs) {\n          startFetchingTimeline('favorites', userId)\n        }\n        // Fetch all pinned statuses immediately\n        this.$store.dispatch('fetchPinnedStatuses', userId)\n      }\n\n      // Reset view\n      this.userId = null\n      this.error = false\n\n      // Check if user data is already loaded in store\n      const user = this.$store.getters.findUser(userNameOrId)\n      if (user) {\n        loadById(user.id)\n      } else {\n        this.$store.dispatch('fetchUser', userNameOrId)\n          .then(({ id }) => loadById(id))\n          .catch((reason) => {\n            const errorMessage = get(reason, 'error.error')\n            if (errorMessage === 'No user with such user_id') { // Known error\n              this.error = this.$t('user_profile.profile_does_not_exist')\n            } else if (errorMessage) {\n              this.error = errorMessage\n            } else {\n              this.error = this.$t('user_profile.profile_loading_error')\n            }\n          })\n      }\n    },\n    stopFetching () {\n      this.$store.dispatch('stopFetchingTimeline', 'user')\n      this.$store.dispatch('stopFetchingTimeline', 'favorites')\n      this.$store.dispatch('stopFetchingTimeline', 'media')\n    },\n    switchUser (userNameOrId) {\n      this.stopFetching()\n      this.load(userNameOrId)\n    },\n    onTabSwitch (tab) {\n      this.tab = tab\n      this.$router.replace({ query: { tab } })\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    }\n  },\n  watch: {\n    '$route.params.id': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.params.name': function (newVal) {\n      if (newVal) {\n        this.switchUser(newVal)\n      }\n    },\n    '$route.query': function (newVal) {\n      this.tab = newVal.tab || defaultTabKey\n    }\n  },\n  components: {\n    UserCard,\n    Timeline,\n    FollowerList,\n    FriendList,\n    FollowCard,\n    TabSwitcher,\n    Conversation,\n    RichContent\n  }\n}\n\nexport default UserProfile\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_profile.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_profile.js\"\nimport __vue_script__ from \"!!babel-loader!./user_profile.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4fd258c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_profile.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.user)?_c('div',{staticClass:\"user-profile panel panel-default\"},[_c('UserCard',{attrs:{\"user-id\":_vm.userId,\"switcher\":true,\"selected\":_vm.timeline.viewing,\"allow-zooming-avatar\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),(_vm.user.fields_html && _vm.user.fields_html.length > 0)?_c('div',{staticClass:\"user-profile-fields\"},_vm._l((_vm.user.fields_html),function(field,index){return _c('dl',{key:index,staticClass:\"user-profile-field\"},[_c('dt',{staticClass:\"user-profile-field-name\",attrs:{\"title\":_vm.user.fields_text[index].name}},[_c('RichContent',{attrs:{\"html\":field.name,\"emoji\":_vm.user.emoji}})],1),_vm._v(\" \"),_c('dd',{staticClass:\"user-profile-field-value\",attrs:{\"title\":_vm.user.fields_text[index].value}},[_c('RichContent',{attrs:{\"html\":field.value,\"emoji\":_vm.user.emoji}})],1)])}),0):_vm._e(),_vm._v(\" \"),_c('tab-switcher',{attrs:{\"active-tab\":_vm.tab,\"render-only-focused\":true,\"on-switch\":_vm.onTabSwitch}},[_c('Timeline',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses'),\"count\":_vm.user.statuses_count,\"embedded\":true,\"title\":_vm.$t('user_profile.timeline_title'),\"timeline\":_vm.timeline,\"timeline-name\":\"user\",\"user-id\":_vm.userId,\"pinned-status-ids\":_vm.user.pinnedStatusIds,\"in-profile\":true}}),_vm._v(\" \"),(_vm.followsTabVisible)?_c('div',{key:\"followees\",attrs:{\"label\":_vm.$t('user_card.followees'),\"disabled\":!_vm.user.friends_count}},[_c('FriendList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item}})]}}],null,false,676117295)})],1):_vm._e(),_vm._v(\" \"),(_vm.followersTabVisible)?_c('div',{key:\"followers\",attrs:{\"label\":_vm.$t('user_card.followers'),\"disabled\":!_vm.user.followers_count}},[_c('FollowerList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item,\"no-follows-you\":_vm.isUs}})]}}],null,false,3839341157)})],1):_vm._e(),_vm._v(\" \"),_c('Timeline',{key:\"media\",attrs:{\"label\":_vm.$t('user_card.media'),\"disabled\":!_vm.media.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.media'),\"timeline-name\":\"media\",\"timeline\":_vm.media,\"user-id\":_vm.userId,\"in-profile\":true}}),_vm._v(\" \"),(_vm.isUs)?_c('Timeline',{key:\"favorites\",attrs:{\"label\":_vm.$t('user_card.favorites'),\"disabled\":!_vm.favorites.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.favorites'),\"timeline-name\":\"favorites\",\"timeline\":_vm.favorites,\"in-profile\":true}}):_vm._e()],1)],1):_c('div',{staticClass:\"panel user-profile-placeholder\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('settings.profile_tab'))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.error)?_c('span',[_vm._v(_vm._s(_vm.error))]):_c('FAIcon',{attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faSearch\n)\n\nconst Search = {\n  components: {\n    FollowCard,\n    Conversation,\n    Status\n  },\n  props: [\n    'query'\n  ],\n  data () {\n    return {\n      loaded: false,\n      loading: false,\n      searchTerm: this.query || '',\n      userIds: [],\n      statuses: [],\n      hashtags: [],\n      currenResultTab: 'statuses'\n    }\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.$store.getters.findUser(userId))\n    },\n    visibleStatuses () {\n      const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n      return this.statuses.filter(status =>\n        allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n      )\n    }\n  },\n  mounted () {\n    this.search(this.query)\n  },\n  watch: {\n    query (newValue) {\n      this.searchTerm = newValue\n      this.search(newValue)\n    }\n  },\n  methods: {\n    newQuery (query) {\n      this.$router.push({ name: 'search', query: { query } })\n      this.$refs.searchInput.focus()\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.statuses = []\n      this.hashtags = []\n      this.$refs.searchInput.blur()\n\n      this.$store.dispatch('search', { q: query, resolve: true })\n        .then(data => {\n          this.loading = false\n          this.userIds = map(data.accounts, 'id')\n          this.statuses = data.statuses\n          this.hashtags = data.hashtags\n          this.currenResultTab = this.getActiveTab()\n          this.loaded = true\n        })\n    },\n    resultCount (tabName) {\n      const length = this[tabName].length\n      return length === 0 ? '' : ` (${length})`\n    },\n    onResultTabSwitch (key) {\n      this.currenResultTab = key\n    },\n    getActiveTab () {\n      if (this.visibleStatuses.length > 0) {\n        return 'statuses'\n      } else if (this.users.length > 0) {\n        return 'people'\n      } else if (this.hashtags.length > 0) {\n        return 'hashtags'\n      }\n\n      return 'statuses'\n    },\n    lastHistoryRecord (hashtag) {\n      return hashtag.history && hashtag.history[0]\n    }\n  }\n}\n\nexport default Search\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search.js\"\nimport __vue_script__ from \"!!babel-loader!./search.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52f57ebe\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('nav.search'))+\"\\n    \")])]),_vm._v(\" \"),_c('div',{staticClass:\"search-input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-input\",attrs:{\"placeholder\":_vm.$t('nav.search')},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.newQuery(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.newQuery(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"icon\":\"search\"}})],1)]),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"text-center loading-icon\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1):(_vm.loaded)?_c('div',[_c('div',{staticClass:\"search-nav-heading\"},[_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onResultTabSwitch,\"active-tab\":_vm.currenResultTab}},[_c('span',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses') + _vm.resultCount('visibleStatuses')}}),_vm._v(\" \"),_c('span',{key:\"people\",attrs:{\"label\":_vm.$t('search.people') + _vm.resultCount('users')}}),_vm._v(\" \"),_c('span',{key:\"hashtags\",attrs:{\"label\":_vm.$t('search.hashtags') + _vm.resultCount('hashtags')}})])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.currenResultTab === 'statuses')?_c('div',[(_vm.visibleStatuses.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.visibleStatuses),function(status){return _c('Status',{key:status.id,staticClass:\"search-result\",attrs:{\"collapsable\":false,\"expandable\":false,\"compact\":false,\"statusoid\":status,\"no-heading\":false}})})],2):(_vm.currenResultTab === 'people')?_c('div',[(_vm.users.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item search-result\",attrs:{\"user\":user}})})],2):(_vm.currenResultTab === 'hashtags')?_c('div',[(_vm.hashtags.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.hashtags),function(hashtag){return _c('div',{key:hashtag.url,staticClass:\"status trend search-result\"},[_c('div',{staticClass:\"hashtag\"},[_c('router-link',{attrs:{\"to\":{ name: 'tag-timeline', params: { tag: hashtag.name } }}},[_vm._v(\"\\n            #\"+_vm._s(hashtag.name)+\"\\n          \")]),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',[(_vm.lastHistoryRecord(hashtag).accounts == 1)?_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.$t('search.person_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n            \")]):_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.$t('search.people_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n            \")])]):_vm._e()],1),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',{staticClass:\"count\"},[_vm._v(\"\\n          \"+_vm._s(_vm.lastHistoryRecord(hashtag).uses)+\"\\n        \")]):_vm._e()])})],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"search-result-footer text-center panel-footer faint\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { validationMixin } from 'vuelidate'\nimport { required, requiredIf, sameAs } from 'vuelidate/lib/validators'\nimport { mapActions, mapState } from 'vuex'\n\nconst registration = {\n  mixins: [validationMixin],\n  data: () => ({\n    user: {\n      email: '',\n      fullname: '',\n      username: '',\n      password: '',\n      confirm: '',\n      reason: ''\n    },\n    captcha: {}\n  }),\n  validations () {\n    return {\n      user: {\n        email: { required: requiredIf(() => this.accountActivationRequired) },\n        username: { required },\n        fullname: { required },\n        password: { required },\n        confirm: {\n          required,\n          sameAsPassword: sameAs('password')\n        },\n        reason: { required: requiredIf(() => this.accountApprovalRequired) }\n      }\n    }\n  },\n  created () {\n    if ((!this.registrationOpen && !this.token) || this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n\n    this.setCaptcha()\n  },\n  computed: {\n    token () { return this.$route.params.token },\n    bioPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n    },\n    reasonPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n    },\n    ...mapState({\n      registrationOpen: (state) => state.instance.registrationOpen,\n      signedIn: (state) => !!state.users.currentUser,\n      isPending: (state) => state.users.signUpPending,\n      serverValidationErrors: (state) => state.users.signUpErrors,\n      termsOfService: (state) => state.instance.tos,\n      accountActivationRequired: (state) => state.instance.accountActivationRequired,\n      accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n    })\n  },\n  methods: {\n    ...mapActions(['signUp', 'getCaptcha']),\n    async submit () {\n      this.user.nickname = this.user.username\n      this.user.token = this.token\n\n      this.user.captcha_solution = this.captcha.solution\n      this.user.captcha_token = this.captcha.token\n      this.user.captcha_answer_data = this.captcha.answer_data\n\n      this.$v.$touch()\n\n      if (!this.$v.$invalid) {\n        try {\n          await this.signUp(this.user)\n          this.$router.push({ name: 'friends' })\n        } catch (error) {\n          console.warn('Registration failed: ', error)\n          this.setCaptcha()\n        }\n      }\n    },\n    setCaptcha () {\n      this.getCaptcha().then(cpt => { this.captcha = cpt })\n    },\n    replaceNewlines (str) {\n      return str.replace(/\\s*\\n\\s*/g, ' \\n')\n    }\n  }\n}\n\nexport default registration\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./registration.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./registration.js\"\nimport __vue_script__ from \"!!babel-loader!./registration.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52163aea\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./registration.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('registration.registration'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"registration-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit(_vm.user)}}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-fields\"},[_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.username.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.username.$model),expression:\"$v.user.username.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-username\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.username_placeholder')},domProps:{\"value\":(_vm.$v.user.username.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.username, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.username.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.username.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.username_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.fullname.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-fullname\"}},[_vm._v(_vm._s(_vm.$t('registration.fullname')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.fullname.$model),expression:\"$v.user.fullname.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-fullname\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.fullname_placeholder')},domProps:{\"value\":(_vm.$v.user.fullname.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.fullname, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.fullname.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.fullname.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.fullname_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.email.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t('registration.email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.$v.user.email.$model),expression:\"$v.user.email.$model\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"disabled\":_vm.isPending,\"type\":\"email\"},domProps:{\"value\":(_vm.$v.user.email.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.email, \"$model\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.email.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.email.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.email_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"bio\"}},[_vm._v(_vm._s(_vm.$t('registration.bio'))+\" (\"+_vm._s(_vm.$t('general.optional'))+\")\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.bio),expression:\"user.bio\"}],staticClass:\"form-control\",attrs:{\"id\":\"bio\",\"disabled\":_vm.isPending,\"placeholder\":_vm.bioPlaceholder},domProps:{\"value\":(_vm.user.bio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"bio\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.password.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.password.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.password.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.confirm.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password-confirmation\"}},[_vm._v(_vm._s(_vm.$t('registration.password_confirm')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.confirm),expression:\"user.confirm\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password-confirmation\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.confirm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"confirm\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.confirm.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.confirm.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_required')))])]):_vm._e(),_vm._v(\" \"),(!_vm.$v.user.confirm.sameAsPassword)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_match')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.accountApprovalRequired)?_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"reason\"}},[_vm._v(_vm._s(_vm.$t('registration.reason')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.reason),expression:\"user.reason\"}],staticClass:\"form-control\",attrs:{\"id\":\"reason\",\"disabled\":_vm.isPending,\"placeholder\":_vm.reasonPlaceholder},domProps:{\"value\":(_vm.user.reason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"reason\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),(_vm.captcha.type != 'none')?_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"captcha-group\"}},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"captcha-label\"}},[_vm._v(_vm._s(_vm.$t('registration.captcha')))]),_vm._v(\" \"),(['kocaptcha', 'native'].includes(_vm.captcha.type))?[_c('img',{attrs:{\"src\":_vm.captcha.url},on:{\"click\":_vm.setCaptcha}}),_vm._v(\" \"),_c('sub',[_vm._v(_vm._s(_vm.$t('registration.new_captcha')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.captcha.solution),expression:\"captcha.solution\"}],staticClass:\"form-control\",attrs:{\"id\":\"captcha-answer\",\"disabled\":_vm.isPending,\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":(_vm.captcha.solution)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.captcha, \"solution\", $event.target.value)}}})]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.token)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"token\"}},[_vm._v(_vm._s(_vm.$t('registration.token')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.token),expression:\"token\"}],staticClass:\"form-control\",attrs:{\"id\":\"token\",\"disabled\":\"true\",\"type\":\"text\"},domProps:{\"value\":(_vm.token)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.token=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('registration.register'))+\"\\n            \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"terms-of-service\",domProps:{\"innerHTML\":_vm._s(_vm.termsOfService)}})]),_vm._v(\" \"),(_vm.serverValidationErrors.length)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},_vm._l((_vm.serverValidationErrors),function(error){return _c('span',{key:error},[_vm._v(_vm._s(error))])}),0)]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n  const params = { email }\n  const query = reduce(params, (acc, v, k) => {\n    const encoded = `${k}=${encodeURIComponent(v)}`\n    return `${acc}&${encoded}`\n  }, '')\n  const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n  return window.fetch(url, {\n    method: 'POST'\n  })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst passwordReset = {\n  data: () => ({\n    user: {\n      email: ''\n    },\n    isPending: false,\n    success: false,\n    throttled: false,\n    error: null\n  }),\n  computed: {\n    ...mapState({\n      signedIn: (state) => !!state.users.currentUser,\n      instance: state => state.instance\n    }),\n    mailerEnabled () {\n      return this.instance.mailerEnabled\n    }\n  },\n  created () {\n    if (this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n  },\n  props: {\n    passwordResetRequested: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    dismissError () {\n      this.error = null\n    },\n    submit () {\n      this.isPending = true\n      const email = this.user.email\n      const instance = this.instance.server\n\n      passwordResetApi({ instance, email }).then(({ status }) => {\n        this.isPending = false\n        this.user.email = ''\n\n        if (status === 204) {\n          this.success = true\n          this.error = null\n        } else if (status === 429) {\n          this.throttled = true\n          this.error = this.$t('password_reset.too_many_requests')\n        }\n      }).catch(() => {\n        this.isPending = false\n        this.user.email = ''\n        this.error = this.$t('general.generic_error')\n      })\n    }\n  }\n}\n\nexport default passwordReset\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./password_reset.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./password_reset.js\"\nimport __vue_script__ from \"!!babel-loader!./password_reset.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-63bf2728\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./password_reset.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('password_reset.password_reset'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"password-reset-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"container\"},[(!_vm.mailerEnabled)?_c('div',[(_vm.passwordResetRequested)?_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.password_reset_required_but_mailer_is_disabled'))+\"\\n          \")]):_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.password_reset_disabled'))+\"\\n          \")])]):(_vm.success || _vm.throttled)?_c('div',[(_vm.success)?_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.check_email'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group text-center\"},[_c('router-link',{attrs:{\"to\":{name: 'root'}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('password_reset.return_home'))+\"\\n            \")])],1)]):_c('div',[(_vm.passwordResetRequested)?_c('p',{staticClass:\"password-reset-required error\"},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.password_reset_required'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.instruction'))+\"\\n          \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.email),expression:\"user.email\"}],ref:\"email\",staticClass:\"form-control\",attrs:{\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('password_reset.placeholder'),\"type\":\"input\"},domProps:{\"value\":(_vm.user.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"email\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('settings.save'))+\"\\n            \")])])]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"alert error notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.error))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e()])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n  props: ['user'],\n  components: {\n    BasicUserCard\n  },\n  methods: {\n    findFollowRequestNotificationId () {\n      const notif = notificationsFromStore(this.$store).find(\n        (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n      )\n      return notif && notif.id\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n      this.$store.dispatch('updateNotification', {\n        id: notifId,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      const notifId = this.findFollowRequestNotificationId()\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  }\n}\n\nexport default FollowRequestCard\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_request_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_request_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_request_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-84be1288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_request_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n  components: {\n    FollowRequestCard\n  },\n  computed: {\n    requests () {\n      return this.$store.state.api.followRequests\n    }\n  }\n}\n\nexport default FollowRequests\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-request-card-content-container\"},[_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n    \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.denyUser}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('user_card.deny'))+\"\\n    \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!./follow_requests.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_requests.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62e19784\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_requests.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('nav.friend_requests'))+\"\\n    \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.requests),function(request){return _c('FollowRequestCard',{key:request.id,staticClass:\"list-item\",attrs:{\"user\":request}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n  props: ['code'],\n  mounted () {\n    if (this.code) {\n      const { clientId, clientSecret } = this.$store.state.oauth\n\n      oauth.getToken({\n        clientId,\n        clientSecret,\n        instance: this.$store.state.instance.server,\n        code: this.code\n      }).then((result) => {\n        this.$store.commit('setToken', result.access_token)\n        this.$store.dispatch('loginUser', result.access_token)\n        this.$router.push({ name: 'friends' })\n      })\n    }\n  }\n}\n\nexport default oac\n","/* script */\nexport * from \"!!babel-loader!./oauth_callback.js\"\nimport __vue_script__ from \"!!babel-loader!./oauth_callback.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f514124c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./oauth_callback.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"...\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst LoginForm = {\n  data: () => ({\n    user: {},\n    error: false\n  }),\n  computed: {\n    isPasswordAuth () { return this.requiredPassword },\n    isTokenAuth () { return this.requiredToken },\n    ...mapState({\n      registrationOpen: state => state.instance.registrationOpen,\n      instance: state => state.instance,\n      loggingIn: state => state.users.loggingIn,\n      oauth: state => state.oauth\n    }),\n    ...mapGetters(\n      'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n    )\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    submit () {\n      this.isTokenAuth ? this.submitToken() : this.submitPassword()\n    },\n    submitToken () {\n      const { clientId, clientSecret } = this.oauth\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n\n      oauthApi.getOrCreateApp(data)\n        .then((app) => { oauthApi.login({ ...app, ...data }) })\n    },\n    submitPassword () {\n      const { clientId } = this.oauth\n      const data = {\n        clientId,\n        oauth: this.oauth,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n      this.error = false\n\n      oauthApi.getOrCreateApp(data).then((app) => {\n        oauthApi.getTokenWithCredentials(\n          {\n            ...app,\n            instance: data.instance,\n            username: this.user.username,\n            password: this.user.password\n          }\n        ).then((result) => {\n          if (result.error) {\n            if (result.error === 'mfa_required') {\n              this.requireMFA({ settings: result })\n            } else if (result.identifier === 'password_reset_required') {\n              this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n            } else {\n              this.error = result.error\n              this.focusOnPasswordInput()\n            }\n            return\n          }\n          this.login(result).then(() => {\n            this.$router.push({ name: 'friends' })\n          })\n        })\n      })\n    },\n    clearError () { this.error = false },\n    focusOnPasswordInput () {\n      let passwordInput = this.$refs.passwordInput\n      passwordInput.focus()\n      passwordInput.setSelectionRange(0, passwordInput.value.length)\n    }\n  }\n}\n\nexport default LoginForm\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./login_form.js\"\nimport __vue_script__ from \"!!babel-loader!./login_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d5a53416\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('login.login'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[(_vm.isPasswordAuth)?[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.username),expression:\"user.username\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"disabled\":_vm.loggingIn,\"placeholder\":_vm.$t('login.placeholder')},domProps:{\"value\":(_vm.user.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"username\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],ref:\"passwordInput\",staticClass:\"form-control\",attrs:{\"id\":\"password\",\"disabled\":_vm.loggingIn,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('router-link',{attrs:{\"to\":{name: 'password-reset'}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('password_reset.forgot_password'))+\"\\n          \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.isTokenAuth)?_c('div',{staticClass:\"form-group\"},[_c('p',[_vm._v(_vm._s(_vm.$t('login.description')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[(_vm.registrationOpen)?_c('router-link',{staticClass:\"register\",attrs:{\"to\":{name: 'registration'}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('login.register'))+\"\\n            \")]):_vm._e()],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.loggingIn,\"type\":\"submit\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('login.login'))+\"\\n          \")])])])],2)]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n      \"+_vm._s(_vm.error)+\"\\n      \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst mfa = {\n  verifyOTPCode,\n  verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyRecoveryCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","/* script */\nexport * from \"!!babel-loader!./recovery_form.js\"\nimport __vue_script__ from \"!!babel-loader!./recovery_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b425343\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./recovery_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('login.heading.recovery'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(_vm._s(_vm.$t('login.recovery_code')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireTOTP($event)}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('login.enter_two_factor_code'))+\"\\n            \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('general.cancel'))+\"\\n            \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('general.verify'))+\"\\n          \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n      \"+_vm._s(_vm.error)+\"\\n      \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyOTPCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","/* script */\nexport * from \"!!babel-loader!./totp_form.js\"\nimport __vue_script__ from \"!!babel-loader!./totp_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60cb7c28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./totp_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('login.heading.totp'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('login.authentication_code'))+\"\\n        \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireRecovery($event)}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('login.enter_recovery_code'))+\"\\n            \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n              \"+_vm._s(_vm.$t('general.cancel'))+\"\\n            \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('general.verify'))+\"\\n          \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n      \"+_vm._s(_vm.error)+\"\\n      \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"size\":\"lg\",\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n  name: 'AuthForm',\n  render (createElement) {\n    return createElement('component', { is: this.authForm })\n  },\n  computed: {\n    authForm () {\n      if (this.requiredTOTP) { return 'MFATOTPForm' }\n      if (this.requiredRecovery) { return 'MFARecoveryForm' }\n      return 'LoginForm'\n    },\n    ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n  },\n  components: {\n    MFARecoveryForm,\n    MFATOTPForm,\n    LoginForm\n  }\n}\n\nexport default AuthForm\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBullhorn,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBullhorn,\n  faTimes\n)\n\nconst shoutPanel = {\n  props: [ 'floating' ],\n  data () {\n    return {\n      currentMessage: '',\n      channel: null,\n      collapsed: true\n    }\n  },\n  computed: {\n    messages () {\n      return this.$store.state.shout.messages\n    }\n  },\n  methods: {\n    submit (message) {\n      this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n      this.currentMessage = ''\n    },\n    togglePanel () {\n      this.collapsed = !this.collapsed\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    messages (newVal) {\n      const scrollEl = this.$el.querySelector('.chat-window')\n      if (!scrollEl) return\n      if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n        this.$nextTick(() => {\n          if (!scrollEl) return\n          scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n        })\n      }\n    }\n  }\n}\n\nexport default shoutPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./shout_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./shout_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./shout_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e7a8bbc2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./shout_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.collapsed || !_vm.floating)?_c('div',{staticClass:\"shout-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading timeline-heading\",class:{ 'shout-heading': _vm.floating },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n        \"),(_vm.floating)?_c('FAIcon',{staticClass:\"close-icon\",attrs:{\"icon\":\"times\"}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"shout-window\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"shout-message\"},[_c('span',{staticClass:\"shout-avatar\"},[_c('img',{attrs:{\"src\":message.author.avatar}})]),_vm._v(\" \"),_c('div',{staticClass:\"shout-content\"},[_c('router-link',{staticClass:\"shout-name\",attrs:{\"to\":_vm.userProfileLink(message.author)}},[_vm._v(\"\\n            \"+_vm._s(message.author.username)+\"\\n          \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"shout-text\"},[_vm._v(\"\\n            \"+_vm._s(message.text)+\"\\n          \")])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"shout-input\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentMessage),expression:\"currentMessage\"}],staticClass:\"shout-input-textarea\",attrs:{\"rows\":\"1\"},domProps:{\"value\":(_vm.currentMessage)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit(_vm.currentMessage)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentMessage=$event.target.value}}})])])]):_c('div',{staticClass:\"shout-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading stub timeline-heading shout-heading\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"bullhorn\"}}),_vm._v(\"\\n        \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n      \")],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n  components: {\n    FollowCard\n  },\n  data () {\n    return {\n      users: []\n    }\n  },\n  mounted () {\n    this.getWhoToFollow()\n  },\n  methods: {\n    showWhoToFollow (reply) {\n      reply.forEach((i, index) => {\n        this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n          .then((externalUser) => {\n            if (!externalUser.error) {\n              this.$store.commit('addNewUsers', [externalUser])\n              this.users.push(externalUser)\n            }\n          })\n      })\n    },\n    getWhoToFollow () {\n      const credentials = this.$store.state.users.currentUser.credentials\n      if (credentials) {\n        apiService.suggestions({ credentials: credentials })\n          .then((reply) => {\n            this.showWhoToFollow(reply)\n          })\n      }\n    }\n  }\n}\n\nexport default WhoToFollow\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4f8c3288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item\",attrs:{\"user\":user}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const InstanceSpecificPanel = {\n  computed: {\n    instanceSpecificPanelContent () {\n      return this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default InstanceSpecificPanel\n","/* script */\nexport * from \"!!babel-loader!./instance_specific_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./instance_specific_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b01187b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./instance_specific_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"instance-specific-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.instanceSpecificPanelContent)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n  computed: {\n    shout: function () { return this.$store.state.instance.shoutAvailable },\n    pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n    gopher: function () { return this.$store.state.instance.gopherAvailable },\n    whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n    mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n    minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n    textlimit: function () { return this.$store.state.instance.textlimit },\n    uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n  }\n}\n\nexport default FeaturesPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./features_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./features_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./features_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9d4c35f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./features_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"features-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('features_panel.title'))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body features-panel\"},[_c('ul',[(_vm.shout)?_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.$t('features_panel.shout'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.pleromaChatMessages)?_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.$t('features_panel.pleroma_chat_messages'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.gopher)?_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.$t('features_panel.gopher'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.whoToFollow)?_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.$t('features_panel.who_to_follow'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('li',[_vm._v(\"\\n          \"+_vm._s(_vm.$t('features_panel.media_proxy'))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.scope_options')))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.text_limit'))+\" = \"+_vm._s(_vm.textlimit))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.upload_limit'))+\" = \"+_vm._s(_vm.uploadlimit.num)+\" \"+_vm._s(_vm.$t('upload.file_size_units.' + _vm.uploadlimit.unit)))])])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const TermsOfServicePanel = {\n  computed: {\n    content () {\n      return this.$store.state.instance.tos\n    }\n  }\n}\n\nexport default TermsOfServicePanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./terms_of_service_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./terms_of_service_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./terms_of_service_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-687e38f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./terms_of_service_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"tos-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n  created () {\n    const nicknames = this.$store.state.instance.staffAccounts\n    nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n  },\n  components: {\n    BasicUserCard\n  },\n  computed: {\n    groupedStaffAccounts () {\n      const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n      const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n      return [\n        { role: 'admin', users: groupedStaffAccounts['admin'] },\n        { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n      ].filter(group => group.users)\n    },\n    ...mapGetters([\n      'findUser'\n    ]),\n    ...mapState({\n      staffAccounts: state => state.instance.staffAccounts\n    })\n  }\n}\n\nexport default StaffPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./staff_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./staff_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./staff_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31dce24a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./staff_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"staff-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"about.staff\"))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.groupedStaffAccounts),function(group){return _c('div',{key:group.role,staticClass:\"staff-group\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('general.role.' + group.role)))]),_vm._v(\" \"),_vm._l((group.users),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})})],2)}),0)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n  return instances.map(instance => {\n    if (info[key] && info[key][instance] && info[key][instance]['reason']) {\n      return { instance: instance, reason: info[key][instance]['reason'] }\n    }\n    return { instance: instance, reason: '' }\n  })\n}\n\nconst MRFTransparencyPanel = {\n  computed: {\n    ...mapState({\n      federationPolicy: state => get(state, 'instance.federationPolicy'),\n      mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n      quarantineInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.quarantined_instances', []),\n        get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n        'quarantined_instances'\n      ),\n      acceptInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'accept'\n      ),\n      rejectInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'reject'\n      ),\n      ftlRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'federated_timeline_removal'\n      ),\n      mediaNsfwInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_nsfw'\n      ),\n      mediaRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_removal'\n      ),\n      keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n      keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n      keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n    }),\n    hasInstanceSpecificPolicies () {\n      return this.quarantineInstances.length ||\n        this.acceptInstances.length ||\n        this.rejectInstances.length ||\n        this.ftlRemovalInstances.length ||\n        this.mediaNsfwInstances.length ||\n        this.mediaRemovalInstances.length\n    },\n    hasKeywordPolicies () {\n      return this.keywordsFtlRemoval.length ||\n        this.keywordsReject.length ||\n        this.keywordsReplace.length\n    }\n  }\n}\n\nexport default MRFTransparencyPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mrf_transparency_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mrf_transparency_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./mrf_transparency_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7f2ca562\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mrf_transparency_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n  components: {\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    TermsOfServicePanel,\n    StaffPanel,\n    MRFTransparencyPanel\n  },\n  computed: {\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default About\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.federationPolicy)?_c('div',{staticClass:\"mrf-transparency-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t(\"about.mrf.federation\"))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"mrf-section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mrfPolicies),function(policy){return _c('li',{key:policy,domProps:{\"textContent\":_vm._s(policy)}})}),0),_vm._v(\" \"),(_vm.hasInstanceSpecificPolicies)?_c('h2',[_vm._v(\"\\n          \"+_vm._s(_vm.$t(\"about.mrf.simple.simple_policies\"))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.acceptInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.acceptInstances),function(entry){return _c('tr',{key:entry.instance + '_accept'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.rejectInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.rejectInstances),function(entry){return _c('tr',{key:entry.instance + '_reject'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.quarantineInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.quarantineInstances),function(entry){return _c('tr',{key:entry.instance + '_quarantine'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.ftlRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.ftlRemovalInstances),function(entry){return _c('tr',{key:entry.instance + '_ftl_removal'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.mediaNsfwInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.mediaNsfwInstances),function(entry){return _c('tr',{key:entry.instance + '_media_nsfw'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.mediaRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal_desc\")))]),_vm._v(\" \"),_c('table',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.instance\")))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reason\")))])]),_vm._v(\" \"),_vm._l((_vm.mediaRemovalInstances),function(entry){return _c('tr',{key:entry.instance + '_media_removal'},[_c('td',[_vm._v(_vm._s(entry.instance))]),_vm._v(\" \"),(entry.reason === '')?_c('td',[_vm._v(\"\\n                \"+_vm._s(_vm.$t(\"about.mrf.simple.not_applicable\"))+\"\\n              \")]):_c('td',[_vm._v(\"\\n                \"+_vm._s(entry.reason)+\"\\n              \")])])})],2)]):_vm._e(),_vm._v(\" \"),(_vm.hasKeywordPolicies)?_c('h2',[_vm._v(\"\\n          \"+_vm._s(_vm.$t(\"about.mrf.keyword.keyword_policies\"))+\"\\n        \")]):_vm._e(),_vm._v(\" \"),(_vm.keywordsFtlRemoval.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.ftl_removal\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsFtlRemoval),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReject.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.reject\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReject),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReplace.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.replace\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReplace),function(keyword){return _c('li',{key:keyword},[_vm._v(\"\\n              \"+_vm._s(keyword.pattern)+\"\\n              \"+_vm._s(_vm.$t(\"about.mrf.keyword.is_replaced_by\"))+\"\\n              \"+_vm._s(keyword.replacement)+\"\\n            \")])}),0)]):_vm._e()])])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./about.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./about.js\"\nimport __vue_script__ from \"!!babel-loader!./about.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-acd3d67e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./about.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar\"},[(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),_c('staff-panel'),_vm._v(\" \"),_c('terms-of-service-panel'),_vm._v(\" \"),_c('MRFTransparencyPanel'),_vm._v(\" \"),(_vm.showFeaturesPanel)?_c('features-panel'):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const RemoteUserResolver = {\n  data: () => ({\n    error: false\n  }),\n  mounted () {\n    this.redirect()\n  },\n  methods: {\n    redirect () {\n      const acct = this.$route.params.username + '@' + this.$route.params.hostname\n      this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n        .then((externalUser) => {\n          if (externalUser.error) {\n            this.error = true\n          } else {\n            this.$store.commit('addNewUsers', [externalUser])\n            const id = externalUser.id\n            this.$router.replace({\n              name: 'external-user-profile',\n              params: { id }\n            })\n          }\n        })\n        .catch(() => {\n          this.error = true\n        })\n    }\n  }\n}\n\nexport default RemoteUserResolver\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_user_resolver.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_user_resolver.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_user_resolver.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-198402c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_user_resolver.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n    \"+_vm._s(_vm.$t('remote_user_resolver.remote_user_resolver'))+\"\\n  \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('p',[_vm._v(\"\\n      \"+_vm._s(_vm.$t('remote_user_resolver.searching_for'))+\" @\"+_vm._s(_vm.$route.params.username)+\"@\"+_vm._s(_vm.$route.params.hostname)+\"\\n    \")]),_vm._v(\" \"),(_vm.error)?_c('p',[_vm._v(\"\\n      \"+_vm._s(_vm.$t('remote_user_resolver.error'))+\"\\n    \")]):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n  const validateAuthenticatedRoute = (to, from, next) => {\n    if (store.state.users.currentUser) {\n      next()\n    } else {\n      next(store.state.instance.redirectRootNoLogin || '/main/all')\n    }\n  }\n\n  let routes = [\n    { name: 'root',\n      path: '/',\n      redirect: _to => {\n        return (store.state.users.currentUser\n          ? store.state.instance.redirectRootLogin\n          : store.state.instance.redirectRootNoLogin) || '/main/all'\n      }\n    },\n    { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n    { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n    { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n    { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n    { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n    { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n    { name: 'remote-user-profile-acct',\n      path: '/remote-users/(@?):username([^/@]+)@:hostname([^/@]+)',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'remote-user-profile',\n      path: '/remote-users/:hostname/:username',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n    { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n    { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n    { name: 'registration', path: '/registration', component: Registration },\n    { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n    { name: 'registration-token', path: '/registration/:token', component: Registration },\n    { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n    { name: 'notifications', path: '/:username/notifications', component: Notifications, beforeEnter: validateAuthenticatedRoute },\n    { name: 'login', path: '/login', component: AuthForm },\n    { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n    { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n    { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n    { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n    { name: 'about', path: '/about', component: About },\n    { name: 'user-profile', path: '/(users/)?:name', component: UserProfile }\n  ]\n\n  if (store.state.instance.pleromaChatMessagesAvailable) {\n    routes = routes.concat([\n      { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n      { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n    ])\n  }\n\n  return routes\n}\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n  computed: {\n    signedIn () { return this.user },\n    ...mapState({ user: state => state.users.currentUser })\n  },\n  components: {\n    AuthForm,\n    PostStatusForm,\n    UserCard\n  }\n}\n\nexport default UserPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./user_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d2d72c5e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-panel\"},[(_vm.signedIn)?_c('div',{key:\"user-panel\",staticClass:\"panel panel-default signed-in\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"hide-bio\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),_c('PostStatusForm')],1):_c('auth-form',{key:\"user-panel\"})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream\n)\n\nconst NavPanel = {\n  created () {\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: {\n    TimelineMenuContent\n  },\n  data () {\n    return {\n      showTimelines: false\n    }\n  },\n  methods: {\n    toggleTimelines () {\n      this.showTimelines = !this.showTimelines\n    }\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      followRequestCount: state => state.api.followRequests.length,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating,\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  }\n}\n\nexport default NavPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./nav_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./nav_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./nav_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fdfe5e92\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./nav_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavPanel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('button',{staticClass:\"button-unstyled menu-item\",on:{\"click\":_vm.toggleTimelines}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"stream\"}}),_vm._v(_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n          \"),_c('FAIcon',{staticClass:\"timelines-chevron\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.showTimelines ? 'chevron-up' : 'chevron-down'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTimelines),expression:\"showTimelines\"}],staticClass:\"timelines-background\"},[_c('TimelineMenuContent',{staticClass:\"timelines\"})],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[(_vm.unreadChatCount)?_c('div',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n            \"+_vm._s(_vm.unreadChatCount)+\"\\n          \")]):_vm._e(),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(_vm._s(_vm.$t(\"nav.chats\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friend-requests' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n          \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n            \"+_vm._s(_vm.followRequestCount)+\"\\n          \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'about' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(_vm._s(_vm.$t(\"nav.about\"))+\"\\n        \")],1)],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n  const shuffled = shuffle(reply)\n\n  panel.usersToFollow.forEach((toFollow, index) => {\n    let user = shuffled[index]\n    let img = user.avatar || this.$store.state.instance.defaultAvatar\n    let name = user.acct\n\n    toFollow.img = img\n    toFollow.name = name\n\n    panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n      .then((externalUser) => {\n        if (!externalUser.error) {\n          panel.$store.commit('addNewUsers', [externalUser])\n          toFollow.id = externalUser.id\n        }\n      })\n  })\n}\n\nfunction getWhoToFollow (panel) {\n  var credentials = panel.$store.state.users.currentUser.credentials\n  if (credentials) {\n    panel.usersToFollow.forEach(toFollow => {\n      toFollow.name = 'Loading...'\n    })\n    apiService.suggestions({ credentials: credentials })\n      .then((reply) => {\n        showWhoToFollow(panel, reply)\n      })\n  }\n}\n\nconst WhoToFollowPanel = {\n  data: () => ({\n    usersToFollow: []\n  }),\n  computed: {\n    user: function () {\n      return this.$store.state.users.currentUser.screen_name\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    }\n  },\n  methods: {\n    userProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    user: function (user, oldUser) {\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n  },\n  mounted:\n    function () {\n      this.usersToFollow = new Array(3).fill().map(x => (\n        {\n          img: this.$store.state.instance.defaultAvatar,\n          name: '',\n          id: 0\n        }\n      ))\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n}\n\nexport default WhoToFollowPanel\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4d31272\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"who-to-follow-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"who-to-follow\"},[_vm._l((_vm.usersToFollow),function(user){return _c('p',{key:user.id,staticClass:\"who-to-follow-items\"},[_c('img',{attrs:{\"src\":user.img}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink(user.id, user.name)}},[_vm._v(\"\\n          \"+_vm._s(user.name)+\"\\n        \")]),_c('br')],1)}),_vm._v(\" \"),_c('p',{staticClass:\"who-to-follow-more\"},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t('who_to_follow.more'))+\"\\n        \")])],1)],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <div\n    v-show=\"isOpen\"\n    v-body-scroll-lock=\"isOpen && !noBackground\"\n    class=\"modal-view\"\n    :class=\"classes\"\n    @click.self=\"$emit('backdropClicked')\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script>\nexport default {\n  props: {\n    isOpen: {\n      type: Boolean,\n      default: true\n    },\n    noBackground: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes () {\n      return {\n        'modal-background': !this.noBackground,\n        'open': this.isOpen\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n  z-index: 1000;\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  overflow: auto;\n  pointer-events: none;\n  animation-duration: 0.2s;\n  animation-name: modal-background-fadein;\n  opacity: 0;\n\n  > * {\n    pointer-events: initial;\n  }\n\n  &.modal-background {\n    pointer-events: initial;\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n\n  &.open {\n    opacity: 1;\n  }\n}\n\n@keyframes modal-background-fadein {\n  from {\n    background-color: rgba(0, 0, 0, 0);\n  }\n  to {\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n}\n</style>\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9413504\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"},{name:\"body-scroll-lock\",rawName:\"v-body-scroll-lock\",value:(_vm.isOpen && !_vm.noBackground),expression:\"isOpen && !noBackground\"}],staticClass:\"modal-view\",class:_vm.classes,on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n  <div class=\"panel-loading\">\n    <span class=\"loading-text\">\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"3x\"\n      />\n      {{ $t('general.loading') }}\n    </span>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  font-size: 2em;\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  .loading-text svg {\n    line-height: 0;\n    vertical-align: middle;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n</style>\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./panel_loading.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-595215a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./panel_loading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-loading\"},[_c('span',{staticClass:\"loading-text\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}}),_vm._v(\"\\n    \"+_vm._s(_vm.$t('general.loading'))+\"\\n  \")],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./async_component_error.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6b205c72\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./async_component_error.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","<template>\n  <div class=\"async-component-error\">\n    <div>\n      <h4>\n        {{ $t('general.generic_error') }}\n      </h4>\n      <p>\n        {{ $t('general.error_retry') }}\n      </p>\n      <button\n        class=\"btn button-default\"\n        @click=\"retry\"\n      >\n        {{ $t('general.retry') }}\n      </button>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  methods: {\n    retry () {\n      this.$emit('resetAsyncComponent')\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  .btn {\n    margin: .5em;\n    padding: .5em 2em;\n  }\n}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"async-component-error\"},[_c('div',[_c('h4',[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.generic_error'))+\"\\n    \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.error_retry'))+\"\\n    \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('general.retry'))+\"\\n    \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n  const asyncComponentFactory = () => () => ({\n    component: asyncComponent(),\n    ...options\n  })\n\n  const observe = Vue.observable({ c: asyncComponentFactory() })\n\n  return {\n    functional: true,\n    render (createElement, { data, children }) {\n      //  emit event resetAsyncComponent to reloading\n      data.on = {}\n      data.on.resetAsyncComponent = () => {\n        observe.c = asyncComponentFactory()\n        // parent.$forceUpdate()\n      }\n      return createElement(observe.c, data, children)\n    }\n  }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n  newImporter,\n  newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n  faTimes,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n  faTimes,\n  faWindowMinimize,\n  faFileUpload,\n  faFileDownload,\n  faChevronDown\n)\n\nconst SettingsModal = {\n  data () {\n    return {\n      dataImporter: newImporter({\n        validator: this.importValidator,\n        onImport: this.onImport,\n        onImportFailure: this.onImportFailure\n      }),\n      dataThemeExporter: newExporter({\n        filename: 'pleromafe_settings.full',\n        getExportedObject: () => this.generateExport(true)\n      }),\n      dataExporter: newExporter({\n        filename: 'pleromafe_settings',\n        getExportedObject: () => this.generateExport()\n      })\n    }\n  },\n  components: {\n    Modal,\n    Popover,\n    SettingsModalContent: getResettableAsyncComponent(\n      () => import('./settings_modal_content.vue'),\n      {\n        loading: PanelLoading,\n        error: AsyncComponentError,\n        delay: 0\n      }\n    )\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closeSettingsModal')\n    },\n    peekModal () {\n      this.$store.dispatch('togglePeekSettingsModal')\n    },\n    importValidator (data) {\n      if (!Array.isArray(data._pleroma_settings_version)) {\n        return {\n          messageKey: 'settings.file_import_export.invalid_file'\n        }\n      }\n\n      const [major, minor] = data._pleroma_settings_version\n\n      if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_new',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n        return {\n          messageKey: 'settings.file_export_import.errors.file_too_old',\n          messageArgs: {\n            fileMajor: major,\n            feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n          }\n        }\n      }\n\n      if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n        this.$store.dispatch('pushGlobalNotice', {\n          level: 'warning',\n          messageKey: 'settings.file_export_import.errors.file_slightly_new'\n        })\n      }\n\n      return true\n    },\n    onImportFailure (result) {\n      if (result.error) {\n        this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n      } else {\n        this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n      }\n    },\n    onImport (data) {\n      if (data) { this.$store.dispatch('loadSettings', data) }\n    },\n    restore () {\n      this.dataImporter.importData()\n    },\n    backup () {\n      this.dataExporter.exportData()\n    },\n    backupWithTheme () {\n      this.dataThemeExporter.exportData()\n    },\n    generateExport (theme = false) {\n      const { config } = this.$store.state\n      let sample = config\n      if (!theme) {\n        const ignoreList = new Set([\n          'customTheme',\n          'customThemeSource',\n          'colors'\n        ])\n        sample = Object.fromEntries(\n          Object\n            .entries(sample)\n            .filter(([key]) => !ignoreList.has(key))\n        )\n      }\n      const clone = cloneDeep(sample)\n      clone._pleroma_settings_version = [\n        PLEROMAFE_SETTINGS_MAJOR_VERSION,\n        PLEROMAFE_SETTINGS_MINOR_VERSION\n      ]\n      return clone\n    }\n  },\n  computed: {\n    currentSaveStateNotice () {\n      return this.$store.state.interface.settings.currentSaveStateNotice\n    },\n    modalActivated () {\n      return this.$store.state.interface.settingsModalState !== 'hidden'\n    },\n    modalOpenedOnce () {\n      return this.$store.state.interface.settingsModalLoaded\n    },\n    modalPeeked () {\n      return this.$store.state.interface.settingsModalState === 'minimized'\n    }\n  }\n}\n\nexport default SettingsModal\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./settings_modal.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./settings_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./settings_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-978574a4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"settings-modal\",class:{ peek: _vm.modalPeeked },attrs:{\"is-open\":_vm.modalActivated,\"no-background\":_vm.modalPeeked}},[_c('div',{staticClass:\"settings-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('settings.settings'))+\"\\n      \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.currentSaveStateNotice)?[(_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('settings.saving_err'))+\"\\n          \")]):_vm._e(),_vm._v(\" \"),(!_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert transparent\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('settings.saving_ok'))+\"\\n          \")]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.peek')},on:{\"click\":_vm.peekModal}},[_c('FAIcon',{attrs:{\"icon\":['far', 'window-minimize'],\"fixed-width\":\"\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.close')},on:{\"click\":_vm.closeModal}},[_c('FAIcon',{attrs:{\"icon\":\"times\",\"fixed-width\":\"\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.modalOpenedOnce)?_c('SettingsModalContent'):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer\"},[_c('Popover',{staticClass:\"export\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5, x: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.close')}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_restore\")))]),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}})],1)]},proxy:true},{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.backup($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-download\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_settings\")))])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.backupWithTheme($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-download\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_settings_theme\")))])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.restore($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-upload\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.restore_settings\")))])],1)])]}}])})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchEventCoord = e => ([e.touches[0].screenX, e.touches[0].screenY])\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n  const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n  return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n//    callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n//    above threshold. for example, with 1.0 we only call the callback if\n//    divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n  return {\n    direction,\n    onSwipe,\n    threshold,\n    perpendicularTolerance,\n    _startPos: [0, 0],\n    _swiping: false\n  }\n}\n\nconst beginSwipe = (event, gesture) => {\n  gesture._startPos = touchEventCoord(event)\n  gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n  if (!gesture._swiping) return\n  // movement too small\n  const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n  if (vectorLength(delta) < gesture.threshold) return\n  // movement is opposite from direction\n  if (dotProduct(delta, gesture.direction) < 0) return\n  // movement perpendicular to direction is too much\n  const towardsDir = project(delta, gesture.direction)\n  const perpendicularDir = perpendicular(gesture.direction)\n  const towardsPerpendicular = project(delta, perpendicularDir)\n  if (\n    vectorLength(towardsDir) * gesture.perpendicularTolerance <\n    vectorLength(towardsPerpendicular)\n  ) return\n\n  gesture.onSwipe()\n  gesture._swiping = false\n}\n\nconst GestureService = {\n  DIRECTION_LEFT,\n  DIRECTION_RIGHT,\n  DIRECTION_UP,\n  DIRECTION_DOWN,\n  swipeGesture,\n  beginSwipe,\n  updateSwipe\n}\n\nexport default GestureService\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronLeft,\n  faChevronRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronLeft,\n  faChevronRight\n)\n\nconst MediaModal = {\n  components: {\n    StillImage,\n    VideoAttachment,\n    Modal\n  },\n  computed: {\n    showing () {\n      return this.$store.state.mediaViewer.activated\n    },\n    media () {\n      return this.$store.state.mediaViewer.media\n    },\n    currentIndex () {\n      return this.$store.state.mediaViewer.currentIndex\n    },\n    currentMedia () {\n      return this.media[this.currentIndex]\n    },\n    canNavigate () {\n      return this.media.length > 1\n    },\n    type () {\n      return this.currentMedia ? fileTypeService.fileType(this.currentMedia.mimetype) : null\n    }\n  },\n  created () {\n    this.mediaSwipeGestureRight = GestureService.swipeGesture(\n      GestureService.DIRECTION_RIGHT,\n      this.goPrev,\n      50\n    )\n    this.mediaSwipeGestureLeft = GestureService.swipeGesture(\n      GestureService.DIRECTION_LEFT,\n      this.goNext,\n      50\n    )\n  },\n  methods: {\n    mediaTouchStart (e) {\n      GestureService.beginSwipe(e, this.mediaSwipeGestureRight)\n      GestureService.beginSwipe(e, this.mediaSwipeGestureLeft)\n    },\n    mediaTouchMove (e) {\n      GestureService.updateSwipe(e, this.mediaSwipeGestureRight)\n      GestureService.updateSwipe(e, this.mediaSwipeGestureLeft)\n    },\n    hide () {\n      this.$store.dispatch('closeMediaViewer')\n    },\n    goPrev () {\n      if (this.canNavigate) {\n        const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n        this.$store.dispatch('setCurrent', this.media[prevIndex])\n      }\n    },\n    goNext () {\n      if (this.canNavigate) {\n        const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n        this.$store.dispatch('setCurrent', this.media[nextIndex])\n      }\n    },\n    handleKeyupEvent (e) {\n      if (this.showing && e.keyCode === 27) { // escape\n        this.hide()\n      }\n    },\n    handleKeydownEvent (e) {\n      if (!this.showing) {\n        return\n      }\n\n      if (e.keyCode === 39) { // arrow right\n        this.goNext()\n      } else if (e.keyCode === 37) { // arrow left\n        this.goPrev()\n      }\n    }\n  },\n  mounted () {\n    window.addEventListener('popstate', this.hide)\n    document.addEventListener('keyup', this.handleKeyupEvent)\n    document.addEventListener('keydown', this.handleKeydownEvent)\n  },\n  destroyed () {\n    window.removeEventListener('popstate', this.hide)\n    document.removeEventListener('keyup', this.handleKeyupEvent)\n    document.removeEventListener('keydown', this.handleKeydownEvent)\n  }\n}\n\nexport default MediaModal\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./media_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07b118f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showing)?_c('Modal',{staticClass:\"media-modal-view\",on:{\"backdropClicked\":_vm.hide}},[(_vm.type === 'image')?_c('img',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description},on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.mediaTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.mediaTouchMove($event)},\"click\":_vm.hide}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'video')?_c('VideoAttachment',{staticClass:\"modal-image\",attrs:{\"attachment\":_vm.currentMedia,\"controls\":true}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--prev\",attrs:{\"title\":_vm.$t('media_modal.previous')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goPrev($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-left\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--next\",attrs:{\"title\":_vm.$t('media_modal.next')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goNext($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-right\"}})],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nconst SideDrawer = {\n  props: [ 'logout' ],\n  data: () => ({\n    closed: true,\n    closeGesture: undefined\n  }),\n  created () {\n    this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: { UserCard },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    shout () { return this.$store.state.shout.channel.state === 'joined' },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    },\n    logo () {\n      return this.$store.state.instance.logo\n    },\n    hideSitename () {\n      return this.$store.state.instance.hideSitename\n    },\n    sitename () {\n      return this.$store.state.instance.name\n    },\n    followRequestCount () {\n      return this.$store.state.api.followRequests.length\n    },\n    privateMode () {\n      return this.$store.state.instance.private\n    },\n    federating () {\n      return this.$store.state.instance.federating\n    },\n    timelinesRoute () {\n      if (this.$store.state.interface.lastTimeline) {\n        return this.$store.state.interface.lastTimeline\n      }\n      return this.currentUser ? 'friends' : 'public-timeline'\n    },\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    }),\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleDrawer () {\n      this.closed = !this.closed\n    },\n    doLogout () {\n      this.logout()\n      this.toggleDrawer()\n    },\n    touchStart (e) {\n      GestureService.beginSwipe(e, this.closeGesture)\n    },\n    touchMove (e) {\n      GestureService.updateSwipe(e, this.closeGesture)\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n\nexport default SideDrawer\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./side_drawer.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./side_drawer.js\"\nimport __vue_script__ from \"!!babel-loader!./side_drawer.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4a50df4d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./side_drawer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"side-drawer-container\",class:{ 'side-drawer-container-closed': _vm.closed, 'side-drawer-container-open': !_vm.closed }},[_c('div',{staticClass:\"side-drawer-darken\",class:{ 'side-drawer-darken-closed': _vm.closed}}),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer\",class:{'side-drawer-closed': _vm.closed},on:{\"touchstart\":_vm.touchStart,\"touchmove\":_vm.touchMove}},[_c('div',{staticClass:\"side-drawer-heading\",on:{\"click\":_vm.toggleDrawer}},[(_vm.currentUser)?_c('UserCard',{attrs:{\"user-id\":_vm.currentUser.id,\"hide-bio\":true}}):_c('div',{staticClass:\"side-drawer-logo-wrapper\"},[_c('img',{attrs:{\"src\":_vm.logo}}),_vm._v(\" \"),(!_vm.hideSitename)?_c('span',[_vm._v(_vm._s(_vm.sitename))]):_vm._e()])],1),_vm._v(\" \"),_c('ul',[(!_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'login' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-in-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: _vm.timelinesRoute }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{staticStyle:{\"position\":\"relative\"},attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chats\"))+\"\\n          \"),(_vm.unreadChatCount)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n            \"+_vm._s(_vm.unreadChatCount)+\"\\n          \")]):_vm._e()],1)],1):_vm._e()]),_vm._v(\" \"),(_vm.currentUser)?_c('ul',[_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n        \")],1)],1),_vm._v(\" \"),(_vm.currentUser.locked)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/friend-requests\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n          \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n            \"+_vm._s(_vm.followRequestCount)+\"\\n          \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.shout)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'shout-panel' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bullhorn\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"shoutbox.title\"))+\"\\n        \")],1)],1):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'search' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.search\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.who_to_follow\"))+\"\\n        \")],1)],1):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.openSettingsModal}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n        \")],1)]),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n        \")],1)],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.administration\"))+\"\\n        \")],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.doLogout}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.logout\"))+\"\\n        \")],1)]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer-click-outside\",class:{'side-drawer-click-outside-closed': _vm.closed},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleDrawer($event)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n  'chats',\n  'chat'\n])\n\nconst MobilePostStatusButton = {\n  data () {\n    return {\n      hidden: false,\n      scrollingDown: false,\n      inputActive: false,\n      oldScrollPos: 0,\n      amountScrolled: 0\n    }\n  },\n  created () {\n    if (this.autohideFloatingPostButton) {\n      this.activateFloatingPostButtonAutohide()\n    }\n    window.addEventListener('resize', this.handleOSK)\n  },\n  destroyed () {\n    if (this.autohideFloatingPostButton) {\n      this.deactivateFloatingPostButtonAutohide()\n    }\n    window.removeEventListener('resize', this.handleOSK)\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isHidden () {\n      if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n      return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n    },\n    isPersistent () {\n      return !!this.$store.getters.mergedConfig.showNewPostButton\n    },\n    autohideFloatingPostButton () {\n      return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n    }\n  },\n  watch: {\n    autohideFloatingPostButton: function (isEnabled) {\n      if (isEnabled) {\n        this.activateFloatingPostButtonAutohide()\n      } else {\n        this.deactivateFloatingPostButtonAutohide()\n      }\n    }\n  },\n  methods: {\n    activateFloatingPostButtonAutohide () {\n      window.addEventListener('scroll', this.handleScrollStart)\n      window.addEventListener('scroll', this.handleScrollEnd)\n    },\n    deactivateFloatingPostButtonAutohide () {\n      window.removeEventListener('scroll', this.handleScrollStart)\n      window.removeEventListener('scroll', this.handleScrollEnd)\n    },\n    openPostForm () {\n      this.$store.dispatch('openPostStatusModal')\n    },\n    handleOSK () {\n      // This is a big hack: we're guessing from changed window sizes if the\n      // on-screen keyboard is active or not. This is only really important\n      // for phones in portrait mode and it's more important to show the button\n      // in normal scenarios on all phones, than it is to hide it when the\n      // keyboard is active.\n      // Guesswork based on https://www.mydevice.io/#compare-devices\n\n      // for example, iphone 4 and android phones from the same time period\n      const smallPhone = window.innerWidth < 350\n      const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n      const biggerPhone = !smallPhone && window.innerWidth < 450\n      const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n      if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n        this.inputActive = true\n      } else {\n        this.inputActive = false\n      }\n    },\n    handleScrollStart: debounce(function () {\n      if (window.scrollY > this.oldScrollPos) {\n        this.hidden = true\n      } else {\n        this.hidden = false\n      }\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: true, trailing: false }),\n\n    handleScrollEnd: debounce(function () {\n      this.hidden = false\n      this.oldScrollPos = window.scrollY\n    }, 100, { leading: false, trailing: true })\n  }\n}\n\nexport default MobilePostStatusButton\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_post_status_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_post_status_button.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_post_status_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-69793429\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_post_status_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',[_c('button',{staticClass:\"button-default new-status-button\",class:{ 'hidden': _vm.isHidden, 'always-show': _vm.isPersistent },on:{\"click\":_vm.openPostForm}},[_c('FAIcon',{attrs:{\"icon\":\"pen\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faBell,\n  faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faBell,\n  faBars\n)\n\nconst MobileNav = {\n  components: {\n    SideDrawer,\n    Notifications\n  },\n  data: () => ({\n    notificationsCloseGesture: undefined,\n    notificationsOpen: false\n  }),\n  created () {\n    this.notificationsCloseGesture = GestureService.swipeGesture(\n      GestureService.DIRECTION_RIGHT,\n      this.closeMobileNotifications,\n      50\n    )\n  },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    sitename () { return this.$store.state.instance.name },\n    isChat () {\n      return this.$route.name === 'chat'\n    },\n    ...mapGetters(['unreadChatCount'])\n  },\n  methods: {\n    toggleMobileSidebar () {\n      this.$refs.sideDrawer.toggleDrawer()\n    },\n    openMobileNotifications () {\n      this.notificationsOpen = true\n    },\n    closeMobileNotifications () {\n      if (this.notificationsOpen) {\n        // make sure to mark notifs seen only when the notifs were open and not\n        // from close-calls.\n        this.notificationsOpen = false\n        this.markNotificationsAsSeen()\n      }\n    },\n    notificationsTouchStart (e) {\n      GestureService.beginSwipe(e, this.notificationsCloseGesture)\n    },\n    notificationsTouchMove (e) {\n      GestureService.updateSwipe(e, this.notificationsCloseGesture)\n    },\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    markNotificationsAsSeen () {\n      this.$refs.notifications.markAsSeen()\n    },\n    onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n      if (scrollTop + clientHeight >= scrollHeight) {\n        this.$refs.notifications.fetchOlderNotifications()\n      }\n    }\n  },\n  watch: {\n    $route () {\n      // handles closing notificaitons when you press any router-link on the\n      // notifications.\n      this.closeMobileNotifications()\n    }\n  }\n}\n\nexport default MobileNav\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_nav.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5597b03f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"MobileNav\"},[_c('nav',{staticClass:\"mobile-nav\",class:{ 'mobile-hidden': _vm.isChat },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"item\"},[_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleMobileSidebar()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bars\"}}),_vm._v(\" \"),(_vm.unreadChatCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1),_vm._v(\" \"),(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.sitename)+\"\\n      \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"item right\"},[(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bell\"}}),_vm._v(\" \"),(_vm.unseenNotificationsCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),(_vm.currentUser)?_c('div',{staticClass:\"mobile-notifications-drawer\",class:{ 'closed': !_vm.notificationsOpen },on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.notificationsTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.notificationsTouchMove($event)}}},[_c('div',{staticClass:\"mobile-notifications-header\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('notifications.notifications')))]),_vm._v(\" \"),_c('a',{staticClass:\"mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.closeMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"mobile-notifications\",on:{\"scroll\":_vm.onScroll}},[_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true}})],1)]):_vm._e(),_vm._v(\" \"),_c('SideDrawer',{ref:\"sideDrawer\",attrs:{\"logout\":_vm.logout}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faSearch\n)\n\nconst SearchBar = {\n  data: () => ({\n    searchTerm: undefined,\n    hidden: true,\n    error: false\n  }),\n  watch: {\n    '$route': function (route) {\n      if (route.name === 'search') {\n        this.searchTerm = route.query.query\n      }\n    }\n  },\n  methods: {\n    find (searchTerm) {\n      this.$router.push({ name: 'search', query: { query: searchTerm } })\n      this.$refs.searchInput.focus()\n    },\n    toggleHidden () {\n      this.hidden = !this.hidden\n      this.$emit('toggled', this.hidden)\n      this.$nextTick(() => {\n        if (!this.hidden) {\n          this.$refs.searchInput.focus()\n        }\n      })\n    }\n  }\n}\n\nexport default SearchBar\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search_bar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search_bar.js\"\nimport __vue_script__ from \"!!babel-loader!./search_bar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-105122b7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search_bar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"SearchBar\",class:{ '-expanded': !_vm.hidden }},[(_vm.hidden)?_c('button',{staticClass:\"button-unstyled nav-icon\",attrs:{\"title\":_vm.$t('nav.search'),\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1):[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-bar-input\",attrs:{\"id\":\"search-bar-input\",\"placeholder\":_vm.$t('nav.search'),\"type\":\"text\"},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.find(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.find(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled cancel-search\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"cancel-icon fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}})],1)]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nexport default {\n  components: {\n    SearchBar\n  },\n  data: () => ({\n    searchBarHidden: true,\n    supportsMask: window.CSS && window.CSS.supports && (\n      window.CSS.supports('mask-size', 'contain') ||\n        window.CSS.supports('-webkit-mask-size', 'contain') ||\n        window.CSS.supports('-moz-mask-size', 'contain') ||\n        window.CSS.supports('-ms-mask-size', 'contain') ||\n        window.CSS.supports('-o-mask-size', 'contain')\n    )\n  }),\n  computed: {\n    enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n    logoStyle () {\n      return {\n        'visibility': this.enableMask ? 'hidden' : 'visible'\n      }\n    },\n    logoMaskStyle () {\n      return this.enableMask ? {\n        'mask-image': `url(${this.$store.state.instance.logo})`\n      } : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      }\n    },\n    logoBgStyle () {\n      return Object.assign({\n        'margin': `${this.$store.state.instance.logoMargin} 0`,\n        opacity: this.searchBarHidden ? 1 : 0\n      }, this.enableMask ? {} : {\n        'background-color': this.enableMask ? '' : 'transparent'\n      })\n    },\n    logo () { return this.$store.state.instance.logo },\n    sitename () { return this.$store.state.instance.name },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    logoLeft () { return this.$store.state.instance.logoLeft },\n    currentUser () { return this.$store.state.users.currentUser },\n    privateMode () { return this.$store.state.instance.private }\n  },\n  methods: {\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    onSearchBarToggled (hidden) {\n      this.searchBarHidden = hidden\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./desktop_nav.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./desktop_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./desktop_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e4bf6fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./desktop_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"DesktopNav\",class:{ '-logoLeft': _vm.logoLeft },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"inner-nav\"},[_c('div',{staticClass:\"item sitename\"},[(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.sitename)+\"\\n      \")]):_vm._e()],1),_vm._v(\" \"),_c('router-link',{staticClass:\"logo\",style:(_vm.logoBgStyle),attrs:{\"to\":{ name: 'root' }}},[_c('div',{staticClass:\"mask\",style:(_vm.logoMaskStyle)}),_vm._v(\" \"),_c('img',{style:(_vm.logoStyle),attrs:{\"src\":_vm.logo}})]),_vm._v(\" \"),_c('div',{staticClass:\"item right actions\"},[(_vm.currentUser || !_vm.privateMode)?_c('search-bar',{on:{\"toggled\":_vm.onSearchBarToggled},nativeOn:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openSettingsModal($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\",\"title\":_vm.$t('nav.preferences')}})],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('a',{staticClass:\"nav-icon\",attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\",\"title\":_vm.$t('nav.administration')}})],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.logout($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\",\"title\":_vm.$t('login.logout')}})],1):_vm._e()],1)],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n  components: {\n    Status,\n    List,\n    Checkbox,\n    Modal\n  },\n  data () {\n    return {\n      comment: '',\n      forward: false,\n      statusIdsToReport: [],\n      processing: false,\n      error: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isOpen () {\n      return this.isLoggedIn && this.$store.state.reports.modalActivated\n    },\n    userId () {\n      return this.$store.state.reports.userId\n    },\n    user () {\n      return this.$store.getters.findUser(this.userId)\n    },\n    remoteInstance () {\n      return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n    },\n    statuses () {\n      return this.$store.state.reports.statuses\n    },\n    preTickedIds () {\n      return this.$store.state.reports.preTickedIds\n    }\n  },\n  watch: {\n    userId: 'resetState',\n    preTickedIds (newValue) {\n      this.statusIdsToReport = newValue\n    }\n  },\n  methods: {\n    resetState () {\n      // Reset state\n      this.comment = ''\n      this.forward = false\n      this.statusIdsToReport = this.preTickedIds\n      this.processing = false\n      this.error = false\n    },\n    closeModal () {\n      this.$store.dispatch('closeUserReportingModal')\n    },\n    reportUser () {\n      this.processing = true\n      this.error = false\n      const params = {\n        userId: this.userId,\n        comment: this.comment,\n        forward: this.forward,\n        statusIds: this.statusIdsToReport\n      }\n      this.$store.state.api.backendInteractor.reportUser({ ...params })\n        .then(() => {\n          this.processing = false\n          this.resetState()\n          this.closeModal()\n        })\n        .catch(() => {\n          this.processing = false\n          this.error = true\n        })\n    },\n    clearError () {\n      this.error = false\n    },\n    isChecked (statusId) {\n      return this.statusIdsToReport.indexOf(statusId) !== -1\n    },\n    toggleStatus (checked, statusId) {\n      if (checked === this.isChecked(statusId)) {\n        return\n      }\n\n      if (checked) {\n        this.statusIdsToReport.push(statusId)\n      } else {\n        this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n      }\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n      // Auto is needed to make textbox shrink when removing lines\n      target.style.height = 'auto'\n      target.style.height = `${target.scrollHeight}px`\n      if (target.value === '') {\n        target.style.height = null\n      }\n    }\n  }\n}\n\nexport default UserReportingModal\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_reporting_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_reporting_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./user_reporting_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1daff3b2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_reporting_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isOpen)?_c('Modal',{on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"user-reporting-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n        \"+_vm._s(_vm.$t('user_reporting.title', [_vm.user.screen_name_ui]))+\"\\n      \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"user-reporting-panel-left\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.add_comment_description')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.comment),expression:\"comment\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.$t('user_reporting.additional_comments'),\"rows\":\"1\"},domProps:{\"value\":(_vm.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.comment=$event.target.value},_vm.resize]}})]),_vm._v(\" \"),(!_vm.user.is_local)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.forward_description')))]),_vm._v(\" \"),_c('Checkbox',{model:{value:(_vm.forward),callback:function ($$v) {_vm.forward=$$v},expression:\"forward\"}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_reporting.forward_to', [_vm.remoteInstance]))+\"\\n          \")])],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.processing},on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_reporting.submit'))+\"\\n          \")]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n            \"+_vm._s(_vm.$t('user_reporting.generic_error'))+\"\\n          \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"user-reporting-panel-right\"},[_c('List',{attrs:{\"items\":_vm.statuses},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"status-fadein user-reporting-panel-sitem\"},[_c('Status',{attrs:{\"in-conversation\":false,\"focused\":false,\"statusoid\":item}}),_vm._v(\" \"),_c('Checkbox',{attrs:{\"checked\":_vm.isChecked(item.id)},on:{\"change\":function (checked) { return _vm.toggleStatus(checked, item.id); }}})],1)]}}],null,false,2514683306)})],1)])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n  components: {\n    PostStatusForm,\n    Modal\n  },\n  data () {\n    return {\n      resettingForm: false\n    }\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    modalActivated () {\n      return this.$store.state.postStatus.modalActivated\n    },\n    isFormVisible () {\n      return this.isLoggedIn && !this.resettingForm && this.modalActivated\n    },\n    params () {\n      return this.$store.state.postStatus.params || {}\n    }\n  },\n  watch: {\n    params (newVal, oldVal) {\n      if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n        this.resettingForm = true\n        this.$nextTick(() => {\n          this.resettingForm = false\n        })\n      }\n    },\n    isFormVisible (val) {\n      if (val) {\n        this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n      }\n    }\n  },\n  methods: {\n    closeModal () {\n      this.$store.dispatch('closePostStatusModal')\n    }\n  }\n}\n\nexport default PostStatusModal\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6b8d3a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn && !_vm.resettingForm)?_c('Modal',{staticClass:\"post-form-modal-view\",attrs:{\"is-open\":_vm.modalActivated},on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"post-form-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t('post_status.new_status'))+\"\\n    \")]),_vm._v(\" \"),_c('PostStatusForm',_vm._b({staticClass:\"panel-body\",on:{\"posted\":_vm.closeModal}},'PostStatusForm',_vm.params,false))],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst GlobalNoticeList = {\n  computed: {\n    notices () {\n      return this.$store.state.interface.globalNotices\n    }\n  },\n  methods: {\n    closeNotice (notice) {\n      this.$store.dispatch('removeGlobalNotice', notice)\n    }\n  }\n}\n\nexport default GlobalNoticeList\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./global_notice_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./global_notice_list.js\"\nimport __vue_script__ from \"!!babel-loader!./global_notice_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-022f2108\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./global_notice_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"global-notice-list\"},_vm._l((_vm.notices),function(notice,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"alert global-notice\",class:( _obj = {}, _obj['global-' + notice.level] = true, _obj )},[_c('div',{staticClass:\"notice-message\"},[_vm._v(\"\\n      \"+_vm._s(_vm.$t(notice.messageKey, notice.messageArgs))+\"\\n    \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled close-notice\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nexport const windowWidth = () =>\n  window.innerWidth ||\n  document.documentElement.clientWidth ||\n  document.body.clientWidth\n\nexport const windowHeight = () =>\n  window.innerHeight ||\n  document.documentElement.clientHeight ||\n  document.body.clientHeight\n","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport Notifications from './components/notifications/notifications.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\n\nexport default {\n  name: 'app',\n  components: {\n    UserPanel,\n    NavPanel,\n    Notifications,\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    WhoToFollowPanel,\n    ShoutPanel,\n    MediaModal,\n    SideDrawer,\n    MobilePostStatusButton,\n    MobileNav,\n    DesktopNav,\n    SettingsModal,\n    UserReportingModal,\n    PostStatusModal,\n    GlobalNoticeList\n  },\n  data: () => ({\n    mobileActivePanel: 'timeline'\n  }),\n  created () {\n    // Load the locale from the storage\n    const val = this.$store.getters.mergedConfig.interfaceLanguage\n    this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n    window.addEventListener('resize', this.updateMobileState)\n  },\n  destroyed () {\n    window.removeEventListener('resize', this.updateMobileState)\n  },\n  computed: {\n    currentUser () { return this.$store.state.users.currentUser },\n    userBackground () { return this.currentUser.background_image },\n    instanceBackground () {\n      return this.mergedConfig.hideInstanceWallpaper\n        ? null\n        : this.$store.state.instance.background\n    },\n    background () { return this.userBackground || this.instanceBackground },\n    bgStyle () {\n      if (this.background) {\n        return {\n          '--body-background-image': `url(${this.background})`\n        }\n      }\n    },\n    shout () { return this.$store.state.shout.channel.state === 'joined' },\n    suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    },\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    shoutboxPosition () {\n      return this.$store.getters.mergedConfig.showNewPostButton || false\n    },\n    hideShoutbox () {\n      return this.$store.getters.mergedConfig.hideShoutbox\n    },\n    isMobileLayout () { return this.$store.state.interface.mobileLayout },\n    privateMode () { return this.$store.state.instance.private },\n    sidebarAlign () {\n      return {\n        'order': this.$store.getters.mergedConfig.sidebarRight ? 99 : 0\n      }\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    updateMobileState () {\n      const mobileLayout = windowWidth() <= 800\n      const layoutHeight = windowHeight()\n      const changed = mobileLayout !== this.isMobileLayout\n      if (changed) {\n        this.$store.dispatch('setMobileLayout', mobileLayout)\n      }\n      this.$store.dispatch('setLayoutHeight', layoutHeight)\n    }\n  }\n}\n","function injectStyle (context) {\n  require(\"!!vue-style-loader!css-loader?minimize!../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./App.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./App.js\"\nimport __vue_script__ from \"!!babel-loader!./App.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-724b9c88\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n  __vue_script__,\n  __vue_render__,\n  __vue_static_render_fns__,\n  __vue_template_functional__,\n  __vue_styles__,\n  __vue_scopeId__,\n  __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.bgStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('DesktopNav'),_vm._v(\" \"),_c('div',{staticClass:\"app-bg-wrapper app-container-wrapper\"}),_vm._v(\" \"),_c('div',{staticClass:\"container underlay\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"sidebar-flexer mobile-hidden\",style:(_vm.sidebarAlign)},[_c('div',{staticClass:\"sidebar-bounds\"},[_c('div',{staticClass:\"sidebar-scroller\"},[_c('div',{staticClass:\"sidebar\"},[_c('user-panel'),_vm._v(\" \"),(!_vm.isMobileLayout)?_c('div',[_c('nav-panel'),_vm._v(\" \"),(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),(!_vm.currentUser && _vm.showFeaturesPanel)?_c('features-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('who-to-follow-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('notifications'):_vm._e()],1):_vm._e()],1)])])]),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[(!_vm.currentUser)?_c('div',{staticClass:\"login-hint panel panel-default\"},[_c('router-link',{staticClass:\"panel-body\",attrs:{\"to\":{ name: 'login' }}},[_vm._v(\"\\n          \"+_vm._s(_vm.$t(\"login.hint\"))+\"\\n        \")])],1):_vm._e(),_vm._v(\" \"),_c('router-view')],1),_vm._v(\" \"),_c('media-modal')],1),_vm._v(\" \"),(_vm.currentUser && _vm.shout && !_vm.hideShoutbox)?_c('shout-panel',{staticClass:\"floating-shout mobile-hidden\",class:{ 'left': _vm.shoutboxPosition },attrs:{\"floating\":true}}):_vm._e(),_vm._v(\" \"),_c('MobilePostStatusButton'),_vm._v(\" \"),_c('UserReportingModal'),_vm._v(\" \"),_c('PostStatusModal'),_vm._v(\" \"),_c('SettingsModal'),_vm._v(\" \"),_c('portal-target',{attrs:{\"name\":\"modal\"}}),_vm._v(\" \"),_c('GlobalNoticeList')],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport routes from './routes'\nimport App from '../App.vue'\nimport { windowWidth } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n  if (!document.getElementById('initial-results')) {\n    return null\n  }\n  if (!staticInitialResults) {\n    staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n  }\n  return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n  const rawData = atob(data)\n  const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n  const text = new TextDecoder().decode(array)\n  return text\n}\n\nconst preloadFetch = async (request) => {\n  const data = parsedInitialResults()\n  if (!data || !data[request]) {\n    return window.fetch(request)\n  }\n  const decoded = decodeUTF8Base64(data[request])\n  const requestData = JSON.parse(decoded)\n  return {\n    ok: true,\n    json: () => requestData,\n    text: () => requestData\n  }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/api/v1/instance')\n    if (res.ok) {\n      const data = await res.json()\n      const textlimit = data.max_toot_chars\n      const vapidPublicKey = data.pleroma.vapid_public_key\n\n      store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n      store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n      if (vapidPublicKey) {\n        store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n      }\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load instance config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n  try {\n    const res = await window.fetch('/api/pleroma/frontend_configurations')\n    if (res.ok) {\n      const data = await res.json()\n      return data.pleroma_fe\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load backend-provided frontend config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getStaticConfig = async () => {\n  try {\n    const res = await window.fetch('/static/config.json')\n    if (res.ok) {\n      return res.json()\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.warn('Failed to load static/config.json, continuing without it.')\n    console.warn(error)\n    return {}\n  }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const env = window.___pleromafe_mode.NODE_ENV\n\n  // This takes static config and overrides properties that are present in apiConfig\n  let config = {}\n  if (overrides.staticConfigPreference && env === 'development') {\n    console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n    config = Object.assign({}, apiConfig, staticConfig)\n  } else {\n    config = Object.assign({}, staticConfig, apiConfig)\n  }\n\n  const copyInstanceOption = (name) => {\n    store.dispatch('setInstanceOption', { name, value: config[name] })\n  }\n\n  copyInstanceOption('nsfwCensorImage')\n  copyInstanceOption('background')\n  copyInstanceOption('hidePostStats')\n  copyInstanceOption('hideUserStats')\n  copyInstanceOption('hideFilteredStatuses')\n  copyInstanceOption('logo')\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMask',\n    value: typeof config.logoMask === 'undefined'\n      ? true\n      : config.logoMask\n  })\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMargin',\n    value: typeof config.logoMargin === 'undefined'\n      ? 0\n      : config.logoMargin\n  })\n  copyInstanceOption('logoLeft')\n  store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n  copyInstanceOption('redirectRootNoLogin')\n  copyInstanceOption('redirectRootLogin')\n  copyInstanceOption('showInstanceSpecificPanel')\n  copyInstanceOption('minimalScopesMode')\n  copyInstanceOption('hideMutedPosts')\n  copyInstanceOption('collapseMessageWithSubject')\n  copyInstanceOption('scopeCopy')\n  copyInstanceOption('subjectLineBehavior')\n  copyInstanceOption('postContentType')\n  copyInstanceOption('alwaysShowSubjectInput')\n  copyInstanceOption('showFeaturesPanel')\n  copyInstanceOption('hideSitename')\n  copyInstanceOption('sidebarRight')\n\n  return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/terms-of-service.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'tos', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load TOS\")\n    console.warn(e)\n  }\n}\n\nconst getInstancePanel = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/instance/panel.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load instance panel\")\n    console.warn(e)\n  }\n}\n\nconst getStickers = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/stickers.json')\n    if (res.ok) {\n      const values = await res.json()\n      const stickers = (await Promise.all(\n        Object.entries(values).map(async ([name, path]) => {\n          const resPack = await window.fetch(path + 'pack.json')\n          var meta = {}\n          if (resPack.ok) {\n            meta = await resPack.json()\n          }\n          return {\n            pack: name,\n            path,\n            meta\n          }\n        })\n      )).sort((a, b) => {\n        return a.meta.title.localeCompare(b.meta.title)\n      })\n      store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load stickers\")\n    console.warn(e)\n  }\n}\n\nconst getAppSecret = async ({ store }) => {\n  const { state, commit } = store\n  const { oauth, instance } = state\n  return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n    .then((app) => getClientToken({ ...app, instance: instance.server }))\n    .then((token) => {\n      commit('setAppToken', token.access_token)\n      commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n    })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n  const nicknames = accounts.map(uri => uri.split('/').pop())\n  store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/nodeinfo/2.0.json')\n    if (res.ok) {\n      const data = await res.json()\n      const metadata = data.metadata\n      const features = metadata.features\n      store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n      store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n      store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n      store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n      store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n      store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n      store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n      store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n      store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n      store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n      const uploadLimits = metadata.uploadLimits\n      store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n      store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n      store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n      store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n      store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n      store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n      store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n      const suggestions = metadata.suggestions\n      store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n      store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n      const software = data.software\n      store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n      store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n      const priv = metadata.private\n      store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n      const frontendVersion = window.___pleromafe_commit_hash\n      store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n      const federation = metadata.federation\n\n      store.dispatch('setInstanceOption', {\n        name: 'tagPolicyAvailable',\n        value: typeof federation.mrf_policies === 'undefined'\n          ? false\n          : metadata.federation.mrf_policies.includes('TagPolicy')\n      })\n\n      store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n      store.dispatch('setInstanceOption', {\n        name: 'federating',\n        value: typeof federation.enabled === 'undefined'\n          ? true\n          : federation.enabled\n      })\n\n      const accountActivationRequired = metadata.accountActivationRequired\n      store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n      const accounts = metadata.staffAccounts\n      resolveStaffAccounts({ store, accounts })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn('Could not load nodeinfo')\n    console.warn(e)\n  }\n}\n\nconst setConfig = async ({ store }) => {\n  // apiConfig, staticConfig\n  const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n  const apiConfig = configInfos[0]\n  const staticConfig = configInfos[1]\n\n  await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n  return new Promise(async (resolve, reject) => {\n    if (store.getters.getUserToken()) {\n      try {\n        await store.dispatch('loginUser', store.getters.getUserToken())\n      } catch (e) {\n        console.error(e)\n      }\n    }\n    resolve()\n  })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n  const width = windowWidth()\n  store.dispatch('setMobileLayout', width <= 800)\n\n  FaviconService.initFaviconService()\n\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n  store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n  await setConfig({ store })\n\n  const { customTheme, customThemeSource } = store.state.config\n  const { theme } = store.state.instance\n  const customThemePresent = customThemeSource || customTheme\n\n  if (customThemePresent) {\n    if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n      applyTheme(customThemeSource)\n    } else {\n      applyTheme(customTheme)\n    }\n  } else if (theme) {\n    // do nothing, it will load asynchronously\n  } else {\n    console.error('Failed to load any theme!')\n  }\n\n  // Now we can try getting the server settings and logging in\n  // Most of these are preloaded into the index.html so blocking is minimized\n  await Promise.all([\n    checkOAuthToken({ store }),\n    getInstancePanel({ store }),\n    getNodeInfo({ store }),\n    getInstanceConfig({ store })\n  ])\n\n  // Start fetching things that don't need to block the UI\n  store.dispatch('fetchMutes')\n  getTOS({ store })\n  getStickers({ store })\n\n  const router = new VueRouter({\n    mode: 'history',\n    routes: routes(store),\n    scrollBehavior: (to, _from, savedPosition) => {\n      if (to.matched.some(m => m.meta.dontScroll)) {\n        return false\n      }\n      return savedPosition || { x: 0, y: 0 }\n    }\n  })\n\n  /* eslint-disable no-new */\n  return new Vue({\n    router,\n    store,\n    i18n,\n    el: '#app',\n    render: h => h(App)\n  })\n}\n\nexport default afterStoreSetup\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Vuex from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport VueI18n from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport VueClickOutside from 'v-click-outside'\nimport PortalVue from 'portal-vue'\nimport VBodyScrollLock from './directives/body_scroll_lock'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nVue.use(Vuex)\nVue.use(VueRouter)\nVue.use(VueI18n)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\n\nVue.component('FAIcon', FontAwesomeIcon)\nVue.component('FALayers', FontAwesomeLayers)\n\nconst i18n = new VueI18n({\n  // By default, use the browser locale, we will update it if neccessary\n  locale: 'en',\n  fallbackLocale: 'en',\n  messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n  paths: [\n    'config',\n    'users.lastLoginName',\n    'oauth'\n  ]\n};\n\n(async () => {\n  let storageError = false\n  const plugins = [pushNotifications]\n  try {\n    const persistedState = await createPersistedState(persistedStateOptions)\n    plugins.push(persistedState)\n  } catch (e) {\n    console.error(e)\n    storageError = true\n  }\n  const store = new Vuex.Store({\n    modules: {\n      i18n: {\n        getters: {\n          i18n: () => i18n\n        }\n      },\n      interface: interfaceModule,\n      instance: instanceModule,\n      statuses: statusesModule,\n      users: usersModule,\n      api: apiModule,\n      config: configModule,\n      shout: shoutModule,\n      oauth: oauthModule,\n      authFlow: authFlowModule,\n      mediaViewer: mediaViewerModule,\n      oauthTokens: oauthTokensModule,\n      reports: reportsModule,\n      polls: pollsModule,\n      postStatus: postStatusModule,\n      chats: chatsModule\n    },\n    plugins,\n    strict: false // Socket modifies itself, let's ignore this for now.\n    // strict: process.env.NODE_ENV !== 'production'\n  })\n  if (storageError) {\n    store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n  }\n  afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""}