summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.31bba9f1e242ff273dcb.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'priv/static/static/js/app.31bba9f1e242ff273dcb.js.map')
-rw-r--r--priv/static/static/js/app.31bba9f1e242ff273dcb.js.map1
1 files changed, 0 insertions, 1 deletions
diff --git a/priv/static/static/js/app.31bba9f1e242ff273dcb.js.map b/priv/static/static/js/app.31bba9f1e242ff273dcb.js.map
deleted file mode 100644
index 8ff7a00c6..000000000
--- a/priv/static/static/js/app.31bba9f1e242ff273dcb.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/entity_normalizer/entity_normalizer.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/services/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.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?2e4b","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/file_type/file_type.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?ab91","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?e5e1","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?b45d","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?46e2","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.vue?d75b","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.vue?875f","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?98e9","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?566f","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?1d9f","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?c07b","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?0336","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?ccd6","webpack:///./src/components/status_content/status_content.js","webpack:///./src/services/tiny_post_html_processor/tiny_post_html_processor.service.js","webpack:///./src/services/matcher/matcher.service.js","webpack:///./src/components/status_content/status_content.vue","webpack:///./src/components/status_content/status_content.vue?d407","webpack:///./src/services/date_utils/date_utils.js","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?78e9","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?c04b","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.vue?41d8","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?2220","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?d70d","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?a634","webpack:///./src/services/user_highlighter/user_highlighter.js","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/services/status_poster/status_poster.service.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?3659","webpack:///./src/i18n/messages.js","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/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/offset_finder/offset_finder.service.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?8c95","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?ba43","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?deba","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?7d0d","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/services/file_size_format/file_size_format.js","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?3a64","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?4cb6","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?4ef5","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.vue?f674","webpack:///./src/components/timeline/timeline.vue?d6bb","webpack:///./src/components/status/status.vue?fa33","webpack:///./src/components/status/status.vue?733b","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/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/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/gallery/gallery.vue?ea2c","webpack:///./src/components/gallery/gallery.vue?759e","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/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/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","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/chat_panel/chat_panel.vue?9dd9","webpack:///./src/components/chat_panel/chat_panel.vue?d094","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/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","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/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/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/modules/api.js","webpack:///./src/modules/chat.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?84c4","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?3685","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?1bfa","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?a489","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?d4d8","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?692f","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.vue?559e","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list/chat_list.vue?de9d","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?82ca","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message/chat_message.vue?0d68","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?3acb","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?063f","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?ec9a","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?3c1d","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?4c1d","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?e2ae","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?6944","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?ec94","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?9df7","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?2e19","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/chat_panel/chat_panel.js","webpack:///./src/components/chat_panel/chat_panel.vue","webpack:///./src/components/chat_panel/chat_panel.vue?bcf8","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?d4b0","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?0ab8","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?8c91","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?1448","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/search_bar/search_bar.vue?fd14","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/async_component_error/async_component_error.vue","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/panel_loading/panel_loading.vue?d82c","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?b33c","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?9c49","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?360f","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?3596","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?c48d","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue?d8b6","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?5d77","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?2baf","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?24c5","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","2","3","Promise","resolve","reject","href","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","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","undefined","setTimeout","head","all","m","c","d","name","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","display_name","name_html","addEmojis","escape","emojis","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","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","friendIds","followerIds","pinnedStatusIds","follow_request_count","tags","deactivated","notification_settings","unread_chat_count","parseAttachment","mimetype","mime_type","meta","string","matchOperatorsRegex","reduce","acc","emoji","regexSafeShortCode","shortcode","RegExp","concat","parseStatus","status","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","bookmarked","reblog","nsfw","sensitive","statusnet_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_html","external_url","poll","options","_objectSpread","title_html","title","pinned","is_post_verb","uri","match","qvitter_delete_notice","activity_type","isNsfw","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","favourite","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","flakeId","arguments","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","rgb2hex","g","b","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default","_r","_map","val","Math","ceil","_map2","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default","toString","srgbToLinear","srgb","split","bit","pow","c2linear","relativeLuminance","_srgbToLinear","getContrastRatio","a","la","lb","_ref","_ref2","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","_ref3","_ref4","color","opacity","hex2rgb","hex","exec","mixrgb","k","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","_Error","_this","errors","classCallCheck_default","possibleConstructorReturn_default","getPrototypeOf_default","assertThisInitialized_default","parse","typeof_default","errorContents","ap_id","username","entries","errs","slicedToArray_default","capitalize_default","join","toConsumableArray_default","inherits_default","wrapNativeSuper_default","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","_ref$headers","headers","Accept","Content-Type","encodeURIComponent","authHeaders","json","ok","accessToken","Authorization","fetchFriends","_ref20","sinceId","_ref20$limit","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","_ref81","stream","_ref81$args","access_token","_ref82","_ref83","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","_ref84","_ref84$preprocessor","preprocessor","handleMastoWS","_ref84$id","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","JOINED","CLOSED","ERROR","apiService","verifyCredentials","fetchTimeline","_ref34","timeline","_ref34$since","since","_ref34$until","until","_ref34$userId","userId","_ref34$tag","_ref34$withMuted","withMuted","_ref34$replyVisibilit","replyVisibility","isNotifications","public","friends","dms","notifications","publicAndExternal","media","favorites","bookmarks","queryString","map_default","param","statusText","pagination","fetchPinnedStatuses","_ref35","fetchConversation","_ref24","urlContext","MASTODON_STATUS_CONTEXT_URL","_ref25","ancestors","descendants","fetchStatus","_ref26","MASTODON_STATUS_URL","exportFriends","_ref21","more","users","regenerator_default","async","_context","last_default","awrap","sent","concat_default","t0","stop","fetchFollowers","_ref22","_ref22$limit","MASTODON_FOLLOWERS_URL","followUser","_ref8","objectWithoutProperties_default","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","_ref9","MASTODON_UNFOLLOW_URL","pinOwnStatus","_ref10","unpinOwnStatus","_ref11","muteConversation","_ref12","unmuteConversation","_ref13","blockUser","_ref14","MASTODON_BLOCK_USER_URL","unblockUser","_ref15","MASTODON_UNBLOCK_USER_URL","fetchUser","_ref18","fetchUserRelationship","_ref19","favorite","_ref36","unfavorite","_ref37","retweet","_ref38","unretweet","_ref39","bookmarkStatus","_ref40","unbookmarkStatus","_ref41","postStatus","_ref42","spoilerText","_ref42$mediaIds","mediaIds","inReplyToStatusId","contentType","preview","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","deleteStatus","_ref43","MASTODON_DELETE_URL","uploadMedia","_ref44","formData","setMediaDescription","_ref45","fetchMutes","_ref56","muteUser","_ref57","unmuteUser","_ref58","subscribeUser","_ref59","unsubscribeUser","_ref60","fetchBlocks","_ref61","fetchOAuthTokens","_ref62","revokeOAuthToken","_ref63","tagUser","_ref27","nicknames","untagUser","_ref28","deleteUser","_ref33","addRight","_ref29","deleteRight","_ref30","activateUser","_ref31","nickname","get_default","deactivateUser","_ref32","register","_ref7","rest","locale","agreement","getCaptcha","resp","updateProfileImages","_ref5","_ref5$avatar","_ref5$banner","banner","_ref5$background","background","updateProfile","_ref6","importBlocks","_ref46","file","importFollows","_ref47","deleteAccount","_ref48","password","changeEmail","_ref49","email","changePassword","_ref50","newPassword","newPasswordConfirmation","settingsMFA","_ref51","mfaDisableOTP","_ref52","generateMfaBackupCodes","_ref55","mfaSetupOTP","_ref54","mfaConfirmOTP","_ref53","fetchFollowRequests","_ref23","approveUser","_ref16","MASTODON_APPROVE_USER_URL","denyUser","_ref17","MASTODON_DENY_USER_URL","suggestions","_ref64","markNotificationsAsSeen","_ref65","_ref65$single","single","dismissNotification","_ref80","vote","_ref66","pollId","choices","fetchPoll","_ref67","fetchFavoritedByUsers","_ref68","fetchRebloggedByUsers","_ref69","fetchEmojiReactions","_ref70","reactions","accounts","reactWithEmoji","_ref71","unreactWithEmoji","_ref72","reportUser","_ref73","statusIds","comment","forward","account_id","status_ids","updateNotificationSettings","settings","each_default","search2","_ref75","q","offset","u","statuses","searchUsers","_ref74","query","fetchKnownDomains","_ref76","fetchDomainMutes","_ref77","muteDomain","_ref78","domain","unmuteDomain","_ref79","chats","_ref85","getOrCreateChat","_ref86","accountId","chatMessages","_ref87","_ref87$limit","sendChatMessage","_ref88","_ref88$mediaId","mediaId","readChat","_ref89","lastReadId","last_read_id","deleteChatMessage","_ref90","isExternal","generateProfileLink","restrictedNicknames","complicated","lodash_includes__WEBPACK_IMPORTED_MODULE_0___default","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__vue_styles__","context","Component","component_normalizer","user_avatar","_h","$createElement","_self","_c","staticClass","class","avatar-compact","compact","better-shadow","betterShadow","attrs","alt","image-load-error","__webpack_exports__","notificationsFromStore","store","statusNotifications","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","filteredNotificationsFromStore","types","sortedNotifications","sort","lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","visibleTypes","unseenNotificationsFromStore","lodash_filter__WEBPACK_IMPORTED_MODULE_2___default","prepareNotificationObject","i18n","i18nString","notifObj","icon","image","fileType","fileTypeService","fileMatchesSomeType","DialogModal","darkOverlay","default","onCancel","Function","dialog_modal_dialog_modal","dialog_modal","_vm","dark-overlay","on","click","$event","currentTarget","stopPropagation","_t","_v","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","Popover","computed","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","tagName","toggleTag","api","backendInteractor","commit","toggleRight","_this2","toggleActivationStatus","dispatch","deleteUserDialog","show","_this3","isProfile","$route","isTargetUser","history","back","setToggled","moderation_tools_vue_styles_","moderation_tools_moderation_tools","moderation_tools","trigger","placement","y","slot","_s","$t","_e","menu-checkbox-checked","to","on-cancel","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","$router","recipient_id","mapState","pleromaChatMessagesAvailable","account_actions_vue_styles_","account_actions_account_actions","account_actions","bound-to","x","showing_reblogs","user_card","followRequestInProgress","browserSupport","cssFilter","created","user_card_objectSpread","getters","findUser","classes","user-card-rounded-t","rounded","user-card-rounded","user-card-bordered","bordered","style","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","round","userHighlightType","mergedConfig","highlight","set","mapGetters","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","setProfileView","v","switcher","linkClicked","open","userProfileLink","zoomAvatar","mentionUser","replyTo","repliedUser","user_card_vue_styles_","user_card_Component","hide-bio","hideBio","_m","domProps","innerHTML","hideUserStats","directives","rawName","expression","composing","for","change","$$selectedVal","Array","selected","_value","subscribing","preventDefault","boundTo","boundToSelector","margin","popoverClass","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","screenBox","origin","left","top","parentBounds","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","offsetWidth","usingTop","offsetHeight","yOffset","translateY","xOffset","translateX","transform","showPopover","$emit","$nextTick","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","destroyed","removeEventListener","popover","mouseenter","mouseleave","ref","LAYERS","DEFAULT_OPACITY","SLOT_INHERITANCE","chromatism__WEBPACK_IMPORTED_MODULE_0__","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_1__","undelay","topBar","badge","profileTint","panel","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","faint","underlay","alertPopup","depends","priority","layer","link","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","mod","brightness","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","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","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","applyTheme","rules","generatePreset","classList","add","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","_getColors","getColors","htmlColors","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3___default","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","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default","computeDynamicColor","variableSlot","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","composePreset","getThemes","cache","themes","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default","statePositionAcc","position","getOpacitySlot","substring","getPreset","isV1","isArray","setPreset","FavoriteButton","animated","icon-star-empty","icon-star","animate-spin","favorite_button_favorite_button","favorite_button","hidePostStats","ReactButton","filterWord","addReaction","existingReaction","find","me","react_button_objectSpread","commonEmojis","displayText","react_button_vue_styles_","react_button_react_button","react_button","scopedSlots","_u","fn","placeholder","_l","replacement","RetweetButton","retweet_button_objectSpread","retweeted","retweeted-empty","retweet_button_vue_styles_","retweet_button_retweet_button","retweet_button","ExtraButtons","confirm","pinStatus","unpinStatus","_this4","copyLink","_this5","navigator","clipboard","writeText","statusLink","_this6","_this7","canDelete","ownStatus","canPin","canMute","extra_buttons_vue_styles_","extra_buttons_extra_buttons","extra_buttons","StatusPopover","find_default","allStatuses","statusId","Status","enter","status_popover_vue_styles_","status_popover_status_popover","status_popover","popover-class","is-preview","statusoid","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","emoji_reactions_vue_styles_","emoji_reactions_emoji_reactions","picked-reaction","not-clickable","count","replying","unmuted","userExpanded","status_objectSpread","muteWords","showReasonMutedThread","inConversation","repeaterClass","highlightClass","userClass","deleted","repeaterStyle","highlightStyle","userStyle","noHeading","generateUserProfileLink","replyProfileLink","isReply","replyToName","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","muteWordHits","relationshipReblog","reasonsToMute","excusesNotToMute","inProfile","profileUserId","hideFilteredStatuses","hideStatus","isFocused","focused","replySubject","decodedSummary","unescape_default","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","uniqBy_default","tagObj","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","watch","rect","scrollBy","status.repeat_num","num","status.fave_num","filters","capitalize","str","charAt","toUpperCase","status_vue_styles_","status_Component","status_status","status-el_focused","status-conversation","inlineExpanded","isPreview","highlighted","is-retweet","data-tags","nativeOn","!click","user-id","time","auto-update","_f","expandable","staticStyle","min-width","status-id","aria-label","strikethrough","replies","reply","no-heading","emojiReactionsOnTimeline","button-icon-active","logged-in","onError","onSuccess","reply-to","replied-user","copy-message-scope","subject","posted","loading","polls","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","index","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","allElements","querySelectorAll","clickedElement","querySelector","checked","forEach_default","element","optionId","poll_poll","disabled","path","now-threshold","showingTall","fullContent","showingLongSubject","expandingSubject","collapseMessageWithSubject","localCollapseSubjectDefault","hideAttachments","hideAttachmentsInConv","tallStatus","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","nsfwClickthrough","attachmentSize","maxThumbnails","galleryTypes","playVideosInModal","galleryAttachments","nonGalleryAttachments","attachmentTypes","postBodyHtml","html","greentext","handledTags","openCloseTags","buffer","level","textBuffer","tagBuffer","flush","trim","handleBr","handleOpen","handleClose","pop","char","tagFull","processHtml","Attachment","Poll","Gallery","LinkPreview","className","attn","attention","_attention$screen_nam","_attention$screen_nam2","namepart","instancepart","matchstring","mentionMatchesUrl","dataset","generateTagLink","toggleShowMore","setMedia","status_content_vue_styles_","status_content_Component","status_content","tall-subject","tall-subject-hider_focused","tall-status","tall-status-hider_focused","single-line","singleLine","base-poll","size","allow-play","set-media","MINUTE","HOUR","DAY","relativeTime","relativeTimeShort","WEEK","MONTH","YEAR","date","nowThreshold","now","abs","BasicUserCard","basic_user_card","CURRENT_VERSION","getLayersArray","array","parent","unshift","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","_sourceColor$split$ma","_sourceColor$split$ma2","variable","modifier","parseFloat","sourceOpacity","deps","isTextColor","backgroundColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","done","dropFiles","fileInfos","media_upload_media_upload","media_upload","poll_form","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","focus","addOption","deleteOption","amount","DateUtils","expiryAmountChange","updatePollToParent","uniq_default","poll_form_vue_styles_","poll_poll_form","maxlength","keydown","indexOf","_k","keyCode","$set","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","_ref$attentions","allAttentions","reject_default","buildMentionsString","scope","copyMessageScope","postContentType","uploadingFiles","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","updateUsersList","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","newStatus.contentType","autoPreview","newStatus.spoilerText","postingOptions","_args","abrupt","disableSubmit","submitOnEnter","setAllMediaDescriptions","postHandler","statusPoster","clearPollForm","preserveFocus","el","previewStatus","debouncePreviewStatus","debounce_default","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","getComputedStyle","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","targetScroll","selectionStart","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","post_status_form_vue_styles_","post_status_form_Component","post_status_form","autocomplete","submit","dragover","animation","dragleave","drop","disableLockWarning","disableSubject","enable-emoji-picker","suggest","model","callback","$$v","emojiPickerPlacement","hide-emoji-button","newline-on-ctrl-enter","enable-sticker-picker","sticker-uploaded","sticker-upload-failed","shown","scrollable-form","rows","ctrlKey","shiftKey","altKey","metaKey","compositionupdate","disableScopeSelector","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","update-poll","drop-files","uploaded","upload-failed","all-uploaded","touchstart","disableSensitivityCheckbox","timeago","interval","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","date_utils","autoUpdate","datetime","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","VideoAttachment","usePlaceholder","placeholderName","placeholderIconClass","referrerpolicy","mediaProxyAvailable","isEmpty","oembed","isSmall","fullwidth","useModal","openModal","toggleHidden","useOneClickNsfw","onImageLoad","naturalWidth","naturalHeight","naturalSizeLoad","_obj","small","large_thumb_url","image-load-handler","allowPlay","controls","thumb_url","oembedHTML","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_0__","prefs","solidColor","tintColor","tintColor2","backgroundPosition","list","items","getKey","item","$slots","empty","prop","indeterminate","_ref$media","_ref$inReplyToStatusI","_ref$contentType","_ref$preview","lodash_map__WEBPACK_IMPORTED_MODULE_0___default","showImmediately","noIdUpdate","stopGifs","onLoad","imageLoadHandler","canvas","getContext","drawImage","still_image","load","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","zh","messages","languages","en","require","setLanguage","language","_messages","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","setLocaleMessage","progress_button","progress","browserLocale","multiChoiceProperties","defaultState","customTheme","customThemeSource","hideISP","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","streaming","autohideFloatingPostButton","pauseOnUnfocused","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","useContainFit","instanceDefaultProperties","rootState","rootGetters","mutations","setOption","setHighlight","del","actions","toLowerCase","statusSummary","lodash_filter__WEBPACK_IMPORTED_MODULE_0___default","muteWord","child","_ref$top","_ref$left","ignorePadding","offsetTop","offsetLeft","_findPadding","findPadding","topPadding","leftPadding","_findPadding2","leftPaddingStr","requestFollow","requested","fetchRelationship","attempt","follow_button","inProgress","isPressed","label","labelFollowing","unfollow","follow","requestUnfollow","onVideoDataLoad","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","video_attachment","loop","playsinline","loadeddata","remote_follow","sizes","chunk_default","lastAttachment","allButLastRow","dropRight_default","onNaturalSizeLoad","rowStyle","itemsPerRow","padding-bottom","itemStyle","row","total","sumBy_default","getAspectRatio","flex","gallery","contain-fit","cover-fit","natural-size-load","imageLoaded","useImage","useDescription","test","newImg","Image","link_preview","small-image","provider_name","slicedUsers","avatar_list","exponent","units","log","toFixed","debounceUserSearch","lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default","firstChar","suggestEmoji","suggestUsers","noPrefix","substr","aScore","bScore","imageUrl","newUsers","detailText","vue__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_0___default","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","beforeUpdate","activateTab","contents","render","h","tabs","classesTab","classesWrapper","fullHeight","renderSlot","getComponentProps","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default","isFunction","getComponentOptions","addPositionToWords","words","reduce_default","word","start","end","previous","splitIntoWords","triggers","matches","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","filterByKeyword","keyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","clientHeight","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","emoji_picker_emoji_picker","emoji_picker","refInFor","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","firstchar","textAtCaret","matchedSuggestions","take_default","showSuggestions","wordAtCaret","Completion","slots","elm","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","newValue","picker","scrollIntoView","togglePicker","insert","_ref2$surroundingSpac","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","panelBody","_this$input$elm","offsetBottom","setPlacement","container","overflowsBottom","emoji_input_vue_styles_","emoji_input_Component","emoji_input","with-picker","hide","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","scope_selector","locals","EventTargetPolyfill","interfaceMod","settingsModalState","settingsModalLoaded","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","settingsSaved","success","errorData","setNotificationPermission","permission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setPageTitle","messageKey","_ref11$messageArgs","messageArgs","_ref11$level","_ref11$timeout","registrationOpen","vapidPublicKey","defaultBanner","disableChat","hideSitename","loginMethod","logo","logoMargin","logoMask","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","chatAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","defineProperty_default","getStaticEmoji","res","values","getCustomEmoji","_context2","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","_context3","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","desktopNotificationSilence","POSITIVE_INFINITY","idStore","conversationsObject","timelines","visibleNotificationTypes","mergeOrAdd","arr","obj","oldItem","merge_default","omitBy_default","new","sortTimeline","addStatusToGlobalStorage","conversationId","addNewStatuses","_ref2$showImmediately","_ref2$user","_ref2$noIdUpdate","_ref2$pagination","isArray_default","timelineObject","minNew","minBy_default","maxNew","maxBy_default","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","_status2","_x","counter","favoriteStatus","deletion","remove_default","removeStatusFromGlobalStorage","unknown","addNewNotifications","Notification","desktopNotification","removeStatus","first_default","showNewStatuses","oldTimeline","slice_default","resetStatuses","emptyState","clearTimeline","_ref8$excludeUserId","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","findIndex_default","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setError","setErrorData","setNotificationsLoading","setNotificationsError","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","statuses_objectSpread","removeOwnReaction","updateStatusWithPoll","_ref37$showImmediatel","_ref37$timeline","_ref37$noIdUpdate","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","fetchAndUpdate","_ref2$timeline","_ref2$older","_ref2$userId","_ref2$tag","timelineData","camelCase_default","_getters$mergedConfig","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","_ref3$timeline","_ref3$userId","_ref3$tag","setInterval","fetchNotifications","readNotifsIds","notificationsFetcher","requests","followRequestFetcher","backendInteractorService","backend_interactor_service_objectSpread","startFetchingTimeline","_ref$userId","timelineFetcherService","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","func","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","from","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","mention","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","oldValue","mergeWith_default","predictedRelationship","relationships","loggingIn","lastLoginName","usersObject","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","setCurrentUser","clearCurrentUser","beginLogin","endLogin","saveFriendIds","saveFollowerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","compact_default","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","users_objectSpread","logout","_store$rootState","oauthApi","userToken","loginUser","requestPermission","startPolling","latest","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","clearInterval","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","enableMastoSockets","disableMastoSockets","startMastoUserSocket","closeEvent","ignoreCodes","restartMastoUserSocket","stopMastoUserSocket","_ref8$timeline","_ref8$tag","_ref8$userId","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","channel","setChannel","addMessage","setMessages","initializeChat","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","auth_flow","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","mediaViewer","currentIndex","activated","setCurrent","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","modalActivated","openUserReportingModal","closeUserReportingModal","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","ChatService","storage","newMessages","idIndex","lastSeenTimestamp","newMessageCount","getView","currentMessageChainId","sortBy_default","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","uniqueId_default","deleteMessage","resetNewMessageCount","getChatById","chatList","chats_objectSpread","chatListFetcher","openedChats","openedChatMessageServices","currentChatId","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","orderBy_default","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","_rootGetters","updatedChat","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","refreshLastMessage","loaded","defaultReducer","paths","substate","set_default","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","_ref$key","_ref$paths","_ref$getState","getState","getItem","_ref$setState","setState","setItem","_ref$reducer","reducer","_ref$storage","_ref$subscriber","subscriber","handler","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","push_notifications_plugin","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","lockerEls","disableBodyScroll","scrollBarGap","documentElement","clientWidth","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","unbind","idA","idB","expanded","isPage","originalStatusId","getConversationId","isExpanded","clone_default","statusIndex","filter_default","sortAndFilterConversation","irid","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","src_components_conversation_conversation","components_conversation_conversation","inline-expanded","collapsable","show-pinned","pinnedStatusIdsObject","in-conversation","in-profile","profile-user-id","goto","Timeline","paused","unfocused","bottomedOut","timelineError","showLoadButton","loadButtonString","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","keyBy_default","Conversation","scrollLoad","timelineName","handleVisibilityChange","handleShortKey","fetchOlderStatuses","throttle_default","bodyBRect","pageYOffset","doc","clientTop","timeline_vue_styles_","components_timeline_timeline","timeline_timeline","pinned-status-ids-object","PublicTimeline","public_timeline_public_timeline","public_timeline","timeline-name","PublicAndExternalTimeline","public_and_external_timeline_public_and_external_timeline","public_and_external_timeline","FriendsTimeline","friends_timeline_friends_timeline","friends_timeline","TagTimeline","tag_timeline_tag_timeline","tag_timeline","Bookmarks","bookmark_timeline_bookmark_timeline","bookmark_timeline","conversationPage","conversation_page_conversation_page","conversation_page","is-page","getUser","notification_objectSpread","targetUser","targetUserProfileLink","needMute","components_notification_notification","notification_notification","white-space","Notifications","minimalMode","filterMode","seenToDisplayCount","notifications_objectSpread","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","notifications_vue_styles_","components_notifications_notifications","notifications_notifications","minimal","unseen","tabModeDict","likes+repeats","Interactions","allowFollowingMove","onModeSwitch","interactions_interactions","interactions","on-switch","minimal-mode","filter-mode","DMs","dm_timeline_dm_timeline","dm_timeline","htmlTitle","getUserProfileLink","chat_title_vue_styles_","chat_title_chat_title","chat_title","withAvatar","ChatListItem","ChatTitle","chat_list_item_objectSpread","attachmentInfo","messageForStatusContent","isYou","messagePreview","chat_list_item_vue_styles_","chat_list_item_chat_list_item","chat_list_item","chatNew","userIds","chat_new_objectSpread","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","chat_new_vue_styles_","chat_new_chat_new","chat_new","ChatList","List","ChatNew","chat_list_objectSpread","isNew","cancelNewChat","newChat","chat_list_vue_styles_","chat_list_chat_list","chat_list","cancel","chat_message_date","displayDate","today","toLocaleDateString","day","month","chat_message_date_chat_message_date","ChatMessage","ChatMessageDate","chat_message_objectSpread","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","author","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","chat_message_vue_styles_","chat_message_chat_message","chat_message","hovered-message-chain","hoveredMessageChain","mouseover","outgoing","incoming","without-attachment","bound-to-selector","full-content","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","handleLayoutChange","handleScroll","updateScrollableContainerHeight","handleResize","setChatLayout","unsetChatLayout","chat_objectSpread","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","forceRead","expand","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","inner","opts","_opts$expand","_opts$delayed","_this7$lastScrollPosi","scrollable","diff","scrollTo","_options$behavior","_options$forceRead","isBottomedOut","reachedTop","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","_this8","_ref2$isFirstFetch","_ref2$fetchLatest","fetchLatest","fetchOlderMessages","positionBeforeUpdate","_this9","doStartFetching","_this10","sendMessage","_this11","chat_vue_styles_","src_components_chat_chat","components_chat_chat","with-avatar","chat-view-item","hover","disable-subject","disable-scope-selector","disable-notice","disable-lock-warning","disable-polls","disable-sensitivity-checkbox","disable-submit","disable-preview","post-handler","submit-on-enter","preserve-focus","auto-focus","file-limit","max-height","emoji-picker-placement","FollowCard","isMe","follow_card_vue_styles_","follow_card_follow_card","follow_card","noFollowsYou","label-following","withLoadMore","select","destroy","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","WrappedComponent","$props","fetchEntries","newEntries","with_load_more_objectSpread","$listeners","$scopedSlots","helper_default","FollowerList","FriendList","UserProfile","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","$route.params.id","$route.params.name","$route.query","TabSwitcher","user_profile_vue_styles_","user_profile_user_profile","user_profile","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","searchTerm","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","search_vue_styles_","components_search_search","search_search","keyup","uses","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","signedIn","setCaptcha","registration_objectSpread","bioPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","registration_vue_styles_","src_components_registration_registration","components_registration_registration","form-group--error","$error","modifiers","$forceUpdate","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","password_reset_objectSpread","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","password_reset_vue_styles_","components_password_reset_password_reset","password_reset_password_reset","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","follow_request_card_vue_styles_","FollowRequests","follow_request_card","follow_requests_follow_requests","follow_requests","oac","_this$$store$state$oa","oauth_callback_oauth_callback","oauth_callback","LoginForm","login_form_objectSpread","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","_this$oauth","identifier","focusOnPasswordInput","passwordInput","login_form_vue_styles_","login_form_login_form","login_form","mfa","recovery_form","recovery_form_objectSpread","authSettings","mfa_token","mfaApi","mfa_form_recovery_form","totp_form","totp_form_objectSpread","mfa_form_totp_form","AuthForm","is","authForm","auth_form_objectSpread","MFARecoveryForm","MFATOTPForm","chatPanel","currentMessage","collapsed","togglePanel","chat_panel_vue_styles_","chat_panel_chat_panel","chat_panel","floating","chat-heading","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","who_to_follow_vue_styles_","who_to_follow_who_to_follow","who_to_follow","InstanceSpecificPanel","instance_specific_panel_instance_specific_panel","instance_specific_panel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","features_panel_vue_styles_","features_panel_features_panel","features_panel","TermsOfServicePanel","terms_of_service_panel_vue_styles_","terms_of_service_panel_terms_of_service_panel","terms_of_service_panel","StaffPanel","staffAccounts","staff_panel_vue_styles_","staff_panel_staff_panel","staff_panel","MRFTransparencyPanel","mrf_transparency_panel_objectSpread","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","mrf_transparency_panel_vue_styles_","About","mrf_transparency_panel","policy","textContent","pattern","about_vue_styles_","about_about","about","RemoteUserResolver","redirect","hostname","remote_user_resolver_vue_styles_","remote_user_resolver_remote_user_resolver","remote_user_resolver","boot_routes","validateAuthenticatedRoute","routes","_to","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","ChatPanel","OAuthCallback","route","UserPanel","user_panel_objectSpread","user_panel_vue_styles_","user_panel_user_panel","user_panel","NavPanel","nav_panel_objectSpread","followRequestCount","privateMode","federating","nav_panel_vue_styles_","nav_panel_nav_panel","nav_panel","SearchBar","search_bar_vue_styles_","search_bar_search_bar","search_bar","usersToFollow","toFollow","shuffled","shuffle_default","WhoToFollowPanel","oldUser","fill","who_to_follow_panel_vue_styles_","who_to_follow_panel_who_to_follow_panel","who_to_follow_panel","modal","isOpen","noBackground","modal-background","modal_vue_styles_","modal_modal","panel_loading_vue_styles_","async_component_error_vue_styles_","getResettableAsyncComponent","SettingsModal","Modal","SettingsModalContent","asyncComponent","asyncComponentFactory","resettable_async_component_objectSpread","observe","observable","functional","resetAsyncComponent","retry","delay","closeModal","peekModal","modalOpenedOnce","modalPeeked","settings_modal_vue_styles_","settings_modal_settings_modal","settings_modal","peek","is-open","no-background","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","MediaModal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","media_modal_vue_styles_","media_modal_media_modal","media_modal","backdropClicked","touchmove","SideDrawer","closed","closeGesture","toggleDrawer","side_drawer_objectSpread","unseenNotificationsCount","sitename","doLogout","touchStart","touchMove","side_drawer_vue_styles_","side_drawer_side_drawer","side_drawer","side-drawer-container-closed","side-drawer-container-open","side-drawer-darken-closed","side-drawer-closed","side-drawer-click-outside-closed","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","mobile_post_status_button_vue_styles_","mobile_post_status_button_mobile_post_status_button","mobile_post_status_button","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","mobile_nav_objectSpread","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","_ref$target","mobile_nav_vue_styles_","mobile_nav_mobile_nav","mobile_nav","mobile-hidden","active-class","UserReportingModal","statusIdsToReport","processing","remoteInstance","user_reporting_modal_objectSpread","isChecked","toggleStatus","user_reporting_modal_vue_styles_","user_reporting_modal_user_reporting_modal","user_reporting_modal","PostStatusModal","resettingForm","isFormVisible","post_status_modal_vue_styles_","post_status_modal_post_status_modal","post_status_modal","_b","GlobalNoticeList","notices","closeNotice","global_notice_list_vue_styles_","global_notice_list_global_notice_list","global_notice_list","windowWidth","App","mobileActivePanel","searchBarHidden","supportsMask","updateMobileState","enableMask","logoStyle","logoMaskStyle","mask-image","background-color","logoBgStyle","bgStyle","background-image","bgAppStyle","--body-background-image","isMobileLayout","sidebarAlign","order","onSearchBarToggled","App_vue_styles_","src_App","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","getBackendProvidedConfig","pleroma_fe","getStaticConfig","_context4","setSettings","apiConfig","staticConfig","overrides","env","copyInstanceOption","_context5","___pleromafe_dev_overrides","___pleromafe_mode","NODE_ENV","staticConfigPreference","getTOS","_context6","getInstancePanel","_context7","getStickers","_context9","resPack","_context8","pack","localeCompare","t1","getAppSecret","_context10","after_store_objectSpread","resolveStaffAccounts","getNodeInfo","metadata","features","uploadLimits","software","priv","federation","_context11","nodeName","openRegistrations","general","fieldsLimits","enabled","web","version","mrf_policies","setConfig","configInfos","_context12","checkOAuthToken","_context14","_context13","afterStoreSetup","_store$state$config","router","_context15","VueRouter","scrollBehavior","_from","savedPosition","matched","currentLocale","use","Vuex","VueI18n","VueChatScroll","VueClickOutside","PortalVue","fallbackLocale","storageError","plugins","persistedState","persistedStateOptions","pushNotifications","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","chatModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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","file":"static/js/app.31bba9f1e242ff273dcb.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(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\":\"78a48aa26599b00c3b8d\",\"3\":\"56898c1005d9ba1b8d4a\",\"4\":\"2d3bef896b463484e6eb\",\"5\":\"84f3dce298bc720719c7\",\"6\":\"b9497e1d403b901a664e\",\"7\":\"455b574116ce3f004ffb\",\"8\":\"8db9f2dcc5ed429777f7\",\"9\":\"da3973d058660aa9612f\",\"10\":\"5ef4671883649cf93524\",\"11\":\"c5b938b4349f87567338\",\"12\":\"ab82f9512fa85e78c114\",\"13\":\"40e59c5015d3307b94ad\",\"14\":\"de791a47ee5249a526b1\",\"15\":\"e24854297ad682aec45a\",\"16\":\"b7b0e4b8227a50fcb9bb\",\"17\":\"c98118b6bb84ee3b5b08\",\"18\":\"89c20aa67a4dd067ea37\",\"19\":\"6e13bad8131c4501c1c5\",\"20\":\"3615c3cea2e1c2707a4f\",\"21\":\"64dedfc646e13e6f7915\",\"22\":\"6fa63bc6a054b7638e9e\",\"23\":\"e0ddea2b6e049d221ee7\",\"24\":\"38e3b9d44e9ee703ebf6\",\"25\":\"696b41c0a8660e1f85af\",\"26\":\"1168f22384be75dc5492\",\"27\":\"3c0cfbb2a898b35486dd\",\"28\":\"926c71d6f1813e177271\",\"29\":\"187064ebed099ae45749\",\"30\":\"d78855ca19bf749be905\"}[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\"}[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.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([555,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'\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.name = data.display_name\n output.name_html = addEmojis(escape(data.display_name), data.emojis)\n\n output.description = data.note\n output.description_html = addEmojis(data.note, data.emojis)\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: addEmojis(field.name, data.emojis),\n value: addEmojis(field.value, data.emojis)\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.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 output.friendIds = []\n output.followerIds = []\n output.pinnedStatusIds = []\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n output.deactivated = data.pleroma.deactivated\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 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.description = data.description\n\n return output\n}\nexport const addEmojis = (string, emojis) => {\n const matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g\n return emojis.reduce((acc, emoji) => {\n const regexSafeShortCode = emoji.shortcode.replace(matchOperatorsRegex, '\\\\$&')\n return acc.replace(\n new RegExp(`:${regexSafeShortCode}:`, 'g'),\n `<img src='${emoji.url}' alt=':${emoji.shortcode}:' title=':${emoji.shortcode}:' class='emoji' />`\n )\n }, string)\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.statusnet_html = addEmojis(data.content, 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_html = addEmojis(escape(data.spoiler_text), data.emojis)\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: addEmojis(field.title, data.emojis)\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.statusnet_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 if (message.content) {\n output.content = addEmojis(message.content, message.emojis)\n } else {\n output.content = ''\n }\n if (message.attachment) {\n output.attachments = [parseAttachment(message.attachment)]\n } else {\n output.attachments = []\n }\n output.isNormalized = true\n return output\n}\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 { 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 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 })\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) => parseUser(data))\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 let status = ''\n let statusText = ''\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.error) {\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}) => {\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 return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\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 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\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})\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, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials\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 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 { 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-41bbec1b\\\",\\\"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 _c('StillImage',{staticClass:\"avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name,\"title\":_vm.user.screen_name,\"src\":_vm.imgSrc(_vm.user.profile_image_url_original),\"image-load-error\":_vm.imageLoadError}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { filter, sortBy, includes } from 'lodash'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => ([\n store.state.config.notificationVisibility.likes && 'like',\n store.state.config.notificationVisibility.mentions && 'mention',\n store.state.config.notificationVisibility.repeats && 'repeat',\n store.state.config.notificationVisibility.follows && 'follow',\n store.state.config.notificationVisibility.followRequest && 'follow_request',\n store.state.config.notificationVisibility.moves && 'move',\n store.state.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n].filter(_ => _))\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\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\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(/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","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 DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\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-168f1ca6\\\",\\\"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)}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"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:\"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:\"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:\"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:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.SANDBOX)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }})]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.QUARANTINE)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }})]):_vm._e()]):_vm._e()])]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default btn-block\",class:{ toggled: _vm.toggled },attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n \")])]),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)}},[_c('template',{slot:\"header\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))]),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn btn-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 btn-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])])],2):_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'\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', 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-1883f214\\\",\\\"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:\"account-actions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' }}},[_c('div',{staticClass:\"account-tools-popover\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.relationship.following)?[(_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn btn-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 btn-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 btn-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-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 btn-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 btn-default btn-block dropdown-item\",on:{\"click\":_vm.openChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.message'))+\"\\n \")]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"btn btn-default ellipsis-button\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('i',{staticClass:\"icon-ellipsis trigger-button\"})])])],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 generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\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 },\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 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-037aac13\\\",\\\"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(\" \"),_vm._m(0)],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\"},[(_vm.user.name_html)?_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name},domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.user.name)+\"\\n \")]),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('a',{attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"icon-link-ext usersettings\"})]):_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:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.visibleRole)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n bot\\n \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('i',{staticClass:\"icon icon-lock\"})]):_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('label',{staticClass:\"userHighlightSel select\",attrs:{\"for\":\"theme_tab\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightType),expression:\"userHighlightType\"}],staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.userHighlightType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(\"No highlight\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(\"Solid bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(\"Striped bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(\"Side stripe\")])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_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 btn-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('i',{staticClass:\"icon-bell-alt\"})]):_c('ProgressButton',{staticClass:\"btn btn-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('i',{staticClass:\"icon-bell-ringing-o\"})])]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn btn-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-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 btn-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 && _vm.user.description_html)?_c('p',{staticClass:\"user-card-bio\",domProps:{\"innerHTML\":_vm._s(_vm.user.description_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):(!_vm.hideBio)?_c('p',{staticClass:\"user-card-bio\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.description)+\"\\n \")]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('i',{staticClass:\"button-icon icon-zoom-in\"})])}]\nexport { render, staticRenderFns }","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n // Either 'top' or 'bottom'\n placement: String,\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 // 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 // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n // Additional styles you may want for the popover container\n popoverClass: String\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 slot=\"trigger\".\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\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 const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorEl.offsetHeight - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = (anchorEl.offsetWidth * 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.floor(translateX)}px) translateY(${Math.floor(translateY)}px)`\n }\n },\n showPopover () {\n if (this.hidden) this.$emit('show')\n this.hidden = false\n this.$nextTick(this.updateStyles)\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-10f1984d\\\",\\\"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('div',{ref:\"trigger\",on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass,style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_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 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 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 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 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 { 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 const inputShadows = input.shadows && !input.themeEngineVersion\n ? shadows2to3(input.shadows, input.opacity)\n : input.shadows || {}\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 }) => 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 { mapGetters } from 'vuex'\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 classes () {\n return {\n 'icon-star-empty': !this.status.favorited,\n 'icon-star': this.status.favorited,\n 'animate-spin': this.animated\n }\n },\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-2ced002f\\\",\\\"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 (_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon favorite-button fav-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()]):_c('div',[_c('i',{staticClass:\"button-icon favorite-button\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\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 },\n computed: {\n commonEmojis () {\n return ['👍', '😠', '👀', '😂', '🔥']\n },\n emojis () {\n if (this.filterWord !== '') {\n return this.$store.state.instance.emoji.filter(emoji => emoji.displayText.includes(this.filterWord))\n }\n return this.$store.state.instance.emoji || []\n },\n ...mapGetters(['mergedConfig'])\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-185f65eb\\\",\\\"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:\"react-button-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 }},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"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,staticClass:\"emoji-button\",on:{\"click\":function($event){return _vm.addReaction($event, emoji, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji)+\"\\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\",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)])}}])},[_vm._v(\" \"),_c('i',{staticClass:\"icon-smile button-icon add-reaction-button\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('tool_tip.add_reaction')},slot:\"trigger\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\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 classes () {\n return {\n 'retweeted': this.status.repeated,\n 'retweeted-empty': !this.status.repeated,\n 'animate-spin': this.animated\n }\n },\n ...mapGetters(['mergedConfig'])\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-538410cc\\\",\\\"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 (_vm.loggedIn)?_c('div',[(_vm.visibility !== 'private' && _vm.visibility !== 'direct')?[_c('i',{staticClass:\"button-icon retweet-button icon-retweet rt-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]:[_c('i',{staticClass:\"button-icon icon-lock\",class:_vm.classes,attrs:{\"title\":_vm.$t('timeline.no_retweet_hint')}})]],2):(!_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon icon-retweet\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\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 },\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-2d820a60\\\",\\\"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:\"extra-button-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])]):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])]):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('i',{staticClass:\"icon-bookmark-empty\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])]):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('i',{staticClass:\"icon-bookmark\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('i',{staticClass:\"icon-cancel\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('i',{staticClass:\"icon-share\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])])])])}}])},[_vm._v(\" \"),_c('i',{staticClass:\"icon-ellipsis button-icon\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\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-3b873076\\\",\\\"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\":\"status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter}},[_c('template',{slot:\"trigger\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[(_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('i',{staticClass:\"icon-spin4 animate-spin\"})])],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport Popover from '../popover/popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n Popover\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-09ec7fb6\\\",\\\"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('Popover',{key:reaction.name,attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }}},[_c('div',{staticClass:\"reacted-users\",attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.accountsForEmoji[reaction.name].length)?_c('div',_vm._l((_vm.accountsForEmoji[reaction.name]),function(account){return _c('div',{key:account.id,staticClass:\"reacted-user\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":account,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"reacted-user-names\"},[_c('span',{staticClass:\"reacted-user-name\",domProps:{\"innerHTML\":_vm._s(account.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"reacted-user-screen-name\"},[_vm._v(_vm._s(account.screen_name))])])],1)}),0):_c('div',[_c('i',{staticClass:\"icon-spin4 animate-spin\"})])]),_vm._v(\" \"),_c('button',{staticClass:\"emoji-reaction btn btn-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },attrs:{\"slot\":\"trigger\"},on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}},slot:\"trigger\"},[_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 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 StatusPopover from '../status_popover/status_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.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'\nimport { mapGetters, mapState } from 'vuex'\n\nconst Status = {\n name: 'Status',\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 error: 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 return this.generateUserProfileLink(this.status.in_reply_to_user_id, this.replyToName)\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name },\n retweeterHtml () { return this.statusoid.user.name_html },\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 muted () {\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.deleted || (this.muted && this.hideFilteredStatuses)\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\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 ...mapGetters(['mergedConfig']),\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n EmojiReactions,\n StatusContent\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'icon-lock'\n case 'unlisted':\n return 'icon-lock-open-alt'\n case 'direct':\n return 'icon-mail-alt'\n default:\n return 'icon-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 },\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 },\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!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status.vue\")\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-4476c442\\\",\\\"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-el\",class:[{ 'status-el_focused': _vm.isFocused }, { 'status-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"media status container muted\"},[_c('small',{staticClass:\"username\"},[(_vm.muted && _vm.retweet)?_c('i',{staticClass:\"button-icon icon-retweet\"}):_vm._e(),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\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('a',{staticClass:\"unmute\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})])])]:[(_vm.showPinned)?_c('div',{staticClass:\"status-pin\"},[_c('i',{staticClass:\"fa icon-pin faint\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])]):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"media container retweet-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"media-left\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media-body faint\"},[_c('span',{staticClass:\"user-name\"},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink},domProps:{\"innerHTML\":_vm._s(_vm.retweeterHtml)}}):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('i',{staticClass:\"fa icon-retweet retweeted\",attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media status\",class:[_vm.userClass, { highlighted: _vm.userStyle, 'is-retweet': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"media-left\"},[_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:\"status-body\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"status-usercard\",attrs:{\"user-id\":_vm.status.user.id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"media-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"name-and-account-name\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"user-name\",domProps:{\"innerHTML\":_vm._s(_vm.status.user.name_html)}}):_c('h4',{staticClass:\"user-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.name)+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],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('div',{staticClass:\"button-icon visibility-icon\"},[_c('i',{class:_vm.visibilityIcon(_vm.status.visibility),attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}})]):_vm._e(),_vm._v(\" \"),(!_vm.status.is_local && !_vm.isPreview)?_c('a',{staticClass:\"source_url\",attrs:{\"href\":_vm.status.external_url,\"target\":\"_blank\",\"title\":\"Source\"}},[_c('i',{staticClass:\"button-icon icon-link-ext-alt\"})]):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?[_c('a',{attrs:{\"href\":\"#\",\"title\":\"Expand\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('i',{staticClass:\"button-icon icon-plus-squared\"})])]:_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('div',{staticClass:\"reply-to-and-accountname\"},[(!_vm.isPreview)?_c('StatusPopover',{staticClass:\"reply-to-popover\",staticStyle:{\"min-width\":\"0\"},attrs:{\"status-id\":_vm.status.parent_visible && _vm.status.in_reply_to_status_id}},[_c('a',{staticClass:\"reply-to\",attrs:{\"href\":\"#\",\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('i',{staticClass:\"button-icon icon-reply\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint-link reply-to-text\",class:{ 'strikethrough': !_vm.status.parent_visible }},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.reply_to'))+\"\\n \")])])]):_c('span',{staticClass:\"reply-to\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.replyProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.replyToName)+\"\\n \")]),_vm._v(\" \"),(_vm.replies && _vm.replies.length)?_c('span',{staticClass:\"faint replies-separator\"},[_vm._v(\"\\n -\\n \")]):_vm._e()],1):_vm._e(),_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('a',{staticClass:\"reply-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(reply.id)}}},[_vm._v(_vm._s(reply.name))])])})],2):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.status,\"no-heading\":_vm.noHeading,\"highlight\":_vm.highlight,\"focused\":_vm.isFocused}}),_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('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('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)])]):_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 media-body\"},[_c('div',[(_vm.loggedIn)?_c('i',{staticClass:\"button-icon icon-reply\",class:{'button-icon-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleReplying($event)}}}):_c('i',{staticClass:\"button-icon button-icon-disabled icon-reply\",attrs:{\"title\":_vm.$t('tool_tip.reply')}}),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',[_vm._v(_vm._s(_vm.status.replies_count))]):_vm._e()]),_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)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"container\"},[_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 '../timeago/timeago.vue'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll'],\n components: { Timeago },\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-2ad72fe8\\\",\\\"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('span',{domProps:{\"innerHTML\":_vm._s(option.title_html)}})]),_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('div',[_vm._v(_vm._s(option.title))])])])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn btn-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\"},[_vm._v(\"\\n \"+_vm._s(_vm.totalVotesCount)+\" \"+_vm._s(_vm.$t(\"polls.votes\"))+\" · \\n \")]),_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 Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport fileType from 'src/services/file_type/file_type.service'\nimport { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js'\nimport { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\nimport { mapGetters, mapState } from 'vuex'\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 }\n },\n computed: {\n localCollapseSubjectDefault () {\n return this.mergedConfig.collapseMessageWithSubject\n },\n hideAttachments () {\n return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\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.statusnet_html.split(/<p|<br/).length + this.status.text.length / 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 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 attachmentTypes () {\n return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n },\n maxThumbnails () {\n return this.mergedConfig.maxThumbnails\n },\n postBodyHtml () {\n const html = this.status.statusnet_html\n\n if (this.mergedConfig.greentext) {\n try {\n if (html.includes('&gt;')) {\n // This checks if post has '>' at the beginning, excluding mentions so that @mention >impying works\n return processHtml(html, (string) => {\n if (string.includes('&gt;') &&\n string\n .replace(/<[^>]+?>/gi, '') // remove all tags\n .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n .trim()\n .startsWith('&gt;')) {\n return `<span class='greentext'>${string}</span>`\n } else {\n return string\n }\n })\n } else {\n return html\n }\n } catch (e) {\n console.err('Failed to process status html', e)\n return html\n }\n } else {\n return html\n }\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n Attachment,\n Poll,\n Gallery,\n LinkPreview\n },\n methods: {\n linkClicked (event) {\n const target = event.target.closest('.status-content a')\n if (target) {\n if (target.className.match(/mention/)) {\n const href = target.href\n const attn = this.status.attentions.find(attn => mentionMatchesUrl(attn, href))\n if (attn) {\n event.stopPropagation()\n event.preventDefault()\n const link = this.generateUserProfileLink(attn.id, attn.screen_name)\n this.$router.push(link)\n return\n }\n }\n if (target.rel.match(/(?:^|\\s)tag(?:$|\\s)/) || target.className.match(/hashtag/)) {\n // Extract tag name from dataset or link url\n const tag = target.dataset.tag || extractTagFromUrl(target.href)\n if (tag) {\n const link = this.generateTagLink(tag)\n this.$router.push(link)\n return\n }\n }\n window.open(target.href, '_blank')\n }\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 generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n generateTagLink (tag) {\n return `/tag/${tag}`\n },\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","/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects any type of visual newline and\n * allows it to be processed, useful for greentexting, mostly\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @param {(string) => string} processor - function that will be called on every line\n * @return {string} processed html\n */\nexport const processHtml = (html, processor) => {\n const handledTags = new Set(['p', 'br', 'div'])\n const openCloseTags = new Set(['p', 'div'])\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 // Extracts tag name from tag, i.e. <span a=\"b\"> => span\n const getTagName = (tag) => {\n const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?[^/]*?\\/?>)/gi.exec(tag)\n return result && (result[1] || result[2])\n }\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 += processor(textBuffer)\n } else {\n buffer += textBuffer\n }\n textBuffer = ''\n }\n\n const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n flush()\n buffer += tag\n }\n\n const handleOpen = (tag) => { // handles opening tags\n flush()\n buffer += tag\n level.push(tag)\n }\n\n const handleClose = (tag) => { // handles closing tags\n flush()\n buffer += tag\n if (level[level.length - 1] === tag) {\n level.pop()\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 (handledTags.has(tagName)) {\n if (tagName === 'br') {\n handleBr(tagFull)\n } else if (openCloseTags.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 }\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","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!../../../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-3e5b3fb4\\\",\\\"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:\"status-body\"},[_vm._t(\"header\"),_vm._v(\" \"),(_vm.status.summary_html)?_c('div',{staticClass:\"summary-wrapper\",class:{ 'tall-subject': (_vm.longSubject && !_vm.showingLongSubject) }},[_c('div',{staticClass:\"media-body summary\",domProps:{\"innerHTML\":_vm._s(_vm.status.summary_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.longSubject && _vm.showingLongSubject)?_c('a',{staticClass:\"tall-subject-hider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(_vm._s(_vm.$t(\"status.hide_full_subject\")))]):(_vm.longSubject)?_c('a',{staticClass:\"tall-subject-hider\",class:{ 'tall-subject-hider_focused': _vm.focused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_full_subject\"))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-content-wrapper\",class:{'tall-status': _vm.hideTallStatus}},[(_vm.hideTallStatus)?_c('a',{staticClass:\"tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.focused },attrs:{\"href\":\"#\"},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)?_c('div',{staticClass:\"status-content media-body\",class:{ 'single-line': _vm.singleLine },domProps:{\"innerHTML\":_vm._s(_vm.postBodyHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):_vm._e(),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('a',{staticClass:\"cw-status-hider\",attrs:{\"href\":\"#\"},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('span',{staticClass:\"icon-picture\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('video'))?_c('span',{staticClass:\"icon-video\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('audio'))?_c('span',{staticClass:\"icon-music\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('unknown'))?_c('span',{staticClass:\"icon-doc\"}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('span',{staticClass:\"icon-link\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showingMore && !_vm.fullContent)?_c('a',{staticClass:\"status-unhider\",attrs:{\"href\":\"#\"},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()]),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('div',[_c('poll',{attrs:{\"base-poll\":_vm.status.poll}})],1):_vm._e(),_vm._v(\" \"),(_vm.status.attachments.length !== 0 && (!_vm.hideSubjectStatus || _vm.showingLongSubject))?_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()}})}),_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.hideSubjectStatus && !_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","import UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\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 },\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-4d2bc0bb\\\",\\\"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}},[(_vm.user.name_html)?_c('span',{staticClass:\"basic-user-card-user-name-value\",domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('span',{staticClass:\"basic-user-card-user-name-value\"},[_vm._v(_vm._s(_vm.user.name))])]),_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)+\"\\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\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-6bb295a4\\\",\\\"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('div',{staticClass:\"media-upload\",class:{ disabled: _vm.disabled }},[_c('label',{staticClass:\"label\",attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('i',{staticClass:\"progress-icon icon-spin4 animate-spin\"}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('i',{staticClass:\"new-icon 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()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\n\nexport default {\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 }\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-1f896331\\\",\\\"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),\"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('div',{staticClass:\"icon-container\"},[_c('i',{staticClass:\"icon-cancel\",on:{\"click\":function($event){return _vm.deleteOption(index)}}})]):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('a',{staticClass:\"add-option faint\",on:{\"click\":_vm.addOption}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"poll-type-selector\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.pollType),expression:\"pollType\"}],staticClass:\"select\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.pollType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePollToParent]}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(_vm._s(_vm.$t('polls.single_choice')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(_vm._s(_vm.$t('polls.multiple_choices')))])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]),_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('label',{staticClass:\"expiry-unit select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryUnit),expression:\"expiryUnit\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.expiryUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.expiryAmountChange]}},_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),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])])],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'\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 ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Attachment,\n StatusContent\n },\n mounted () {\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 } = 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: false,\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 }\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 users: this.$store.state.users.users,\n updateUsersList: (query) => this.$store.dispatch('searchUsers', { query })\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.contentType': function () {\n this.autoPreview()\n },\n 'newStatus.spoilerText': function () {\n this.autoPreview()\n }\n },\n methods: {\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting) { 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.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 }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\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 this.$emit('posted', data)\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 } 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.autoPreview()\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 = 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 }\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-6c371c94\\\",\\\"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\",class:[_vm.uploadFileLimitReached ? 'icon-block' : 'icon-upload'],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)}}}),_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('router-link',{attrs:{\"to\":{ name: 'user-settings' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])],1):_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:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_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:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_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:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(_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('i',{staticClass:\"icon-down-open\",style:({ transform: _vm.showPreview ? 'rotate(0deg)' : 'rotate(-90deg)' })})]),_vm._v(\" \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"icon-spin3 animate-spin\"})]):_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},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\",\"disabled\":_vm.posting},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('label',{staticClass:\"select\",attrs:{\"for\":\"post-content-type\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.contentType),expression:\"newStatus.contentType\"}],staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.newStatus, \"contentType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_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),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_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('div',{staticClass:\"emoji-icon\"},[_c('i',{staticClass:\"icon-smile btn btn-default\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}})]),_vm._v(\" \"),(_vm.pollsAvailable)?_c('div',{staticClass:\"poll-icon\",class:{ selected: _vm.pollFormVisible }},[_c('i',{staticClass:\"icon-chart-bar btn btn-default\",attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}})]):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-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('general.submit'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_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('i',{staticClass:\"fa button-icon icon-cancel\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}}),_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 }","<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'\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 return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString()\n : this.time.toLocaleString()\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-ac499830\\\",\\\"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 }","import StillImage from '../still-image/still-image.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'\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 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 'icon-picture'\n if (this.type === 'video') return 'icon-video'\n if (this.type === 'audio') return 'icon-music'\n return 'icon-doc'\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-07d0463d\\\",\\\"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('span',{class:_vm.placeholderIconClass}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n \")]):_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();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('i',{staticClass:\"play-icon icon-play-circled\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('div',{staticClass:\"hider\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_vm._v(\"Hide\")])]):_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',{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}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('i',{staticClass:\"play-icon icon-play-circled\"}):_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\":\"\"}}):_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()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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 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 }\n } else if (type === 'solid') {\n return {\n backgroundColor: tintColor2\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 }\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","<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 { 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}) => {\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 })\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","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 this.imageLoadHandler && this.imageLoadHandler(this.$refs.src)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = this.$refs.src.naturalWidth\n const height = this.$refs.src.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(this.$refs.src, 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-6a0d8118\\\",\\\"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 }","// 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 zh: () => import('./zh.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","<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 }","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 // 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 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: false,\n followRequest: true,\n chatMention: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\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}\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 mergedConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...state,\n ...instanceDefaultProperties\n .map(key => [key, state[key] === undefined\n ? instance[key]\n : state[key]\n ])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\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 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 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","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_again')\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.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-fae84d0a\\\",\\\"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 btn-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 loopVideo: this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onVideoDataLoad (e) {\n const target = e.srcElement || e.target\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n } else if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n } else if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n }\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-45029e08\\\",\\\"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:{\"src\":_vm.attachment.url,\"loop\":_vm.loopVideo,\"controls\":_vm.controls,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"playsinline\":\"\"},on:{\"loadeddata\":_vm.onVideoDataLoad}})}\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-e95e446e\\\",\\\"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:\"remote-button\",attrs:{\"click\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.remote_follow'))+\"\\n \")])])])}\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 }","const 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.nsfw && this.size !== 'hide'\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\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-7c8d99ac\\\",\\\"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\",class:{ 'small-image': _vm.size === 'small' }},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[_vm._v(_vm._s(_vm.card.provider_name))]),_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 }","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 }","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 { debounce } from 'lodash'\n/**\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\nconst debounceUserSearch = debounce((data, input) => {\n data.updateUsersList(input)\n}, 500)\n\nexport default data => input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return suggestEmoji(data.emoji)(input)\n }\n if (firstChar === '@' && data.users) {\n return suggestUsers(data)(input)\n }\n return []\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 = data => input => {\n const noPrefix = input.toLowerCase().substr(1)\n const users = data.users\n\n const newUsers = users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n\n /* taking only 20 results so that sorting is a bit cheaper, we display\n * only 5 anyway. could be inaccurate, but we ideally we should query\n * backend anyway\n */\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, name, profile_image_url_original }) => ({\n displayText: screen_name,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n\n // BE search users to get more comprehensive results\n if (data.updateUsersList) {\n debounceUserSearch(data, noPrefix)\n }\n return newUsers\n /* eslint-enable camelcase */\n}\n","import Vue from 'vue'\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 },\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 activateTab (index) {\n return (e) => {\n e.preventDefault()\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 },\n render (h) {\n const tabs = this.$slots.default\n .map((slot, index) => {\n if (!slot.tag) return\n const classesTab = ['tab']\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.activateTab(index)}\n class={classesTab.join(' ')}>\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.activateTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!slot.data.attrs.icon ? '' : (<i class={'tab-icon 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' : '')}>\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 = splitIntoWords(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 splitIntoWords = (str) => {\n // Split at word boundaries\n const regex = /\\b/\n const triggers = /[@#:]+$/\n\n let split = str.split(regex)\n\n // Add trailing @ and # to the following word.\n const words = reduce(split, (result, word) => {\n if (result.length > 0) {\n let previous = result.pop()\n const matches = previous.match(triggers)\n if (matches) {\n previous = previous.replace(triggers, '')\n word = matches[0] + word\n }\n result.push(previous)\n }\n result.push(word)\n\n return result\n }, [])\n\n return words\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitIntoWords,\n replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\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 return list.filter(x => x.displayText.includes(keyword))\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: 'icon-smile',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'icon-picture',\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-47d21b3b\\\",\\\"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('i',{class:group.icon})])}),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('i',{staticClass:\"icon-star\"})])]):_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\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 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 }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n suggestions () {\n const firstchar = this.textAtCaret.charAt(0)\n if (this.textAtCaret === firstchar) { return [] }\n const matchedSuggestions = this.suggest(this.textAtCaret)\n if (matchedSuggestions.length <= 0) {\n return []\n }\n return take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }, index) => ({\n ...rest,\n // eslint-disable-next-line camelcase\n img: imageUrl || '',\n highlighted: index === this.highlighted\n }))\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 slots = this.$slots.default\n if (!slots || slots.length === 0) return\n const input = slots.find(slot => ['input', 'textarea'].includes(slot.tag))\n if (!input) return\n this.input = input\n this.resize()\n input.elm.addEventListener('blur', this.onBlur)\n input.elm.addEventListener('focus', this.onFocus)\n input.elm.addEventListener('paste', this.onPaste)\n input.elm.addEventListener('keyup', this.onKeyUp)\n input.elm.addEventListener('keydown', this.onKeyDown)\n input.elm.addEventListener('click', this.onClickInput)\n input.elm.addEventListener('transitionend', this.onTransition)\n input.elm.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.elm.removeEventListener('blur', this.onBlur)\n input.elm.removeEventListener('focus', this.onFocus)\n input.elm.removeEventListener('paste', this.onPaste)\n input.elm.removeEventListener('keyup', this.onKeyUp)\n input.elm.removeEventListener('keydown', this.onKeyDown)\n input.elm.removeEventListener('click', this.onClickInput)\n input.elm.removeEventListener('transitionend', this.onTransition)\n input.elm.removeEventListener('input', this.onInput)\n }\n },\n watch: {\n showSuggestions: function (newValue) {\n this.$emit('shown', newValue)\n }\n },\n methods: {\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\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.elm.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\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.elm.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.elm.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.elm.focus()\n // Set selection right after the replacement instead of the very end\n this.input.elm.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.elm\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.elm.blur()\n this.input.elm.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.elm.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.elm\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.elm.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-567c41a2\\\",\\\"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\"}],staticClass:\"emoji-input\",class:{ 'with-picker': !_vm.hideEmojiButton }},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.enableEmojiPicker)?[(!_vm.hideEmojiButton)?_c('div',{staticClass:\"emoji-picker-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('i',{staticClass:\"icon-smile\"})]):_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: suggestion.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 }","const 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-28e8cbf1\\\",\\\"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:\"scope-selector\"},[(_vm.showDirect)?_c('i',{staticClass:\"icon-mail-alt\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct')},on:{\"click\":function($event){return _vm.changeVis('direct')}}}):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('i',{staticClass:\"icon-lock\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private')},on:{\"click\":function($event){return _vm.changeVis('private')}}}):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('i',{staticClass:\"icon-lock-open-alt\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted')},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}}):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('i',{staticClass:\"icon-globe\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public')},on:{\"click\":function($event){return _vm.changeVis('public')}}}):_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!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline.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(\"0084eb3d\", 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}\", \"\"]);\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.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(\"ce58e9e8\", 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-body{-ms-flex:1;flex:1;min-width: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}.media-left{margin-right:.75em}.status-el{border-left-width:0;min-width:0;border-color:#222;border-color:var(--border,#222);border-left:4px red;border-left:4px var(--cRed,red)}.status-el_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)}.timeline .status-el{border-bottom-width:1px;border-bottom-style:solid}.status-el .media-body{-ms-flex:1;flex:1;padding:0}.status-el .status-usercard{margin-bottom:.75em}.status-el .user-name{white-space:nowrap;font-size:14px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0;max-width:85%;font-weight:700}.status-el .user-name img.emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-el .media-heading{padding:0;vertical-align:bottom;-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:.5em}.status-el .media-heading small{font-weight:lighter}.status-el .media-heading .heading-name-row{padding:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;line-height:18px}.status-el .media-heading .heading-name-row a{display:inline-block;word-break:break-all}.status-el .media-heading .heading-name-row .name-and-account-name{display:-ms-flexbox;display:flex;min-width:0}.status-el .media-heading .heading-name-row .user-name{-ms-flex-negative:1;flex-shrink:1;margin-right:.4em;overflow:hidden;text-overflow:ellipsis}.status-el .media-heading .heading-name-row .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-el .media-heading .heading-right{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.status-el .media-heading .timeago{margin-right:.2em}.status-el .media-heading .heading-reply-row{position:relative;-ms-flex-line-pack:baseline;align-content:baseline;font-size:12px;line-height:18px;max-width:100%;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch}.status-el .media-heading .heading-reply-row>.reply-to-and-accountname>a{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.status-el .media-heading .reply-to-and-accountname{display:-ms-flexbox;display:flex;height:18px;margin-right:.5em;max-width:100%}.status-el .media-heading .reply-to-and-accountname .icon-reply{transform:scaleX(-1)}.status-el .media-heading .reply-info{display:-ms-flexbox;display:flex}.status-el .media-heading .reply-to-popover{min-width:0}.status-el .media-heading .reply-to{display:-ms-flexbox;display:flex}.status-el .media-heading .reply-to-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .4em 0 .2em}.status-el .media-heading .strikethrough{text-decoration:line-through}.status-el .media-heading .replies-separator{margin-left:.4em}.status-el .media-heading .replies{line-height:18px;font-size:12px;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-el .media-heading .replies>*{margin-right:.4em}.status-el .media-heading .reply-link{height:17px}.status-el .retweet-info{padding:.4em .75em;margin:0}.status-el .retweet-info .avatar.still-image{border-radius:10px;border-radius:var(--avatarAltRadius,10px);margin-left:28px;width:20px;height:20px}.status-el .retweet-info .media-body{font-size:1em;line-height:22px;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-el .retweet-info .media-body .user-name{font-weight:700;overflow:hidden;text-overflow:ellipsis}.status-el .retweet-info .media-body .user-name img{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-el .retweet-info .media-body i{padding:0 .2em}.status-el .retweet-info .media-body a{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.status-conversation{border-left-style:solid}.status-actions{position:relative;width:100%;display:-ms-flexbox;display:flex;margin-top:.75em}.status-actions>*{max-width:4em;-ms-flex:1;flex:1}.button-icon.icon-reply.button-icon-active,.button-icon.icon-reply:not(.button-icon-disabled):hover{color:#0095ff;color:var(--cBlue,#0095ff)}.button-icon.icon-reply:not(.button-icon-disabled){cursor:pointer}.status:hover .animated.avatar canvas{display:none}.status:hover .animated.avatar img{visibility:visible}.status{display:-ms-flexbox;display:flex;padding:.75em}.status.is-retweet{padding-top:0}.status-conversation:last-child{border-bottom:none}.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}.muted .mute-thread,.muted .mute-words,.muted .username{word-wrap:normal;word-break:normal;white-space:nowrap}.muted .mute-words,.muted .username{text-overflow:ellipsis;overflow:hidden}.muted .username{-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em}.muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.muted .mute-words:before{content:\\\" \\\"}.muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;display:block;margin-left:auto}.reply-body{-ms-flex:1;flex:1}.favs-repeated-users{margin-top:.75em}.favs-repeated-users .stats{width:100%;display:-ms-flexbox;display:flex;line-height:1em}.favs-repeated-users .stats .stat-count{margin-right:.75em}.favs-repeated-users .stats .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:12px;text-transform:uppercase;position:relative}.favs-repeated-users .stats .stat-count .stat-number{font-weight:bolder;font-size:16px;line-height:1em}.favs-repeated-users .stats .avatar-row{-ms-flex:1;flex:1;overflow:hidden;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.favs-repeated-users .stats .avatar-row:before{content:\\\"\\\";position:absolute;height:100%;width:1px;left:0;background-color:var(--faint,hsla(240,1%,73%,.5))}@media (max-width:800px){.status-el .retweet-info .avatar.still-image{margin-left:20px}.status{max-width:100%}.status .avatar.still-image{width:40px;height:40px}.status .avatar.still-image.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!./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, \".fav-active{cursor:pointer;animation-duration:.6s}.fav-active:hover,.favorite-button.icon-star{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, \".reaction-picker-filter{padding:.5em;display:-ms-flexbox;display:flex}.reaction-picker-filter input{-ms-flex:1;flex:1}.reaction-picker-divider{height:1px;width:100%;margin:.5em;background-color:var(--border,#222)}.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}.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}.reaction-picker .emoji-button:hover{transform:scale(1.25)}.add-reaction-button{cursor:pointer}.add-reaction-button:hover{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{z-index:8;position:absolute;min-width:0;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;margin-right:5px;overflow:auto;display:block;padding:.25rem 1rem .25rem 1.5rem;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%;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon{padding-left:.5rem}.dropdown-menu .dropdown-item-icon i{margin-right:.25rem;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 i,.dropdown-menu .dropdown-item:hover i{color:var(--selectedMenuPopoverIcon,#666)}\", \"\"]);\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, \".rt-active{cursor:pointer;animation-duration:.6s}.icon-retweet.retweeted,.rt-active:hover{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, \".icon-ellipsis{cursor:pointer}.extra-button-popover.open .icon-ellipsis,.icon-ellipsis:hover{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;width:100%}.post-status-form .preview-heading .icon-spin3{margin-left:auto}.post-status-form .preview-toggle{display:-ms-flexbox;display:flex;cursor:pointer}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .icon-down-open{transition:transform .1s}.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;-ms-flex:1;flex:1}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .media-upload-icon.disabled i,.post-status-form .poll-icon.disabled i{cursor:not-allowed;color:#666;color:var(--btnDisabledText,#666)}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .poll-icon.disabled i: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}.post-status-form .icon-chart-bar{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 .icon-cancel{display:inline-block;position:static;margin:0;padding-bottom:0;margin-left:10px;margin-left:var(--attachmentRadius,10px);background-color:#182230;background-color:var(--btn,#182230);border-bottom-left-radius:0;border-bottom-right-radius:0}.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 .media-upload-wrapper .attachments{padding:0 .5em}.post-status-form .media-upload-wrapper .attachments .attachment{margin:0;padding:0;position:relative}.post-status-form .media-upload-wrapper .attachments i{position:absolute;margin:10px;padding:5px;background:hsla(0,0%,90%,.6);border-radius:10px;border-radius:var(--attachmentRadius,10px);font-weight:700}.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}.post-status-form .icon-cancel{cursor:pointer;z-index:4}@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 .label{display:inline-block}.media-upload .new-icon{cursor:pointer}.media-upload .progress-icon{display:inline-block;line-height:0}.media-upload .progress-icon:before{margin:0;line-height: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!./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, \".scope-selector i{font-size:1.2em;cursor:pointer}.scope-selector i.selected{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 i,.emoji-picker .emoji-tabs-item.active i{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;cursor:pointer}.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 .icon-container{width:2em;margin-left:-2em;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 .select{border:none;box-shadow:none;background-color:transparent}.poll-form .poll-expiry{display:-ms-flexbox;display:flex}.poll-form .poll-expiry .expiry-amount{width:3em;text-align:right}.poll-form .poll-expiry .expiry-unit{border:none;box-shadow:none;background-color:transparent}\", \"\"]);\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 .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.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;white-space:nowrap;margin:10px;padding:5px;background:hsla(0,0%,90%,.6);font-weight:700;z-index:4;line-height:1;border-radius:5px;border-radius:var(--tooltipRadius,5px)}.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{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;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.still-image:hover canvas{display:none}.still-image img{width:100%;min-height:100%;-o-object-fit:contain;object-fit:contain}.still-image.animated:hover:before,.still-image.animated img{visibility:hidden}.still-image.animated:hover img{visibility:visible}.still-image.animated:before{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}.still-image canvas{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}\", \"\"]);\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, \".status-body{-ms-flex:1;flex:1;min-width:0}.status-body .status-content-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.status-body .tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.status-body .tall-status .status-content{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}.status-body .tall-status-hider{position:absolute;height:70px;margin-top:150px;line-height:110px;z-index:2}.status-body .cw-status-hider,.status-body .status-unhider,.status-body .tall-status-hider{display:inline-block;word-break:break-all;width:100%;text-align:center}.status-body img,.status-body video{max-width:100%;max-height:400px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-body img.emoji,.status-body video.emoji{width:32px;height:32px}.status-body .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}.status-body .summary{font-style:italic;padding-bottom:.5em}.status-body .tall-subject{position:relative}.status-body .tall-subject .summary{max-height:2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.status-body .tall-subject-hider{display:inline-block;word-break:break-all;width:100%;text-align:center;padding-bottom:.5em}.status-body .status-content{font-family:var(--postFont,sans-serif);line-height:1.4em;white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.status-body .status-content blockquote{margin:.2em 0 .2em 2em;font-style:italic}.status-body .status-content pre{overflow:auto}.status-body .status-content code,.status-body .status-content kbd,.status-body .status-content pre,.status-body .status-content samp,.status-body .status-content var{font-family:var(--postCodeFont,monospace)}.status-body .status-content p{margin:0 0 1em}.status-body .status-content p:last-child{margin:0}.status-body .status-content h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.status-body .status-content h2{font-size:1.1em;margin:1em 0}.status-body .status-content h3{font-size:1em;margin:1.2em 0}.status-body .status-content h4{margin:1.1em 0}.status-body .status-content.single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}.timeline :not(.panel-disabled)>.status-el:last-child{border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);border-bottom: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!./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}.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!../../../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!../../../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 .small-image{width:80px}.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)}\", \"\"]);\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 .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 p{margin-bottom:0}.user-card-bio{text-align:center}.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-bio img.emoji{width:32px;height:32px}.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{-ms-flex:1 0 100%;flex:1 0 100%;width:56px;height:56px;box-shadow:0 1px 8px rgba(0,0,0,.75);box-shadow:var(--avatarShadow);-o-object-fit:cover;object-fit:cover}.user-info:hover .animated.avatar canvas{display:none}.user-info:hover .animated.avatar img{visibility:visible}.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 i{color:#fff}.user-info-avatar-link:hover .user-info-avatar-link-overlay{opacity:1}.user-info .usersettings{color:#b9b9ba;color:var(--lightText,#b9b9ba);opacity:.8}.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 img{width:26px;height:26px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.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}.user-info .user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.user-info .bottom-line{display:-ms-flexbox;display:flex;font-weight:light;font-size:15px}.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;text-transform:capitalize;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,.user-info .user-meta .highlighter .userHighlightSel.select{padding-top:0;padding-bottom:0;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel.select i{line-height:22px}.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 .userHighlightSel.select,.user-info .user-meta .highlighter .userHighlightText{height:22px;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}.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.still-image{width:48px;height:48px;box-shadow:var(--avatarStatusShadow);border-radius:4px;border-radius:var(--avatarRadius,4px)}.avatar.still-image img{width:100%;height:100%}.avatar.still-image.better-shadow{box-shadow:var(--avatarStatusShadowInset);filter:var(--avatarStatusShadowFilter)}.avatar.still-image.animated:before{display:none}.avatar.still-image.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,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!./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, \".menu-checkbox{float:right;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)}.menu-checkbox.menu-checkbox-checked:after{content:\\\"\\\\2714\\\"}.moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:-ms-flexbox!important;display:flex!important;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!./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, \".account-actions{margin:0 .8em}.account-actions button.dropdown-item{margin-left:0}.account-actions .trigger-button{color:#b9b9ba;color:var(--lightText,#b9b9ba);opacity:.8;cursor:pointer}.account-actions .trigger-button:hover{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!./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{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 .status-el.status-el{border:none}.status-popover .status-preview-no-content{padding:1em;text-align:center}.status-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!./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}.reacted-users{padding:.5em}.reacted-user{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.reacted-user .reacted-user-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.reacted-user .reacted-user-names img{width:1em;height:1em}.reacted-user .reacted-user-screen-name{font-size:9px}.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, \".timeline .panel-disabled .status-el{border-left:none;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--border,#222);border-radius: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 .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}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .non-mention .status-body{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.notification .non-mention .status-body a{color:var(--faintLink)}.notification .non-mention .status-body .status-content a{color:var(--postFaintLink)}.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-el{-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 .username img{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .icon-retweet.lit{color:#0fa00f;color:var(--cGreen,#0fa00f)}.notification .notification-details .icon-reply.lit,.notification .notification-details .icon-user-plus.lit,.notification .notification-details .icon-user.lit{color:#0095ff;color:var(--cBlue,#0095ff)}.notification .notification-details .icon-star.lit{color:orange;color:var(--cOrange,orange)}.notification .notification-details .icon-arrow-curved.lit{color:#0095ff;color:var(--cBlue,#0095ff)}.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!../../../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.still-image{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .status-body img.emoji{width:1.4em;height:1.4em}.chat-list-item .time-wrapper{line-height:1.4em}.chat-list-item .single-line{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 .still-image.avatar{width:23px;height:23px;margin-right:.5em;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-title .still-image.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 .icon-search{font-size:1.5em;float:right;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}\", \"\"]);\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;margin-right:1.4em}.chat-view .go-back-button i,.chat-view .jump-to-bottom-button{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.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);-ms-flex-pack:center;justify-content: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%;transform:translate(-50%);border-radius:100%;margin-top:-1rem;padding:0}.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{position:static;z-index:9999;top:0;margin-top:0;border-radius:0}.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 .icon-ellipsis{cursor:pointer;border-radius:10px;border-radius:var(--chatMessageRadius,10px)}.chat-message-wrapper .icon-ellipsis:hover,.extra-button-popover.open .chat-message-wrapper .icon-ellipsis{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 .status-content:after{margin-right:5.4em;content:\\\" \\\";display:inline-block}.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 auto;max-width:32em;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 .icon-cancel{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!./chat_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(\"2c0040e1\", 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-chat{position:fixed;right:0;bottom:0;z-index:1000;max-width:25em}.chat-panel .chat-heading{cursor:pointer}.chat-panel .chat-heading .icon-comment-empty{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-panel .chat-window{overflow-y:auto;overflow-x:hidden;max-height:20em}.chat-panel .chat-window-container{height:100%}.chat-panel .chat-message{display:-ms-flexbox;display:flex;padding:.2em .5em}.chat-panel .chat-avatar img{height:24px;width:24px;border-radius:4px;border-radius:var(--avatarRadius,4px);margin-right:.5em;margin-top:.25em}.chat-panel .chat-input{display:-ms-flexbox;display:flex}.chat-panel .chat-input textarea{-ms-flex:1;flex:1;margin:.6em;min-height:3.5em;resize:none}.chat-panel .chat-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, \"\", \"\"]);\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}\", \"\"]);\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-position:0 50%}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{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;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,button i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}button::-moz-focus-inner{border:none}button:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}button: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:active,button:active i{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}button:disabled{cursor:not-allowed;background-color:#182230;background-color:var(--btnDisabled,#182230)}button:disabled,button:disabled i{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}button.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.toggled,button.toggled i{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}button.danger{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba);background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5))}.input,.select,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,.select.unstyled,input.unstyled,textarea.unstyled{border-radius:0;background:none;box-shadow:none;height:unset}.input.select,.select.select,input.select,textarea.select{padding:0}.input:disabled,.input[disabled=disabled],.select:disabled,.select[disabled=disabled],input:disabled,input[disabled=disabled],textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input .icon-down-open,.select .icon-down-open,input .icon-down-open,textarea .icon-down-open{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}.input select,.select select,input select,textarea 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}.input[type=range],.select[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],.select[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,.select[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,.select[type=radio]:disabled,.select[type=radio]:disabled+label,.select[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,.select[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],.select[type=checkbox],input[type=checkbox],textarea[type=checkbox]{display:none}.input[type=checkbox]:checked+label:before,.select[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,.select[type=checkbox]:disabled,.select[type=checkbox]:disabled+label,.select[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,.select[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:\\\"\\\\2714\\\";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}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}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{-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.container,.item{display:-ms-flexbox;display:flex}.item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;-ms-flex-wrap:wrap;flex-wrap:wrap}.item .nav-icon{margin-left:.4em}.item.right{-ms-flex-pack:end;justify-content:flex-end}.auto-size{-ms-flex:1;flex:1}.nav-bar{padding:0;width:100%;-ms-flex-align:center;align-items:center;position:fixed;height:50px;box-sizing:border-box}.nav-bar button,.nav-bar button i[class*=icon-]{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.nav-bar button:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.nav-bar button:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.nav-bar button.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.nav-bar .logo{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex-pack:center;justify-content:center;-ms-flex:0 0 auto;flex:0 0 auto;z-index:-1;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}.nav-bar .logo,.nav-bar .logo .mask{position:absolute;top:0;bottom:0;left:0;right:0}.nav-bar .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)}.nav-bar .logo img{height:100%;-o-object-fit:contain;object-fit:contain;display:block;-ms-flex:0;flex:0}.nav-bar .inner-nav{position:relative;margin:auto;box-sizing:border-box;padding-left:10px;padding-right:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:970px;flex-basis:970px;height:50px}.nav-bar .inner-nav a,.nav-bar .inner-nav a i{color:#d8a070;color:var(--topBarLink,#d8a070)}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 button{-ms-flex-negative:0;flex-shrink:0}.panel-heading .alert,.panel-heading button{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,.panel-heading button i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading button:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading button:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading button.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer{border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}.panel-footer .faint{color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-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)}.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{display:inline-block;border-radius:99px;min-width:22px;max-width:22px;min-height:22px;max-height:22px;font-size:15px;line-height:22px;text-align:center;vertical-align:middle;white-space:nowrap;padding:0}.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)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}@media (min-width:800px){.logo{opacity:1!important}}.item.right{text-align:right}.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}.button-icon{font-size:1.2em}@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}}.select-multiple{display:-ms-flexbox;display:flex}.select-multiple .option-list{margin:0;padding-left:.5em}.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.btn-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;margin-top:-1px;font-size:1.1em;border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;z-index:1;background-color:#182230;background-color:var(--panel,#182230)}.unread-chat-count{font-size:.9em;font-weight:bolder;font-style:normal;position:absolute;right:.6rem;padding:0 .3em;min-width:1.3rem;min-height:1.3rem;max-height:1.3rem;line-height:1.3rem}.chat-layout{overflow:hidden;height:100%}@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, \".nav-panel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.nav-panel ul{list-style:none;margin:0;padding:0}.follow-request-count{margin:-6px 10px;background-color:#121a24;background-color:var(--input,hsla(240,1%,73%,.5))}.nav-panel li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.nav-panel li:first-child a{border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px);border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px)}.nav-panel 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)}.nav-panel li:last-child{border:none}.nav-panel a{display:block;padding:.8em .85em}.nav-panel a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.nav-panel a.router-link-active,.nav-panel 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)}.nav-panel a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.nav-panel a.router-link-active:hover{text-decoration:underline}.nav-panel .button-icon:before{width:1.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!./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, \".search-bar-container{max-width:100%;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}.search-bar-container .search-bar-input,.search-bar-container .search-button{height:29px}.search-bar-container .search-bar-input{max-width:calc(100% - 30px - 30px - 20px)}.search-bar-container .search-button{margin-left:.5em;margin-right:.5em}.search-bar-container .icon-cancel{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!./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))}.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:100vh}}.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 i{font-size:3em;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}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image}.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 .button-icon:before{width:1.1em}.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);margin:.2em 0}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a{display:block;padding:.5em .85em}.side-drawer li a: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 i{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button{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, \".mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.mobile-nav-button{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;width:50px;position:relative;cursor:pointer}.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)}.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}.mobile-notifications-drawer.closed{transform:translateX(100%)}.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)}.mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.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)}.mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.mobile-notifications .notifications .panel:after{border-radius:0}.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!../../../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-el{-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 i{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning i{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info i{color:var(--alertPopupNeutralText,#b9b9ba)}\", \"\"]);\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 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}\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 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 },\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 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 }\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 disableChat: 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.png',\n logoMargin: '.2em',\n logoMask: true,\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\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 chatAvailable: 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 'chatAvailable':\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.displayText - b.displayText)\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 : 0)\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 { isStatusNotification, prepareNotificationObject } from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\nimport { muteWordHits } from '../services/status_parser/status_parser.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 error: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n error: false,\n errorData: null,\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 visibleNotificationTypes = (rootState) => {\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.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reactions'\n ].filter(_ => _)\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 addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters }) => {\n each(notifications, (notification) => {\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 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 state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n if ('Notification' in window && window.Notification.permission === 'granted') {\n const notifObj = prepareNotificationObject(notification, rootGetters.i18n)\n\n const reasonsToMuteNotif = (\n notification.seen ||\n state.notifications.desktopNotificationSilence ||\n !visibleNotificationTypes.includes(notification.type) ||\n (\n notification.type === 'mention' && status && (\n status.muted ||\n muteWordHits(status, rootGetters.mergedConfig.muteWords).length === 0\n )\n )\n )\n if (!reasonsToMuteNotif) {\n let desktopNotification = new window.Notification(notifObj.title, notifObj)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n }\n }\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 setError (state, { value }) {\n state.error = value\n },\n setErrorData (state, { value }) {\n state.errorData = value\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsError (state, { value }) {\n state.notifications.error = 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}\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 ({ rootState, commit, dispatch, rootGetters }, { notifications, older }) {\n commit('addNewNotifications', { visibleNotificationTypes: visibleNotificationTypes(rootState), dispatch, notifications, older, rootGetters })\n },\n setError ({ rootState, commit }, { value }) {\n commit('setError', { value })\n },\n setErrorData ({ rootState, commit }, { value }) {\n commit('setErrorData', { value })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsError ({ rootState, commit }, { value }) {\n commit('setNotificationsError', { 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 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 },\n mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('setError', { value: false })\n store.dispatch('setErrorData', { value: null })\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}) => {\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 args['since'] = timelineData.maxId\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn) args['replyVisibility'] = replyVisibility\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.error) {\n store.dispatch('setErrorData', { value: response })\n return\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 }, () => store.dispatch('setError', { value: true }))\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 = () => fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return setInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('setNotificationsError', { value: false })\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false }) => {\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\n args['withMuted'] = !hideMutedPosts\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 (timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\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) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then(({ data: notifications }) => {\n update({ store, notifications, older })\n return notifications\n }, () => store.dispatch('setNotificationsError', { value: true }))\n .catch(() => store.dispatch('setNotificationsError', { value: true }))\n}\n\nconst startFetching = ({ credentials, store }) => {\n fetchAndUpdate({ credentials, store })\n const boundFetchAndUpdate = () => fetchAndUpdate({ 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 return setInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.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 fetchAndUpdate({ credentials, store })\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n return setInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcherService 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 timelineFetcherService.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, 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 const index = user.pinnedStatusIds.indexOf(status.id)\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 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 })\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 chat 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('enableMastoSockets').catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n startPolling()\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 backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { Socket } from 'phoenix'\n\nconst api = {\n state: {\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 window.clearInterval(fetcher)\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 },\n actions: {\n // Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n enableMastoSockets (store) {\n const { state, dispatch } = store\n if (state.mastoUserSocket) return\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch } = store\n if (!state.mastoUserSocket) return\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 === 'pleroma:chat_update') {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\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 } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('restartMastoUserSocket')\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n restartMastoUserSocket ({ dispatch }) {\n // This basically starts MastoAPI user socket and stops conventional\n // fetchers when connection reestablished\n return dispatch('startMastoUserSocket').then(() => {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\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\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\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.chatAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeChat', 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 chat = {\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 initializeChat (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 chat\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 modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses }) {\n state.userId = userId\n state.statuses = statuses\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, userId) {\n const statuses = filter(rootState.statuses.allStatuses, status => status.user.id === userId)\n commit('openUserReportingModal', { userId, statuses })\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 messages: [],\n newMessageCount: 0,\n lastSeenTimestamp: 0,\n chatId: chatId,\n minId: undefined,\n lastMessage: undefined\n }\n}\n\nconst clear = (storage) => {\n storage.idIndex = {}\n storage.messages.splice(0, storage.messages.length)\n storage.newMessageCount = 0\n storage.lastSeenTimestamp = 0\n storage.minId = undefined\n storage.lastMessage = 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.lastMessage && (storage.lastMessage.id === messageId)) {\n storage.lastMessage = _.maxBy(storage.messages, 'id')\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst add = (storage, { messages: newMessages }) => {\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 (!storage.minId || message.id < storage.minId) {\n storage.minId = message.id\n }\n\n if (!storage.lastMessage || message.id > storage.lastMessage.id) {\n storage.lastMessage = message\n }\n\n if (!storage.idIndex[message.id]) {\n if (storage.lastSeenTimestamp < message.created_at) {\n storage.newMessageCount++\n }\n storage.messages.push(message)\n storage.idIndex[message.id] = message\n }\n }\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenTimestamp = new Date()\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 = _.sortBy(storage.messages, ['id', 'desc'])\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 resetNewMessageCount,\n clear\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'\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}\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 = () => {\n dispatch('fetchChats', { latest: true })\n }\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => setInterval(() => { 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 ({ rootState, commit, dispatch, rootGetters }, { chats }) {\n commit('addNewChats', { dispatch, chats, rootGetters })\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 dispatch('resetChatNewMessageCount')\n commit('readChat', { id })\n rootState.api.backendInteractor.readChat({ id, lastReadId })\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 },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n clearInterval(prevFetcher)\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n clearInterval(prevFetcher)\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, { _dispatch, chats, _rootGetters }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\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, { commit, chatId, messages }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage) })\n commit('refreshLastMessage', { chatId })\n }\n },\n refreshLastMessage (state, { chatId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n const chat = getChatById(state, chatId)\n if (chat) {\n chat.lastMessage = chatMessageService.lastMessage\n if (chatMessageService.lastMessage) {\n chat.updated_at = chatMessageService.lastMessage.created_at\n }\n }\n }\n },\n deleteChatMessage (state, { commit, chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n commit('refreshLastMessage', { chatId })\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 }) {\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\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 ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\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 },\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 },\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-ea37054e\\\",\\\"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 _c('div',{staticClass:\"timeline panel-default\",class:[_vm.isExpanded ? 'panel' : 'panel-disabled']},[(_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('span',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(_vm._s(_vm.$t('timeline.collapse')))])]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,staticClass:\"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)}\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 { throttle, keyBy } from 'lodash'\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 }\n },\n computed: {\n timelineError () {\n return this.$store.state.statuses.error\n },\n errorData () {\n return this.$store.state.statuses.errorData\n },\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n if (this.timelineError || this.errorData) return false\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 return {\n root: ['timeline'].concat(!this.embedded ? ['panel', 'panel-default'] : []),\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 },\n components: {\n Status,\n Conversation\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.scrollLoad)\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 },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\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 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.$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 store.commit('setLoading', { timeline: this.timelineName, value: false })\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n })\n }, 1000, this),\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 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!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline.vue\")\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-03ce71ea\\\",\\\"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},[_c('div',{class:_vm.classes.header},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")]),_vm._v(\" \"),(_vm.timelineError)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.error_fetching'))+\"\\n \")]):(_vm.errorData)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.errorData.statusText)+\"\\n \")]):(_vm.showLoadButton)?_c('button',{staticClass:\"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(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{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}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_statuses'))+\"\\n \")]):(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_more_statuses'))+\"\\n \")]):(!_vm.timeline.loading && !_vm.errorData)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(_vm._s(_vm.$t('timeline.load_older')))])]):(_vm.errorData)?_c('a',{attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(_vm._s(_vm.errorData.error))])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})])])])}\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 { 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'\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 },\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","/* 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-385052d3\\\",\\\"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__ = 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 (_vm.notification.type === 'mention')?_c('status',{attrs:{\"compact\":true,\"statusoid\":_vm.notification.status}}):_c('div',[(_vm.needMute && !_vm.unmuted)?_c('div',{staticClass:\"container muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.notification.from_profile.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('a',{staticClass:\"unmute\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})])]):_c('div',{staticClass:\"non-mention\",class:[_vm.userClass, { highlighted: _vm.userStyle }],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',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name},domProps:{\"innerHTML\":_vm._s(_vm.notification.from_profile.name_html)}}):_c('span',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name}},[_vm._v(_vm._s(_vm.notification.from_profile.name))]),_vm._v(\" \"),(_vm.notification.type === 'like')?_c('span',[_c('i',{staticClass:\"fa icon-star lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.favorited_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'repeat')?_c('span',[_c('i',{staticClass:\"fa icon-retweet lit\",attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.repeated_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow')?_c('span',[_c('i',{staticClass:\"fa icon-user-plus lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.followed_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('span',[_c('i',{staticClass:\"fa icon-user lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.follow_request')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'move')?_c('span',[_c('i',{staticClass:\"fa icon-arrow-curved lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.migrated_to')))])]):_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('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})]):_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)+\"\\n \")]),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('i',{staticClass:\"icon-ok button-icon follow-request-accept\",attrs:{\"title\":_vm.$t('tool_tip.accept_follow_request')},on:{\"click\":function($event){return _vm.approveUser()}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon-cancel button-icon follow-request-reject\",attrs:{\"title\":_vm.$t('tool_tip.reject_follow_request')},on:{\"click\":function($event){return _vm.denyUser()}}})]):_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)+\"\\n \")])],1):[_c('status-content',{staticClass:\"faint\",attrs:{\"status\":_vm.notification.action}})]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.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'\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\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 created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n notificationsFetcher.fetchAndUpdate({ store, credentials })\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 components: {\n Notification\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\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-4be57e6f\\\",\\\"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.error)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.error_fetching'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"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._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\"},[(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.no_more_notifications'))+\"\\n \")]):(!_vm.loading)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderNotifications()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_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 panel-footer\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})])])])])}\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 : ''\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-474d9752\\\",\\\"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 StatusContent 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 StatusContent\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 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 statusnet_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-0e928dad\\\",\\\"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:\"chat-preview\"},[_c('StatusContent',{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)]),_vm._v(\" \"),_c('div',{staticClass:\"time-wrapper\"},[_c('Timeago',{attrs:{\"time\":_vm.chat.updated_at,\"auto-update\":60}})],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'\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-cea4bed6\\\",\\\"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('i',{staticClass:\"button-icon icon-left-open\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"input-wrap\"},[_vm._m(0),_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 = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"input-search\"},[_c('i',{staticClass:\"button-icon icon-search\"})])}]\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-76b8e1a4\\\",\\\"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',{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>\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('en', { 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-3d70943c\\\",\\\"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'\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 statusnet_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-dd13f2ee\\\",\\\"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 },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}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":_vm.deleteMessage}},[_c('i',{staticClass:\"icon-cancel\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"chats.delete\"))+\"\\n \")])])]),_vm._v(\" \"),_c('button',{attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('chats.more')},slot:\"trigger\"},[_c('i',{staticClass:\"icon-ellipsis\"})])])],1),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.messageForStatusContent,\"full-content\":true}},[_c('span',{staticClass:\"created-at\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.createdAt)+\"\\n \")])])],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","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 { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight } from './chat_layout_utils.js'\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150\nconst SAFE_RESIZE_TIME_OFFSET = 100\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 }\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 })\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({ forceRead: !document.hidden })\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 || this.newMessageCount > 0) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.lastMessage)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.lastMessage.id\n this.$store.dispatch('readChat', { id: this.currentChat.id, lastReadId })\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 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 if (this.newMessageCount > 0) {\n this.readChat()\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 100),\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.lastMessage && chatMessageService.lastMessage.id\n\n 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 })\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: () => setInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n sendMessage ({ status, media }) {\n const params = {\n id: this.currentChat.id,\n content: status\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n return this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', { chatId: this.currentChat.id, messages: [data] }).then(() => {\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\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n return {\n error: this.$t('chats.error_sending_message')\n }\n })\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-3203ab4e\\\",\\\"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('i',{staticClass:\"button-icon icon-left-open\"})]),_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('i',{staticClass:\"icon-down-open\"},[(_vm.newMessageCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count unread-message-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.newMessageCount)+\"\\n \")]):_vm._e()])]),_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,\"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\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 }\n },\n computed: {\n entries () {\n return select(this.$props, this.$store) || []\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 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 }\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 && <a onClick={this.fetchEntries} class=\"alert error\">{this.$t('general.generic_error')}</a>}\n {!this.error && this.loading && <i class=\"icon-spin3 animate-spin\"/>}\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 List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\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 }\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-64293be2\\\",\\\"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},domProps:{\"innerHTML\":_vm._s(field.name)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),_c('dd',{staticClass:\"user-profile-field-value\",attrs:{\"title\":_vm.user.fields_text[index].value},domProps:{\"innerHTML\":_vm._s(field.value)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}})])}),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('i',{staticClass:\"icon-spin3 animate-spin\"})])])])}\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'\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-3962ec42\\\",\\\"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 search-button\",on:{\"click\":function($event){return _vm.newQuery(_vm.searchTerm)}}},[_c('i',{staticClass:\"icon-search\"})])]),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"text-center loading-icon\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})]):(_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 },\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 }\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.$t('registration.bio_placeholder').replace(/\\s*\\n\\s*/g, ' \\n')\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 })\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 }\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-456dfbf7\\\",\\\"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.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 btn-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\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'\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 === 404 || status === 400) {\n this.error = this.$t('password_reset.not_found')\n this.$nextTick(() => {\n this.$refs.email.focus()\n })\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-750c6ec4\\\",\\\"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 btn-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\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:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):_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-1edf2e22\\\",\\\"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 btn-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-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-9c427644\\\",\\\"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\"},[_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'\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-38aaa196\\\",\\\"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 btn-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('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_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'\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-129661d4\\\",\\\"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('a',{attrs:{\"href\":\"#\"},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('a',{attrs:{\"href\":\"#\"},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 btn-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('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\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-b4428228\\\",\\\"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('a',{attrs:{\"href\":\"#\"},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('a',{attrs:{\"href\":\"#\"},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 btn-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('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_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'\n\nconst chatPanel = {\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.chat.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.chat.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}\n\nexport default chatPanel\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_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_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-456ab22c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_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:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading timeline-heading\",class:{ 'chat-heading': _vm.floating },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chat.title')))]),_vm._v(\" \"),(_vm.floating)?_c('i',{staticClass:\"icon-cancel\"}):_vm._e()])]),_vm._v(\" \"),_c('div',{directives:[{name:\"chat-scroll\",rawName:\"v-chat-scroll\"}],staticClass:\"chat-window\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"chat-message\"},[_c('span',{staticClass:\"chat-avatar\"},[_c('img',{attrs:{\"src\":message.author.avatar}})]),_vm._v(\" \"),_c('div',{staticClass:\"chat-content\"},[_c('router-link',{staticClass:\"chat-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:\"chat-text\"},[_vm._v(\"\\n \"+_vm._s(message.text)+\"\\n \")])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"chat-input\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentMessage),expression:\"currentMessage\"}],staticClass:\"chat-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:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading stub timeline-heading chat-heading\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('i',{staticClass:\"icon-comment-empty\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('chat.title'))+\"\\n \")])])])])}\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 }","const FeaturesPanel = {\n computed: {\n chat: function () { return this.$store.state.instance.chatAvailable },\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 }\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-3274ef49\\\",\\\"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.chat)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.chat'))+\"\\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))])])])])])}\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 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 staffAccounts () {\n return map(this.$store.state.instance.staffAccounts, nickname => this.$store.getters.findUser(nickname)).filter(_ => _)\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-0a6a2c3a\\\",\\\"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.staffAccounts),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})}),1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\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 => get(state, 'instance.federationPolicy.quarantined_instances', []),\n acceptInstances: state => get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n rejectInstances: state => get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n ftlRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n mediaNsfwInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n mediaRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\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-3de10442\\\",\\\"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('ul',_vm._l((_vm.acceptInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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('ul',_vm._l((_vm.rejectInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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('ul',_vm._l((_vm.quarantineInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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('ul',_vm._l((_vm.ftlRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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('ul',_vm._l((_vm.mediaNsfwInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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('ul',_vm._l((_vm.mediaRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_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 ChatPanel from 'components/chat_panel/chat_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: 'chat-panel', path: '/chat-panel', component: ChatPanel, 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 { mapState, mapGetters } from 'vuex'\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n chat: state => state.chat.channel,\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-4058762a\\\",\\\"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:\"nav-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friends' }}},[_c('i',{staticClass:\"button-icon icon-home-2\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timeline\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-mail-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'bookmarks'}}},[_c('i',{staticClass:\"button-icon icon-bookmark\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[(_vm.unreadChatCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-chat\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friend-requests' }}},[_c('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge follow-request-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-timeline' }}},[_c('i',{staticClass:\"button-icon icon-users\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('i',{staticClass:\"button-icon icon-globe\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'about' }}},[_c('i',{staticClass:\"button-icon icon-info-circled\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")])],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false,\n loading: 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-723d6cec\\\",\\\"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',[_c('div',{staticClass:\"search-bar-container\"},[(_vm.loading)?_c('i',{staticClass:\"icon-spin4 finder-icon animate-spin-slow\"}):_vm._e(),_vm._v(\" \"),(_vm.hidden)?_c('a',{attrs:{\"href\":\"#\",\"title\":_vm.$t('nav.search')}},[_c('i',{staticClass:\"button-icon icon-search\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}})]):[_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:\"btn search-button\",on:{\"click\":function($event){return _vm.find(_vm.searchTerm)}}},[_c('i',{staticClass:\"icon-search\"})]),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}})]],2)])}\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 }","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 */\nvar __vue_script__ = null\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-30e5dfc0\\\",\\\"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","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-147f6d2c\\\",\\\"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","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'\n\nconst SettingsModal = {\n components: {\n Modal,\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 },\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","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('i',{staticClass:\"icon-spin4 animate-spin\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<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\"\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\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.retry'))+\"\\n \")])])])}\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!./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-720c870a\\\",\\\"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\",on:{\"click\":_vm.peekModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.peek'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.closeModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.close'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.modalOpenedOnce)?_c('SettingsModalContent'):_vm._e()],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'\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-3fecfdc9\\\",\\\"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('i',{staticClass:\"icon-left-open arrow-icon\"})]):_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('i',{staticClass:\"icon-right-open arrow-icon\"})]):_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'\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 chat () { return this.$store.state.chat.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 ...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-93f985a2\\\",\\\"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('i',{staticClass:\"button-icon icon-login\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-mail-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticStyle:{\"position\":\"relative\"},attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-chat\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \"),(_vm.unreadChatCount)?_c('span',{staticClass:\"badge badge-notification unread-chat-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])],1):_vm._e()]),_vm._v(\" \"),_c('ul',[(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'friends' }}},[_c('i',{staticClass:\"button-icon icon-home-2\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timeline\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'bookmarks'}}},[_c('i',{staticClass:\"button-icon icon-bookmark\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/friend-requests\"}},[_c('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge follow-request-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/main/public\"}},[_c('i',{staticClass:\"button-icon icon-users\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/main/all\"}},[_c('i',{staticClass:\"button-icon icon-globe\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")])],1):_vm._e()]),_vm._v(\" \"),_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'search' }}},[_c('i',{staticClass:\"button-icon icon-search\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.search\"))+\"\\n \")])],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('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.who_to_follow\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.openSettingsModal}},[_c('i',{staticClass:\"button-icon icon-cog\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n \")])]),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('i',{staticClass:\"button-icon icon-info-circled\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")])],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('i',{staticClass:\"button-icon icon-gauge\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.administration\"))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.doLogout}},[_c('i',{staticClass:\"button-icon icon-logout\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.logout\"))+\"\\n \")])]):_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'\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 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-336b066e\\\",\\\"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:\"new-status-button\",class:{ 'hidden': _vm.isHidden },on:{\"click\":_vm.openPostForm}},[_c('i',{staticClass:\"icon-edit\"})])]):_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'\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-42774b36\\\",\\\"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',[_c('nav',{staticClass:\"nav-bar container\",class:{ 'mobile-hidden': _vm.isChat },attrs:{\"id\":\"nav\"}},[_c('div',{staticClass:\"mobile-inner-nav\",on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"item\"},[_c('a',{staticClass:\"mobile-nav-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleMobileSidebar()}}},[_c('i',{staticClass:\"button-icon icon-menu\"}),_vm._v(\" \"),(_vm.unreadChatCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()]),_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('a',{staticClass:\"mobile-nav-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openMobileNotifications()}}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"),(_vm.unseenNotificationsCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()]):_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('i',{staticClass:\"button-icon icon-cancel\"})])]),_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 }","\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 },\n watch: {\n userId: 'resetState'\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = []\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-21174d5d\\\",\\\"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]))+\"\\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 btn-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 }","\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-3e1bec88\\\",\\\"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('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}})])}),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 SearchBar from './components/search_bar/search_bar.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 ChatPanel from './components/chat_panel/chat_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 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'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications,\n SearchBar,\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ChatPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n SettingsModal,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline',\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 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 background () {\n return this.currentUser.background_image || this.$store.state.instance.background\n },\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 bgStyle () {\n return {\n 'background-image': `url(${this.background})`\n }\n },\n bgAppStyle () {\n return {\n '--body-background-image': `url(${this.background})`\n }\n },\n sitename () { return this.$store.state.instance.name },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n hideSitename () { return this.$store.state.instance.hideSitename },\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 isMobileLayout () { return this.$store.state.interface.mobileLayout },\n privateMode () { return this.$store.state.instance.private },\n sidebarAlign () {\n return {\n 'order': this.$store.state.instance.sidebarRight ? 99 : 0\n }\n }\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 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-87f8a228\\\",\\\"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.bgAppStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",style:(_vm.bgStyle),attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('nav',{staticClass:\"nav-bar container\",attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"inner-nav\"},[_c('div',{staticClass:\"logo\",style:(_vm.logoBgStyle)},[_c('div',{staticClass:\"mask\",style:(_vm.logoMaskStyle)}),_vm._v(\" \"),_c('img',{style:(_vm.logoStyle),attrs:{\"src\":_vm.logo}})]),_vm._v(\" \"),_c('div',{staticClass:\"item\"},[(!_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 || !_vm.privateMode)?_c('search-bar',{staticClass:\"nav-icon mobile-hidden\",on:{\"toggled\":_vm.onSearchBarToggled},nativeOn:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.openSettingsModal($event)}}},[_c('i',{staticClass:\"button-icon icon-cog nav-icon\",attrs:{\"title\":_vm.$t('nav.preferences')}})]),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"button-icon icon-gauge nav-icon\",attrs:{\"title\":_vm.$t('nav.administration')}})]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.logout($event)}}},[_c('i',{staticClass:\"button-icon icon-logout nav-icon\",attrs:{\"title\":_vm.$t('login.logout')}})]):_vm._e()],1)])]),_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.chat)?_c('chat-panel',{staticClass:\"floating-chat mobile-hidden\",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'\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\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 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: 'chatAvailable', 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 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 chatModule from './modules/chat.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 VueChatScroll from 'vue-chat-scroll'\nimport VueClickOutside from 'v-click-outside'\nimport PortalVue from 'portal-vue'\nimport VBodyScrollLock from './directives/body_scroll_lock'\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(VueChatScroll)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\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 chat: chatModule,\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":""} \ No newline at end of file