summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.2e518bb8cf82de7a72b0.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'priv/static/static/js/app.2e518bb8cf82de7a72b0.js.map')
-rw-r--r--priv/static/static/js/app.2e518bb8cf82de7a72b0.js.map1
1 files changed, 0 insertions, 1 deletions
diff --git a/priv/static/static/js/app.2e518bb8cf82de7a72b0.js.map b/priv/static/static/js/app.2e518bb8cf82de7a72b0.js.map
deleted file mode 100644
index b84a6e676..000000000
--- a/priv/static/static/js/app.2e518bb8cf82de7a72b0.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?4ccd","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?df79","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?ed42","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?8ceb","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?af33","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/components/reply_button/reply_button.js","webpack:///./src/components/reply_button/reply_button.vue","webpack:///./src/components/reply_button/reply_button.vue?e532","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.vue?7b40","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.vue?3913","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?441e","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?0e76","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?20bd","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.vue?9410","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?ef51","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?75b3","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?40f8","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?0aa3","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?1f5d","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/media_upload/media_upload.vue?aa26","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.vue?4c09","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?dfc9","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?313d","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?c261","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?d5f5","webpack:///./src/i18n/messages.js","webpack:///./src/services/file_size_format/file_size_format.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/services/locale/locale.service.js","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/follow_button/follow_button.vue?72f1","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?063a","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7538","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.vue?9a59","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?4b46","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.vue?e3d4","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.vue?b437","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?84e5","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?5d60","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.vue?f674","webpack:///./src/components/timeline/timeline.vue?d6bb","webpack:///./src/components/status/status.scss?412d","webpack:///./src/components/status/status.scss","webpack:///./src/components/reply_button/reply_button.vue?912e","webpack:///./src/components/reply_button/reply_button.vue?e387","webpack:///./src/components/favorite_button/favorite_button.vue?0184","webpack:///./src/components/favorite_button/favorite_button.vue?9b9b","webpack:///./src/components/react_button/react_button.vue?f6fc","webpack:///./src/components/react_button/react_button.vue?5317","webpack:///./src/components/popover/popover.vue?1bf1","webpack:///./src/components/popover/popover.vue?333e","webpack:///./src/components/retweet_button/retweet_button.vue?8eee","webpack:///./src/components/retweet_button/retweet_button.vue?ecd9","webpack:///./src/components/extra_buttons/extra_buttons.vue?2134","webpack:///./src/components/extra_buttons/extra_buttons.vue?bef5","webpack:///./src/components/post_status_form/post_status_form.vue?fd6e","webpack:///./src/components/post_status_form/post_status_form.vue?5887","webpack:///./src/components/media_upload/media_upload.vue?d613","webpack:///./src/components/media_upload/media_upload.vue?1e11","webpack:///./src/components/scope_selector/scope_selector.vue?baf6","webpack:///./src/components/scope_selector/scope_selector.vue?341e","webpack:///./src/components/emoji_input/emoji_input.vue?88c6","webpack:///./src/components/emoji_input/emoji_input.vue?c0d0","webpack:///./src/components/emoji_picker/emoji_picker.scss?a54d","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?3599","webpack:///./src/components/checkbox/checkbox.vue?bf55","webpack:///./src/components/poll/poll_form.vue?43b8","webpack:///./src/components/poll/poll_form.vue?f333","webpack:///./src/components/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/user_list_popover/user_list_popover.vue?2010","webpack:///./src/components/user_list_popover/user_list_popover.vue?2f9d","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?bab1","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?6021","webpack:///./src/components/conversation/conversation.vue?e1e5","webpack:///./src/components/conversation/conversation.vue?e01a","webpack:///./src/components/timeline_menu/timeline_menu.vue?c2cd","webpack:///./src/components/timeline_menu/timeline_menu.vue?9147","webpack:///./src/components/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/notification/notification.scss?2458","webpack:///./src/components/notification/notification.scss","webpack:///./src/components/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/who_to_follow_panel/who_to_follow_panel.vue?2f6b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?1274","webpack:///./src/components/settings_modal/settings_modal.scss?e42a","webpack:///./src/components/settings_modal/settings_modal.scss","webpack:///./src/components/modal/modal.vue?a37f","webpack:///./src/components/modal/modal.vue?328d","webpack:///./src/components/panel_loading/panel_loading.vue?b42a","webpack:///./src/components/panel_loading/panel_loading.vue?0d54","webpack:///./src/components/async_component_error/async_component_error.vue?82c7","webpack:///./src/components/async_component_error/async_component_error.vue?e57d","webpack:///./src/components/media_modal/media_modal.vue?2930","webpack:///./src/components/media_modal/media_modal.vue?1d79","webpack:///./src/components/side_drawer/side_drawer.vue?472d","webpack:///./src/components/side_drawer/side_drawer.vue?fcf9","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?1868","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7cf2","webpack:///./src/components/mobile_nav/mobile_nav.vue?46cb","webpack:///./src/components/mobile_nav/mobile_nav.vue?9a0e","webpack:///./src/components/desktop_nav/desktop_nav.scss?1471","webpack:///./src/components/desktop_nav/desktop_nav.scss","webpack:///./src/components/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?7889","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?1af4","webpack:///./src/components/post_status_modal/post_status_modal.vue?892e","webpack:///./src/components/post_status_modal/post_status_modal.vue?b34c","webpack:///./src/components/global_notice_list/global_notice_list.vue?353b","webpack:///./src/components/global_notice_list/global_notice_list.vue?3d13","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/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?3eac","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.vue?395d","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?628e","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/services/favicon_service/favicon_service.js","webpack:///./src/components/notification/notification.vue?7fc3","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?ed64","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.vue?db62","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/dm_timeline/dm_timeline.vue?4177","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_title/chat_title.vue?144f","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue?29dd","webpack:///./src/components/chat_new/chat_new.js","webpack:///./src/components/chat_new/chat_new.vue","webpack:///./src/components/chat_new/chat_new.vue?3553","webpack:///./src/components/chat_list/chat_list.js","webpack:///./src/components/chat_list/chat_list.vue","webpack:///./src/components/chat_list/chat_list.vue?e1d2","webpack:///src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?3398","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message/chat_message.vue?4801","webpack:///./src/components/chat/chat_layout_utils.js","webpack:///./src/components/chat/chat.js","webpack:///./src/components/chat/chat.vue","webpack:///./src/components/chat/chat.vue?4822","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.vue?ac60","webpack:///./src/hocs/with_load_more/with_load_more.js","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/user_profile/user_profile.vue?458a","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?6927","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?3b01","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?3c80","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?5d68","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?ba79","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/oauth_callback/oauth_callback.vue?99e7","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.vue?888c","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/components/mfa_form/recovery_form.vue?d5df","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?6c57","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/chat_panel/chat_panel.js","webpack:///./src/components/chat_panel/chat_panel.vue","webpack:///./src/components/chat_panel/chat_panel.vue?79a2","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?bf77","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?25e4","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.vue?4f64","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/about/about.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?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?cc46","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?3d0c","webpack:///src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?8f96","webpack:///src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/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?ad58","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?f1f8","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?e889","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/media_modal/media_modal.vue?5170","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?3ba5","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?58b1","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue?ed4a","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/search_bar/search_bar.vue?b0f6","webpack:///./src/components/desktop_nav/desktop_nav.js","webpack:///./src/components/desktop_nav/desktop_nav.vue","webpack:///./src/components/desktop_nav/desktop_nav.vue?7ebd","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?8ebe","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?3e34","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?b00c","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","31","32","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","favicon","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","follow_request_count","tags","deactivated","is_active","notification_settings","unread_chat_count","screen_name_ui","parts","split","unicodeDomain","punycode","toUnicode","join","parseAttachment","mimetype","mime_type","meta","large_thumb_url","preview_url","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","pending","idempotency_key","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","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","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","_ref82","stream","_ref82$args","access_token","_ref83","_ref84","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","_ref85","_ref85$preprocessor","preprocessor","handleMastoWS","_ref85$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","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","_ref43","MASTODON_DELETE_URL","uploadMedia","_ref44","formData","setMediaDescription","_ref45","fetchMutes","_ref57","muteUser","_ref58","unmuteUser","_ref59","subscribeUser","_ref60","unsubscribeUser","_ref61","fetchBlocks","_ref62","fetchOAuthTokens","_ref63","revokeOAuthToken","_ref64","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","importMutes","_ref46","file","importBlocks","_ref47","importFollows","_ref48","deleteAccount","_ref49","password","changeEmail","_ref50","email","changePassword","_ref51","newPassword","newPasswordConfirmation","settingsMFA","_ref52","mfaDisableOTP","_ref53","generateMfaBackupCodes","_ref56","mfaSetupOTP","_ref55","mfaConfirmOTP","_ref54","fetchFollowRequests","_ref23","approveUser","_ref16","MASTODON_APPROVE_USER_URL","denyUser","_ref17","MASTODON_DENY_USER_URL","suggestions","_ref65","markNotificationsAsSeen","_ref66","_ref66$single","single","dismissNotification","_ref81","vote","_ref67","pollId","choices","fetchPoll","_ref68","fetchFavoritedByUsers","_ref69","fetchRebloggedByUsers","_ref70","fetchEmojiReactions","_ref71","reactions","accounts","reactWithEmoji","_ref72","unreactWithEmoji","_ref73","reportUser","_ref74","statusIds","comment","forward","account_id","status_ids","updateNotificationSettings","settings","each_default","search2","_ref76","q","offset","u","statuses","searchUsers","_ref75","query","fetchKnownDomains","_ref77","fetchDomainMutes","_ref78","muteDomain","_ref79","domain","unmuteDomain","_ref80","chats","_ref86","getOrCreateChat","_ref87","accountId","chatMessages","_ref88","_ref88$limit","sendChatMessage","_ref89","_ref89$mediaId","mediaId","readChat","_ref90","lastReadId","last_read_id","deleteChatMessage","_ref91","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","_vm","_h","$createElement","_c","_self","staticClass","class","avatar-compact","compact","better-shadow","betterShadow","attrs","alt","image-load-error","__webpack_exports__","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","statusNotifications","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default","unseenNotificationsFromStore","lodash_filter__WEBPACK_IMPORTED_MODULE_2___default","i18nString","notifObj","icon","image","fileType","fileTypeService","fileMatchesSomeType","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","offsetWidth","usingTop","offsetHeight","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","destroyed","removeEventListener","popover","on","mouseenter","mouseleave","ref","click","_t","_v","_e","style","DialogModal","darkOverlay","default","onCancel","Function","dialog_modal_dialog_modal","dialog_modal","dark-overlay","$event","currentTarget","stopPropagation","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","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","slot","_s","$t","menu-checkbox-checked","to","on-cancel","library","add","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","$router","recipient_id","mapState","pleromaChatMessagesAvailable","account_actions_vue_styles_","account_actions_account_actions","account_actions","bound-to","remove-padding","showing_reblogs","faRss","faBell","faChevronDown","faSearchPlus","faExternalLinkAlt","user_card","followRequestInProgress","browserSupport","cssFilter","user_card_objectSpread","getters","findUser","classes","user-card-rounded-t","rounded","user-card-rounded","user-card-bordered","bordered","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","userHighlightType","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","domProps","innerHTML","size","hideUserStats","directives","rawName","expression","composing","for","change","$$selectedVal","Array","selected","_value","subscribing","flip","preventDefault","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","wallpaper","mod","brightness","layer","link","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","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","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","cleanInputShadows","fromEntries","shadowDef","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","faReply","ReplyButton","reply_button_reply_button","reply_button","-active","replying","faStar","faStarRegular","FavoriteButton","animated","favorite_button_vue_styles_","favorite_button_favorite_button","favorite_button","spin","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","done","indexOfFilterWord","indexOf","flat","react_button_vue_styles_","react_button_react_button","react_button","scopedSlots","_u","fn","placeholder","_l","faRetweet","RetweetButton","retweet_button_vue_styles_","retweet_button_retweet_button","retweet_button","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","_this4","copyLink","_this5","navigator","clipboard","writeText","statusLink","_this6","_this7","reportStatus","canDelete","ownStatus","canPin","canMute","extra_buttons_vue_styles_","extra_buttons_extra_buttons","extra_buttons","fixed-width","faCircleNotch","StatusPopover","find_default","allStatuses","statusId","Status","enter","status_popover_vue_styles_","status_popover_status_popover","status_popover","popover-class","is-preview","statusoid","UserListPopover","usersCapped","user_list_popover_vue_styles_","user_list_popover_user_list_popover","user_list_popover","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","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","unmuted","userExpanded","mediaPlaying","suspendable","showReasonMutedThread","inConversation","repeaterClass","highlightClass","userClass","deleted","repeaterStyle","highlightStyle","userStyle","noHeading","generateUserProfileLink","replyProfileLink","isReply","replyToName","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","relationshipReblog","reasonsToMute","excusesNotToMute","inProfile","profileUserId","hideFilteredStatuses","hideStatus","virtualHidden","isFocused","focused","replySubject","decodedSummary","unescape_default","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","uniqBy_default","tagObj","isSuspendable","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","watch","rect","scrollBy","status.repeat_num","num","status.fave_num","filters","capitalize","str","charAt","toUpperCase","status_vue_styles_","status_Component","status_status","-focused","-conversation","inlineExpanded","isPreview","highlighted","toggle","-repeat","data-tags","nativeOn","!click","user-id","time","auto-update","_f","expandable","-strikethrough","staticStyle","min-width","status-id","aria-label","replies","reply","no-heading","mediaplay","mediapause","emojiReactionsOnTimeline","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","checked","forEach_default","element","optionId","poll_poll","disabled","voters_count","$tc","path","now-threshold","faFile","faMusic","faImage","faLink","faPollH","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","allow-play","set-media","play","pause","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","sourceOpacity","deps","isTextColor","backgroundColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","dropFiles","fileInfos","media_upload_media_upload","media_upload","faPlus","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","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","uniq_default","poll_form_vue_styles_","poll_poll_form","maxlength","keydown","_k","keyCode","$set","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","updateIdempotencyKey","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","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","postingOptions","_args","optimisticPosting","abrupt","disableSubmit","submitOnEnter","setAllMediaDescriptions","postHandler","statusPoster","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","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","openProfileTab","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","cols","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","faVideo","faPlayCircle","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","image-load-handler","allowPlay","controls","thumb_url","oembedHTML","timeago","interval","localeDateString","browserLocale","locale_service","internalToBrowserLocale","$i18n","toLocaleString","refreshRelativeTimeObject","longFormat","date_utils","autoUpdate","datetime","_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","_ref$idempotencyKey","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","uk","zh","zh_Hant","messages","languages","en","require","setLanguage","language","_messages","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","setLocaleMessage","exponent","units","log","toFixed","progress_button","progress","specialLanguageCodes","localeService","defaultState","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","streaming","autohideFloatingPostButton","pauseOnUnfocused","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","useContainFit","virtualScrolling","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","del","actions","statusSummary","lodash_filter__WEBPACK_IMPORTED_MODULE_0___default","muteWord","desktopNotificationOpts","Notification","permission","desktopNotificationSilence","desktopNotification","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","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","video_attachment","preload","loop","playsinline","playing","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","censored","hideNsfwConfig","useDescription","test","newImg","Image","link_preview","provider_name","remote_follow","slicedUsers","avatar_list","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","imageUrl","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","contents","render","h","tabs","classesTab","classesWrapper","_fortawesome_vue_fontawesome__WEBPACK_IMPORTED_MODULE_3__","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","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","keyword","keywordLowercase","indexOfKeyword","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","showSuggestions","textAtCaret","wordAtCaret","Completion","slots","elm","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","newValue","newWord","firstchar","matchedSuggestions","take_default","focusPickerInput","pickerEl","picker","pickerInput","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","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","_ref13$messageArgs","messageArgs","_ref13$level","_ref13$timeout","registrationOpen","vapidPublicKey","defaultBanner","disableChat","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","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","POSITIVE_INFINITY","idStore","conversationsObject","timelines","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","counter","favoriteStatus","deletion","remove_default","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","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","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","statuses_objectSpread","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","_ref35$showImmediatel","_ref35$timeline","_ref35$noIdUpdate","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","promiseInterval","promiseCall","stopped","func","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","allowFollowingMove","fetchNotifications","readNotifsIds","notificationsFetcher","boundFetchAndUpdate","followRequestFetcher","requests","backendInteractorService","backend_interactor_service_objectSpread","startFetchingTimeline","_ref$userId","timelineFetcherService","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","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","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","compact_default","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","users_objectSpread","logout","_store$rootState","oauthApi","userToken","loginUser","requestPermission","startPolling","latest","maybeShowChatNotification","currentChatId","opts","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","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","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","_ref3$statusIds","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","_ref$updateMaxId","updateMaxId","_loop","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","_ret","getView","currentMessageChainId","orderBy_default","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","uniqueId_default","deleteMessage","cullOlderMessages","maxIndex","minIndex","sortBy_default","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","getChatById","chatList","chats_objectSpread","chatListFetcher","openedChats","openedChatMessageServices","lastReadMessageId","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","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","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","statusComponent","originalStatusId","getConversationId","isExpanded","clone_default","statusIndex","filter_default","sortAndFilterConversation","irid","hiddenStyle","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","src_components_conversation_conversation","components_conversation_conversation","-expanded","inline-expanded","collapsable","show-pinned","pinnedStatusIdsObject","in-conversation","in-profile","profile-user-id","goto","faUsers","faHome","TimelineMenu","isOpen","public-timeline","public-external-timeline","openMenu","blockOpen","timelineName","route","i18nkey","timeline_menu_objectSpread","privateMode","federating","timeline_menu_vue_styles_","timeline_menu_timeline_menu","timeline_menu","Timeline","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","showLoadButton","loadButtonString","rootClasses","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","keyBy_default","statusesToDisplay","statusesPerSide","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","throttle_default","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","timeline_vue_styles_","components_timeline_timeline","timeline_timeline","pinned-status-ids-object","virtual-hidden","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","faCheck","faUserPlus","faUser","faSuitcaseRolling","getUser","notification_objectSpread","targetUser","targetUserProfileLink","needMute","favimg","favcanvas","favcontext","isImageLoaded","clearFaviconBadge","notification_vue_styles_","components_notification_notification","notification_notification","white-space","FaviconService","initFaviconService","nodes","clearRect","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","faviconWidth","PI","fill","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","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","faSearch","faChevronLeft","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","messageRetriers","handleLayoutChange","updateScrollableContainerHeight","handleResize","setChatLayout","unsetChatLayout","chat_objectSpread","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","expand","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","inner","_opts$expand","_opts$delayed","_this7$lastScrollPosi","scrollable","diff","scrollTo","_options$behavior","_options$forceRead","isBottomedOut","reachedTop","cullOlderCheck","_this8","_this9","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","_this10","_ref2$isFirstFetch","_ref2$fetchLatest","fetchLatest","fetchOlderMessages","positionBeforeUpdate","isScrollable","_this11","doStartFetching","_this12","handleAttachmentPosting","_this13","sendMessage","_this14","buildFakeMessage","doSendMessage","retriesLeft","_this15","_ref4$retriesLeft","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","optimistic-posting","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","fetchEntries","$props","updateEntries","newEntries","with_load_more_objectSpread","$listeners","$scopedSlots","helper_default","index_es","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","accountApprovalRequired","signedIn","setCaptcha","registration_objectSpread","bioPlaceholder","replaceNewlines","reasonPlaceholder","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","faBullhorn","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_objectSpread","groupedStaffAccounts","groupBy","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","UserPanel","user_panel_objectSpread","user_panel_vue_styles_","user_panel_user_panel","user_panel","timeline_menu_timeline_menu_objectSpread","faComments","faInfoCircle","NavPanel","nav_panel_objectSpread","onTimelineRoute","timelinesRoute","followRequestCount","nav_panel_vue_styles_","nav_panel_nav_panel","nav_panel","usersToFollow","toFollow","shuffled","shuffle_default","WhoToFollowPanel","oldUser","who_to_follow_panel_vue_styles_","who_to_follow_panel_who_to_follow_panel","who_to_follow_panel","modal","noBackground","modal-background","modal_vue_styles_","modal_modal","fontawesome_svg_core_index_es","free_solid_svg_icons_index_es","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","faChevronRight","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","faSignInAlt","faSignOutAlt","faTachometerAlt","faCog","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","faPen","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","faBars","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","SearchBar","search_bar_vue_styles_","search_bar_search_bar","search_bar","desktop_nav","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","mask-image","background-color","logoBgStyle","onSearchBarToggled","desktop_nav_vue_styles_","desktop_nav_desktop_nav","-logoLeft","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","DesktopNav","mobileActivePanel","updateMobileState","App_objectSpread","userBackground","instanceBackground","bgStyle","--body-background-image","isMobileLayout","sidebarAlign","order","App_vue_styles_","src_App","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","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","FontAwesomeIcon","FontAwesomeLayers","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.2e518bb8cf82de7a72b0.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\":\"80ae75b951121aacd208\",\"3\":\"716f85efb43de512faf0\",\"4\":\"ae27cb41b81c1d0fb12b\",\"5\":\"730f6dd69f3216d24320\",\"6\":\"17d3d7ef67c646d7d9e2\",\"7\":\"c7fec9856bb057372873\",\"8\":\"c3a32861cd869f7892e5\",\"9\":\"2d36a607172a0f72bb59\",\"10\":\"9a138b362edd4833778a\",\"11\":\"9d88e9e710c4e0d0c897\",\"12\":\"36ee26c30e2909c8be60\",\"13\":\"d02023d426b44a6886af\",\"14\":\"8e7c0873d041b34efd84\",\"15\":\"349c342e2fe7e9e0fe01\",\"16\":\"cf210505237c2a0040dd\",\"17\":\"fe52ece512025177a3b8\",\"18\":\"c0d447ff77030482a94c\",\"19\":\"9b0c21b72dedc1b244bd\",\"20\":\"fee3cd69d629f271e653\",\"21\":\"9b5434a9d2b0b07a3038\",\"22\":\"132b7fba6bee9817b39f\",\"23\":\"63b95894e9f0eb300da0\",\"24\":\"10dc1eadca8b0bc15e20\",\"25\":\"e2e834e1b024960e0087\",\"26\":\"74667f919f7bad826ea0\",\"27\":\"0af03540f78df63eddca\",\"28\":\"599a889517f15c01b27e\",\"29\":\"3fc5f707254d05a94c4e\",\"30\":\"af9dba19236c2e02ceb0\",\"31\":\"f4fb830b17ba4aa43cb0\",\"32\":\"e0c1e549e0806ed8c97e\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"0778a6a864a1307a6c41\",\"3\":\"b2603a50868c68a1c192\",\"4\":\"31d6cfe0d16ae931b73c\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.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([573,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n output.id = String(data.id)\n\n if (masto) {\n output.screen_name = data.acct\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.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(escape(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.favicon = data.pleroma.favicon\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n\n // deactivated was changed to is_active in Pleroma 2.3.0\n // so check if is_active is present\n output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n ? !data.pleroma.is_active // new backend\n : data.pleroma.deactivated // old backend\n\n output.notification_settings = data.pleroma.notification_settings\n output.unread_chat_count = data.pleroma.unread_chat_count\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n // Convert punycode to unicode for UI\n output.screen_name_ui = output.screen_name\n if (output.screen_name.includes('@')) {\n const parts = output.screen_name.split('@')\n let unicodeDomain = punycode.toUnicode(parts[1])\n if (unicodeDomain !== parts[1]) {\n // Add some identifier so users can potentially spot spoofing attempts:\n // lain.com and xn--lin-6cd.com would appear identical otherwise.\n unicodeDomain = '🌏' + unicodeDomain\n output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n }\n }\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !data.hasOwnProperty('oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.large_thumb_url = data.preview_url\n output.description = data.description\n\n return output\n}\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(escape(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.pending = !!message.pending\n output.error = false\n output.idempotency_key = message.idempotency_key\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 MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) form.append('avatar', avatar)\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { 'Authorization': `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n let status = ''\n let statusText = ''\n\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.errors) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n let postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n\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, idempotencyKey, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n 'last_read_id': lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n fetchUser,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n fetchFollowRequests,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage\n}\n\nexport default apiService\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","import StillImage from '../still-image/still-image.vue'\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_avatar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_avatar.js\"\nimport __vue_script__ from \"!!babel-loader!./user_avatar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1bc06501\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.user)?_c('StillImage',{staticClass:\"Avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name_ui,\"title\":_vm.user.screen_name_ui,\"src\":_vm.imgSrc(_vm.user.profile_image_url_original),\"image-load-error\":_vm.imageLoadError}}):_c('div',{staticClass:\"Avatar -placeholder\",class:{ 'avatar-compact': _vm.compact }})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/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 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 // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one 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 let vPadding = 0\n if (this.removePadding && usingTop) {\n const anchorStyle = getComputedStyle(anchorEl)\n vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n }\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorEl.offsetHeight + vPadding - 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.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n }\n },\n showPopover () {\n const wasHidden = this.hidden\n this.hidden = false\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n destroyed () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./popover.js\"\nimport __vue_script__ from \"!!babel-loader!./popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-20483f63\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"mouseenter\":_vm.onMouseenter,\"mouseleave\":_vm.onMouseleave}},[_c('button',{ref:\"trigger\",staticClass:\"button-unstyled -fullwidth popover-trigger-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass || 'popover-default',style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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-6c4d3f72\\\",\\\"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:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleActivationStatus()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.deleteUserDialog(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_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:\"button-default 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:\"button-default 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:\"button-default 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:\"button-default 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:\"button-default 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:\"button-default 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 button-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 button-default\",on:{\"click\":function($event){return _vm.deleteUserDialog(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])])],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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { recipient_id: this.user.id }\n })\n }\n },\n computed: {\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./account_actions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./account_actions.js\"\nimport __vue_script__ from \"!!babel-loader!./account_actions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7a55d8a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"AccountActions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"}},[_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 button-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.relationship.blocking)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.report'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaChatMessagesAvailable)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.openChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.message'))+\"\\n \")]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"ellipsis-button\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"ellipsis-v\"}})],1)])],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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faChevronDown,\n faSearchPlus,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faChevronDown,\n faSearchPlus,\n faExternalLinkAlt\n)\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton\n },\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-04135f81\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-card\",class:_vm.classes},[_c('div',{staticClass:\"background-image\",class:{ 'hide-bio': _vm.hideBio },style:(_vm.style)}),_vm._v(\" \"),_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"container\"},[(_vm.allowZoomingAvatar)?_c('a',{staticClass:\"user-info-avatar-link\",on:{\"click\":_vm.zoomAvatar}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}}),_vm._v(\" \"),_c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search-plus\"}})],1)],1):_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}})],1),_vm._v(\" \"),_c('div',{staticClass:\"user-summary\"},[_c('div',{staticClass:\"top-line\"},[(_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',{staticClass:\"external-link-button\",attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"external-link-alt\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user,\"relationship\":_vm.relationship}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"title\":_vm.user.screen_name_ui,\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"general.role.\" + _vm.visibleRole)))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.bot'))+\"\\n \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('FAIcon',{staticClass:\"lock-icon\",attrs:{\"icon\":\"lock\",\"size\":\"sm\"}})],1):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],2)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.relationship.followed_by && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('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('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"relationship\":_vm.relationship}}),_vm._v(\" \"),(_vm.relationship.following)?[(!_vm.relationship.subscribing)?_c('ProgressButton',{staticClass:\"btn button-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1):_c('ProgressButton',{staticClass:\"btn button-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('FALayers',[_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"left-5 shrink-6 up-3 rotate-20\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"right-5 shrink-6 up-3 rotate-20\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1)],1)]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn button-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio && _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 = []\nexport { render, staticRenderFns }","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n undelay: null, // root\n topBar: null, // no transparency support\n badge: null, // no transparency support\n profileTint: null, // doesn't matter\n fg: null,\n bg: 'underlay',\n highlight: 'bg',\n panel: 'bg',\n popover: 'bg',\n selectedMenu: 'popover',\n btn: 'bg',\n btnPanel: 'panel',\n btnTopBar: 'topBar',\n input: 'bg',\n inputPanel: 'panel',\n inputTopBar: 'topBar',\n alert: 'bg',\n alertPanel: 'panel',\n poll: 'bg',\n chatBg: 'underlay',\n chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n wallpaper: {\n depends: ['bg'],\n color: (mod, bg) => brightness(-2 * mod, bg).rgb\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n 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\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n }\n}\n\nexport default ReplyButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./reply_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./reply_button.js\"\nimport __vue_script__ from \"!!babel-loader!./reply_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56f413c0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./reply_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ReplyButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:{'-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('toggle')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\"}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"title\":_vm.$t('tool_tip.reply')}})],1),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.replies_count)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21f861d8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"FavoriteButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.favorited && '-favorited',attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":[_vm.status.favorited ? 'fas' : 'far', 'star'],\"spin\":_vm.animated}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"title\":_vm.$t('tool_tip.favorite'),\"icon\":['far', 'star']}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.fave_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n focusInput () {\n this.$nextTick(() => {\n const input = this.$el.querySelector('input')\n if (input) input.focus()\n })\n }\n },\n computed: {\n commonEmojis () {\n return [\n { displayText: 'thumbsup', replacement: '👍' },\n { displayText: 'angry', replacement: '😠' },\n { displayText: 'eyes', replacement: '👀' },\n { displayText: 'joy', replacement: '😂' },\n { displayText: 'fire', replacement: '🔥' }\n ]\n },\n emojis () {\n if (this.filterWord !== '') {\n const filterWordLowercase = this.filterWord.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of this.$store.state.instance.emoji) {\n if (emoji.replacement === this.filterWord) return [emoji]\n\n const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n if (indexOfFilterWord > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n orderedEmojiList[indexOfFilterWord] = []\n }\n orderedEmojiList[indexOfFilterWord].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return this.$store.state.instance.emoji || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-814fabba\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ReactButton\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},on:{\"show\":_vm.focusInput},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"size\":\"1\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji.replacement,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)])}}])},[_vm._v(\" \"),_c('span',{staticClass:\"popover-trigger\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('tool_tip.add_reaction')},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":['far', 'smile-beam']}})],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46fe49c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"RetweetButton\"},[(_vm.visibility !== 'private' && _vm.visibility !== 'direct' && _vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.repeated && '-repeated',attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"spin\":_vm.animated}})],1):(_vm.loggedIn)?_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\",\"title\":_vm.$t('timeline.no_retweet_hint')}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',{staticClass:\"no-event\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.repeat_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag\n)\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-57750a15\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ExtraButtons\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'bookmark']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"share-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])],1),_vm._v(\" \"),(!_vm.status.is_local)?_c('a',{staticClass:\"button-default dropdown-item dropdown-item-icon\",attrs:{\"title\":\"Source\",\"href\":_vm.status.external_url,\"target\":\"_blank\"}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"external-link-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.external_source\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.reportStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'flag']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"user_card.report\")))])],1)])])}}])},[_vm._v(\" \"),_c('span',{staticClass:\"popover-trigger\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"ellipsis-h\"}})],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: () => import('../status/status.vue'),\n Popover: () => import('../popover/popover.vue')\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-32b5e6b8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"popover-class\":\"popover-default status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter}},[_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('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"2x\"}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n Popover: () => import('../popover/popover.vue'),\n UserAvatar: () => import('../user_avatar/user_avatar.vue')\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_list_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_list_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./user_list_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6725f7f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_list_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }}},[_c('template',{slot:\"trigger\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"user-list-popover\",attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.users.length)?_c('div',_vm._l((_vm.usersCapped),function(user){return _c('div',{key:user.id,staticClass:\"user-list-row\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"user-list-names\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(user.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"user-list-screen-name\"},[_vm._v(_vm._s(user.screen_name_ui))])])],1)}),0):_c('div',[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}})],1)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a9f972b4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('UserListPopover',{key:reaction.name,attrs:{\"users\":_vm.accountsForEmoji[reaction.name]}},[_c('button',{staticClass:\"emoji-reaction btn button-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}}},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faSmileBeam,\n faEllipsisH,\n faStar,\n faEyeSlash,\n faEye,\n faThumbtack\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen,\n faTimes,\n faRetweet,\n faReply,\n faPlusSquare,\n faStar,\n faSmileBeam,\n faEllipsisH,\n faEyeSlash,\n faEye,\n faThumbtack\n)\n\nconst Status = {\n name: 'Status',\n components: {\n ReplyButton,\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n UserListPopover,\n EmojiReactions,\n StatusContent\n },\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId'\n ],\n data () {\n return {\n replying: false,\n unmuted: false,\n userExpanded: false,\n mediaPlaying: [],\n suspendable: true,\n error: null\n }\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_ui },\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 if (this.statusoid.user.id === this.currentUser.id) return false\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n const reasonsToMute = (\n // Post is muted according to BE\n status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting) ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0\n )\n const excusesNotToMute = (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n\n return !this.unmuted && !excusesNotToMute && reasonsToMute\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideStatus () {\n return (this.muted && this.hideFilteredStatuses) || this.virtualHidden\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name_ui\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n betterShadow () {\n return this.$store.state.interface.browserSupport.cssFilter\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n isSuspendable () {\n return !this.replying && this.mediaPlaying.length === 0\n }\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'lock'\n case 'unlisted':\n return 'lock-open'\n case 'direct':\n return 'envelope'\n default:\n return 'globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n this.replying = !this.replying\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n },\n addMediaPlaying (id) {\n this.mediaPlaying.push(id)\n },\n removeMediaPlaying (id) {\n this.mediaPlaying = this.mediaPlaying.filter(mediaId => mediaId !== id)\n }\n },\n watch: {\n 'highlight': function (id) {\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n },\n 'isSuspendable': function (val) {\n this.suspendable = val\n }\n },\n filters: {\n capitalize: function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n }\n}\n\nexport default Status\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./status.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./status.js\"\nimport __vue_script__ from \"!!babel-loader!./status.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2273de09\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Status\",class:[{ '-focused': _vm.isFocused }, { '-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('span',{staticClass:\"fa-scale-110 fa-old-padding\",on:{\"click\":_vm.clearError}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"status-container muted\"},[_c('small',{staticClass:\"status-username\"},[(_vm.muted && _vm.retweet)?_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding repeat-icon\",attrs:{\"icon\":\"retweet\"}}):_vm._e(),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n \")])],1),_vm._v(\" \"),(_vm.showReasonMutedThread)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showReasonMutedThread && _vm.muteWordHits.length > 0)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted_and_words'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('small',{staticClass:\"mute-words\",attrs:{\"title\":_vm.muteWordHits.join(', ')}},[_vm._v(\"\\n \"+_vm._s(_vm.muteWordHits.join(', '))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"unmute button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)])]:[(_vm.showPinned)?_c('div',{staticClass:\"pin\"},[_c('FAIcon',{staticClass:\"faint\",attrs:{\"icon\":\"thumbtack\"}}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])],1):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"status-container repeat-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"left-side repeater-avatar\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side faint\"},[_c('span',{staticClass:\"status-username repeater-name\",attrs:{\"title\":_vm.retweeter}},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink},domProps:{\"innerHTML\":_vm._s(_vm.retweeterHtml)}}):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('FAIcon',{staticClass:\"repeat-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.deleted)?_c('div',{staticClass:\"status-container\",class:[_vm.userClass, { highlighted: _vm.userStyle, '-repeat': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"left-side\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink},nativeOn:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact,\"better-shadow\":_vm.betterShadow,\"user\":_vm.status.user}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"usercard\",attrs:{\"user-id\":_vm.status.user.id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"status-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"heading-left\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name},domProps:{\"innerHTML\":_vm._s(_vm.status.user.name_html)}}):_c('h4',{staticClass:\"status-username\",attrs:{\"title\":_vm.status.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.name)+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"title\":_vm.status.user.screen_name_ui,\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(!!(_vm.status.user && _vm.status.user.favicon))?_c('img',{staticClass:\"status-favicon\",attrs:{\"src\":_vm.status.user.favicon}}):_vm._e()],1),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"},[_c('router-link',{staticClass:\"timeago faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.status.created_at,\"auto-update\":60}})],1),_vm._v(\" \"),(_vm.status.visibility)?_c('span',{staticClass:\"visibility-icon\",attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.visibilityIcon(_vm.status.visibility)}})],1):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?_c('button',{staticClass:\"button-unstyled\",attrs:{\"title\":_vm.$t('status.expand')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"plus-square\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}})],1):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('div',{staticClass:\"reply-to-and-accountname\"},[(!_vm.isPreview)?_c('StatusPopover',{staticClass:\"reply-to-popover\",class:{ '-strikethrough': !_vm.status.parent_visible },staticStyle:{\"min-width\":\"0\"},attrs:{\"status-id\":_vm.status.parent_visible && _vm.status.in_reply_to_status_id}},[_c('button',{staticClass:\"button-unstyled reply-to\",attrs:{\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('span',{staticClass:\"faint-link reply-to-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.reply_to'))+\"\\n \")])],1)]):_c('span',{staticClass:\"reply-to-no-popover\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('router-link',{staticClass:\"reply-to-link\",attrs:{\"title\":_vm.replyToName,\"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('button',{staticClass:\"button-unstyled -link reply-link\",on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(reply.id)}}},[_vm._v(\"\\n \"+_vm._s(reply.name)+\"\\n \")])])})],2):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.status,\"no-heading\":_vm.noHeading,\"highlight\":_vm.highlight,\"focused\":_vm.isFocused},on:{\"mediaplay\":function($event){return _vm.addMediaPlaying($event)},\"mediapause\":function($event){return _vm.removeMediaPlaying($event)}}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.hidePostStats && _vm.isFocused && _vm.combinedFavsAndRepeatsUsers.length > 0)?_c('div',{staticClass:\"favs-repeated-users\"},[_c('div',{staticClass:\"stats\"},[(_vm.statusFromGlobalRepository.rebloggedBy && _vm.statusFromGlobalRepository.rebloggedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.rebloggedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.repeats')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.rebloggedBy.length)+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),(_vm.statusFromGlobalRepository.favoritedBy && _vm.statusFromGlobalRepository.favoritedBy.length > 0)?_c('UserListPopover',{attrs:{\"users\":_vm.statusFromGlobalRepository.favoritedBy}},[_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.favorites')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.favoritedBy.length)+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"avatar-row\"},[_c('AvatarList',{attrs:{\"users\":_vm.combinedFavsAndRepeatsUsers}})],1)],1)]):_vm._e()]),_vm._v(\" \"),((_vm.mergedConfig.emojiReactionsOnTimeline || _vm.isFocused) && (!_vm.noHeading && !_vm.isPreview))?_c('EmojiReactions',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading && !_vm.isPreview)?_c('div',{staticClass:\"status-actions\"},[_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}),_vm._v(\" \"),_c('retweet-button',{attrs:{\"visibility\":_vm.status.visibility,\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('favorite-button',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),(_vm.loggedIn)?_c('ReactButton',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),_c('extra-buttons',{attrs:{\"status\":_vm.status},on:{\"onError\":_vm.showError,\"onSuccess\":_vm.clearError}})],1):_vm._e()],1)]):_c('div',{staticClass:\"gravestone\"},[_c('div',{staticClass:\"left-side\"},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact}})],1),_vm._v(\" \"),_c('div',{staticClass:\"right-side\"},[_c('div',{staticClass:\"deleted-text\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.status_deleted'))+\"\\n \")]),_vm._v(\" \"),(_vm.replying)?_c('reply-button',{attrs:{\"replying\":_vm.replying,\"status\":_vm.status},on:{\"toggle\":_vm.toggleReplying}}):_vm._e()],1)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"status-container reply-form\"},[_c('PostStatusForm',{staticClass:\"reply-body\",attrs:{\"reply-to\":_vm.status.id,\"attentions\":_vm.status.attentions,\"replied-user\":_vm.status.user,\"copy-message-scope\":_vm.status.visibility,\"subject\":_vm.replySubject},on:{\"posted\":_vm.toggleReplying}})],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeago from '../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-4236989e\\\",\\\"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',{domProps:{\"innerHTML\":_vm._s(option.title_html)}})])])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn button-default poll-vote-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.vote}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.vote'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"total\"},[(typeof _vm.poll.voters_count === 'number')?[_vm._v(\"\\n \"+_vm._s(_vm.$tc(\"polls.people_voted_count\", _vm.poll.voters_count, { count: _vm.poll.voters_count }))+\" · \\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$tc(\"polls.votes_count\", _vm.poll.votes_count, { count: _vm.poll.votes_count }))+\" · \\n \")]],2),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":_vm.expired ? 'polls.expired' : 'polls.expires_in'}},[_c('Timeago',{attrs:{\"time\":_vm.expiresAt,\"auto-update\":60,\"now-threshold\":0}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import 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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faFile,\n faMusic,\n faImage,\n faLink,\n faPollH\n)\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent',\n 'singleLine'\n ],\n 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-f73ef5c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"StatusContent\"},[_vm._t(\"header\"),_vm._v(\" \"),(_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('button',{staticClass:\"button-unstyled -link tall-subject-hider\",on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.hide_full_subject\"))+\"\\n \")]):(_vm.longSubject)?_c('button',{staticClass:\"button-unstyled -link tall-subject-hider\",class:{ 'tall-subject-hider_focused': _vm.focused },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('button',{staticClass:\"button-unstyled -link tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.focused },on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_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('button',{staticClass:\"button-unstyled -link cw-status-hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_content\"))+\"\\n \"),(_vm.attachmentTypes.includes('image'))?_c('FAIcon',{attrs:{\"icon\":\"image\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('video'))?_c('FAIcon',{attrs:{\"icon\":\"video\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('audio'))?_c('FAIcon',{attrs:{\"icon\":\"music\"}}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('unknown'))?_c('FAIcon',{attrs:{\"icon\":\"file\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('FAIcon',{attrs:{\"icon\":\"link\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showingMore && !_vm.fullContent)?_c('button',{staticClass:\"button-unstyled -link status-unhider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.tallStatus ? _vm.$t(\"general.show_less\") : _vm.$t(\"status.hide_content\"))+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options && !_vm.hideSubjectStatus)?_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()},on:{\"play\":function($event){return _vm.$emit('mediaplay', attachment.id)},\"pause\":function($event){return _vm.$emit('mediapause', attachment.id)}}})}),_vm._v(\" \"),(_vm.galleryAttachments.length > 0)?_c('gallery',{attrs:{\"nsfw\":_vm.nsfwClickthrough,\"attachments\":_vm.galleryAttachments,\"set-media\":_vm.setMedia()}}):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.status.card && !_vm.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-9c08ab70\\\",\\\"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_ui)+\"\\n \")])],1),_vm._v(\" \"),_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { alphaBlendLayers, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { LAYERS, DEFAULT_OPACITY, SLOT_INHERITANCE } from './pleromafe.js'\n\n/*\n * # What's all this?\n * Here be theme engine for pleromafe. All of this supposed to ease look\n * and feel customization, making widget styles and make developer's life\n * easier when it comes to supporting themes. Like many other theme systems\n * it operates on color definitions, or \"slots\" - for example you define\n * \"button\" color slot and then in UI component Button's CSS you refer to\n * it as a CSS3 Variable.\n *\n * Some applications allow you to customize colors for certain things.\n * Some UI toolkits allow you to define colors for each type of widget.\n * Most of them are pretty barebones and have no assistance for common\n * problems and cases, and in general themes themselves are very hard to\n * maintain in all aspects. This theme engine tries to solve all of the\n * common problems with themes.\n *\n * You don't have redefine several similar colors if you just want to\n * change one color - all color slots are derived from other ones, so you\n * can have at least one or two \"basic\" colors defined and have all other\n * components inherit and modify basic ones.\n *\n * You don't have to test contrast ratio for colors or pick text color for\n * each element even if you have light-on-dark elements in dark-on-light\n * theme.\n *\n * You don't have to maintain order of code for inheriting slots from othet\n * slots - dependency graph resolving does it for you.\n */\n\n/* This indicates that this version of code outputs similar theme data and\n * should be incremented if output changes - for instance if getTextColor\n * function changes and older themes no longer render text colors as\n * author intended previously.\n */\nexport const CURRENT_VERSION = 3\n\nexport const getLayersArray = (layer, data = LAYERS) => {\n let array = [layer]\n let parent = data[layer]\n while (parent) {\n array.unshift(parent)\n parent = data[parent]\n }\n return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n return getLayersArray(layer).map((currentLayer) => ([\n currentLayer === layer\n ? colors[variant]\n : colors[currentLayer],\n currentLayer === layer\n ? opacity[opacitySlot] || 1\n : opacity[currentLayer]\n ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n const data = inheritance[key]\n if (typeof data === 'string' && data.startsWith('--')) {\n return [data.substring(2)]\n } else {\n if (data === null) return []\n const { depends, layer, variant } = data\n const layerDeps = layer\n ? getLayersArray(layer).map(currentLayer => {\n return currentLayer === layer\n ? variant || layer\n : currentLayer\n })\n : []\n if (Array.isArray(depends)) {\n return [...depends, ...layerDeps]\n } else {\n return [...layerDeps]\n }\n }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n * given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n * order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n const allKeys = Object.keys(inheritance)\n const whites = new Set(allKeys)\n const grays = new Set()\n const blacks = new Set()\n const unprocessed = [...allKeys]\n const output = []\n\n const step = (node) => {\n if (whites.has(node)) {\n // Make node \"gray\"\n whites.delete(node)\n grays.add(node)\n // Do step for each node connected to it (one way)\n getDeps(node, inheritance).forEach(step)\n // Make node \"black\"\n grays.delete(node)\n blacks.add(node)\n // Put it into the output list\n output.push(node)\n } else if (grays.has(node)) {\n console.debug('Cyclic depenency in topoSort, ignoring')\n output.push(node)\n } else if (blacks.has(node)) {\n // do nothing\n } else {\n throw new Error('Unintended condition in topoSort!')\n }\n }\n while (unprocessed.length > 0) {\n step(unprocessed.pop())\n }\n\n // The index thing is to make sorting stable on browsers\n // where Array.sort() isn't stable\n return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n if (typeof value === 'object') return value\n return {\n depends: value.startsWith('--') ? [value.substring(2)] : [],\n default: value.startsWith('#') ? value : undefined\n }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (value.opacity === null) return\n if (value.opacity) return value.opacity\n const findInheritedOpacity = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.opacity || dependency === null) {\n return dependency.opacity\n } else if (dependency.depends && visited.includes(depSlot)) {\n return findInheritedOpacity(depSlot, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedOpacity(k)\n }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n k,\n inheritance = SLOT_INHERITANCE,\n getDeps = getDependencies\n) => {\n const value = expandSlotValue(inheritance[k])\n if (LAYERS[k]) return k\n if (value.layer === null) return\n if (value.layer) return value.layer\n const findInheritedLayer = (key, visited = [k]) => {\n const depSlot = getDeps(key, inheritance)[0]\n if (depSlot === undefined) return\n const dependency = inheritance[depSlot]\n if (dependency === undefined) return\n if (dependency.layer || dependency === null) {\n return dependency.layer\n } else if (dependency.depends) {\n return findInheritedLayer(dependency, [...visited, depSlot])\n } else {\n return null\n }\n }\n if (value.depends) {\n return findInheritedLayer(k)\n }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n Object.entries(SLOT_INHERITANCE)\n .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n if (opacity) {\n return {\n ...acc,\n [opacity]: {\n defaultValue: DEFAULT_OPACITY[opacity] || 1,\n affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n }\n }\n } else {\n return acc\n }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n let targetColor = null\n // Color references other color\n const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n targetColor = getColor(variableSlot)\n if (modifier) {\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n const sourceColor = sourceColors[key]\n const value = expandSlotValue(SLOT_INHERITANCE[key])\n const deps = getDependencies(key, SLOT_INHERITANCE)\n const isTextColor = !!value.textColor\n const variant = value.variant || value.layer\n\n let backgroundColor = null\n\n if (isTextColor) {\n backgroundColor = alphaBlendLayers(\n { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n getLayers(\n getLayerSlot(key) || 'bg',\n variant || 'bg',\n getOpacitySlot(variant),\n colors,\n opacity\n )\n )\n } else if (variant && variant !== key) {\n backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n } else {\n backgroundColor = colors.bg || convert(sourceColors.bg)\n }\n\n const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n const mod = isLightOnDark ? 1 : -1\n\n let outputColor = null\n if (sourceColor) {\n // Color is defined in source color\n let targetColor = sourceColor\n if (targetColor === 'transparent') {\n // We take only layers below current one\n const layers = getLayers(\n getLayerSlot(key),\n key,\n getOpacitySlot(key) || key,\n colors,\n opacity\n ).slice(0, -1)\n targetColor = {\n ...alphaBlendLayers(\n convert('#FF00FF').rgb,\n layers\n ),\n a: 0\n }\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n targetColor = computeDynamicColor(\n sourceColor,\n variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n mod\n )\n } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n targetColor = convert(targetColor).rgb\n }\n outputColor = { ...targetColor }\n } else if (value.default) {\n // same as above except in object form\n outputColor = convert(value.default).rgb\n } else {\n // calculate color\n const defaultColorFunc = (mod, dep) => ({ ...dep })\n const colorFunc = value.color || defaultColorFunc\n\n if (value.textColor) {\n if (value.textColor === 'bw') {\n outputColor = contrastRatio(backgroundColor).rgb\n } else {\n let color = { ...colors[deps[0]] }\n if (value.color) {\n color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n }\n outputColor = getTextColor(\n backgroundColor,\n { ...color },\n value.textColor === 'preserve'\n )\n }\n } else {\n // background color case\n outputColor = colorFunc(\n mod,\n ...deps.map((dep) => ({ ...colors[dep] }))\n )\n }\n }\n if (!outputColor) {\n throw new Error('Couldn\\'t generate color for ' + key)\n }\n\n const opacitySlot = value.opacity || getOpacitySlot(key)\n const ownOpacitySlot = value.opacity\n\n if (ownOpacitySlot === null) {\n outputColor.a = 1\n } else if (sourceColor === 'transparent') {\n outputColor.a = 0\n } else {\n const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n const dependencySlot = deps[0]\n const dependencyColor = dependencySlot && colors[dependencySlot]\n\n if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n // Inheriting color from dependency (weird, i know)\n // except if it's a text color or opacity slot is set to 'null'\n outputColor.a = dependencyColor.a\n } else if (!dependencyColor && !opacitySlot) {\n // Remove any alpha channel if no dependency and no opacitySlot found\n delete outputColor.a\n } else {\n // Otherwise try to assign opacity\n if (dependencyColor && dependencyColor.a === 0) {\n // transparent dependency shall make dependents transparent too\n outputColor.a = 0\n } else {\n // Otherwise check if opacity is overriden and use that or default value instead\n outputColor.a = Number(\n opacityOverriden\n ? sourceOpacity[opacitySlot]\n : (OPACITIES[opacitySlot] || {}).defaultValue\n )\n }\n }\n }\n\n if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n outputColor.a = 1\n }\n\n if (opacitySlot) {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity: { ...opacity, [opacitySlot]: outputColor.a }\n }\n } else {\n return {\n colors: { ...colors, [key]: outputColor },\n opacity\n }\n }\n}, { colors: {}, opacity: {} })\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUpload,\n faCircleNotch\n)\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles',\n 'disabled'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.multiUpload(fileInfos)\n }\n }\n }\n}\n\nexport default mediaUpload\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_upload.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_upload.js\"\nimport __vue_script__ from \"!!babel-loader!./media_upload.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9d0f738a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_upload.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"media-upload\",class:{ disabled: _vm.disabled },attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('FAIcon',{staticClass:\"progress-icon\",attrs:{\"icon\":\"circle-notch\",\"spin\":\"\"}}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('FAIcon',{staticClass:\"new-icon\",attrs:{\"icon\":\"upload\"}}):_vm._e(),_vm._v(\" \"),(_vm.uploadReady)?_c('input',{staticStyle:{\"position\":\"fixed\",\"top\":\"-100em\"},attrs:{\"disabled\":_vm.disabled,\"type\":\"file\",\"multiple\":\"true\"},on:{\"change\":_vm.change}}):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faChevronDown,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faChevronDown,\n faPlus\n)\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 this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-287d7742\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"size\":\"1\",\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('button',{staticClass:\"delete-option button-unstyled -hover-highlight\",on:{\"click\":function($event){return _vm.deleteOption(index)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('button',{staticClass:\"add-option faint button-unstyled -hover-highlight\",on:{\"click\":_vm.addOption}},[_c('FAIcon',{attrs:{\"icon\":\"plus\",\"size\":\"sm\"}}),_vm._v(\"\\n\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('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('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('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('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)])])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown,\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Attachment,\n StatusContent\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType } = 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 idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n 'newStatus': {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n }\n }\n}\n\nexport default PostStatusForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_form.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1b9446c3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"form\",staticClass:\"post-status-form\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();},\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropIcon !== 'hide'),expression:\"showDropIcon !== 'hide'\"}],staticClass:\"drop-indicator\",style:({ animation: _vm.showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }),on:{\"dragleave\":_vm.fileDragStop,\"drop\":function($event){$event.stopPropagation();return _vm.fileDrop($event)}}},[_c('FAIcon',{attrs:{\"icon\":_vm.uploadFileLimitReached ? 'ban' : 'upload'}})],1),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private' && !_vm.disableLockWarning)?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":_vm.openProfileTab}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),(!_vm.disablePreview)?_c('div',{staticClass:\"preview-heading faint\"},[_c('a',{staticClass:\"preview-toggle faint\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePreview($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.preview'))+\"\\n \"),_c('FAIcon',{attrs:{\"icon\":_vm.showPreview ? 'chevron-left' : 'chevron-right'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"preview-spinner\"},[_c('FAIcon',{staticClass:\"fa-old-padding\",attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.showPreview)?_c('div',{staticClass:\"preview-container\"},[(!_vm.preview)?_c('div',{staticClass:\"preview-status\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")]):(_vm.preview.error)?_c('div',{staticClass:\"preview-status preview-error\"},[_vm._v(\"\\n \"+_vm._s(_vm.preview.error)+\"\\n \")]):_c('StatusContent',{staticClass:\"preview-status\",attrs:{\"status\":_vm.preview}})],1):_vm._e(),_vm._v(\" \"),(!_vm.disableSubject && (_vm.newStatus.spoilerText || _vm.alwaysShowSubject))?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning'),\"disabled\":_vm.posting && !_vm.optimisticPosting,\"size\":\"1\"},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"placement\":_vm.emojiPickerPlacement,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"newline-on-ctrl-enter\":_vm.submitOnEnter,\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed,\"shown\":_vm.handleEmojiInputShow},model:{value:(_vm.newStatus.status),callback:function ($$v) {_vm.$set(_vm.newStatus, \"status\", $$v)},expression:\"newStatus.status\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.status),expression:\"newStatus.status\"}],ref:\"textarea\",staticClass:\"form-post-body\",class:{ 'scrollable-form': !!_vm.maxHeight },attrs:{\"placeholder\":_vm.placeholder || _vm.$t('post_status.default'),\"rows\":\"1\",\"cols\":\"1\",\"disabled\":_vm.posting && !_vm.optimisticPosting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }return _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }!_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)}],\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"status\", $event.target.value)},_vm.resize],\"compositionupdate\":_vm.resize,\"paste\":_vm.paste}}),_vm._v(\" \"),(_vm.hasStatusLengthLimit)?_c('p',{staticClass:\"character-counter faint\",class:{ error: _vm.isOverLengthLimit }},[_vm._v(\"\\n \"+_vm._s(_vm.charactersLeft)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(!_vm.disableScopeSelector)?_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('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('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n \")])]):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('poll-form',{ref:\"pollForm\",attrs:{\"visible\":_vm.pollFormVisible},on:{\"update-poll\":_vm.setPoll}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"bottom\",staticClass:\"form-bottom\"},[_c('div',{staticClass:\"form-bottom-left\"},[_c('media-upload',{ref:\"mediaUpload\",staticClass:\"media-upload-icon\",attrs:{\"drop-files\":_vm.dropFiles,\"disabled\":_vm.uploadFileLimitReached},on:{\"uploading\":_vm.startedUploadingFiles,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed,\"all-uploaded\":_vm.finishedUploadingFiles}}),_vm._v(\" \"),_c('button',{staticClass:\"emoji-icon button-unstyled\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}},[_c('FAIcon',{attrs:{\"icon\":\"smile-beam\"}})],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('button',{staticClass:\"poll-icon button-unstyled\",class:{ selected: _vm.pollFormVisible },attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}},[_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.uploadingFiles || _vm.disableSubmit},on:{\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1),_vm._v(\" \"),_c('attachment',{attrs:{\"attachment\":file,\"set-media\":function () { return _vm.$store.dispatch('setMedia', _vm.newStatus.files); },\"size\":\"small\",\"allow-play\":\"false\"}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.mediaDescriptions[file.id]),expression:\"newStatus.mediaDescriptions[file.id]\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.media_description')},domProps:{\"value\":(_vm.newStatus.mediaDescriptions[file.id])},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus.mediaDescriptions, file.id, $event.target.value)}}})],1)}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0 && !_vm.disableSensitivityCheckbox)?_c('div',{staticClass:\"upload_settings\"},[_c('Checkbox',{model:{value:(_vm.newStatus.nsfw),callback:function ($$v) {_vm.$set(_vm.newStatus, \"nsfw\", $$v)},expression:\"newStatus.nsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.attachments_sensitive'))+\"\\n \")])],1):_vm._e()],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'nsfw',\n 'size',\n 'allowPlay',\n 'setMedia',\n 'naturalSizeLoad'\n ],\n data () {\n return {\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false\n }\n },\n components: {\n StillImage,\n VideoAttachment\n },\n computed: {\n usePlaceholder () {\n return this.size === 'hide' || this.type === 'unknown'\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n },\n isSmall () {\n return this.size === 'small'\n },\n fullwidth () {\n if (this.size === 'hide') return false\n return this.type === 'html' || this.type === 'audio' || this.type === 'unknown'\n },\n useModal () {\n const modalTypes = this.size === 'hide' ? ['image', 'video', 'audio']\n : this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n return modalTypes.includes(this.type)\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n event.stopPropagation()\n event.preventDefault()\n this.setMedia()\n this.$store.dispatch('setCurrent', this.attachment)\n }\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n }\n }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0bbdeccd\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceholder)?_c('div',{class:{ 'fullwidth': _vm.fullwidth },on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description}},[_c('FAIcon',{attrs:{\"icon\":_vm.placeholderIconClass}}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n \")],1):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] = _vm.fullwidth, _obj['nsfw-placeholder'] = _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\"},on:{\"click\":_vm.openModal}},[_c('StillImage',{staticClass:\"image\",attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad,\"alt\":_vm.attachment.description}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"controls\":\"\"},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n destroyed () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-afc3a092\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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 idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","const StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n }\n },\n methods: {\n onLoad () {\n const image = this.$refs.src\n if (!image) return\n this.imageLoadHandler && this.imageLoadHandler(image)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = image.naturalWidth\n const height = image.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./still-image.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./still-image.js\"\nimport __vue_script__ from \"!!babel-loader!./still-image.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-04da2070\\\",\\\"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 uk: () => import('./uk.json'),\n zh: () => import('./zh.json'),\n zh_Hant: () => import('./zh_Hant.json')\n}\n\nconst messages = {\n languages: ['en', ...Object.keys(loaders)],\n default: {\n en: require('./en.json')\n },\n setLanguage: async (i18n, language) => {\n if (loaders[language]) {\n let messages = await loaders[language]()\n i18n.setLocaleMessage(language, messages)\n }\n i18n.locale = language\n }\n}\n\nexport default messages\n","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","<template>\n <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f751ae6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./progress_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{attrs:{\"disabled\":_vm.progress || _vm.disabled},on:{\"click\":_vm.onClick}},[(_vm.progress && _vm.$slots.progress)?[_vm._t(\"progress\")]:[_vm._t(\"default\")]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const specialLanguageCodes = {\n 'ja_easy': 'ja',\n 'zh_Hant': 'zh-HANT'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst localeService = {\n internalToBrowserLocale\n}\n\nexport default localeService\n","import { set, delete as del } from 'vue'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior'\n]\n\nexport const defaultState = {\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n hideInstanceWallpaper: false,\n // 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 virtualScrolling: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n ...state\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 showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","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-d23ef426\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn button-default follow-button\",class:{ toggled: _vm.isPressed },attrs:{\"disabled\":_vm.inProgress,\"title\":_vm.title},on:{\"click\":_vm.onClick}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n blocksSuspend: false,\n // Start from true because removing \"loop\" property seems buggy in Vue\n hasAudio: true\n }\n },\n computed: {\n loopVideo () {\n if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n return !this.hasAudio\n }\n return this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onPlaying (e) {\n this.setHasAudio(e)\n if (this.loopVideo) {\n this.$emit('play', { looping: true })\n return\n }\n this.$emit('play')\n },\n onPaused (e) {\n this.$emit('pause')\n },\n setHasAudio (e) {\n const target = e.srcElement || e.target\n // If hasAudio is false, we've already marked this video to not have audio,\n // a video can't gain audio out of nowhere so don't bother checking again.\n if (!this.hasAudio) return\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) return\n }\n if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) return\n }\n if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) return\n }\n this.hasAudio = false\n }\n }\n}\n\nexport default VideoAttachment\n","/* script */\nexport * from \"!!babel-loader!./video_attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./video_attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dda2841a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./video_attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{staticClass:\"video\",attrs:{\"preload\":\"metadata\",\"src\":_vm.attachment.url,\"loop\":_vm.loopVideo,\"controls\":_vm.controls,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"playsinline\":\"\"},on:{\"playing\":_vm.onPlaying,\"pause\":_vm.onPaused}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport { chunk, last, dropRight, sumBy } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'nsfw',\n 'setMedia'\n ],\n data () {\n return {\n sizes: {}\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const rows = chunk(this.attachments, 3)\n if (last(rows).length === 1 && rows.length > 1) {\n // if 1 attachment on last row -> add it to the previous row instead\n const lastAttachment = last(rows)[0]\n const allButLastRow = dropRight(rows)\n last(allButLastRow).push(lastAttachment)\n return allButLastRow\n }\n return rows\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n }\n },\n methods: {\n onNaturalSizeLoad (id, size) {\n this.$set(this.sizes, id, size)\n },\n rowStyle (itemsPerRow) {\n return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n }\n }\n}\n\nexport default Gallery\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./gallery.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./gallery.js\"\nimport __vue_script__ from \"!!babel-loader!./gallery.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3db94942\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./gallery.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"galleryContainer\",staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rows),function(row,index){return _c('div',{key:index,staticClass:\"gallery-row\",class:{ 'contain-fit': _vm.useContainFit, 'cover-fit': !_vm.useContainFit },style:(_vm.rowStyle(row.length))},[_c('div',{staticClass:\"gallery-row-inner\"},_vm._l((row),function(attachment){return _c('attachment',{key:attachment.id,style:(_vm.itemStyle(attachment.id, row)),attrs:{\"set-media\":_vm.setMedia,\"nsfw\":_vm.nsfw,\"attachment\":attachment,\"allow-play\":false,\"natural-size-load\":_vm.onNaturalSizeLoad.bind(null, attachment.id)}})}),1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.censored && this.size !== 'hide'\n },\n censored () {\n return this.nsfw && this.hideNsfwConfig\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n },\n hideNsfwConfig () {\n return this.mergedConfig.hideNsfw\n },\n ...mapGetters([\n 'mergedConfig'\n ])\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./link-preview.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./link-preview.js\"\nimport __vue_script__ from \"!!babel-loader!./link-preview.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-25194025\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./link-preview.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"link-preview-card\",attrs:{\"href\":_vm.card.url,\"target\":\"_blank\",\"rel\":\"noopener\"}},[(_vm.useImage && _vm.imageLoaded)?_c('div',{staticClass:\"card-image\"},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[(_vm.censored)?_c('span',{staticClass:\"nsfw-alert alert warning\"},[_vm._v(_vm._s(_vm.$t('status.nsfw')))]):_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.card.provider_name)+\"\\n \")]),_vm._v(\" \"),_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.card.title))]),_vm._v(\" \"),(_vm.useDescription)?_c('p',{staticClass:\"card-description\"},[_vm._v(_vm._s(_vm.card.description))]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export default {\n props: [ 'user' ],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4ae39779\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote-follow\"},[_c('form',{attrs:{\"method\":\"POST\",\"action\":_vm.subscribeUrl}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"nickname\"},domProps:{\"value\":_vm.user.screen_name}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"profile\",\"value\":\"\"}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default remote-button\",attrs:{\"click\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.remote_follow'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst AvatarList = {\n props: ['users'],\n computed: {\n slicedUsers () {\n return this.users ? this.users.slice(0, 15) : []\n }\n },\n components: {\n UserAvatar\n },\n methods: {\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default AvatarList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./avatar_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./avatar_list.js\"\nimport __vue_script__ from \"!!babel-loader!./avatar_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4cea5bcf\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./avatar_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"avatars\"},_vm._l((_vm.slicedUsers),function(user){return _c('router-link',{key:user.id,staticClass:\"avatars-item\",attrs:{\"to\":_vm.userProfileLink(user)}},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user}})],1)}),1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n const emojiCurry = suggestEmoji(data.emoji)\n const usersCurry = data.store && suggestUsers(data.store)\n return input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return emojiCurry(input)\n }\n if (firstChar === '@' && usersCurry) {\n return usersCurry(input)\n }\n return []\n }\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // An exact match always wins\n aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n // Prioritize custom emoji a lot\n aScore += a.imageUrl ? 100 : 0\n bScore += b.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n // Sort by length\n aScore -= a.displayText.length\n bScore -= b.displayText.length\n\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n // Keep some persistent values in closure, most importantly for the\n // custom debounce to work. Lodash debounce does not return a promise.\n let suggestions = []\n let previousQuery = ''\n let timeout = null\n let cancelUserSearch = null\n\n const userSearch = (query) => dispatch('searchUsers', { query })\n const debounceUserSearch = (query) => {\n cancelUserSearch && cancelUserSearch()\n return new Promise((resolve, reject) => {\n timeout = setTimeout(() => {\n userSearch(query).then(resolve).catch(reject)\n }, 300)\n cancelUserSearch = () => {\n clearTimeout(timeout)\n resolve([])\n }\n })\n }\n\n return async input => {\n const noPrefix = input.toLowerCase().substr(1)\n if (previousQuery === noPrefix) return suggestions\n\n suggestions = []\n previousQuery = noPrefix\n // Fetch more and wait, don't fetch if there's the 2nd @ because\n // the backend user search can't deal with it.\n // Reference semantics make it so that we get the updated data after\n // the await.\n if (!noPrefix.includes('@')) {\n await debounceUserSearch(noPrefix)\n }\n\n const newSuggestions = state.users.users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, screen_name_ui, name, profile_image_url_original }) => ({\n displayText: screen_name_ui,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n /* eslint-enable camelcase */\n\n suggestions = newSuggestions || []\n return suggestions\n }\n}\n","import Vue from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nexport default Vue.component('tab-switcher', {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: this.$slots.default.findIndex(_ => _.tag)\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.$slots.default.findIndex(slot => this.activeTab === slot.key)\n } else {\n return this.active\n }\n },\n settingsModalVisible () {\n return this.settingsModalState === 'visible'\n },\n ...mapState({\n settingsModalState: state => state.interface.settingsModalState\n })\n },\n beforeUpdate () {\n const currentSlot = this.$slots.default[this.active]\n if (!currentSlot.tag) {\n this.active = this.$slots.default.findIndex(_ => _.tag)\n }\n },\n methods: {\n clickTab (index) {\n return (e) => {\n e.preventDefault()\n this.setTab(index)\n }\n },\n setTab (index) {\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.$slots.default[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n },\n render (h) {\n const tabs = this.$slots.default\n .map((slot, index) => {\n if (!slot.tag) return\n const classesTab = ['tab', 'button-default']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (slot.data.attrs.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n <img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>\n {slot.data.attrs.label ? '' : slot.data.attrs.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.clickTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!slot.data.attrs.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={slot.data.attrs.icon}/>)}\n <span class=\"text\">\n {slot.data.attrs.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.$slots.default.map((slot, index) => {\n if (!slot.tag) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (slot.data.attrs.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{slot.data.attrs.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div ref=\"contents\" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')} v-body-scroll-lock={this.settingsModalVisible}>\n {contents}\n </div>\n </div>\n )\n }\n})\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitByWhitespaceBoundary(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n let result = []\n let currentWord = ''\n for (let i = 0; i < str.length; i++) {\n const currentChar = str[i]\n // Starting a new word\n if (!currentWord) {\n currentWord = currentChar\n continue\n }\n // current character is whitespace while word isn't, or vice versa:\n // add our current word to results, start over the current word.\n if (!!currentChar.trim() !== !!currentWord.trim()) {\n result.push(currentWord)\n currentWord = currentChar\n continue\n }\n currentWord += currentChar\n }\n // Add the last word we were working on\n if (currentWord) {\n result.push(currentWord)\n }\n return result\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitByWhitespaceBoundary,\n replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBoxOpen,\n faStickyNote,\n faSmileBeam\n)\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n if (keyword === '') return list\n\n const keywordLowercase = keyword.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of list) {\n const indexOfKeyword = emoji.displayText.toLowerCase().indexOf(keywordLowercase)\n if (indexOfKeyword > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n orderedEmojiList[indexOfKeyword] = []\n }\n orderedEmojiList[indexOfKeyword].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: () => import('../sticker_picker/sticker_picker.vue'),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref[0].offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom'][0]\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref[0].offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'smile-beam',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'box-open',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./emoji_picker.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_picker.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_picker.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-50bb08b3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-picker panel panel-default panel-body\"},[_c('div',{staticClass:\"heading\"},[_c('span',{staticClass:\"emoji-tabs\"},_vm._l((_vm.emojis),function(group){return _c('span',{key:group.id,staticClass:\"emoji-tabs-item\",class:{\n active: _vm.activeGroupView === group.id,\n disabled: group.emojis.length === 0\n },attrs:{\"title\":group.text},on:{\"click\":function($event){$event.preventDefault();return _vm.highlight(group.id)}}},[_c('FAIcon',{attrs:{\"icon\":group.icon,\"fixed-width\":\"\"}})],1)}),0),_vm._v(\" \"),(_vm.stickerPickerEnabled)?_c('span',{staticClass:\"additional-tabs\"},[_c('span',{staticClass:\"stickers-tab-icon additional-tabs-item\",class:{active: _vm.showingStickers},attrs:{\"title\":_vm.$t('emoji.stickers')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleStickers($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"sticky-note\",\"fixed-width\":\"\"}})],1)]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"emoji-content\",class:{hidden: _vm.showingStickers}},[_c('div',{staticClass:\"emoji-search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keyword),expression:\"keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keyword=$event.target.value}}})]),_vm._v(\" \"),_c('div',{ref:\"emoji-groups\",staticClass:\"emoji-groups\",class:_vm.groupsScrolledClass,on:{\"scroll\":_vm.onScroll}},_vm._l((_vm.emojisView),function(group){return _c('div',{key:group.id,staticClass:\"emoji-group\"},[_c('h6',{ref:'group-' + group.id,refInFor:true,staticClass:\"emoji-group-title\"},[_vm._v(\"\\n \"+_vm._s(group.text)+\"\\n \")]),_vm._v(\" \"),_vm._l((group.emojis),function(emoji){return _c('span',{key:group.id + emoji.displayText,staticClass:\"emoji-item\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onEmoji(emoji)}}},[(!emoji.imageUrl)?_c('span',[_vm._v(_vm._s(emoji.replacement))]):_c('img',{attrs:{\"src\":emoji.imageUrl}})])}),_vm._v(\" \"),_c('span',{ref:'group-end-' + group.id,refInFor:true})],2)}),0),_vm._v(\" \"),_c('div',{staticClass:\"keep-open\"},[_c('Checkbox',{model:{value:(_vm.keepOpen),callback:function ($$v) {_vm.keepOpen=$$v},expression:\"keepOpen\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.keep_open'))+\"\\n \")])],1)]),_vm._v(\" \"),(_vm.showingStickers)?_c('div',{staticClass:\"stickers-content\"},[_c('sticker-picker',{on:{\"uploaded\":_vm.onStickerUploaded,\"upload-failed\":_vm.onStickerUploadFailed}})],1):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n value: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false,\n suggestions: []\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.value && this.caret) {\n const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const 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 textAtCaret: async function (newWord) {\n const firstchar = newWord.charAt(0)\n this.suggestions = []\n if (newWord === firstchar) return\n const matchedSuggestions = await this.suggest(newWord)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord) return\n if (matchedSuggestions.length <= 0) return\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n },\n suggestions (newValue) {\n this.$nextTick(this.resize)\n }\n },\n methods: {\n focusPickerInput () {\n const pickerEl = this.$refs.picker.$el\n if (!pickerEl) return\n const pickerInput = pickerEl.querySelector('input')\n if (pickerInput) pickerInput.focus()\n },\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n this.focusPickerInput()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.elm.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(this.focusPickerInput)\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.value.substring(0, this.caret) || ''\n const after = this.value.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.keepOpen = keepOpen\n this.$emit('input', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.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-1eea518d\\\",\\\"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('button',{staticClass:\"button-unstyled emoji-picker-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('FAIcon',{attrs:{\"icon\":['far', 'smile-beam']}})],1):_vm._e(),_vm._v(\" \"),(_vm.enableEmojiPicker)?_c('EmojiPicker',{ref:\"picker\",staticClass:\"emoji-picker-panel\",class:{ hide: !_vm.showPicker },attrs:{\"enable-sticker-picker\":_vm.enableStickerPicker},on:{\"emoji\":_vm.insert,\"sticker-uploaded\":_vm.onStickerUploaded,\"sticker-upload-failed\":_vm.onStickerUploadFailed}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"autocomplete-panel\",class:{ hide: !_vm.showSuggestions }},[_c('div',{ref:\"panel-body\",staticClass:\"autocomplete-panel-body\"},_vm._l((_vm.suggestions),function(suggestion,index){return _c('div',{key:index,staticClass:\"autocomplete-item\",class:{ highlighted: index === _vm.highlighted },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onClick($event, suggestion)}}},[_c('span',{staticClass:\"image\"},[(suggestion.img)?_c('img',{attrs:{\"src\":suggestion.img}}):_c('span',[_vm._v(_vm._s(suggestion.replacement))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_c('span',{staticClass:\"displayText\"},[_vm._v(_vm._s(suggestion.displayText))]),_vm._v(\" \"),_c('span',{staticClass:\"detailText\"},[_vm._v(_vm._s(suggestion.detailText))])])])}),0)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./scope_selector.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./scope_selector.js\"\nimport __vue_script__ from \"!!babel-loader!./scope_selector.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b1abde80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./scope_selector.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showNothing)?_c('div',{staticClass:\"ScopeSelector\"},[(_vm.showDirect)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('direct')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"envelope\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('private')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock-open\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('public')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"globe\"}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"static/img/nsfw.74818f9.png\";","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../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}.Timeline.-blocked{cursor:progress}.timeline-heading{max-width:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:center;align-items:center}.timeline-heading .loadmore-button,.timeline-heading .loadmore-text{-ms-flex-negative:0;flex-shrink:0}.timeline-heading .loadmore-text{line-height: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!./status.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80571546\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Status{min-width:0}.Status:hover{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden;--_still-image-label-visibility:hidden}.Status.-focused{background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba);--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon)}.Status.-conversation{border-left-width:4px;border-left-style:solid;border-left-color:red;border-left-color:var(--cRed,red)}.Status .gravestone{padding:.75em;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));display:-ms-flexbox;display:flex}.Status .gravestone .deleted-text{margin:.5em 0;-ms-flex-align:center;align-items:center}.Status .status-container{display:-ms-flexbox;display:flex;padding:.75em}.Status .status-container.-repeat{padding-top:0}.Status .pin{padding:.75em .75em 0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}._misclick-prevention .Status{pointer-events:none}._misclick-prevention .Status .attachments{pointer-events:auto;cursor:auto}.Status .left-side{margin-right:.75em}.Status .right-side{-ms-flex:1;flex:1;min-width:0}.Status .usercard{margin-bottom:.75em}.Status .status-username{white-space:nowrap;font-size:14px;overflow:hidden;max-width:85%;font-weight:700;-ms-flex-negative:1;flex-shrink:1;margin-right:.4em;text-overflow:ellipsis}.Status .status-username .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.Status .status-favicon{height:18px;width:18px;margin-right:.4em}.Status .status-heading{margin-bottom:.5em}.Status .heading-name-row{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;line-height:18px}.Status .heading-name-row a{display:inline-block;word-break:break-all}.Status .account-name{min-width:1.6em;margin-right:.4em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-ms-flex:1 1 0px;flex:1 1 0}.Status .heading-left{display:-ms-flexbox;display:flex;min-width:0}.Status .heading-right{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.Status .heading-right .button-unstyled{padding:5px;margin:-5px}.Status .heading-right .button-unstyled:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.Status .heading-right .svg-inline--fa{margin-left:.25em}.Status .timeago{margin-right:.2em}.Status .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 .reply-to-and-accountname{display:-ms-flexbox;display:flex;height:18px;margin-right:.5em;max-width:100%}.Status .reply-to-and-accountname .reply-to-link{white-space:nowrap;word-break:break-word;text-overflow:ellipsis;overflow-x:hidden}.Status .reply-to-no-popover,.Status .reply-to-popover{min-width:0;margin-right:.4em;-ms-flex-negative:0;flex-shrink:0}.Status .reply-to-popover .reply-to:hover:before{content:\\\"\\\";display:block;position:absolute;bottom:0;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .reply-to-popover .faint-link:hover{text-decoration:none}.Status .reply-to-popover.-strikethrough .reply-to:after{content:\\\"\\\";display:block;position:absolute;top:50%;width:100%;border-bottom:1px solid var(--faint);pointer-events:none}.Status .reply-to{position:relative}.Status .reply-to-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Status .replies-separator{margin-left:.4em}.Status .replies{line-height:18px;font-size:12px;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.Status .replies>*{margin-right:.4em}.Status .reply-link{height:17px}.Status .repeat-info{padding:.4em .75em}.Status .repeat-info .repeat-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Status .repeater-avatar{border-radius:var(--avatarAltRadius,10px);margin-left:28px;width:20px;height:20px}.Status .repeater-name{text-overflow:ellipsis;margin-right:0}.Status .repeater-name .emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.Status .status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.Status .status-actions{position:relative;width:100%;display:-ms-flexbox;display:flex;margin-top:.75em}.Status .status-actions>*{max-width:4em;-ms-flex:1;flex:1}.Status .muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Status .muted .mute-thread,.Status .muted .mute-words,.Status .muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Status .muted .mute-words,.Status .muted .status-username{text-overflow:ellipsis;overflow:hidden}.Status .muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Status .muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Status .muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Status .muted .mute-words:before{content:\\\" \\\"}.Status .muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Status .reply-form{padding-top:0;padding-bottom:0}.Status .reply-body{-ms-flex:1;flex:1}.Status .favs-repeated-users{margin-top:.75em}.Status .stats{width:100%;display:-ms-flexbox;display:flex;line-height:1em}.Status .avatar-row{-ms-flex:1;flex:1;overflow:hidden;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.Status .avatar-row:before{content:\\\"\\\";position:absolute;height:100%;width:1px;left:0;background-color:var(--faint,hsla(240,1%,73%,.5))}.Status .stat-count{margin-right:.75em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.Status .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:12px;text-transform:uppercase;position:relative}.Status .stat-count .stat-number{font-weight:bolder;font-size:16px;line-height:1em}.Status .stat-count:hover .stat-title{text-decoration:underline}@media (max-width:800px){.Status .repeater-avatar{margin-left:20px}.Status .avatar:not(.repeater-avatar){width:40px;height:40px}.Status .avatar:not(.repeater-avatar).avatar-compact{width:32px;height:32px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./reply_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2b13c1d7\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReplyButton{display:-ms-flexbox;display:flex}.ReplyButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.ReplyButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ReplyButton .interactive.-active .svg-inline--fa,.ReplyButton .interactive:hover .svg-inline--fa{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./favorite_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7d4fb47f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".FavoriteButton{display:-ms-flexbox;display:flex}.FavoriteButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.FavoriteButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.FavoriteButton .interactive .svg-inline--fa{animation-duration:.6s}.FavoriteButton .interactive.-favorited .svg-inline--fa,.FavoriteButton .interactive:hover .svg-inline--fa{color:orange;color:var(--cOrange,orange)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./react_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b98558e8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ReactButton .reaction-picker-filter{padding:.5em;display:-ms-flexbox;display:flex}.ReactButton .reaction-picker-filter input{-ms-flex:1;flex:1}.ReactButton .reaction-picker-divider{height:1px;width:100%;margin:.5em;background-color:var(--border,#222)}.ReactButton .reaction-picker{width:10em;height:9em;font-size:1.5em;overflow-y:scroll;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5em;text-align:center;-ms-flex-line-pack:start;align-content:flex-start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.ReactButton .reaction-picker .emoji-button{cursor:pointer;-ms-flex-preferred-size:20%;flex-basis:20%;line-height:1.5em;-ms-flex-line-pack:center;align-content:center}.ReactButton .reaction-picker .emoji-button:hover{transform:scale(1.25)}.ReactButton .popover-trigger-button{width:auto}.ReactButton .popover-trigger{padding:10px;margin:-10px}.ReactButton .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"92bf6e22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".popover-trigger-button{display:block}.popover{z-index:8;position:absolute;min-width:0}.popover-default{transition:opacity .3s;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);border-radius:4px;border-radius:var(--btnRadius,4px);background-color:#121a24;background-color:var(--popover,#121a24);color:#b9b9ba;color:var(--popoverText,#b9b9ba);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.dropdown-menu{display:block;padding:.5rem 0;font-size:1rem;text-align:left;list-style:none;max-width:100vw;z-index:10;white-space:nowrap}.dropdown-menu .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #222;border-top:1px solid var(--border,#222)}.dropdown-menu .dropdown-item{line-height:21px;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%;box-sizing:border-box;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon{padding-left:.5rem}.dropdown-menu .dropdown-item-icon svg{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 svg,.dropdown-menu .dropdown-item:hover svg{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, \".RetweetButton{display:-ms-flexbox;display:flex}.RetweetButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./extra_buttons.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0d2c533c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger{position:static;padding:10px;margin:-10px}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce7966a8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tribute-container ul{padding:0}.tribute-container ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.tribute-container img{padding:3px;width:16px;height:16px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.post-status-form{position:relative}.post-status-form .form-bottom{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:.5em;height:32px}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.post-status-form .form-bottom-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding-right:7px;margin-right:7px;max-width:10em}.post-status-form .preview-heading{display:-ms-flexbox;display:flex;padding-left:.5em}.post-status-form .preview-toggle{-ms-flex:1;flex:1;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{margin-left:.2em;font-size:.8em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{font-style:italic;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);padding:.5em;margin:0;line-height:1.4em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-top:5px}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{font-size:26px;line-height:1.1;-ms-flex:1;flex:1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{cursor:not-allowed;color:#666;color:var(--btnDisabledText,#666)}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .media-upload-icon{-ms-flex-order:1;order:1;text-align:left}.post-status-form .emoji-icon{-ms-flex-order:2;order:2;text-align:center}.post-status-form .poll-icon{-ms-flex-order:3;order:3;text-align:right;cursor:pointer}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-right:.2em;margin-bottom:.5em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{-o-object-fit:contain;object-fit:contain;max-height:10em}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{-ms-flex:1;flex:1;width:100%}.post-status-form .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .attachments .media-upload-wrapper{position:relative}.post-status-form .attachments .media-upload-wrapper .attachment{margin:0;padding:0}.post-status-form form{margin:.6em;position:relative}.post-status-form .form-group,.post-status-form form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.post-status-form .form-group{padding:.25em .5em .5em;line-height:24px}.post-status-form .form-post-body,.post-status-form form textarea.form-cw{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:1px}.post-status-form .form-post-body{height:16px;padding-bottom:1.75em;box-sizing:content-box}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{position:absolute;bottom:0;right:0;padding:0;margin:0 .5em}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}.post-status-form .btn{cursor:pointer}.post-status-form .btn[disabled]{cursor:not-allowed}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{position:absolute;z-index:1;width:100%;height:100%;font-size:5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;opacity:.6;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24);border-radius:5px;border-radius:var(--tooltipRadius,5px);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba)}.media-upload-container>video,img.media-upload{line-height:0;max-height:200px;max-width:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_upload.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8585287c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-upload{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scope_selector.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"770eecd8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ScopeSelector .scope{display:inline-block;cursor:pointer;min-width:1.3em;min-height:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_input.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d6bd964a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:relative}.emoji-input.with-picker input{padding-right:30px}.emoji-input .emoji-picker-icon{position:absolute;top:0;right:0;margin:.2em .25em;font-size:16px;cursor:pointer;line-height:24px}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input .autocomplete-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .autocomplete-panel.hide{display:none}.emoji-input .autocomplete-panel-body{margin:0 .5em;border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:1px 2px 4px rgba(0,0,0,.5);box-shadow:var(--popupShadow);min-width:75%;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.emoji-input .autocomplete-item{display:-ms-flexbox;display:flex;cursor:pointer;padding:.2em .4em;border-bottom:1px solid rgba(0,0,0,.4);height:32px}.emoji-input .autocomplete-item .image{width:32px;height:32px;line-height:32px;text-align:center;font-size:32px;margin-right:4px}.emoji-input .autocomplete-item .image img{width:32px;height:32px;-o-object-fit:contain;object-fit:contain}.emoji-input .autocomplete-item .label{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;margin:0 .1em 0 .2em}.emoji-input .autocomplete-item .label .displayText{line-height:1.5}.emoji-input .autocomplete-item .label .detailText{font-size:9px;line-height:9px}.emoji-input .autocomplete-item.highlighted{background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.emoji-input input,.emoji-input textarea{-ms-flex:1 0 auto;flex:1 0 auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bb72e68\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-picker{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;right:0;left:0;margin:0!important;z-index:1;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--lightText:var(--popoverLightText,$fallback--faint);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{padding:7px;line-height:normal}.emoji-picker .too-many-emoji{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.emoji-picker .keep-open-label{padding:0 7px;display:-ms-flexbox;display:flex}.emoji-picker .heading{display:-ms-flexbox;display:flex;height:32px;padding:10px 7px 5px}.emoji-picker .content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-tabs{-ms-flex-positive:1;flex-grow:1}.emoji-picker .emoji-groups{min-height:200px}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:#666;border-left-color:var(--icon,#666);padding-left:7px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{display:block;min-width:0;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-negative:1;flex-shrink:1}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{padding:0 7px;cursor:pointer;font-size:24px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{-ms-flex:1 1 auto;flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{padding:5px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{-ms-flex:1 1 1px;flex:1 1 1px;position:relative;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:5px;-ms-flex-pack:left;justify-content:left}.emoji-picker .emoji-group-title{font-size:12px;width:100%;margin:0}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{width:32px;height:32px;box-sizing:border-box;display:-ms-flexbox;display:flex;font-size:32px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:4px;cursor:pointer}.emoji-picker .emoji-item img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"002629bb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox{position:relative;display:inline-block;min-height:1.2em}.checkbox-indicator{position:relative;padding-left:1.2em}.checkbox-indicator:before{position:absolute;right:0;top:0;display:block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]{display:none}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{content:\\\"\\\\2013\\\";color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox>span{margin-left:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60db0262\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{-ms-flex-item-align:start;align-self:flex-start;padding-top:.25em;padding-left:.1em}.poll-form .poll-option{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{width:1.5em;margin-left:-1.5em;z-index:1}.poll-form .poll-type-expiry{margin-top:.5em;display:-ms-flexbox;display:flex;width:100%}.poll-form .poll-type{margin-right:.75em;-ms-flex:1 1 60%;flex:1 1 60%}.poll-form .poll-type .select{border:none;box-shadow:none;background-color:transparent;padding-right:.75em}.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 .placeholder svg{color:inherit}.attachments .nsfw-placeholder{cursor:pointer}.attachments .nsfw-placeholder.loading{cursor:progress}.attachments .attachment{position:relative;margin-top:.5em;-ms-flex-item-align:start;align-self:flex-start;line-height:0;border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222);overflow:hidden}.attachments .non-gallery.attachment.video{-ms-flex:1 0 40%;flex:1 0 40%}.attachments .non-gallery.attachment .nsfw{height:260px}.attachments .non-gallery.attachment .small{height:120px;-ms-flex-positive:0;flex-grow:0}.attachments .non-gallery.attachment .video{height:260px;display:-ms-flexbox;display:flex}.attachments .non-gallery.attachment video{max-height:100%;-o-object-fit:contain;object-fit:contain}.attachments .fullwidth{-ms-flex-preferred-size:100%;flex-basis:100%}.attachments.video{line-height:0}.attachments .video-container{display:-ms-flexbox;display:flex;max-height:100%}.attachments .video{width:100%;height:100%}.attachments .play-icon{position:absolute;font-size:64px;top:calc(50% - 32px);left:calc(50% - 32px);color:hsla(0,0%,100%,.75);text-shadow:0 0 2px rgba(0,0,0,.4)}.attachments .play-icon:before{margin:0}.attachments.html{-ms-flex-preferred-size:90%;flex-basis:90%;width:100%;display:-ms-flexbox;display:flex}.attachments .hider{position:absolute;right:0;margin:10px;padding:0;z-index:4;border-radius:5px;border-radius:var(--tooltipRadius,5px);text-align:center;width:2em;height:2em;font-size:1.25em;background:hsla(0,0%,90%,.7)}.attachments .hider .svg-inline--fa{color:rgba(0,0,0,.6)}.attachments .hider:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.attachments video{z-index:0}.attachments audio{width:100%}.attachments img.media-upload{line-height:0;max-height:200px;max-width:100%}.attachments .oembed{line-height:1.2em;-ms-flex:1 0 100%;flex:1 0 100%;width:100%;margin-right:15px;display:-ms-flexbox;display:flex}.attachments .oembed img{width:100%}.attachments .oembed .image{-ms-flex:1;flex:1}.attachments .oembed .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.attachments .oembed .text{-ms-flex:2;flex:2;margin:8px;word-break:break-all}.attachments .oembed .text h1{font-size:14px;margin:0}.attachments .image-attachment,.attachments .image-attachment .image{width:100%;height:100%}.attachments .image-attachment.hidden{display:none}.attachments .image-attachment .nsfw{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.attachments .image-attachment img{image-orientation:from-image}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./still-image.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"24ab97e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".still-image{position:relative;line-height:0;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.still-image canvas{position:absolute;top:0;bottom:0;left:0;right:0;height:100%;visibility:var(--_still-image-canvas-visibility,visible)}.still-image canvas,.still-image img{width:100%;-o-object-fit:contain;object-fit:contain}.still-image img{min-height:100%}.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;visibility:var(--_still-image-label-visibility,visible)}.still-image.animated:hover canvas{display:none}.still-image.animated:hover:before{visibility:var(--_still-image-label-visibility,hidden)}.still-image.animated img{visibility:var(--_still-image-img-visibility,hidden)}.still-image.animated:hover img{visibility:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_content.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af4a4f5c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StatusContent{-ms-flex:1;flex:1;min-width:0}.StatusContent .status-content-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.StatusContent .tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.StatusContent .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}.StatusContent .tall-status-hider{position:absolute;height:70px;margin-top:150px;line-height:110px;z-index:2}.StatusContent .cw-status-hider,.StatusContent .status-unhider,.StatusContent .tall-status-hider{display:inline-block;word-break:break-all;width:100%;text-align:center}.StatusContent .cw-status-hider svg,.StatusContent .status-unhider svg{color:inherit}.StatusContent img,.StatusContent video{max-width:100%;max-height:400px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.StatusContent img.emoji,.StatusContent video.emoji{width:32px;height:32px}.StatusContent .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}.StatusContent .summary{font-style:italic;padding-bottom:.5em}.StatusContent .tall-subject{position:relative}.StatusContent .tall-subject .summary{max-height:2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.StatusContent .tall-subject-hider{display:inline-block;word-break:break-all;width:100%;text-align:center;padding-bottom:.5em}.StatusContent .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}.StatusContent .status-content blockquote{margin:.2em 0 .2em 2em;font-style:italic}.StatusContent .status-content pre{overflow:auto}.StatusContent .status-content code,.StatusContent .status-content kbd,.StatusContent .status-content pre,.StatusContent .status-content samp,.StatusContent .status-content var{font-family:var(--postCodeFont,monospace)}.StatusContent .status-content p{margin:0 0 1em}.StatusContent .status-content p:last-child{margin:0}.StatusContent .status-content h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.StatusContent .status-content h2{font-size:1.1em;margin:1em 0}.StatusContent .status-content h3{font-size:1em;margin:1.2em 0}.StatusContent .status-content h4{margin:1.1em 0}.StatusContent .status-content.single-line{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;height:1.4em}.greentext{color:#0fa00f;color:var(--postGreentext,#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!./poll.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1a8b173f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll .votes{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;position:relative;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.poll .option-result-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.1em .25em;z-index:1;word-break:break-word}.poll .result-percentage{width:3.5em;-ms-flex-negative:0;flex-shrink:0}.poll .result-fill{height:100%;position:absolute;color:#b9b9ba;color:var(--pollText,#b9b9ba);background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);top:0;left:0;transition:width .5s}.poll .option-vote{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll input{width:3.5em}.poll .footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll.loading *{cursor:progress}.poll .poll-vote-button{padding:0 .5em;margin-right:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../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 .card-content{max-height:100%;margin:.5em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.link-preview-card .card-host{font-size:12px}.link-preview-card .card-description{margin:.5em 0 0;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.2em;max-height:calc(1.2em * 3 - 1px)}.link-preview-card .nsfw-alert{margin:2em 0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0060b6a4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-card{position:relative}.user-card:hover .Avatar{--_still-image-img-visibility:visible;--_still-image-canvas-visibility:hidden}.user-card .panel-heading{padding:.5em 0;text-align:center;box-shadow:none;background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;position:relative}.user-card .panel-body{word-wrap:break-word;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit;position:relative}.user-card .background-image{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude;background-size:cover;-webkit-mask-size:100% 60%;mask-size:100% 60%;border-top-left-radius:calc(var(--panelRadius) - 1px);border-top-right-radius:calc(var(--panelRadius) - 1px);background-color:var(--profileBg)}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card 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{--_avatarShadowBox:var(--avatarShadow);--_avatarShadowFilter:var(--avatarShadowFilter);--_avatarShadowInset:var(--avatarShadowInset);-ms-flex:1 0 100%;flex:1 0 100%;width:56px;height:56px;-o-object-fit:cover;object-fit:cover}.user-info-avatar-link{position:relative;cursor:pointer}.user-info-avatar-link-overlay{position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border-radius:4px;border-radius:var(--avatarRadius,4px);opacity:0;transition:opacity .2s ease}.user-info-avatar-link-overlay svg{color:#fff}.user-info-avatar-link:hover .user-info-avatar-link-overlay{opacity:1}.user-info .external-link-button{cursor:pointer;width:2.5em;text-align:center;margin:-.5em 0;padding:.5em 0}.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .user-summary{display:block;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1 1 0px;flex:1 1 0;z-index:1}.user-info .user-summary 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 .lock-icon{margin-left:.5em}.user-info .bottom-line .user-screen-name{min-width:1px;-ms-flex:0 1 auto;flex:0 1 auto;text-overflow:ellipsis;overflow:hidden;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line .dailyAvg{min-width:1px;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1em;font-size:.7em;color:#b9b9ba;color:var(--text,#b9b9ba)}.user-info .bottom-line .user-role{-ms-flex:none;flex:none;color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);background-color:#182230;background-color:var(--alertNeutral,#182230)}.user-info .user-meta{margin-bottom:.15em;display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;font-size:14px;line-height:22px;-ms-flex-wrap:wrap;flex-wrap:wrap}.user-info .user-meta .following{-ms-flex:1 0 auto;flex:1 0 auto;margin:0;margin-bottom:.25em;text-align:left}.user-info .user-meta .highlighter{-ms-flex:0 1 auto;flex:0 1 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5em;-ms-flex-item-align:start;align-self:start}.user-info .user-meta .highlighter .userHighlightCl{padding:2px 10px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel,.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 svg{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{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;width:48px;height:48px;box-shadow:var(--_avatarShadowBox);border-radius:4px;border-radius:var(--avatarRadius,4px)}.Avatar img{width:100%;height:100%}.Avatar.better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar.animated:before{display:none}.Avatar.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4852bbb4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".remote-follow{max-width:220px}.remote-follow .remote-button{width:100%;min-height:28px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./moderation_tools.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0672fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".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:\\\"\\\\2713\\\"}.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, \".AccountActions button.dropdown-item{margin-left:0}.AccountActions .ellipsis-button{cursor:pointer;width:2.5em;margin:-.5em 0;padding:.5em 0;text-align:center}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./avatar_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7096a06e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatars{display:-ms-flexbox;display:flex;margin:0;padding:0;-ms-flex-wrap:wrap;flex-wrap:wrap;height:24px}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"14cff5b4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-popover.popover{font-size:1rem;min-width:15em;max-width:95%;border-color:#222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow)}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_list_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50540f22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-list-popover{padding:.5em}.user-list-popover .user-list-row{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.user-list-popover .user-list-row .user-list-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{width:1em;height:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:9px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_reactions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cf35b50a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-reactions{display:-ms-flexbox;display:flex;margin-top:.25em;-ms-flex-wrap:wrap;flex-wrap:wrap}.emoji-reaction{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box}.emoji-reaction .reaction-emoji{width:1.25em;margin-right:.25em}.emoji-reaction:focus{outline:none}.emoji-reaction.not-clickable{cursor:default}.emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.emoji-reaction-expand{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.emoji-reaction-expand:hover{text-decoration:underline}.picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./conversation.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"93498d0a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Conversation .conversation-status{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:var(--border,#222);border-radius:0}.Conversation.-expanded .conversation-status:last-child{border-bottom:none;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_menu.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b449a0b2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineMenu{-ms-flex-negative:1;flex-shrink:1;margin-right:auto;min-width:0;width:24rem}.TimelineMenu .timeline-menu-popover-wrap{overflow:hidden;margin-top:.6rem;padding:0 15px 15px}.TimelineMenu .timeline-menu-popover{width:24rem;max-width:100vw;margin:0;font-size:1rem;transform:translateY(-100%);transition:transform .1s}.TimelineMenu .panel:after,.TimelineMenu .timeline-menu-popover{border-top-right-radius:0;border-top-left-radius:0}.TimelineMenu.open .timeline-menu-popover{transform:translateY(0)}.TimelineMenu .timeline-menu-title{margin:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;display:-ms-flexbox;display:flex}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;-ms-flex-positive:1;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.TimelineMenu ul{list-style:none;margin:0;padding:0}.TimelineMenu li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.TimelineMenu li:last-child a{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.TimelineMenu li:last-child{border:none}.TimelineMenu a{display:block;padding:.6em .65em}.TimelineMenu a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.TimelineMenu a.router-link-active,.TimelineMenu a:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.TimelineMenu a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.TimelineMenu a.router-link-active:hover{text-decoration:underline}.TimelineMenu a svg{margin-right:.4em;margin-left:-.2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./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;--link:var(--faintLink);--text:var(--faint)}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .follow-request-accept{cursor:pointer}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject{cursor:pointer}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{padding:.5em 0;overflow-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{-ms-flex:1;flex:1}.notification time{white-space:nowrap}.notification .notification-right{-ms-flex:1;flex:1;padding-left:.8em;min-width:0}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .emoji-reaction-emoji{font-size:16px}.notification .notification-details{min-width:0;word-wrap:break-word;line-height:18px;position:relative;overflow:hidden;width:100%;-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between}.notification .notification-details .name-and-action{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .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 .status-content{margin:0;max-height:300px}.notification .notification-details h1{word-break:break-all;margin:0 0 .3em;padding:0;font-size:1em;line-height:20px}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0;margin-top:0;margin-bottom:.3em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notification.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"41041624\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Notification.-muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.Notification.-muted .mute-thread,.Notification.-muted .mute-words,.Notification.-muted .status-username{word-wrap:normal;word-break:normal;white-space:nowrap}.Notification.-muted .mute-words,.Notification.-muted .status-username{text-overflow:ellipsis;overflow:hidden}.Notification.-muted .status-username{font-weight:400;-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em;font-size:smaller}.Notification.-muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.Notification.-muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.Notification.-muted .mute-words:before{content:\\\" \\\"}.Notification.-muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;margin-left:auto;display:block}.Notification .type-icon{margin:0 .1em}.Notification.-type--repeat .type-icon{color:#0fa00f;color:var(--cGreen,#0fa00f)}.Notification.-type--follow-request .type-icon,.Notification.-type--follow .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}.Notification.-type--like .type-icon{color:orange;color:var(--cOrange,orange)}.Notification.-type--move .type-icon{color:#0095ff;color:var(--cBlue,#0095ff)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3a6f72a2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list{min-height:25em;margin-bottom:0}.emtpy-chat-list-alert{padding:3em;font-size:1.2em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;color:#b9b9ba;color:var(--faint,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list_item.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33c6b65e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list-item{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:.75em;height:5em;overflow:hidden;box-sizing:border-box;cursor:pointer}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{width:100%;box-sizing:border-box;overflow:hidden;word-wrap:break-word}.chat-list-item .heading{width:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:justify;justify-content:space-between;line-height:1em}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-ms-flex-negative:1;flex-shrink:1;line-height:1.4em}.chat-list-item .chat-preview{display:-ms-inline-flexbox;display:inline-flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:.35em 0;color:#b9b9ba;color:var(--faint,#b9b9ba);width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);text-decoration:none;pointer-events:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .StatusContent 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 .Avatar{width:23px;height:23px;margin-right:.5em;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-title .Avatar.animated:before{display:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_new.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ca48b176\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-new .input-wrap{display:-ms-flexbox;display:flex;margin:.7em .5em}.chat-new .input-wrap input{width:100%}.chat-new .search-icon{margin-right:.3em}.chat-new .member-list{padding-bottom:.7rem}.chat-new .basic-user-card:hover{cursor:pointer;background-color:var(--selectedPost,#151e2a)}.chat-new .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./basic_user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"119ab786\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".basic-user-card{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;margin:0;padding:.6em 1em}.basic-user-card-collapsed-content{margin-left:.7em;text-align:left;-ms-flex:1;flex:1;min-width:0}.basic-user-card-user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.basic-user-card-screen-name,.basic-user-card-user-name-value{display:inline-block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.basic-user-card-expanded-content{-ms-flex:1;flex:1;margin-left:.7em;min-width:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33745640\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".list-item:not(:last-child){border-bottom:1px solid;border-bottom-color:#222;border-bottom-color:var(--border,#222)}.list-empty-content{text-align:center;padding:10px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0f673926\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-view{display:-ms-flexbox;display:flex;height:calc(100vh - 60px);width:100%}.chat-view .chat-title{height:28px}.chat-view .chat-view-inner{height:auto;margin:.5em .5em 0}.chat-view .chat-view-body,.chat-view .chat-view-inner{width:100%;overflow:visible;display:-ms-flexbox;display:flex}.chat-view .chat-view-body{background-color:var(--chatBg,#121a24);-ms-flex-direction:column;flex-direction:column;min-height:100%;margin:0;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0}.chat-view .chat-view-body:after{border-radius:0}.chat-view .scrollable-message-list{padding:0 .8em;height:100%;overflow-y:scroll;overflow-x:hidden;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:0}.chat-view .chat-view-heading{-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;top:50px;display:-ms-flexbox;display:flex;z-index:2;position:-webkit-sticky;position:sticky;overflow:hidden}.chat-view .go-back-button{cursor:pointer;width:28px;text-align:center;padding:.6em;margin:-.6em .6em -.6em -.6em}.chat-view .jump-to-bottom-button{width:2.5em;height:2.5em;border-radius:100%;position:absolute;right:1.3em;top:-3.2em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 1px 1px rgba(0,0,0,.3),0 2px 4px rgba(0,0,0,.3);z-index:10;transition:all .35s;transition-timing-function:cubic-bezier(0,1,.5,1);opacity:0;visibility:hidden;cursor:pointer}.chat-view .jump-to-bottom-button.visible{opacity:1;visibility:visible}.chat-view .jump-to-bottom-button i{font-size:1em;color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-view .jump-to-bottom-button .unread-message-count{font-size:.8em;left:50%;margin-top:-1rem;padding:.1em;border-radius:50px;position:absolute}.chat-view .jump-to-bottom-button .chat-loading-error{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:end;align-items:flex-end;height:100%}.chat-view .jump-to-bottom-button .chat-loading-error .error{width:100%}@media (max-width:800px){.chat-view{height:100%;overflow:hidden}.chat-view .chat-view-inner{overflow:hidden;height:100%;margin-top:0;margin-left:0;margin-right:0}.chat-view .chat-view-body{display:-ms-flexbox;display:flex;min-height:auto;overflow:hidden;height:100%;margin:0;border-radius:0}.chat-view .chat-view-heading{box-sizing:border-box;position:static;z-index:9999;top:0;margin-top:0;border-radius:0;background:linear-gradient(0deg,var(--panel),var(--panel)),linear-gradient(0deg,var(--bg),var(--bg));height:50px}.chat-view .scrollable-message-list{display:unset;overflow-y:scroll;overflow-x:hidden;-webkit-overflow-scrolling:touch}.chat-view .footer{position:-webkit-sticky;position:sticky;bottom:auto}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_message.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"20b81e5e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-message-wrapper.hovered-message-chain .animated.Avatar canvas{display:none}.chat-message-wrapper.hovered-message-chain .animated.Avatar img{visibility:visible}.chat-message-wrapper .chat-message-menu{transition:opacity .1s;opacity:0;position:absolute;top:-.8em}.chat-message-wrapper .chat-message-menu button{padding-top:.2em;padding-bottom:.2em}.chat-message-wrapper .menu-icon{cursor:pointer}.chat-message-wrapper .menu-icon:hover,.extra-button-popover.open .chat-message-wrapper .menu-icon{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-message-wrapper .popover{width:12em}.chat-message-wrapper .chat-message{display:-ms-flexbox;display:flex;padding-bottom:.5em}.chat-message-wrapper .avatar-wrapper{margin-right:.72em;width:32px}.chat-message-wrapper .attachments,.chat-message-wrapper .link-preview{margin-bottom:1em}.chat-message-wrapper .chat-message-inner{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;max-width:80%;min-width:10em;width:100%}.chat-message-wrapper .chat-message-inner.with-media{width:100%}.chat-message-wrapper .chat-message-inner.with-media .gallery-row{overflow:hidden}.chat-message-wrapper .chat-message-inner.with-media .status{width:100%}.chat-message-wrapper .status{border-radius:10px;border-radius:var(--chatMessageRadius,10px);display:-ms-flexbox;display:flex;padding:.75em}.chat-message-wrapper .created-at{position:relative;float:right;font-size:.8em;margin:-1em 0 -.5em;font-style:italic;opacity:.8}.chat-message-wrapper .without-attachment .status-content:after{margin-right:5.4em;content:\\\" \\\";display:inline-block}.chat-message-wrapper .pending .created-at,.chat-message-wrapper .pending .status-content.media-body{color:var(--faint)}.chat-message-wrapper .error .created-at,.chat-message-wrapper .error .status-content.media-body{color:red;color:var(--badgeNotification,red)}.chat-message-wrapper .incoming a{color:var(--chatMessageIncomingLink,#d8a070)}.chat-message-wrapper .incoming .status{background-color:var(--chatMessageIncomingBg,#121a24);border:1px solid var(--chatMessageIncomingBorder,--border)}.chat-message-wrapper .incoming .created-at a,.chat-message-wrapper .incoming .status{color:var(--chatMessageIncomingText,#b9b9ba)}.chat-message-wrapper .incoming .chat-message-menu{left:.4rem}.chat-message-wrapper .outgoing{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-line-pack:end;align-content:end;-ms-flex-pack:end;justify-content:flex-end}.chat-message-wrapper .outgoing a{color:var(--chatMessageOutgoingLink,#d8a070)}.chat-message-wrapper .outgoing .status{color:var(--chatMessageOutgoingText,#b9b9ba);background-color:var(--chatMessageOutgoingBg,#151e2a);border:1px solid var(--chatMessageOutgoingBorder,--lightBg)}.chat-message-wrapper .outgoing .chat-message-inner{-ms-flex-align:end;align-items:flex-end}.chat-message-wrapper .outgoing .chat-message-menu{right:.4rem}.chat-message-wrapper .visible{opacity:1}.chat-message-date-separator{text-align:center;margin:1.4em 0;font-size:.9em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#b9b9ba;color:var(--faintedText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_profile.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7563b46e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-profile{-ms-flex:2;flex:2;-ms-flex-preferred-size:500px;flex-basis:500px}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-profile .user-profile-fields img.emoji{width:18px;height:18px}.user-profile .user-profile-fields .user-profile-field{display:-ms-flexbox;display:flex;margin:.25em;border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{-ms-flex:0 1 30%;flex:0 1 30%;font-weight:500;text-align:right;color:var(--lightText);min-width:120px;border-right:1px solid var(--border,#222)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{-ms-flex:1 1 70%;flex:1 1 70%;color:var(--text);margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{line-height:18px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:.5em 1.5em;box-sizing:border-box}.user-profile .userlist-placeholder{-ms-flex-align:middle;align-items:middle;padding:2em}.user-profile .timeline-heading,.user-profile .userlist-placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.user-profile .timeline-heading .alert,.user-profile .timeline-heading .loadmore-button{-ms-flex:1;flex:1}.user-profile .timeline-heading .loadmore-button{height:28px;margin:10px .6em}.user-profile .timeline-heading .loadmore-text,.user-profile .timeline-heading .title{display:none}.user-profile-placeholder .panel-body{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:middle;align-items:middle;padding:7em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ae955a70\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-card-content-container{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5em}.follow-card-follow-button{margin-top:.5em;margin-left:auto;width:10em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"354d66d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;-ms-flex-pack:center;justify-content:center;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}}.search-result{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.search-result-footer{border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;background-color:#182230;background-color:var(--panel,#182230)}.search-input-container{padding:.8rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.search-input-container .search-input{width:100%;line-height:1.125rem;font-size:1rem;padding:.5rem;box-sizing:border-box}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.trend .hashtag{-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{-ms-flex:0 0 auto;flex:0 0 auto;width:2rem;font-size:1.5rem;line-height:2.25rem;font-weight:500;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./registration.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"16815f76\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".registration-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:.6em}.registration-form .container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.registration-form .terms-of-service{-ms-flex:0 1 50%;flex:0 1 50%;margin:.8em}.registration-form .text-fields{margin-top:.6em;-ms-flex:1 0;flex:1 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em 0;line-height:24px;margin-bottom:1em}.registration-form .form-group--error{animation-name:shakeError;animation-duration:.6s;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:12px}.registration-form .form-error ul{list-style:none;padding:0 0 0 5px;margin-top:0}.registration-form .form-error ul li:before{content:\\\"\\\\2022 \\\"}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{max-width:350px;margin-bottom:.4em}.registration-form .btn{margin-top:.6em;height:28px}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./password_reset.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1ef4fd93\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".password-reset-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;margin:.6em}.password-reset-form .container{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;-ms-flex-direction:column;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-bottom:1em;padding:.3em 0;line-height:24px}.password-reset-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}.password-reset-form .alert{padding:.5em;margin:.3em 0 1em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .dismiss{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_request_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ad510f10\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-request-card-content-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.follow-request-card-content-container button{margin-top:.5em;margin-right:.5em;-ms-flex:1 1;flex:1 1;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./login_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42704024\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".login-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.6em}.login-form .btn{min-height:28px;width:10em}.login-form .register{-ms-flex:1 1;flex:1 1}.login-form .login-bottom{margin-top:1em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.login-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em .5em .6em;line-height:24px}.login-form .form-bottom{display:-ms-flexbox;display:flex;padding:.5em;height:32px}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.login-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./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{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, \".staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mrf_transparency_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72647543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mrf-section{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_user_resolver.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"67a8aa3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js?minimize!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../node_modules/sass-loader/lib/loader.js!./App.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c806d03\", content, true, {});","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#app{min-height:100vh;max-width:100%;overflow:hidden}.app-bg-wrapper{position:fixed;z-index:-1;height:100%;left:0;right:-20px;background-size:cover;background-repeat:no-repeat;background-color:var(--wallpaper);background-image:var(--body-background-image);background-position:50% 50px}i[class^=icon-]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}h4{margin:0}#content{box-sizing:border-box;padding-top:60px;margin:auto;min-height:100vh;max-width:980px;-ms-flex-line-pack:start;align-content:flex-start}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15))}.text-center{text-align:center}html{font-size:14px}body{overscroll-behavior-y:none;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;color:#b9b9ba;color:var(--text,#b9b9ba);max-width:100vw;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.hidden{display:none}a{text-decoration:none;color:#d8a070;color:var(--link,#d8a070)}.button-default{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);cursor:pointer;box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);font-size:14px;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif)}.button-default,.button-default .svg-inline--fa,.button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}.button-default::-moz-focus-inner{border:none}.button-default:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}.button-default:active{box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow);background-color:#182230;background-color:var(--btnPressed,#182230)}.button-default:active,.button-default:active i,.button-default:active svg{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}.button-default:disabled{cursor:not-allowed;background-color:#182230;background-color:var(--btnDisabled,#182230)}.button-default:disabled,.button-default:disabled i,.button-default:disabled svg{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}.button-default.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}.button-default.toggled,.button-default.toggled i,.button-default.toggled svg{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}.button-default.danger{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba);background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5))}.button-unstyled{background:none;border:none;outline:none;display:inline;text-align:initial;font-size:100%;font-family:inherit;padding:0;line-height:unset;cursor:pointer;box-sizing:content-box;color:inherit}.button-unstyled.-link{color:#d8a070;color:var(--link,#d8a070)}.button-unstyled.-fullwidth{width:100%}.button-unstyled.-hover-highlight:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.input,.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 .select-down-icon,.select .select-down-icon,input .select-down-icon,textarea .select-down-icon{position:absolute;top:0;bottom:0;right:5px;height:100%;color:#b9b9ba;color:var(--inputText,#b9b9ba);line-height:28px;z-index:0;pointer-events:none}.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:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input.resize-height,.select.resize-height,input.resize-height,textarea.resize-height{resize:vertical}option{color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.hide-number-spinner{-moz-appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{opacity:0;display:none}.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.btn-block{display:block;width:100%}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group button{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.auto-size,main-router{-ms-flex:1;flex:1}.status.compact{color:rgba(0,0,0,.42);font-weight:300}.status.compact p{margin:0;font-size:.8em}.panel{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:column;flex-direction:column;margin:.5em;background-color:#121a24;background-color:var(--bg,#121a24)}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{content:\\\"\\\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow)}.panel-body:empty:before{content:\\\"\\\\AF\\\\\\\\_(\\\\30C4)_/\\\\AF\\\";display:block;margin:1em;text-align:center}.panel-heading{display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;background-size:cover;padding:.6em;text-align:left;line-height:28px;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230);-ms-flex-align:baseline;align-items:baseline;box-shadow:var(--panelHeaderShadow)}.panel-heading .title{-ms-flex:1 0 auto;flex:1 0 auto;font-size:1.3em}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading .alert{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.panel-heading .alert,.panel-heading .button-default{line-height:21px;min-height:0;box-sizing:border-box;margin:0;margin-left:.5em;min-width:1px;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.panel-heading .button-default{-ms-flex-negative:0;flex-shrink:0}.panel-heading .button-default,.panel-heading .button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading .button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading .button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer{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 .-link,.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);box-sizing:border-box}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.main{-ms-flex-preferred-size:50%;flex-basis:50%;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.sidebar-bounds{-ms-flex:0;flex:0;-ms-flex-preferred-size:35%;flex-basis:35%}.sidebar-flexer{-ms-flex:1;flex:1;-ms-flex-preferred-size:345px;flex-basis:345px;width:365px}.mobile-shown{display:none}@media (min-width:800px){body{overflow-y:scroll}.sidebar-bounds{overflow:hidden;max-height:100vh;width:345px;position:fixed;margin-top:-10px}.sidebar-bounds .sidebar-scroller{height:96vh;width:365px;padding-top:10px;padding-right:50px;overflow-x:hidden;overflow-y:scroll}.sidebar-bounds .sidebar{width:345px}.sidebar-flexer{max-height:96vh;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}}.badge{box-sizing:border-box;display:inline-block;border-radius:99px;max-width:10em;min-width:1.7em;height:1.3em;padding:.15em;vertical-align:middle;font-weight:400;font-style:normal;font-size:.9em;line-height:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{margin:.35em;padding:.25em;border-radius:5px;border-radius:var(--tooltipRadius,5px);min-height:28px;line-height:28px}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{padding:.5em;border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px)}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{position:absolute;top:0;right:0;padding:.5em;color:inherit}.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding.svg-inline--fa{padding:0 .3em}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}@media (max-width:800px){.mobile-hidden{display:none}.panel-switcher{display:-ms-flexbox;display:flex}.container{padding:0}.panel{margin:.5em 0}.menu-button{display:block;margin-right:.8em}.main{margin-bottom:7em}}.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.button-default{min-height:28px}.animate-spin{animation:spin 2s infinite linear;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.new-status-notification{position:relative;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)}.chat-layout{height:100%}.chat-layout,.chat-layout body{overflow:hidden}@media (max-width:800px){.chat-layout body{height:100%}.chat-layout #app{height:100%;overflow:hidden;min-height:auto}.chat-layout #app_bg_wrapper{overflow:hidden}.chat-layout .main{overflow:hidden;height:100%}.chat-layout #content{padding-top:0;height:100%;overflow:visible}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"04d46dee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-panel .signed-in{overflow:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./nav_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b030addc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NavPanel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{position:relative;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.NavPanel li:first-child 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)}.NavPanel 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)}.NavPanel li:last-child{border:none}.NavPanel a{display:block;box-sizing:border-box;-ms-flex-align:stretch;align-items:stretch;height:3.5em;line-height:3.5em;padding:0 1em}.NavPanel a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavPanel a.router-link-active,.NavPanel 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)}.NavPanel a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.NavPanel a.router-link-active:hover{text-decoration:underline}.NavPanel .fa-scale-110{margin-right:.8em}.NavPanel .badge{position:absolute;right:.6rem;top:1.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f18dd03\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".who-to-follow *{vertical-align:middle}.who-to-follow img{width:32px;height:32px}.who-to-follow{padding:0 1em;margin:0}.who-to-follow-items{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:1em 0}.who-to-follow-more{padding:0;margin:1em 0;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7272e6fe\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".settings-modal{overflow:hidden}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(((100vh - 100%) / 2 + 100%) - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}}.settings-modal .settings-modal-panel{overflow:hidden;transition:transform;transition-timing-function:ease-in-out;transition-duration:.3s;width:1000px;max-width:90vw;height:90vh}@media (max-width:800px){.settings-modal .settings-modal-panel{max-width:100vw;height:100%}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:28px;min-width:10em;padding:0 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"f7395e92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view{z-index:1000;position:fixed;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow:auto;pointer-events:none;animation-duration:.2s;animation-name:modal-background-fadein;opacity:0}.modal-view>*{pointer-events:auto}.modal-view.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5)}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel_loading.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1c82888b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".panel-loading{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:2em;color:#b9b9ba;color:var(--text,#b9b9ba)}.panel-loading .loading-text svg{line-height:0;vertical-align:middle;color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./async_component_error.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2970b266\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".async-component-error{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"23b00cfc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.media-modal-view{z-index:1001}.modal-view.media-modal-view .modal-view-button-arrow{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover{outline:none;box-shadow:none}.modal-view.media-modal-view .modal-view-button-arrow:hover{opacity:1}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image;animation:.1s cubic-bezier(.7,0,1,.6) media-fadein}.modal-view-button-arrow{position:absolute;display:block;top:50%;margin-top:-50px;width:70px;height:100px;border:0;padding:0;opacity:0;box-shadow:none;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:visible;cursor:pointer;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.modal-view-button-arrow .arrow-icon{position:absolute;top:35px;height:30px;width:32px;font-size:14px;line-height:30px;color:#fff;text-align:center;background-color:rgba(0,0,0,.3)}.modal-view-button-arrow--prev{left:0}.modal-view-button-arrow--prev .arrow-icon{left:6px}.modal-view-button-arrow--next{right:0}.modal-view-button-arrow--next .arrow-icon{right:6px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side_drawer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34992fba\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".side-drawer-container{position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;transition-duration:0s;transition-property:transform}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transition-delay:.35s;transform:translate(-100%)}.side-drawer-darken{top:0;left:0;width:100vw;height:100vh;position:fixed;z-index:-1;transition:.35s;transition-property:background-color;background-color:rgba(0,0,0,.5)}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{-ms-flex:1 1 100%;flex:1 1 100%}.side-drawer{overflow-x:hidden;transition-timing-function:cubic-bezier(0,1,.5,1);transition:.35s;transition-property:transform;margin:0 0 0 -100px;padding:0 0 1em 100px;width:80%;max-width:20em;-ms-flex:0 0 80%;flex:0 0 80%;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.side-drawer .badge{position:absolute;right:.7rem;top: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)}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_post_status_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f8eca07\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".new-status-button{width:5em;height:5em;border-radius:100%;position:fixed;bottom:1.5em;right:1.5em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);z-index:10;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1)}.new-status-button.hidden{transform:translateY(150%)}.new-status-button svg{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button{display:none}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_nav.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1e0fbcf8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobileNav .mobile-nav{display:-ms-grid;display:grid;line-height:50px;height:50px;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto;grid-template-columns:2fr auto;width:100%;position:fixed;box-sizing:border-box}.MobileNav .mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.MobileNav .mobile-nav-button{display:inline-block;text-align:center;padding:0 1em;position:relative;cursor:pointer}.MobileNav .site-name{padding:0 .3em;display:inline-block}.MobileNav .item{display:-ms-flexbox;display:flex}.MobileNav .alert-dot{border-radius:100%;height:8px;width:8px;position:absolute;left:calc(50% - 4px);top:calc(50% - 4px);margin-left:6px;margin-top:-6px;background-color:red;background-color:var(--badgeNotification,red)}.MobileNav .mobile-notifications-drawer{width:100%;height:100vh;overflow-x:hidden;position:fixed;top:0;left:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);transition-property:transform;transition-duration:.25s;transform:translateX(0);z-index:1001;-webkit-overflow-scrolling:touch}.MobileNav .mobile-notifications-drawer.closed{transform:translateX(100%)}.MobileNav .mobile-notifications-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;z-index:1;width:100%;height:50px;line-height:50px;position:absolute;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .mobile-notifications{margin-top:50px;width:100vw;height:calc(100vh - 50px);overflow-x:hidden;overflow-y:scroll;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.MobileNav .mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"385f563e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DesktopNav{height:50px;width:100%;position:fixed}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{display:-ms-grid;display:grid;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto 2fr;grid-template-columns:2fr auto 2fr;grid-template-areas:\\\"sitename logo actions\\\";box-sizing:border-box;padding:0 1.2em;margin:auto;max-width:980px}.DesktopNav.-logoLeft{-ms-grid-columns:auto 2fr 2fr;grid-template-columns:auto 2fr 2fr;grid-template-areas:\\\"logo sitename actions\\\"}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;background-color:#182230;background-color:var(--topBarText,#182230);position:absolute;top:0;bottom:0;left:0;right:0}.DesktopNav .logo img{display:inline-block;height:50px}.DesktopNav .nav-icon{margin-left:.2em;width:2em;height:100%;text-align:center}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.DesktopNav .item.right{-ms-flex-pack:end;justify-content:flex-end;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search_bar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ea9aafc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchBar{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;vertical-align:baseline;-ms-flex-pack:end;justify-content:flex-end}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{-ms-flex:1 0 auto;flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_reporting_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10c04f96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-reporting-panel{width:90vw;max-width:700px;min-height:20vh;max-height:80vh}.user-reporting-panel .panel-heading .title{text-align:center;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-reporting-panel .panel-body{display:-ms-flexbox;display:flex;-ms-flex-direction:column-reverse;flex-direction:column-reverse;border-top:1px solid;border-color:#222;border-color:var(--border,#222);overflow:hidden}.user-reporting-panel-left{padding:1.1em .7em .7em;line-height:1.4em;box-sizing:border-box}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:44px;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{margin:1em 0 0;line-height:1.3em}.user-reporting-panel-right{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.user-reporting-panel-sitem>.Status{-ms-flex:1;flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{-ms-flex-direction:row;flex-direction:row}.user-reporting-panel-left{width:50%;max-width:320px;border-right:1px solid;border-color:#222;border-color:var(--border,#222);padding:1.1em}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{width:50%;-ms-flex:1 1 auto;flex:1 1 auto;margin-bottom:12px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7628c2ae\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.post-form-modal-view{-ms-flex-align:start;align-items:flex-start}.post-form-modal-panel{-ms-flex-negative:0;flex-shrink:0;margin-top:25%;margin-bottom:2em;width:100%;max-width:700px}@media (orientation:landscape){.post-form-modal-panel{margin-top:8%}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./global_notice_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cdffaf96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".global-notice-list{position:fixed;top:50px;width:100%;pointer-events:none;z-index:1001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.global-notice-list .global-notice{pointer-events:auto;text-align:center;width:40em;max-width:calc(100% - 3em);display:-ms-flexbox;display:flex;padding-left:1.5em;line-height:2em}.global-notice-list .global-notice .notice-message{-ms-flex:1 1 100%;flex:1 1 100%}.global-notice-list .global-notice i{-ms-flex:0 0;flex:0 0;width:1.5em;cursor:pointer}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}\", \"\"]);\n\n// exports\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","import { set, delete as del } from 'vue'\n\nconst defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n mobileLayout: false,\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n set(state.settings, 'currentSaveStateNotice', { error: false, data: success })\n set(state.settings, 'noticeClearTimeout',\n setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))\n } else {\n set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setMobileLayout (state, value) {\n state.mobileLayout = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n setMobileLayout ({ commit }, value) {\n commit('setMobileLayout', value)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', notice), timeout)\n }\n commit('pushGlobalNotice', notice)\n return notice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { set } from 'vue'\nimport { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n 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.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n\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.name > b.name ? 1 : -1)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport { set } from 'vue'\nimport { isStatusNotification, maybeShowNotification } from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n set(obj, item.id, item)\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n set(conversationsObject, conversationId, [status])\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\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 newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n set(status, 'emoji_reactions', emojiReactions)\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', [...status.emoji_reactions, newReaction])\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', status.emoji_reactions.filter(r => r.name !== emoji))\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until\n}) => {\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 && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args['replyVisibility'] = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n const allowFollowingMove = rootState.users.currentUser.allow_following_move\n\n args['withMuted'] = !hideMutedPosts\n\n args['withMove'] = !allowFollowingMove\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (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 && readNotifsIds.length > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport 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 user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n set(user, 'highlight', highlighted)\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then(({ deactivated }) => commit('updateActivationStatus', { user, deactivated }))\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the 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 { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments: attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst 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 state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n }\n },\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 === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n 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 preTickedIds: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.userId = userId\n state.statuses = statuses\n state.preTickedIds = preTickedIds\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\nimport { set } from 'vue'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n set(state.pollsObject, poll.id, merge(existingPoll, poll))\n } else {\n set(state.pollsObject, poll.id, poll)\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue + 1)\n } else {\n set(state.trackedPolls, pollId, 1)\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue - 1)\n } else {\n set(state.trackedPolls, pollId, 0)\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId: chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage['fakeId']\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage['isTail'] = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object['isTail'] = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object['isHead'] = true\n object['messageChainId'] = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import Vue from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: {},\n openedChatMessageServices: {},\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n Vue.set(state.openedChats, chat.id, chat)\n\n if (!state.openedChatMessageServices[chat.id]) {\n Vue.set(state.openedChatMessageServices, chat.id, chatService.empty(chat.id))\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(state, paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n inserted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n componentUpdated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unbind: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n hideStatus () {\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.virtualHidden && this.$refs.statusComponent[0].suspendable\n } else {\n return this.virtualHidden\n }\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id: id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return this.expanded || this.isPage\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n }\n },\n components: {\n Status\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n focused (id) {\n return (this.isExpanded) && id === this.statusId\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n }\n }\n}\n\nexport default conversation\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./conversation.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./conversation.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-203ee410\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Conversation\",class:{ '-expanded' : _vm.isExpanded, 'panel' : _vm.isExpanded },style:(_vm.hiddenStyle)},[(_vm.isExpanded)?_c('div',{staticClass:\"panel-heading conversation-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('timeline.conversation'))+\" \")]),_vm._v(\" \"),(_vm.collapsable)?_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.collapse'))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,ref:\"statusComponent\",refInFor:true,staticClass:\"conversation-status status-fadein panel-body\",attrs:{\"inline-expanded\":_vm.collapsable && _vm.isExpanded,\"statusoid\":status,\"expandable\":!_vm.isExpanded,\"show-pinned\":_vm.pinnedStatusIdsObject && _vm.pinnedStatusIdsObject[status.id],\"focused\":_vm.focused(status.id),\"in-conversation\":_vm.isExpanded,\"highlight\":_vm.getHighlight(),\"replies\":_vm.getReplies(status.id),\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.profileUserId},on:{\"goto\":_vm.setHighlight,\"toggleExpanded\":_vm.toggleExpanded}})})],2):_c('div',{style:(_vm.hiddenStyle)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome,\n faChevronDown\n)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n 'friends': 'nav.timeline',\n 'bookmarks': 'nav.bookmarks',\n 'dms': 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default TimelineMenu\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_menu.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_menu.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-557cf6a1\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineMenu\",class:{ 'open': _vm.isOpen },attrs:{\"trigger\":\"click\",\"margin\":{ left: -15, right: -200 },\"bound-to\":{ x: 'container' },\"popover-class\":\"timeline-menu-popover-wrap\"},on:{\"show\":_vm.openMenu,\"close\":function () { return _vm.isOpen = false; }}},[_c('div',{staticClass:\"timeline-menu-popover panel panel-default\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friends' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(_vm._s(_vm.$t(\"nav.timeline\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'bookmarks'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_vm._v(_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"envelope\"}}),_vm._v(_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"users\"}}),_vm._v(_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"globe\"}}),_vm._v(_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")],1)],1):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"title timeline-menu-title\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('span',{staticClass:\"timeline-title\"},[_vm._v(_vm._s(_vm.timelineName()))]),_vm._v(\" \"),_c('span',[_c('FAIcon',{attrs:{\"size\":\"sm\",\"icon\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"click-blocker\",on:{\"click\":_vm.blockOpen}})])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {\n const ids = []\n if (pinnedStatusIds && pinnedStatusIds.length > 0) {\n for (let status of statuses) {\n if (!pinnedStatusIds.includes(status.id)) {\n break\n }\n ids.push(status.id)\n }\n }\n return ids\n}\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile'\n ],\n data () {\n return {\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu\n },\n computed: {\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : []\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n excludedStatusIdsObject () {\n const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)\n // Convert id array to object\n return keyBy(ids)\n },\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const min = Math.max(0, this.virtualScrollIndex - statusesPerSide)\n const max = Math.min(amount, this.virtualScrollIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../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-75c8cfb0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.classes.root, 'Timeline']},[_c('div',{class:_vm.classes.header},[(!_vm.embedded)?_c('TimelineMenu'):_vm._e(),_vm._v(\" \"),(_vm.showLoadButton)?_c('button',{staticClass:\"button-default loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.loadButtonString)+\"\\n \")]):_c('div',{staticClass:\"loadmore-text faint\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.up_to_date'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{ref:\"timeline\",staticClass:\"timeline\"},[_vm._l((_vm.pinnedStatusIds),function(statusId){return [(_vm.timeline.statusesObject[statusId])?_c('conversation',{key:statusId + '-pinned',staticClass:\"status-fadein\",attrs:{\"status-id\":statusId,\"collapsable\":true,\"pinned-status-ids-object\":_vm.pinnedStatusIdsObject,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]}),_vm._v(\" \"),_vm._l((_vm.timeline.visibleStatuses),function(status){return [(!_vm.excludedStatusIdsObject[status.id])?_c('conversation',{key:status.id,staticClass:\"status-fadein\",attrs:{\"status-id\":status.id,\"collapsable\":true,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId,\"virtual-hidden\":_vm.virtualScrollingEnabled && !_vm.statusesToDisplay.includes(status.id)}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center 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)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f2a502e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.public_tl'),\"timeline\":_vm.timeline,\"timeline-name\":'public'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_and_external_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_and_external_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f6923484\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_and_external_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.twkn'),\"timeline\":_vm.timeline,\"timeline-name\":'publicAndExternal'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","/* script */\nexport * from \"!!babel-loader!./friends_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./friends_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-22490669\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./friends_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.timeline'),\"timeline\":_vm.timeline,\"timeline-name\":'friends'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","/* script */\nexport * from \"!!babel-loader!./tag_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./tag_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-047310d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tag_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.tag,\"timeline\":_vm.timeline,\"timeline-name\":'tag',\"tag\":_vm.tag}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n destroyed () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","/* script */\nexport * from \"!!babel-loader!./bookmark_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./bookmark_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b9c8ba0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./bookmark_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.bookmarks'),\"timeline\":_vm.timeline,\"timeline-name\":'bookmarks'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","/* script */\nexport * from \"!!babel-loader!./conversation-page.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation-page.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46654d24\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('conversation',{attrs:{\"collapsable\":false,\"is-page\":\"true\",\"status-id\":_vm.statusId}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faEyeSlash,\n faUser,\n faSuitcaseRolling\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCheck,\n faTimes,\n faStar,\n faRetweet,\n faUserPlus,\n faUser,\n faEyeSlash,\n faSuitcaseRolling\n)\n\nconst Notification = {\n data () {\n return {\n userExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false\n }\n },\n props: [ 'notification' ],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n },\n ...mapState({\n currentUser: state => state.users.currentUser\n })\n }\n}\n\nexport default Notification\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notification.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notification.js\"\nimport __vue_script__ from \"!!babel-loader!./notification.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4e559286\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import { find } from 'lodash'\n\nconst createFaviconService = () => {\n let favimg, favcanvas, favcontext, favicon\n const faviconWidth = 128\n const faviconHeight = 128\n const badgeRadius = 32\n\n const initFaviconService = () => {\n const nodes = document.getElementsByTagName('link')\n favicon = find(nodes, node => node.rel === 'icon')\n if (favicon) {\n favcanvas = document.createElement('canvas')\n favcanvas.width = faviconWidth\n favcanvas.height = faviconHeight\n favimg = new Image()\n favimg.src = favicon.href\n favcontext = favcanvas.getContext('2d')\n }\n }\n\n const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n const clearFaviconBadge = () => {\n if (!favimg || !favcontext || !favicon) return\n\n favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favicon.href = favcanvas.toDataURL('image/png')\n }\n\n const drawFaviconBadge = () => {\n if (!favimg || !favcontext || !favcontext) return\n\n clearFaviconBadge()\n\n const style = getComputedStyle(document.body)\n const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n if (isImageLoaded(favimg)) {\n favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n }\n favcontext.fillStyle = badgeColor\n favcontext.beginPath()\n favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n favcontext.fill()\n favicon.href = favcanvas.toDataURL('image/png')\n }\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge\n }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notification.type === 'mention')?_c('Status',{attrs:{\"compact\":true,\"statusoid\":_vm.notification.status}}):_c('div',[(_vm.needMute && !_vm.unmuted)?_c('div',{staticClass:\"Notification container -muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n \")])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled unmute\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1)]):_c('div',{staticClass:\"Notification non-mention\",class:[_vm.userClass, { highlighted: _vm.userStyle }, '-type--' + _vm.notification.type],style:([ _vm.userStyle ])},[_c('a',{staticClass:\"avatar-container\",attrs:{\"href\":_vm.notification.from_profile.statusnet_profile_url},on:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.notification.from_profile}})],1),_vm._v(\" \"),_c('div',{staticClass:\"notification-right\"},[(_vm.userExpanded)?_c('UserCard',{attrs:{\"user-id\":_vm.getUser(_vm.notification).id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"notification-details\"},[_c('div',{staticClass:\"name-and-action\"},[(!!_vm.notification.from_profile.name_html)?_c('bdi',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui},domProps:{\"innerHTML\":_vm._s(_vm.notification.from_profile.name_html)}}):_c('span',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name_ui}},[_vm._v(_vm._s(_vm.notification.from_profile.name))]),_vm._v(\" \"),(_vm.notification.type === 'like')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"star\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.favorited_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'repeat')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.repeated_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user-plus\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.followed_you')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"user\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.follow_request')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'move')?_c('span',[_c('FAIcon',{staticClass:\"type-icon\",attrs:{\"icon\":\"suitcase-rolling\"}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.migrated_to')))])],1):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'pleroma:emoji_reaction')?_c('span',[_c('small',[_c('i18n',{attrs:{\"path\":\"notifications.reacted_with\"}},[_c('span',{staticClass:\"emoji-reaction-emoji\"},[_vm._v(_vm._s(_vm.notification.emoji))])])],1)]):_vm._e()]),_vm._v(\" \"),(_vm.isStatusNotification)?_c('div',{staticClass:\"timeago\"},[(_vm.notification.status)?_c('router-link',{staticClass:\"faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.notification.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1):_vm._e()],1):_c('div',{staticClass:\"timeago\"},[_c('span',{staticClass:\"faint\"},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1)]),_vm._v(\" \"),(_vm.needMute)?_c('button',{staticClass:\"button-unstyled\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"eye-slash\"}})],1):_vm._e()]),_vm._v(\" \"),(_vm.notification.type === 'follow' || _vm.notification.type === 'follow_request')?_c('div',{staticClass:\"follow-text\"},[_c('router-link',{staticClass:\"follow-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.from_profile.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-accept\",attrs:{\"icon\":\"check\",\"title\":_vm.$t('tool_tip.accept_follow_request')},on:{\"click\":function($event){return _vm.approveUser()}}}),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding follow-request-reject\",attrs:{\"icon\":\"times\",\"title\":_vm.$t('tool_tip.reject_follow_request')},on:{\"click\":function($event){return _vm.denyUser()}}})],1):_vm._e()],1):(_vm.notification.type === 'move')?_c('div',{staticClass:\"move-text\"},[_c('router-link',{attrs:{\"to\":_vm.targetUserProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.target.screen_name_ui)+\"\\n \")])],1):[_c('status-content',{staticClass:\"faint\",attrs:{\"status\":_vm.notification.action}})]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n 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 FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notifications.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notifications.js\"\nimport __vue_script__ from \"!!babel-loader!./notifications.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-50d4ba92\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notifications\",class:{ minimal: _vm.minimalMode }},[_c('div',{class:_vm.mainClass},[(!_vm.noHeading)?_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.notifications'))+\"\\n \"),(_vm.unseenCount)?_c('span',{staticClass:\"badge badge-notification unseen-count\"},[_vm._v(_vm._s(_vm.unseenCount))]):_vm._e()]),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"button-default read-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.markAsSeen($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.read'))+\"\\n \")]):_vm._e()]):_vm._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('button',{staticClass:\"button-unstyled -link -fullwidth\",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('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notifications from '../notifications/notifications.vue'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications\n }\n}\n\nexport default Interactions\n","/* script */\nexport * from \"!!babel-loader!./interactions.js\"\nimport __vue_script__ from \"!!babel-loader!./interactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-109005c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])]),_vm._v(\" \"),_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onModeSwitch}},[_c('span',{key:\"mentions\",attrs:{\"label\":_vm.$t('nav.mentions')}}),_vm._v(\" \"),_c('span',{key:\"likes+repeats\",attrs:{\"label\":_vm.$t('interactions.favs_repeats')}}),_vm._v(\" \"),_c('span',{key:\"follows\",attrs:{\"label\":_vm.$t('interactions.follows')}}),_vm._v(\" \"),(!_vm.allowFollowingMove)?_c('span',{key:\"moves\",attrs:{\"label\":_vm.$t('interactions.moves')}}):_vm._e()]),_vm._v(\" \"),_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true,\"minimal-mode\":true,\"filter-mode\":_vm.filterMode}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","/* script */\nexport * from \"!!babel-loader!./dm_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./dm_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-294f8b6d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dm_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.dms'),\"timeline\":_vm.timeline,\"timeline-name\":'dms'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\n\nexport default Vue.component('chat-title', {\n name: 'ChatTitle',\n components: {\n UserAvatar\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n },\n methods: {\n getUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name)\n }\n }\n})\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_title.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_title.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_title.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-392970fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_title.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-title\",attrs:{\"title\":_vm.title}},[(_vm.withAvatar && _vm.user)?_c('router-link',{attrs:{\"to\":_vm.getUserProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"user\":_vm.user,\"width\":\"23px\",\"height\":\"23px\"}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"username\",domProps:{\"innerHTML\":_vm._s(_vm.htmlTitle)}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport 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-e174c026\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list_item.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-list-item\",on:{\"!click\":function($event){$event.preventDefault();return _vm.openChat($event)}}},[_c('div',{staticClass:\"chat-list-item-left\"},[_c('UserAvatar',{attrs:{\"user\":_vm.chat.account,\"height\":\"48px\",\"width\":\"48px\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"chat-list-item-center\"},[_c('div',{staticClass:\"heading\"},[(_vm.chat.account)?_c('span',{staticClass:\"name-and-account-name\"},[_c('ChatTitle',{attrs:{\"user\":_vm.chat.account}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"}),_vm._v(\" \"),_c('div',{staticClass:\"time-wrapper\"},[_c('Timeago',{attrs:{\"time\":_vm.chat.updated_at,\"auto-update\":60}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"chat-preview\"},[_c('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)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSearch,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSearch,\n faChevronLeft\n)\n\nconst chatNew = {\n components: {\n BasicUserCard,\n UserAvatar\n },\n data () {\n return {\n suggestions: [],\n userIds: [],\n loading: false,\n query: ''\n }\n },\n async created () {\n const { chats } = await this.backendInteractor.chats()\n chats.forEach(chat => this.suggestions.push(chat.account))\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.findUser(userId))\n },\n availableUsers () {\n if (this.query.length !== 0) {\n return this.users\n } else {\n return this.suggestions\n }\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n backendInteractor: state => state.api.backendInteractor\n }),\n ...mapGetters(['findUser'])\n },\n methods: {\n goBack () {\n this.$emit('cancel')\n },\n goToChat (user) {\n this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n },\n onInput () {\n this.search(this.query)\n },\n addUser (user) {\n this.selectedUserIds.push(user.id)\n this.query = ''\n },\n removeUser (userId) {\n this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n .then(data => {\n this.loading = false\n this.userIds = data.accounts.map(a => a.id)\n })\n }\n }\n}\n\nexport default chatNew\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_new.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_new.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_new.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1a93dc9e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_new.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-default panel chat-new\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"input-wrap\"},[_c('div',{staticClass:\"input-search\"},[_c('FAIcon',{staticClass:\"search-icon fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.query),expression:\"query\"}],ref:\"search\",attrs:{\"placeholder\":\"Search people\"},domProps:{\"value\":(_vm.query)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.query=$event.target.value},_vm.onInput]}})]),_vm._v(\" \"),_c('div',{staticClass:\"member-list\"},_vm._l((_vm.availableUsers),function(user){return _c('div',{key:user.id,staticClass:\"member\"},[_c('div',{on:{\"!click\":function($event){$event.preventDefault();return _vm.goToChat(user)}}},[_c('BasicUserCard',{attrs:{\"user\":user}})],1)])}),0)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n components: {\n ChatListItem,\n List,\n ChatNew\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser\n }),\n ...mapGetters(['sortedChatList'])\n },\n data () {\n return {\n isNew: false\n }\n },\n created () {\n this.$store.dispatch('fetchChats', { latest: true })\n },\n methods: {\n cancelNewChat () {\n this.isNew = false\n this.$store.dispatch('fetchChats', { latest: true })\n },\n newChat () {\n this.isNew = true\n }\n }\n}\n\nexport default ChatList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_list.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c48d76e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isNew)?_c('div',[_c('ChatNew',{on:{\"cancel\":_vm.cancelNewChat}})],1):_c('div',{staticClass:\"chat-list panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.chats\"))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default\",on:{\"click\":_vm.newChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.new\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.sortedChatList.length > 0)?_c('div',{staticClass:\"timeline\"},[_c('List',{attrs:{\"items\":_vm.sortedChatList},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('ChatListItem',{key:item.id,attrs:{\"compact\":false,\"chat\":item}})]}}],null,false,1412157271)})],1):_c('div',{staticClass:\"emtpy-chat-list-alert\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chats.empty_chat_list_placeholder')))])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23377998\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message_date.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',[_vm._v(\"\\n \"+_vm._s(_vm.displayDate)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n userProfileLink () {\n return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n 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-691ffb28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMessage)?_c('div',{staticClass:\"chat-message-wrapper\",class:{ 'hovered-message-chain': _vm.hoveredMessageChain },on:{\"mouseover\":function($event){return _vm.onHover(true)},\"mouseleave\":function($event){return _vm.onHover(false)}}},[_c('div',{staticClass:\"chat-message\",class:[{ 'outgoing': _vm.isCurrentUser, 'incoming': !_vm.isCurrentUser }]},[(!_vm.isCurrentUser)?_c('div',{staticClass:\"avatar-wrapper\"},[(_vm.chatViewItem.isHead)?_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.author}})],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chat-message-inner\"},[_c('div',{staticClass:\"status-body\",style:({ 'min-width': _vm.message.attachment ? '80%' : '' })},[_c('div',{staticClass:\"media status\",class:{ 'without-attachment': !_vm.hasAttachment, 'pending': _vm.chatViewItem.data.pending, 'error': _vm.chatViewItem.data.error },staticStyle:{\"position\":\"relative\"},on:{\"mouseenter\":function($event){_vm.hovered = true},\"mouseleave\":function($event){_vm.hovered = false}}},[_c('div',{staticClass:\"chat-message-menu\",class:{ 'visible': _vm.hovered || _vm.menuOpened }},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to-selector\":_vm.isCurrentUser ? '' : '.scrollable-message-list',\"bound-to\":{ x: 'container' },\"margin\":_vm.popoverMarginStyle},on:{\"show\":function($event){_vm.menuOpened = true},\"close\":function($event){_vm.menuOpened = false}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":_vm.deleteMessage}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"chats.delete\"))+\"\\n \")],1)])]),_vm._v(\" \"),_c('button',{staticClass:\"button-default menu-icon\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('chats.more')},slot:\"trigger\"},[_c('FAIcon',{attrs:{\"icon\":\"ellipsis-h\"}})],1)])],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\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = (el) => {\n if (!el) return\n\n return el.scrollHeight > el.clientHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleLayoutChange)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.handleResize()\n })\n this.setChatLayout()\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleLayoutChange)\n this.unsetChatLayout()\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.mobileLayout,\n layoutHeight: state => state.interface.layoutHeight,\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n '$route': function () {\n this.startFetching()\n },\n layoutHeight () {\n this.handleResize({ expand: true })\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n this.updateScrollableContainerHeight()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n setChatLayout () {\n // This is a hacky way to adjust the global layout to the mobile chat (without modifying the rest of the app).\n // This layout prevents empty spaces from being visible at the bottom\n // of the chat on iOS Safari (`safe-area-inset`) when\n // - the on-screen keyboard appears and the user starts typing\n // - the user selects the text inside the input area\n // - the user selects and deletes the text that is multiple lines long\n // TODO: unify the chat layout with the global layout.\n let html = document.querySelector('html')\n if (html) {\n html.classList.add('chat-layout')\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n })\n },\n unsetChatLayout () {\n let html = document.querySelector('html')\n if (html) {\n html.classList.remove('chat-layout')\n }\n },\n handleLayoutChange () {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.scrollDown()\n })\n },\n // Ensures the proper position of the posting form in the mobile layout (the mobile browser panel does not overlap or hide it)\n updateScrollableContainerHeight () {\n const header = this.$refs.header\n const footer = this.$refs.footer\n const inner = this.mobileLayout ? window.document.body : this.$refs.inner\n this.scrollableContainerHeight = scrollableContainerHeight(inner, header, footer) + 'px'\n },\n // Preserves the scroll position when OSK appears or the posting form changes its height.\n handleResize (opts = {}) {\n const { expand = false, delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n\n const { offsetHeight = undefined } = this.lastScrollPosition\n this.lastScrollPosition = getScrollPosition(this.$refs.scrollable)\n\n const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n if (diff < 0 || (!this.bottomedOut() && expand)) {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.$refs.scrollable.scrollTo({\n top: this.$refs.scrollable.scrollTop - diff,\n left: 0\n })\n })\n }\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n const scrollable = this.$refs.scrollable\n if (!scrollable) { return }\n this.$nextTick(() => {\n scrollable.scrollTo({ top: scrollable.scrollHeight, left: 0, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(this.$refs.scrollable, offset)\n },\n reachedTop () {\n const scrollable = this.$refs.scrollable\n return scrollable && scrollable.scrollTop <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition(this.$refs.scrollable)\n this.$refs.scrollable.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading),\n left: 0\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition(this.$refs.scrollable)\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n if (isFirstFetch) {\n this.updateScrollableContainerHeight()\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable(this.$refs.scrollable) && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n setTimeout(() => {\n this.updateScrollableContainerHeight()\n }, SAFE_RESIZE_TIME_OFFSET)\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat.js\"\nimport __vue_script__ from \"!!babel-loader!./chat.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b3f1f68\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-view\"},[_c('div',{staticClass:\"chat-view-inner\"},[_c('div',{ref:\"inner\",staticClass:\"panel-default panel chat-view-body\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading chat-view-heading mobile-hidden\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"title text-center\"},[_c('ChatTitle',{attrs:{\"user\":_vm.recipient,\"with-avatar\":true}})],1)]),_vm._v(\" \"),[_c('div',{ref:\"scrollable\",staticClass:\"scrollable-message-list\",style:({ height: _vm.scrollableContainerHeight }),on:{\"scroll\":_vm.handleScroll}},[(!_vm.errorLoadingChat)?_vm._l((_vm.chatViewItems),function(chatViewItem){return _c('ChatMessage',{key:chatViewItem.id,attrs:{\"author\":_vm.recipient,\"chat-view-item\":chatViewItem,\"hovered-message-chain\":chatViewItem.messageChainId === _vm.hoveredMessageChainId},on:{\"hover\":_vm.onMessageHover}})}):_c('div',{staticClass:\"chat-loading-error\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('chats.error_loading_chat'))+\"\\n \")])])],2),_vm._v(\" \"),_c('div',{ref:\"footer\",staticClass:\"panel-body footer\"},[_c('div',{staticClass:\"jump-to-bottom-button\",class:{ 'visible': _vm.jumpToBottomButtonVisible },on:{\"click\":function($event){return _vm.scrollDown({ behavior: 'smooth' })}}},[_c('span',[_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}}),_vm._v(\" \"),(_vm.newMessageCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count unread-message-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.newMessageCount)+\"\\n \")]):_vm._e()],1)]),_vm._v(\" \"),_c('PostStatusForm',{attrs:{\"disable-subject\":true,\"disable-scope-selector\":true,\"disable-notice\":true,\"disable-lock-warning\":true,\"disable-polls\":true,\"disable-sensitivity-checkbox\":true,\"disable-submit\":_vm.errorLoadingChat || !_vm.currentChat,\"disable-preview\":true,\"optimistic-posting\":true,\"post-handler\":_vm.sendMessage,\"submit-on-enter\":!_vm.mobileLayout,\"preserve-focus\":!_vm.mobileLayout,\"auto-focus\":!_vm.mobileLayout,\"placeholder\":_vm.formPlaceholder,\"file-limit\":1,\"max-height\":\"160\",\"emoji-picker-placement\":\"top\"},on:{\"resize\":_vm.handleResize}})],1)]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-064803a0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-card-content-container\"},[(_vm.isMe || (!_vm.noFollowsYou && _vm.relationship.followed_by))?_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.isMe ? _vm.$t('user_card.its_you') : _vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn)?[(!_vm.relationship.following)?_c('div',{staticClass:\"follow-card-follow-button\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()]:(!_vm.isMe)?[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]:_vm._e()],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n destroy, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return Vue.component('withLoadMore', {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\n destroy && destroy(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render (h) {\n const props = {\n props: {\n ...this.$props,\n [childPropName]: this.entries\n },\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }\n const children = Object.entries(this.$slots).map(([key, value]) => h('template', { slot: key }, value))\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n })\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.js'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load(routeParams.name || routeParams.id)\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n destroyed () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n }\n },\n methods: {\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n // Check if user data is already loaded in store\n const user = this.$store.getters.findUser(userNameOrId)\n if (user) {\n loadById(user.id)\n } else {\n this.$store.dispatch('fetchUser', userNameOrId)\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation\n }\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-9dcf5f9e\\\",\\\"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('FAIcon',{attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faSearch\n)\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses'\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.statuses = []\n this.hashtags = []\n this.$refs.searchInput.blur()\n\n this.$store.dispatch('search', { q: query, resolve: true })\n .then(data => {\n this.loading = false\n this.userIds = map(data.accounts, 'id')\n this.statuses = data.statuses\n this.hashtags = data.hashtags\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search.js\"\nimport __vue_script__ from \"!!babel-loader!./search.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52f57ebe\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.search'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"search-input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-input\",attrs:{\"placeholder\":_vm.$t('nav.search')},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.newQuery(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.newQuery(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"icon\":\"search\"}})],1)]),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"text-center loading-icon\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1):(_vm.loaded)?_c('div',[_c('div',{staticClass:\"search-nav-heading\"},[_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onResultTabSwitch,\"active-tab\":_vm.currenResultTab}},[_c('span',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses') + _vm.resultCount('visibleStatuses')}}),_vm._v(\" \"),_c('span',{key:\"people\",attrs:{\"label\":_vm.$t('search.people') + _vm.resultCount('users')}}),_vm._v(\" \"),_c('span',{key:\"hashtags\",attrs:{\"label\":_vm.$t('search.hashtags') + _vm.resultCount('hashtags')}})])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.currenResultTab === 'statuses')?_c('div',[(_vm.visibleStatuses.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.visibleStatuses),function(status){return _c('Status',{key:status.id,staticClass:\"search-result\",attrs:{\"collapsable\":false,\"expandable\":false,\"compact\":false,\"statusoid\":status,\"no-heading\":false}})})],2):(_vm.currenResultTab === 'people')?_c('div',[(_vm.users.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item search-result\",attrs:{\"user\":user}})})],2):(_vm.currenResultTab === 'hashtags')?_c('div',[(_vm.hashtags.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.hashtags),function(hashtag){return _c('div',{key:hashtag.url,staticClass:\"status trend search-result\"},[_c('div',{staticClass:\"hashtag\"},[_c('router-link',{attrs:{\"to\":{ name: 'tag-timeline', params: { tag: hashtag.name } }}},[_vm._v(\"\\n #\"+_vm._s(hashtag.name)+\"\\n \")]),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',[(_vm.lastHistoryRecord(hashtag).accounts == 1)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.person_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.people_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")])]):_vm._e()],1),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',{staticClass:\"count\"},[_vm._v(\"\\n \"+_vm._s(_vm.lastHistoryRecord(hashtag).uses)+\"\\n \")]):_vm._e()])})],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"search-result-footer text-center panel-footer faint\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { validationMixin } from 'vuelidate'\nimport { required, requiredIf, sameAs } from 'vuelidate/lib/validators'\nimport { mapActions, mapState } from 'vuex'\n\nconst registration = {\n mixins: [validationMixin],\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n reason: ''\n },\n captcha: {}\n }),\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAsPassword: sameAs('password')\n },\n reason: { required: requiredIf(() => this.accountApprovalRequired) }\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n },\n reasonPlaceholder () {\n return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n\n this.$v.$touch()\n\n if (!this.$v.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n },\n replaceNewlines (str) {\n return str.replace(/\\s*\\n\\s*/g, ' \\n')\n }\n }\n}\n\nexport default registration\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./registration.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./registration.js\"\nimport __vue_script__ from \"!!babel-loader!./registration.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3e939b94\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./registration.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.registration'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"registration-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit(_vm.user)}}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-fields\"},[_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.username.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.username.$model),expression:\"$v.user.username.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-username\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.username_placeholder')},domProps:{\"value\":(_vm.$v.user.username.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.username, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.username.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.username.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.username_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.fullname.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-fullname\"}},[_vm._v(_vm._s(_vm.$t('registration.fullname')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.fullname.$model),expression:\"$v.user.fullname.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-fullname\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.fullname_placeholder')},domProps:{\"value\":(_vm.$v.user.fullname.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.fullname, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.fullname.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.fullname.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.fullname_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.email.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t('registration.email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.$v.user.email.$model),expression:\"$v.user.email.$model\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"disabled\":_vm.isPending,\"type\":\"email\"},domProps:{\"value\":(_vm.$v.user.email.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.email, \"$model\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.email.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.email.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.email_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"bio\"}},[_vm._v(_vm._s(_vm.$t('registration.bio'))+\" (\"+_vm._s(_vm.$t('general.optional'))+\")\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.bio),expression:\"user.bio\"}],staticClass:\"form-control\",attrs:{\"id\":\"bio\",\"disabled\":_vm.isPending,\"placeholder\":_vm.bioPlaceholder},domProps:{\"value\":(_vm.user.bio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"bio\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.password.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.password.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.password.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.confirm.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password-confirmation\"}},[_vm._v(_vm._s(_vm.$t('registration.password_confirm')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.confirm),expression:\"user.confirm\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password-confirmation\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.confirm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"confirm\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.confirm.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.confirm.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_required')))])]):_vm._e(),_vm._v(\" \"),(!_vm.$v.user.confirm.sameAsPassword)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_match')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.accountApprovalRequired)?_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"reason\"}},[_vm._v(_vm._s(_vm.$t('registration.reason')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.reason),expression:\"user.reason\"}],staticClass:\"form-control\",attrs:{\"id\":\"reason\",\"disabled\":_vm.isPending,\"placeholder\":_vm.reasonPlaceholder},domProps:{\"value\":(_vm.user.reason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"reason\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),(_vm.captcha.type != 'none')?_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"captcha-group\"}},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"captcha-label\"}},[_vm._v(_vm._s(_vm.$t('registration.captcha')))]),_vm._v(\" \"),(['kocaptcha', 'native'].includes(_vm.captcha.type))?[_c('img',{attrs:{\"src\":_vm.captcha.url},on:{\"click\":_vm.setCaptcha}}),_vm._v(\" \"),_c('sub',[_vm._v(_vm._s(_vm.$t('registration.new_captcha')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.captcha.solution),expression:\"captcha.solution\"}],staticClass:\"form-control\",attrs:{\"id\":\"captcha-answer\",\"disabled\":_vm.isPending,\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":(_vm.captcha.solution)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.captcha, \"solution\", $event.target.value)}}})]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.token)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"token\"}},[_vm._v(_vm._s(_vm.$t('registration.token')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.token),expression:\"token\"}],staticClass:\"form-control\",attrs:{\"id\":\"token\",\"disabled\":\"true\",\"type\":\"text\"},domProps:{\"value\":(_vm.token)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.token=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./password_reset.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./password_reset.js\"\nimport __vue_script__ from \"!!babel-loader!./password_reset.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4d39a8e6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./password_reset.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"password-reset-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"container\"},[(!_vm.mailerEnabled)?_c('div',[(_vm.passwordResetRequested)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required_but_mailer_is_disabled'))+\"\\n \")]):_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_disabled'))+\"\\n \")])]):(_vm.success || _vm.throttled)?_c('div',[(_vm.success)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.check_email'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group text-center\"},[_c('router-link',{attrs:{\"to\":{name: 'root'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.return_home'))+\"\\n \")])],1)]):_c('div',[(_vm.passwordResetRequested)?_c('p',{staticClass:\"password-reset-required error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.instruction'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.email),expression:\"user.email\"}],ref:\"email\",staticClass:\"form-control\",attrs:{\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('password_reset.placeholder'),\"type\":\"input\"},domProps:{\"value\":(_vm.user.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"email\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('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:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e()])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_request_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_request_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_request_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-84be1288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_request_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-request-card-content-container\"},[_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.denyUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.deny'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!./follow_requests.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_requests.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62e19784\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_requests.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.friend_requests'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.requests),function(request){return _c('FollowRequestCard',{key:request.id,staticClass:\"list-item\",attrs:{\"user\":request}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","/* script */\nexport * from \"!!babel-loader!./oauth_callback.js\"\nimport __vue_script__ from \"!!babel-loader!./oauth_callback.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f514124c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./oauth_callback.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"...\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./login_form.js\"\nimport __vue_script__ from \"!!babel-loader!./login_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d5a53416\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[(_vm.isPasswordAuth)?[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.username),expression:\"user.username\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"disabled\":_vm.loggingIn,\"placeholder\":_vm.$t('login.placeholder')},domProps:{\"value\":(_vm.user.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"username\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],ref:\"passwordInput\",staticClass:\"form-control\",attrs:{\"id\":\"password\",\"disabled\":_vm.loggingIn,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('router-link',{attrs:{\"to\":{name: 'password-reset'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.forgot_password'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.isTokenAuth)?_c('div',{staticClass:\"form-group\"},[_c('p',[_vm._v(_vm._s(_vm.$t('login.description')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[(_vm.registrationOpen)?_c('router-link',{staticClass:\"register\",attrs:{\"to\":{name: 'registration'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.register'))+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.loggingIn,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")])])])],2)]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./recovery_form.js\"\nimport __vue_script__ from \"!!babel-loader!./recovery_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b425343\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./recovery_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.recovery'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(_vm._s(_vm.$t('login.recovery_code')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireTOTP($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_two_factor_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./totp_form.js\"\nimport __vue_script__ from \"!!babel-loader!./totp_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60cb7c28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./totp_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.totp'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.authentication_code'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireRecovery($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_recovery_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"size\":\"lg\",\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render (createElement) {\n return createElement('component', { is: this.authForm })\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst 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-a79fa1b2\\\",\\\"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('shoutbox.title')))]),_vm._v(\" \"),(_vm.floating)?_c('FAIcon',{attrs:{\"icon\":\"times\"}}):_vm._e()],1)]),_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('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"bullhorn\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n \")],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4f8c3288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item\",attrs:{\"user\":user}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","/* script */\nexport * from \"!!babel-loader!./instance_specific_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./instance_specific_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b01187b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./instance_specific_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"instance-specific-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.instanceSpecificPanelContent)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n 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 uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./features_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./features_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./features_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d7321f7c\\\",\\\"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))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.upload_limit'))+\" = \"+_vm._s(_vm.uploadlimit.num)+\" \"+_vm._s(_vm.$t('upload.file_size_units.' + _vm.uploadlimit.unit)))])])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./terms_of_service_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./terms_of_service_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./terms_of_service_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-687e38f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./terms_of_service_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"tos-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts['admin'] },\n { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUser'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./staff_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./staff_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./staff_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31dce24a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./staff_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"staff-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.staff\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.groupedStaffAccounts),function(group){return _c('div',{key:group.role,staticClass:\"staff-group\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('general.role.' + group.role)))]),_vm._v(\" \"),_vm._l((group.users),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})})],2)}),0)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\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 { timelineNames } from '../timeline_menu/timeline_menu.js'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome,\n faComments,\n faBell,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome,\n faComments,\n faBell,\n faInfoCircle\n)\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n computed: {\n onTimelineRoute () {\n return !!timelineNames()[this.$route.name]\n },\n timelinesRoute () {\n if (this.$store.state.interface.lastTimeline) {\n return this.$store.state.interface.lastTimeline\n }\n return this.currentUser ? 'friends' : 'public-timeline'\n },\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n }\n}\n\nexport default NavPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./nav_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./nav_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./nav_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-88d7a774\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./nav_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavPanel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{class:_vm.onTimelineRoute && 'router-link-active',attrs:{\"to\":{ name: _vm.timelinesRoute }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[(_vm.unreadChatCount)?_c('div',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friend-requests' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'about' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")],1)],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || this.$store.state.instance.defaultAvatar\n let name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n var credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4d31272\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"who-to-follow-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"who-to-follow\"},[_vm._l((_vm.usersToFollow),function(user){return _c('p',{key:user.id,staticClass:\"who-to-follow-items\"},[_c('img',{attrs:{\"src\":user.img}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink(user.id, user.name)}},[_vm._v(\"\\n \"+_vm._s(user.name)+\"\\n \")]),_c('br')],1)}),_vm._v(\" \"),_c('p',{staticClass:\"who-to-follow-more\"},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.more'))+\"\\n \")])],1)],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9413504\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"},{name:\"body-scroll-lock\",rawName:\"v-body-scroll-lock\",value:(_vm.isOpen && !_vm.noBackground),expression:\"isOpen && !noBackground\"}],staticClass:\"modal-view\",class:_vm.classes,on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./panel_loading.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-595215a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./panel_loading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./async_component_error.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6b205c72\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./async_component_error.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","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('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")],1)])}\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 button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"async-component-error\"},[_c('div',[_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.generic_error'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.error_retry'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.retry'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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-2777caee\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"settings-modal\",class:{ peek: _vm.modalPeeked },attrs:{\"is-open\":_vm.modalActivated,\"no-background\":_vm.modalPeeked}},[_c('div',{staticClass:\"settings-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.settings'))+\"\\n \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.currentSaveStateNotice)?[(_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_err'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert transparent\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_ok'))+\"\\n \")]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.peekModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.peek'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",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'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n Modal\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? fileTypeService.fileType(this.currentMedia.mimetype) : null\n }\n },\n created () {\n this.mediaSwipeGestureRight = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.goPrev,\n 50\n )\n this.mediaSwipeGestureLeft = GestureService.swipeGesture(\n GestureService.DIRECTION_LEFT,\n this.goNext,\n 50\n )\n },\n methods: {\n mediaTouchStart (e) {\n GestureService.beginSwipe(e, this.mediaSwipeGestureRight)\n GestureService.beginSwipe(e, this.mediaSwipeGestureLeft)\n },\n mediaTouchMove (e) {\n GestureService.updateSwipe(e, this.mediaSwipeGestureRight)\n GestureService.updateSwipe(e, this.mediaSwipeGestureLeft)\n },\n hide () {\n this.$store.dispatch('closeMediaViewer')\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n this.$store.dispatch('setCurrent', this.media[prevIndex])\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n this.$store.dispatch('setCurrent', this.media[nextIndex])\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n destroyed () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./media_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07b118f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showing)?_c('Modal',{staticClass:\"media-modal-view\",on:{\"backdropClicked\":_vm.hide}},[(_vm.type === 'image')?_c('img',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description},on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.mediaTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.mediaTouchMove($event)},\"click\":_vm.hide}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'video')?_c('VideoAttachment',{staticClass:\"modal-image\",attrs:{\"attachment\":_vm.currentMedia,\"controls\":true}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--prev\",attrs:{\"title\":_vm.$t('media_modal.previous')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goPrev($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-left\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--next\",attrs:{\"title\":_vm.$t('media_modal.next')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goNext($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-right\"}})],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n 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 timelinesRoute () {\n if (this.$store.state.interface.lastTimeline) {\n return this.$store.state.interface.lastTimeline\n }\n return this.currentUser ? 'friends' : 'public-timeline'\n },\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleDrawer () {\n this.closed = !this.closed\n },\n doLogout () {\n this.logout()\n this.toggleDrawer()\n },\n touchStart (e) {\n GestureService.beginSwipe(e, this.closeGesture)\n },\n touchMove (e) {\n GestureService.updateSwipe(e, this.closeGesture)\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n\nexport default SideDrawer\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./side_drawer.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./side_drawer.js\"\nimport __vue_script__ from \"!!babel-loader!./side_drawer.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3a3bcec9\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./side_drawer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"side-drawer-container\",class:{ 'side-drawer-container-closed': _vm.closed, 'side-drawer-container-open': !_vm.closed }},[_c('div',{staticClass:\"side-drawer-darken\",class:{ 'side-drawer-darken-closed': _vm.closed}}),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer\",class:{'side-drawer-closed': _vm.closed},on:{\"touchstart\":_vm.touchStart,\"touchmove\":_vm.touchMove}},[_c('div',{staticClass:\"side-drawer-heading\",on:{\"click\":_vm.toggleDrawer}},[(_vm.currentUser)?_c('UserCard',{attrs:{\"user-id\":_vm.currentUser.id,\"hide-bio\":true}}):_c('div',{staticClass:\"side-drawer-logo-wrapper\"},[_c('img',{attrs:{\"src\":_vm.logo}}),_vm._v(\" \"),(!_vm.hideSitename)?_c('span',[_vm._v(_vm._s(_vm.sitename))]):_vm._e()])],1),_vm._v(\" \"),_c('ul',[(!_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'login' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-in-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: _vm.timelinesRoute }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{staticStyle:{\"position\":\"relative\"},attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \"),(_vm.unreadChatCount)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e()]),_vm._v(\" \"),(_vm.currentUser)?_c('ul',[_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")],1)],1),_vm._v(\" \"),(_vm.currentUser.locked)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/friend-requests\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.chat)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'chat-panel' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"bullhorn\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"shoutbox.title\"))+\"\\n \")],1)],1):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'search' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.search\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.who_to_follow\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.openSettingsModal}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n \")],1)]),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")],1)],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.administration\"))+\"\\n \")],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":_vm.doLogout}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.logout\"))+\"\\n \")],1)]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer-click-outside\",class:{'side-drawer-click-outside-closed': _vm.closed},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleDrawer($event)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n 'chats',\n 'chat'\n])\n\nconst MobilePostStatusButton = {\n data () {\n return {\n hidden: false,\n scrollingDown: false,\n inputActive: false,\n oldScrollPos: 0,\n amountScrolled: 0\n }\n },\n created () {\n if (this.autohideFloatingPostButton) {\n this.activateFloatingPostButtonAutohide()\n }\n window.addEventListener('resize', this.handleOSK)\n },\n destroyed () {\n if (this.autohideFloatingPostButton) {\n this.deactivateFloatingPostButtonAutohide()\n }\n window.removeEventListener('resize', this.handleOSK)\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isHidden () {\n if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n 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-77781f2c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_post_status_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',[_c('button',{staticClass:\"button-default new-status-button\",class:{ 'hidden': _vm.isHidden },on:{\"click\":_vm.openPostForm}},[_c('FAIcon',{attrs:{\"icon\":\"pen\"}})],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faBell,\n faBars\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false\n }),\n created () {\n this.notificationsCloseGesture = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.closeMobileNotifications,\n 50\n )\n },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n hideSitename () { return this.$store.state.instance.hideSitename },\n sitename () { return this.$store.state.instance.name },\n isChat () {\n return this.$route.name === 'chat'\n },\n ...mapGetters(['unreadChatCount'])\n },\n methods: {\n toggleMobileSidebar () {\n this.$refs.sideDrawer.toggleDrawer()\n },\n openMobileNotifications () {\n this.notificationsOpen = true\n },\n closeMobileNotifications () {\n if (this.notificationsOpen) {\n // make sure to mark notifs seen only when the notifs were open and not\n // from close-calls.\n this.notificationsOpen = false\n this.markNotificationsAsSeen()\n }\n },\n notificationsTouchStart (e) {\n GestureService.beginSwipe(e, this.notificationsCloseGesture)\n },\n notificationsTouchMove (e) {\n GestureService.updateSwipe(e, this.notificationsCloseGesture)\n },\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n markNotificationsAsSeen () {\n this.$refs.notifications.markAsSeen()\n },\n onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n if (scrollTop + clientHeight >= scrollHeight) {\n this.$refs.notifications.fetchOlderNotifications()\n }\n }\n },\n watch: {\n $route () {\n // handles closing notificaitons when you press any router-link on the\n // notifications.\n this.closeMobileNotifications()\n }\n }\n}\n\nexport default MobileNav\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_nav.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5597b03f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"MobileNav\"},[_c('nav',{staticClass:\"mobile-nav\",class:{ 'mobile-hidden': _vm.isChat },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"item\"},[_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleMobileSidebar()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bars\"}}),_vm._v(\" \"),(_vm.unreadChatCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1),_vm._v(\" \"),(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"item right\"},[(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"bell\"}}),_vm._v(\" \"),(_vm.unseenNotificationsCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()],1):_vm._e()])]),_vm._v(\" \"),(_vm.currentUser)?_c('div',{staticClass:\"mobile-notifications-drawer\",class:{ 'closed': !_vm.notificationsOpen },on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.notificationsTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.notificationsTouchMove($event)}}},[_c('div',{staticClass:\"mobile-notifications-header\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('notifications.notifications')))]),_vm._v(\" \"),_c('a',{staticClass:\"mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.closeMobileNotifications()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"mobile-notifications\",on:{\"scroll\":_vm.onScroll}},[_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true}})],1)]):_vm._e(),_vm._v(\" \"),_c('SideDrawer',{ref:\"sideDrawer\",attrs:{\"logout\":_vm.logout}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faSearch\n)\n\nconst SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false\n }),\n watch: {\n '$route': function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search_bar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search_bar.js\"\nimport __vue_script__ from \"!!babel-loader!./search_bar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-105122b7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search_bar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"SearchBar\",class:{ '-expanded': !_vm.hidden }},[(_vm.hidden)?_c('button',{staticClass:\"button-unstyled nav-icon\",attrs:{\"title\":_vm.$t('nav.search'),\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1):[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-bar-input\",attrs:{\"id\":\"search-bar-input\",\"placeholder\":_vm.$t('nav.search'),\"type\":\"text\"},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.find(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"button-default search-button\",attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.find(_vm.searchTerm)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"search\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled cancel-search\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('FAIcon',{staticClass:\"cancel-icon fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}})],1)]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nexport default {\n components: {\n SearchBar\n },\n data: () => ({\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n )\n }),\n computed: {\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n 'visibility': this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n } : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n 'margin': `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask ? {} : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n sitename () { return this.$store.state.instance.name },\n hideSitename () { return this.$store.state.instance.hideSitename },\n logoLeft () { return this.$store.state.instance.logoLeft },\n currentUser () { return this.$store.state.users.currentUser },\n privateMode () { return this.$store.state.instance.private }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./desktop_nav.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./desktop_nav.js\"\nimport __vue_script__ from \"!!babel-loader!./desktop_nav.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e4bf6fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./desktop_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"DesktopNav\",class:{ '-logoLeft': _vm.logoLeft },attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"inner-nav\"},[_c('div',{staticClass:\"item sitename\"},[(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('router-link',{staticClass:\"logo\",style:(_vm.logoBgStyle),attrs:{\"to\":{ name: 'root' }}},[_c('div',{staticClass:\"mask\",style:(_vm.logoMaskStyle)}),_vm._v(\" \"),_c('img',{style:(_vm.logoStyle),attrs:{\"src\":_vm.logo}})]),_vm._v(\" \"),_c('div',{staticClass:\"item right actions\"},[(_vm.currentUser || !_vm.privateMode)?_c('search-bar',{on:{\"toggled\":_vm.onSearchBarToggled},nativeOn:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openSettingsModal($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"cog\",\"title\":_vm.$t('nav.preferences')}})],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('a',{staticClass:\"nav-icon\",attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"tachometer-alt\",\"title\":_vm.$t('nav.administration')}})],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('button',{staticClass:\"button-unstyled nav-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.logout($event)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"fixed-width\":\"\",\"icon\":\"sign-out-alt\",\"title\":_vm.$t('login.logout')}})],1):_vm._e()],1)],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.$store.state.reports.modalActivated\n },\n userId () {\n return this.$store.state.reports.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.$store.state.reports.statuses\n },\n preTickedIds () {\n return this.$store.state.reports.preTickedIds\n }\n },\n watch: {\n userId: 'resetState',\n preTickedIds (newValue) {\n this.statusIdsToReport = newValue\n }\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = this.preTickedIds\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_reporting_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_reporting_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./user_reporting_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-02c4a7f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_reporting_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isOpen)?_c('Modal',{on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"user-reporting-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.title', [_vm.user.screen_name_ui]))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"user-reporting-panel-left\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.add_comment_description')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.comment),expression:\"comment\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.$t('user_reporting.additional_comments'),\"rows\":\"1\"},domProps:{\"value\":(_vm.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.comment=$event.target.value},_vm.resize]}})]),_vm._v(\" \"),(!_vm.user.is_local)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.forward_description')))]),_vm._v(\" \"),_c('Checkbox',{model:{value:(_vm.forward),callback:function ($$v) {_vm.forward=$$v},expression:\"forward\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.forward_to', [_vm.remoteInstance]))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.processing},on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.generic_error'))+\"\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"user-reporting-panel-right\"},[_c('List',{attrs:{\"items\":_vm.statuses},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"status-fadein user-reporting-panel-sitem\"},[_c('Status',{attrs:{\"in-conversation\":false,\"focused\":false,\"statusoid\":item}}),_vm._v(\" \"),_c('Checkbox',{attrs:{\"checked\":_vm.isChecked(item.id)},on:{\"change\":function (checked) { return _vm.toggleStatus(checked, item.id); }}})],1)]}}],null,false,2514683306)})],1)])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6b8d3a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn && !_vm.resettingForm)?_c('Modal',{staticClass:\"post-form-modal-view\",attrs:{\"is-open\":_vm.modalActivated},on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"post-form-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.new_status'))+\"\\n \")]),_vm._v(\" \"),_c('PostStatusForm',_vm._b({staticClass:\"panel-body\",on:{\"posted\":_vm.closeModal}},'PostStatusForm',_vm.params,false))],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./global_notice_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./global_notice_list.js\"\nimport __vue_script__ from \"!!babel-loader!./global_notice_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3ee0cc80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./global_notice_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"global-notice-list\"},_vm._l((_vm.notices),function(notice,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"alert global-notice\",class:( _obj = {}, _obj['global-' + notice.level] = true, _obj )},[_c('div',{staticClass:\"notice-message\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(notice.messageKey, notice.messageArgs))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled close-notice\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport Notifications from './components/notifications/notifications.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport 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 DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications,\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ChatPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n destroyed () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n 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 ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n const mobileLayout = windowWidth() <= 800\n const layoutHeight = windowHeight()\n const changed = mobileLayout !== this.isMobileLayout\n if (changed) {\n this.$store.dispatch('setMobileLayout', mobileLayout)\n }\n this.$store.dispatch('setLayoutHeight', layoutHeight)\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./App.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./App.js\"\nimport __vue_script__ from \"!!babel-loader!./App.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-17632d2b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.bgStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('DesktopNav'),_vm._v(\" \"),_c('div',{staticClass:\"app-bg-wrapper app-container-wrapper\"}),_vm._v(\" \"),_c('div',{staticClass:\"container underlay\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"sidebar-flexer mobile-hidden\",style:(_vm.sidebarAlign)},[_c('div',{staticClass:\"sidebar-bounds\"},[_c('div',{staticClass:\"sidebar-scroller\"},[_c('div',{staticClass:\"sidebar\"},[_c('user-panel'),_vm._v(\" \"),(!_vm.isMobileLayout)?_c('div',[_c('nav-panel'),_vm._v(\" \"),(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),(!_vm.currentUser && _vm.showFeaturesPanel)?_c('features-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('who-to-follow-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('notifications'):_vm._e()],1):_vm._e()],1)])])]),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[(!_vm.currentUser)?_c('div',{staticClass:\"login-hint panel panel-default\"},[_c('router-link',{staticClass:\"panel-body\",attrs:{\"to\":{ name: 'login' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"login.hint\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('router-view')],1),_vm._v(\" \"),_c('media-modal')],1),_vm._v(\" \"),(_vm.currentUser && _vm.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'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: '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 FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = new VueRouter({\n mode: 'history',\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { x: 0, y: 0 }\n }\n })\n\n /* eslint-disable no-new */\n return new Vue({\n router,\n store,\n i18n,\n el: '#app',\n render: h => h(App)\n })\n}\n\nexport default afterStoreSetup\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Vuex from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport 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 { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nVue.use(Vuex)\nVue.use(VueRouter)\nVue.use(VueI18n)\nVue.use(VueChatScroll)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\n\nVue.component('FAIcon', FontAwesomeIcon)\nVue.component('FALayers', FontAwesomeLayers)\n\nconst i18n = new VueI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = new Vuex.Store({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n statuses: statusesModule,\n users: usersModule,\n api: apiModule,\n config: configModule,\n 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