summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.ce97bd1883ee9dd7b809.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'priv/static/static/js/app.ce97bd1883ee9dd7b809.js.map')
-rw-r--r--priv/static/static/js/app.ce97bd1883ee9dd7b809.js.map1
1 files changed, 0 insertions, 1 deletions
diff --git a/priv/static/static/js/app.ce97bd1883ee9dd7b809.js.map b/priv/static/static/js/app.ce97bd1883ee9dd7b809.js.map
deleted file mode 100644
index a2669d143..000000000
--- a/priv/static/static/js/app.ce97bd1883ee9dd7b809.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/errors/errors.js","webpack:///./src/modules/errors.js","webpack:///./src/services/api/api.service.js","webpack:///./src/services/color_convert/color_convert.js","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/components/user_avatar/user_avatar.vue?4ccd","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?e43c","webpack:///./src/services/notification_utils/notification_utils.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue?5301","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue?37a8","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?203c","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?6b8a","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?0025","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?441e","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?755c","webpack:///./src/components/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?7eeb","webpack:///./src/components/user_list_popover/user_list_popover.js","webpack:///./src/components/user_list_popover/user_list_popover.vue","webpack:///./src/components/user_list_popover/user_list_popover.vue?5922","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?ef51","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?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?6ca3","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/post_status_form/post_status_form.vue?bd14","webpack:///./src/services/ruffle_service/ruffle_service.js","webpack:///./src/components/flash/flash.js","webpack:///./src/components/flash/flash.vue","webpack:///./src/components/flash/flash.vue?dda4","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?8eb5","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?c261","webpack:///./src/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/components/select/select.js","webpack:///./src/components/select/select.vue","webpack:///./src/components/select/select.vue?a973","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/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/export_import/export_import.js","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/follow_button/follow_button.vue?72f1","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?063a","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7538","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.vue?9a59","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?4b46","webpack:///./src/components/avatar_list/avatar_list.js","webpack:///./src/components/avatar_list/avatar_list.vue","webpack:///./src/components/avatar_list/avatar_list.vue?e3d4","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.vue?b437","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?5ceb","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?5d60","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.scss?8486","webpack:///./src/components/timeline/timeline.scss","webpack:///./src/components/status/status.scss?412d","webpack:///./src/components/status/status.scss","webpack:///./src/components/reply_button/reply_button.vue?912e","webpack:///./src/components/reply_button/reply_button.vue?e387","webpack:///./src/components/favorite_button/favorite_button.vue?0184","webpack:///./src/components/favorite_button/favorite_button.vue?9b9b","webpack:///./src/components/react_button/react_button.vue?f6fc","webpack:///./src/components/react_button/react_button.vue?5317","webpack:///./src/components/popover/popover.vue?1bf1","webpack:///./src/components/popover/popover.vue?333e","webpack:///./src/components/retweet_button/retweet_button.vue?8eee","webpack:///./src/components/retweet_button/retweet_button.vue?ecd9","webpack:///./src/components/extra_buttons/extra_buttons.vue?2134","webpack:///./src/components/extra_buttons/extra_buttons.vue?bef5","webpack:///./src/components/post_status_form/post_status_form.vue?fd6e","webpack:///./src/components/post_status_form/post_status_form.vue?5887","webpack:///./src/components/media_upload/media_upload.vue?d613","webpack:///./src/components/media_upload/media_upload.vue?1e11","webpack:///./src/components/scope_selector/scope_selector.vue?baf6","webpack:///./src/components/scope_selector/scope_selector.vue?341e","webpack:///./src/components/emoji_input/emoji_input.vue?88c6","webpack:///./src/components/emoji_input/emoji_input.vue?c0d0","webpack:///./src/components/emoji_picker/emoji_picker.scss?a54d","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?3599","webpack:///./src/components/checkbox/checkbox.vue?bf55","webpack:///./src/components/poll/poll_form.vue?43b8","webpack:///./src/components/poll/poll_form.vue?f333","webpack:///./src/components/select/select.vue?4977","webpack:///./src/components/select/select.vue?b41f","webpack:///./src/components/attachment/attachment.vue?4fa7","webpack:///./src/components/attachment/attachment.vue?5971","webpack:///./src/components/still-image/still-image.vue?21db","webpack:///./src/components/still-image/still-image.vue?da13","webpack:///./src/components/flash/flash.vue?913d","webpack:///./src/components/flash/flash.vue?79e6","webpack:///./src/components/status_content/status_content.vue?2f26","webpack:///./src/components/status_content/status_content.vue?6841","webpack:///./src/components/poll/poll.vue?7318","webpack:///./src/components/poll/poll.vue?192f","webpack:///./src/components/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/timeline/timeline_quick_settings.vue?d45e","webpack:///./src/components/timeline/timeline_quick_settings.vue?0ad2","webpack:///./src/components/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/notification/notification.scss?2458","webpack:///./src/components/notification/notification.scss","webpack:///./src/components/notifications/notification_filters.vue?e46d","webpack:///./src/components/notifications/notification_filters.vue?735e","webpack:///./src/components/chat_list/chat_list.vue?81f0","webpack:///./src/components/chat_list/chat_list.vue?e459","webpack:///./src/components/chat_list_item/chat_list_item.vue?5950","webpack:///./src/components/chat_list_item/chat_list_item.vue?c379","webpack:///./src/components/chat_title/chat_title.vue?5034","webpack:///./src/components/chat_title/chat_title.vue?11d1","webpack:///./src/components/chat_new/chat_new.vue?b3ff","webpack:///./src/components/chat_new/chat_new.vue?4b23","webpack:///./src/components/basic_user_card/basic_user_card.vue?ba41","webpack:///./src/components/basic_user_card/basic_user_card.vue?0481","webpack:///./src/components/list/list.vue?17ca","webpack:///./src/components/list/list.vue?e2c8","webpack:///./src/components/chat/chat.vue?445e","webpack:///./src/components/chat/chat.vue?559d","webpack:///./src/components/chat_message/chat_message.vue?7fac","webpack:///./src/components/chat_message/chat_message.vue?9c38","webpack:///./src/components/user_profile/user_profile.vue?7fb4","webpack:///./src/components/user_profile/user_profile.vue?899c","webpack:///./src/components/follow_card/follow_card.vue?5688","webpack:///./src/components/follow_card/follow_card.vue?ad43","webpack:///./src/components/search/search.vue?9825","webpack:///./src/components/search/search.vue?e198","webpack:///./src/components/registration/registration.vue?d518","webpack:///./src/components/registration/registration.vue?fd73","webpack:///./src/components/password_reset/password_reset.vue?d048","webpack:///./src/components/password_reset/password_reset.vue?5ec5","webpack:///./src/components/follow_request_card/follow_request_card.vue?c9e7","webpack:///./src/components/follow_request_card/follow_request_card.vue?b0bb","webpack:///./src/components/login_form/login_form.vue?99e8","webpack:///./src/components/login_form/login_form.vue?9c6d","webpack:///./src/components/shout_panel/shout_panel.vue?6b04","webpack:///./src/components/shout_panel/shout_panel.vue?b9c1","webpack:///./src/components/who_to_follow/who_to_follow.vue?6f47","webpack:///./src/components/who_to_follow/who_to_follow.vue?4eb6","webpack:///./src/components/about/about.vue?47a2","webpack:///./src/components/about/about.vue?7cdd","webpack:///./src/components/features_panel/features_panel.vue?b8ab","webpack:///./src/components/features_panel/features_panel.vue?867d","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7e97","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7643","webpack:///./src/components/staff_panel/staff_panel.vue?020d","webpack:///./src/components/staff_panel/staff_panel.vue?a8d5","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?eece","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?6ed6","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?7d1a","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?f8d3","webpack:///./src/App.scss?b70d","webpack:///./src/App.scss","webpack:///./src/components/user_panel/user_panel.vue?e12b","webpack:///./src/components/user_panel/user_panel.vue?63b4","webpack:///./src/components/nav_panel/nav_panel.vue?7be9","webpack:///./src/components/nav_panel/nav_panel.vue?be5f","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?2f6b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?1274","webpack:///./src/components/settings_modal/settings_modal.scss?e42a","webpack:///./src/components/settings_modal/settings_modal.scss","webpack:///./src/components/modal/modal.vue?a37f","webpack:///./src/components/modal/modal.vue?328d","webpack:///./src/components/panel_loading/panel_loading.vue?b42a","webpack:///./src/components/panel_loading/panel_loading.vue?0d54","webpack:///./src/components/async_component_error/async_component_error.vue?82c7","webpack:///./src/components/async_component_error/async_component_error.vue?e57d","webpack:///./src/components/media_modal/media_modal.vue?2930","webpack:///./src/components/media_modal/media_modal.vue?1d79","webpack:///./src/components/side_drawer/side_drawer.vue?472d","webpack:///./src/components/side_drawer/side_drawer.vue?fcf9","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?1868","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7cf2","webpack:///./src/components/mobile_nav/mobile_nav.vue?46cb","webpack:///./src/components/mobile_nav/mobile_nav.vue?9a0e","webpack:///./src/components/desktop_nav/desktop_nav.scss?1471","webpack:///./src/components/desktop_nav/desktop_nav.scss","webpack:///./src/components/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?7889","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?1af4","webpack:///./src/components/post_status_modal/post_status_modal.vue?892e","webpack:///./src/components/post_status_modal/post_status_modal.vue?b34c","webpack:///./src/components/global_notice_list/global_notice_list.vue?353b","webpack:///./src/components/global_notice_list/global_notice_list.vue?3d13","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/promise_interval/promise_interval.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/services/chat_utils/chat_utils.js","webpack:///./src/modules/api.js","webpack:///./src/modules/shout.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/services/chat_service/chat_service.js","webpack:///./src/modules/chats.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/conversation/conversation.vue?3eac","webpack:///./src/components/timeline_menu/timeline_menu_content.js","webpack:///./src/components/timeline_menu/timeline_menu_content.vue","webpack:///./src/components/timeline_menu/timeline_menu_content.vue?a288","webpack:///./src/components/timeline_menu/timeline_menu.js","webpack:///./src/components/timeline_menu/timeline_menu.vue","webpack:///./src/components/timeline_menu/timeline_menu.vue?2a41","webpack:///./src/components/timeline/timeline_quick_settings.js","webpack:///./src/components/timeline/timeline_quick_settings.vue","webpack:///./src/components/timeline/timeline_quick_settings.vue?f26c","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?3866","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_timeline/public_timeline.vue?bba0","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?0d56","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.vue?0810","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.vue?ee38","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?9b5f","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/conversation-page/conversation-page.vue?d63c","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.vue?7fc3","webpack:///src/components/notifications/notification_filters.vue","webpack:///./src/components/notifications/notification_filters.vue","webpack:///./src/services/favicon_service/favicon_service.js","webpack:///./src/components/notifications/notification_filters.vue?8ba7","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?c881","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.vue?db62","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/dm_timeline/dm_timeline.vue?4177","webpack:///./src/components/chat_title/chat_title.js","webpack:///./src/components/chat_title/chat_title.vue","webpack:///./src/components/chat_title/chat_title.vue?144f","webpack:///./src/components/chat_list_item/chat_list_item.js","webpack:///./src/components/chat_list_item/chat_list_item.vue","webpack:///./src/components/chat_list_item/chat_list_item.vue?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?4e2e","webpack:///src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue","webpack:///./src/components/chat_message_date/chat_message_date.vue?3398","webpack:///./src/components/chat_message/chat_message.js","webpack:///./src/components/chat_message/chat_message.vue","webpack:///./src/components/chat_message/chat_message.vue?9e73","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?e081","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?6927","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?b424","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/components/password_reset/password_reset.vue?06cf","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?5d68","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?ba79","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/oauth_callback/oauth_callback.vue?99e7","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.vue?888c","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/components/mfa_form/recovery_form.vue?d5df","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?6c57","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/shout_panel/shout_panel.js","webpack:///./src/components/shout_panel/shout_panel.vue","webpack:///./src/components/shout_panel/shout_panel.vue?50ce","webpack:///./src/components/who_to_follow/who_to_follow.js","webpack:///./src/components/who_to_follow/who_to_follow.vue","webpack:///./src/components/who_to_follow/who_to_follow.vue?4a17","webpack:///./src/components/instance_specific_panel/instance_specific_panel.js","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue","webpack:///./src/components/instance_specific_panel/instance_specific_panel.vue?3490","webpack:///./src/components/features_panel/features_panel.js","webpack:///./src/components/features_panel/features_panel.vue","webpack:///./src/components/features_panel/features_panel.vue?5aa3","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?25e4","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.vue?4f64","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/about/about.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?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?bdc9","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?3d0c","webpack:///src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?8f96","webpack:///src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/panel_loading/panel_loading.vue?ad58","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?f1f8","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?20b7","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/media_modal/media_modal.vue?5170","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?2047","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?a037","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.vue?e267","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.vue?1547","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?51ec","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","parseUser","output","masto","mastoShort","id","String","screen_name","acct","statusnet_profile_url","url","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","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","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","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","parseInt","parseLinkHeaderPagination","linkHeader","opts","flakeId","parsedLinkHeader","parseLinkHeader","maxId","next","max_id","minId","prev","min_id","parseChat","chat","unread","lastMessage","parseChatMessage","last_message","updated_at","isNormalized","chat_id","attachment","pending","idempotency_key","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","errs","k","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","chatId","messageId","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","headers","encodeURIComponent","authHeaders","json","ok","accessToken","fetchFriends","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","val","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","PLEROMA_STREAMING_EVENTS","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","a","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","getState","readyState","parsedEvent","has","warn","notification","chatUpdate","WSConnectionStatus","freeze","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","replyVisibility","isNotifications","public","friends","dms","notifications","media","favorites","bookmarks","queryString","param","statusText","pagination","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","async","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","bookmarkStatus","unbookmarkStatus","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","preview","idempotencyKey","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","postHeaders","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","setMediaDescription","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateProfileImages","banner","background","updateProfile","importMutes","file","importBlocks","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchKnownDomains","fetchDomainMutes","muteDomain","domain","unmuteDomain","chats","getOrCreateChat","accountId","chatMessages","sendChatMessage","mediaId","readChat","lastReadId","deleteChatMessage","rgb2hex","g","b","Math","ceil","toString","srgbToLinear","srgb","bit","pow","c2linear","relativeLuminance","getContrastRatio","la","lb","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","mixrgb","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","isExternal","generateProfileLink","restrictedNicknames","complicated","UserAvatar","props","showPlaceholder","defaultAvatar","$store","state","instance","server","components","StillImage","methods","imgSrc","imageLoadError","__vue_styles__","context","Component","_vm","_h","$createElement","_c","_self","staticClass","class","compact","betterShadow","attrs","Popover","trigger","placement","boundTo","boundToSelector","margin","popoverClass","removePadding","hidden","styles","oldSize","width","height","containerBoundingClientRect","$el","closest","offsetParent","getBoundingClientRect","updateStyles","anchorEl","$refs","children","anchorWidth","offsetWidth","clientWidth","anchorHeight","offsetHeight","clientHeight","screenBox","origin","left","top","parentBounds","x","y","xBounds","min","max","innerWidth","yBounds","bottom","innerHeight","horizOffset","usingTop","vPadding","anchorStyle","getComputedStyle","parseFloat","paddingTop","paddingBottom","yOffset","translateY","xOffset","translateX","transform","round","showPopover","wasHidden","$nextTick","$emit","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","created","destroyed","removeEventListener","on","ref","_t","_v","_e","style","notificationsFromStore","store","visibleTypes","rootState","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","statusNotifications","isValidNotification","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","maybeShowNotification","muteWordHits","rootGetters","mergedConfig","muteWords","isMutedNotification","notificationObject","prepareNotificationObject","i18n","showDesktopNotification","filteredNotificationsFromStore","types","sortedNotifications","sort","unseenNotificationsFromStore","i18nString","notifObj","icon","image","fileType","fileTypeService","fileMatchesSomeType","DialogModal","darkOverlay","default","onCancel","Function","$event","currentTarget","stopPropagation","library","add","faChevronDown","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","computed","tagsSet","hasTagPolicy","tagPolicyAvailable","hasTag","tagName","toggleTag","api","backendInteractor","commit","toggleRight","toggleActivationStatus","dispatch","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","scopedSlots","_u","fn","_s","$t","faEllipsisV","AccountActions","ProgressButton","showRepeats","hideRepeats","openChat","$router","recipient_id","mapState","pleromaChatMessagesAvailable","showing_reblogs","faRss","faBell","faSearchPlus","faExternalLinkAlt","faEdit","followRequestInProgress","browserSupport","cssFilter","getters","findUser","classes","rounded","bordered","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","userHighlightType","highlight","set","mapGetters","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","RemoteFollow","FollowButton","Select","setProfileView","v","switcher","linkClicked","open","userProfileLink","openProfileTab","zoomAvatar","mentionUser","replyTo","repliedUser","hideBio","domProps","hideUserStats","directives","rawName","expression","composing","model","callback","$$v","subscribing","preventDefault","LAYERS","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","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","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","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","concat","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","getColors","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","fromEntries","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","computeDynamicColor","variableSlot","composePreset","getThemes","cache","themes","statePositionAcc","position","getOpacitySlot","substring","getPreset","isV1","Array","isArray","setPreset","faReply","ReplyButton","replying","faStar","faStarRegular","FavoriteButton","animated","hidePostStats","faSmileBeam","ReactButton","filterWord","addReaction","existingReaction","find","me","focusInput","querySelector","focus","commonEmojis","displayText","replacement","filterWordLowercase","toLowerCase","orderedEmojiList","indexOfFilterWord","indexOf","flat","_l","faRetweet","RetweetButton","faEllipsisH","faBookmark","faBookmarkReg","faEyeSlash","faThumbtack","faShareAlt","faFlag","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","reportStatus","canDelete","ownStatus","canPin","canMute","faCircleNotch","StatusPopover","allStatuses","statusId","Status","enter","UserListPopover","usersCapped","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","count","faEnvelope","faGlobe","faLock","faLockOpen","faTimes","faPlusSquare","faEye","PostStatusForm","UserCard","AvatarList","Timeago","StatusContent","unmuted","userExpanded","mediaPlaying","suspendable","showReasonMutedThread","inConversation","repeaterClass","statusoid","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","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","watch","rect","scrollBy","num","filters","capitalize","str","charAt","toUpperCase","inlineExpanded","isPreview","highlighted","nativeOn","_f","expandable","staticStyle","replies","reply","emojiReactionsOnTimeline","loading","polls","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","index","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","allElements","querySelectorAll","clickedElement","checked","element","optionId","voters_count","$tc","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","namepart","instancepart","matchstring","mentionMatchesUrl","dataset","generateTagLink","toggleShowMore","setMedia","singleLine","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","BasicUserCard","CURRENT_VERSION","getLayersArray","array","parent","unshift","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","sourceOpacity","deps","isTextColor","backgroundColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","faUpload","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","size","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","fileInfos","disabled","faPlus","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","addOption","deleteOption","updatePollToParent","amount","DateUtils","expiryAmountChange","_k","keyCode","$set","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","updateIdempotencyKey","resize","textarea","textLength","setSelectionRange","autoFocus","scopeCopy","allAttentions","buildMentionsString","scope","copyMessageScope","postContentType","sensitiveByDefault","dropFiles","uploadingFiles","posting","newStatus","subject","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","disablePolls","hideScopeNotice","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","mobileLayout","deep","handler","statusChanged","autoPreview","clearStatus","clearPollForm","preserveFocus","el","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","delayed","removeMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","oldHeight","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","heightWithoutPadding","scrollHeight","newHeight","maxHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","selectionStart","targetScroll","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","handleEmojiInputShow","animation","disableLockWarning","disableSubject","emojiPickerPlacement","placeholder","ctrlKey","shiftKey","altKey","metaKey","disableScopeSelector","postFormat","selected","disableSensitivityCheckbox","ruffleInstance","RuffleService","getRuffle","RufflePlayer","polyfills","publicPath","onabort","oncancel","faStop","faExclamationTriangle","Flash","player","loaded","openPlayer","ruffle","newest","createPlayer","letterbox","container","load","closePlayer","log","faVideo","faPlayCircle","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","VideoAttachment","usePlaceholder","placeholderName","placeholderIconClass","referrerpolicy","mediaProxyAvailable","isEmpty","oembed","isSmall","fullwidth","useModal","openModal","toggleHidden","useOneClickNsfw","onImageLoad","naturalWidth","naturalHeight","naturalSizeLoad","_obj","allowPlay","thumb_url","oembedHTML","interval","localeDateString","time","refreshRelativeTimeObject","longFormat","autoUpdate","prefs","solidColor","tintColor","tintColor2","backgroundPosition","items","getKey","item","$slots","empty","prop","indeterminate","unstyled","showImmediately","noIdUpdate","stopGifs","onLoad","imageLoadHandler","canvas","getContext","drawImage","onError","alt","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","uk","zh","zh_Hant","messages","languages","en","require","setLanguage","language","setLocaleMessage","exponent","units","toFixed","click","progress","specialLanguageCodes","localeService","internalToBrowserLocale","defaultState","customTheme","customThemeSource","hideISP","hideInstanceWallpaper","hideShoutbox","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","streaming","autohideFloatingPostButton","pauseOnUnfocused","chatMention","webPushNotifications","interfaceLanguage","useStreamingApi","sidebarRight","useContainFit","virtualScrolling","instanceDefaultProperties","defaultConfig","mutations","setOption","setHighlight","del","actions","loadSettings","knownKeys","presentKeys","intersection","elem","statusSummary","muteWord","desktopNotificationOpts","Notification","permission","desktopNotificationSilence","desktopNotification","child","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","newExporter","filename","getExportedObject","exportData","stringified","btoa","display","newImporter","onImport","onImportFailure","validator","importData","filePicker","reader","FileReader","parsed","validationResult","readAsText","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","label","labelFollowing","unfollow","follow","requestUnfollow","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","controls","sizes","rows","lastAttachment","allButLastRow","onNaturalSizeLoad","rowStyle","itemsPerRow","itemStyle","row","total","getAspectRatio","flex","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","Image","provider_name","slicedUsers","emojiCurry","suggestEmoji","usersCurry","suggestUsers","firstChar","noPrefix","substr","aScore","bScore","imageUrl","previousQuery","cancelUserSearch","debounceUserSearch","userSearch","newSuggestions","detailText","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","slot","settingsModalVisible","settingsModalState","beforeUpdate","clickTab","setTab","contents","render","h","tabs","classesTab","classesWrapper","fullHeight","renderSlot","getComponentProps","isFunction","getComponentOptions","addPositionToWords","words","word","start","end","previous","splitByWhitespaceBoundary","currentWord","currentChar","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","faBoxOpen","faStickyNote","filterByKeyword","list","keyword","keywordLowercase","indexOfKeyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","refInFor","suggest","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","showSuggestions","textAtCaret","wordAtCaret","Completion","root","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","newValue","newWord","firstchar","matchedSuggestions","focusPickerInput","pickerEl","picker","pickerInput","scrollIntoView","togglePicker","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","panelBody","offsetBottom","setPlacement","overflowsBottom","hide","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","locals","EventTargetPolyfill","interfaceMod","settingsModalLoaded","settingsModalTargetTab","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","globalNotices","layoutHeight","lastTimeline","settingsSaved","success","errorData","setNotificationPermission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLastTimeline","setPageTitle","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","messageArgs","registrationOpen","vapidPublicKey","defaultBanner","hideSitename","loginMethod","logo","logoMargin","logoMask","logoLeft","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","shoutAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","getStaticEmoji","res","values","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","POSITIVE_INFINITY","idStore","conversationsObject","timelines","publicAndExternal","mergeOrAdd","arr","obj","oldItem","new","sortTimeline","addStatusToGlobalStorage","conversationId","updateNotificationsMinMaxId","addNewStatuses","timelineObject","minNew","maxNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setNotificationsLoading","setNotificationsSilence","markSingleNotificationAsSeen","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","setVirtualHeight","virtualHeight","deleteStatusById","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","promiseInterval","promiseCall","stopped","func","stop","fetchAndUpdate","timelineData","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","allowFollowingMove","fetchNotifications","readNotifsIds","notificationsFetcher","boundFetchAndUpdate","followRequestFetcher","requests","backendInteractorService","startFetchingTimeline","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","from","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","favourite","mention","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","oldValue","predictedRelationship","relationships","loggingIn","lastLoginName","usersObject","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","setCurrentUser","clearCurrentUser","beginLogin","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","logout","oauthApi","userToken","loginUser","requestPermission","getNotificationPermission","latest","maybeShowChatNotification","currentChatId","account_id","retryMultiplier","fetchers","mastoUserSocket","mastoUserSocketStatus","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","CLOSED","CLOSING","STARTING_INITIAL","STARTING","disableMastoSockets","DISABLED","startMastoUserSocket","ERROR","JOINED","closeEvent","ignoreCodes","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","shout","channel","setChannel","addMessage","setMessages","initializeShout","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","mediaViewer","currentIndex","activated","setCurrent","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","preTickedIds","modalActivated","openUserReportingModal","closeUserReportingModal","preTickedStatuses","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","isConfirmation","storage","idempotencyKeyIndex","ChatService","newMessages","updateMaxId","fakeId","fakeMessage","idIndex","lastSeenMessageId","newMessageCount","getView","currentMessageChainId","firstMessage","previousMessage","setHours","getTime","afterDate","nextMessage","messageChainId","deleteMessage","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","getChatById","chatList","chatListFetcher","openedChats","openedChatMessageServices","lastReadMessageId","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","isNewMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","_value","defaultReducer","paths","substate","path","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","lockerEls","disableBodyScroll","scrollBarGap","documentElement","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","unbind","idA","idB","expanded","isPage","statusComponent","originalStatusId","getConversationId","isExpanded","statusIndex","sortAndFilterConversation","irid","hiddenStyle","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","collapsable","pinnedStatusIdsObject","faUsers","faHome","TimelineMenuContent","privateMode","federating","TimelineMenu","isOpen","openMenu","blockOpen","timelineName","route","i18nkey","faFilter","faFont","faWrench","TimelineQuickSettings","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","faCog","Timeline","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","showLoadButton","loadButtonString","rootClasses","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","statusesToDisplay","statusesPerSide","virtualScrollingEnabled","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","virtualScrollIndexY","scrollLoad","bodyBRect","doc","clientTop","PublicTimeline","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","Bookmarks","conversationPage","faCheck","faUserPlus","faUser","faSuitcaseRolling","getUser","targetUser","targetUserProfileLink","needMute","toggleNotificationFilter","favimg","favcanvas","favcontext","isImageLoaded","clearFaviconBadge","FaviconService","initFaviconService","nodes","clearRect","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","faviconWidth","PI","fill","Notifications","NotificationFilters","minimalMode","filterMode","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","unseenCountTitle","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","minimal","tabModeDict","Interactions","onModeSwitch","DMs","htmlTitle","getUserProfileLink","withAvatar","ChatListItem","ChatTitle","attachmentInfo","messageForStatusContent","isYou","messagePreview","faSearch","faChevronLeft","chatNew","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","ChatList","List","ChatNew","isNew","cancelNewChat","newChat","displayDate","today","toLocaleDateString","ChatMessage","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","author","isMessage","hasAttachment","popoverMarginStyle","hovered","menuOpened","onHover","bool","isHovered","hoveredMessageChain","getScrollPosition","Chat","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleLayoutChange","updateScrollableContainerHeight","handleResize","setChatLayout","unsetChatLayout","recipient","formPlaceholder","chatViewItems","streamingEnabled","bottomedOutBeforeUpdate","scrollDown","expand","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","inner","scrollable","diff","scrollTo","totalHeight","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","positionBeforeUpdate","isScrollable","doStartFetching","handleAttachmentPosting","sendMessage","buildFakeMessage","doSendMessage","retriesLeft","FollowCard","isMe","noFollowsYou","withLoadMore","select","destroy","childPropName","additionalPropNames","WrappedComponent","fetchEntries","$props","updateEntries","newEntries","$listeners","$scopedSlots","FollowerList","FriendList","UserProfile","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","TabSwitcher","viewing","Search","searchTerm","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","uses","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","accountApprovalRequired","signedIn","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","submit","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","$error","modifiers","$forceUpdate","resetPassword","passwordReset","throttled","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","identifier","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","is","authForm","MFARecoveryForm","MFATOTPForm","faBullhorn","shoutPanel","currentMessage","collapsed","togglePanel","scrollEl","floating","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","InstanceSpecificPanel","FeaturesPanel","pleromaChatMessages","gopher","whoToFollow","mediaProxy","TermsOfServicePanel","StaffPanel","staffAccounts","groupedStaffAccounts","groupBy","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","hostname","validateAuthenticatedRoute","to","routes","_to","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","ShoutPanel","OAuthCallback","UserPanel","faChevronUp","faComments","faInfoCircle","faStream","NavPanel","showTimelines","toggleTimelines","followRequestCount","usersToFollow","toFollow","shuffled","WhoToFollowPanel","oldUser","noBackground","retry","getResettableAsyncComponent","asyncComponent","asyncComponentFactory","observe","observable","functional","resetAsyncComponent","faWindowMinimize","faFileUpload","faFileDownload","SettingsModal","dataImporter","importValidator","dataThemeExporter","generateExport","dataExporter","Modal","SettingsModalContent","PanelLoading","AsyncComponentError","delay","closeModal","peekModal","_pleroma_settings_version","major","minor","fileMajor","feMajor","restore","backup","backupWithTheme","sample","ignoreList","clone","modalOpenedOnce","modalPeeked","peek","touchEventCoord","touches","screenX","screenY","vectorLength","sqrt","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","oldCoord","newCoord","delta","towardsDir","perpendicularDir","towardsPerpendicular","faChevronRight","MediaModal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","faSignInAlt","faSignOutAlt","faTachometerAlt","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","faPen","HIDDEN_FOR_PAGES","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","faBars","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","isChat","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","onSearchBarToggled","UserReportingModal","statusIdsToReport","processing","remoteInstance","isChecked","toggleStatus","PostStatusModal","resettingForm","isFormVisible","_b","GlobalNoticeList","notices","closeNotice","windowWidth","DesktopNav","mobileActivePanel","updateMobileState","userBackground","instanceBackground","bgStyle","isMobileLayout","sidebarAlign","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","textContent","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","localeCompare","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","general","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","VueRouter","scrollBehavior","_from","savedPosition","matched","App","currentLocale","use","Vuex","VueI18n","VueClickOutside","PortalVue","FontAwesomeIcon","FontAwesomeLayers","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","chatsModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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","file":"static/js/app.ce97bd1883ee9dd7b809.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"5f3ceb7bdf08fadacf00\",\"3\":\"6c8e014d70907359ad5a\",\"4\":\"564b2a8cbfe4d5e93949\",\"5\":\"6024023b2804dafc6bcb\",\"6\":\"b0c7a2b19cc70c33dc1e\",\"7\":\"4dbb03c6731e1c8190af\",\"8\":\"d11ae57b3255a1c74681\",\"9\":\"80dc09c85f557dd2c96f\",\"10\":\"fdbf093cc5602ca4f2e1\",\"11\":\"7b11fd75fe61d6e10ac6\",\"12\":\"a3dc3473565ec07a88c2\",\"13\":\"cdc076533397e24391bc\",\"14\":\"a2b9acaf9caa95d1fd7f\",\"15\":\"fe4e76f27cc478289a42\",\"16\":\"90b5ee380da41d6d061c\",\"17\":\"c5a6513076aa9c5a9564\",\"18\":\"ffde79cfe78615dbb020\",\"19\":\"c031807287d659bd841d\",\"20\":\"abb0d332055536a87c38\",\"21\":\"6e952388ef8d5a0276dc\",\"22\":\"dbc79965f66b0bb62d88\",\"23\":\"4addb03e0862c780c55f\",\"24\":\"e4b623be1780a14a6168\",\"25\":\"34eeae0070f7f1eb6843\",\"26\":\"bd86a0d958de2bb3905a\",\"27\":\"7d4ab8716762d6f57135\",\"28\":\"a88999ebb3f7ec930aad\",\"29\":\"519f681d194c212ae75f\",\"30\":\"d29cd76b0781bb654f87\",\"31\":\"15b545bb42e21d39c678\",\"32\":\"899035ede0115c5c0f99\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"0778a6a864a1307a6c41\",\"3\":\"b2603a50868c68a1c192\",\"4\":\"31d6cfe0d16ae931b73c\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\",\"31\":\"31d6cfe0d16ae931b73c\",\"32\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([584,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 && 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 { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n if (error.hasOwnProperty('error')) {\n error = JSON.parse(error.error)\n }\n }\n\n if (typeof error === 'object') {\n const errorContents = JSON.parse(error.error)\n // keys will have the property that has the error, for example 'ap_id',\n // 'email' or 'captcha', the value will be an array of its error\n // like \"ap_id\": [\"has been taken\"] or \"captcha\": [\"Invalid CAPTCHA\"]\n\n // replace ap_id with username\n if (errorContents.ap_id) {\n errorContents.username = errorContents.ap_id\n delete errorContents.ap_id\n }\n\n this.message = humanizeErrors(errorContents)\n } else {\n this.message = error\n }\n } catch (e) {\n // can't parse it, so just treat it like a string\n this.message = error\n }\n }\n}\n","import { capitalize } from 'lodash'\n\nexport function humanizeErrors (errors) {\n return Object.entries(errors).reduce((errs, [k, val]) => {\n let message = val.reduce((acc, message) => {\n let key = capitalize(k.replace(/_/g, ' '))\n return acc + [key, message].join(' ') + '. '\n }, '')\n return [...errs, message]\n }, [])\n}\n","import { each, map, concat, last, get } from 'lodash'\nimport { parseStatus, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = `/api/v1/pleroma/chats`\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n })\n .catch((error) => {\n return reject(new StatusCodeError(response.status, error, { url, options }, response))\n })\n )\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, banner = null, background = null }) => {\n const form = new FormData()\n if (avatar !== null) form.append('avatar', avatar)\n if (banner !== null) form.append('header', banner)\n if (background !== null) form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => {\n if (data.error) {\n throw new Error(data.error)\n }\n return parseUser(data)\n })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { 'Authorization': `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n let status = ''\n let statusText = ''\n\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.errors) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview,\n idempotencyKey\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n let postHeaders = authHeaders(credentials)\n if (idempotencyKey) {\n postHeaders['idempotency-key'] = idempotencyKey\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: postHeaders\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(MUTES_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n 'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n eventTarget.getState = () => socket.readyState\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n if (event === 'delete') {\n return { event, id: payload }\n }\n const data = payload ? JSON.parse(payload) : null\n if (event === 'update') {\n return { event, status: parseStatus(data) }\n } else if (event === 'notification') {\n return { event, notification: parseNotification(data) }\n } else if (event === 'pleroma:chat_update') {\n return { event, chatUpdate: parseChat(data) }\n }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\n }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n 'JOINED': 1,\n 'CLOSED': 2,\n 'ERROR': 3,\n 'DISABLED': 4,\n 'STARTING': 5,\n 'STARTING_INITIAL': 6\n})\n\nconst chats = ({ credentials }) => {\n return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => {\n return { chats: data.map(parseChat).filter(c => c) }\n })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_URL(accountId),\n method: 'POST',\n credentials\n })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n let url = PLEROMA_CHAT_MESSAGES_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n\n return promisedRequest({\n url,\n method: 'GET',\n credentials\n })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n const payload = {\n 'content': content\n }\n\n if (mediaId) {\n payload['media_id'] = mediaId\n }\n\n const headers = {}\n\n if (idempotencyKey) {\n headers['idempotency-key'] = idempotencyKey\n }\n\n return promisedRequest({\n url: PLEROMA_CHAT_MESSAGES_URL(id),\n method: 'POST',\n payload: payload,\n credentials,\n headers\n })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_CHAT_READ_URL(id),\n method: 'POST',\n payload: {\n 'last_read_id': lastReadId\n },\n credentials\n })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n return promisedRequest({\n url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n method: 'DELETE',\n credentials\n })\n}\n\nconst apiService = {\n verifyCredentials,\n fetchTimeline,\n fetchPinnedStatuses,\n fetchConversation,\n fetchStatus,\n fetchFriends,\n exportFriends,\n fetchFollowers,\n followUser,\n unfollowUser,\n pinOwnStatus,\n unpinOwnStatus,\n muteConversation,\n unmuteConversation,\n blockUser,\n unblockUser,\n fetchUser,\n fetchUserRelationship,\n favorite,\n unfavorite,\n retweet,\n unretweet,\n bookmarkStatus,\n unbookmarkStatus,\n postStatus,\n deleteStatus,\n uploadMedia,\n setMediaDescription,\n fetchMutes,\n muteUser,\n unmuteUser,\n subscribeUser,\n unsubscribeUser,\n fetchBlocks,\n fetchOAuthTokens,\n revokeOAuthToken,\n tagUser,\n untagUser,\n deleteUser,\n addRight,\n deleteRight,\n activateUser,\n deactivateUser,\n register,\n getCaptcha,\n updateProfileImages,\n updateProfile,\n importMutes,\n importBlocks,\n importFollows,\n deleteAccount,\n changeEmail,\n changePassword,\n settingsMFA,\n mfaDisableOTP,\n generateMfaBackupCodes,\n mfaSetupOTP,\n mfaConfirmOTP,\n fetchFollowRequests,\n approveUser,\n denyUser,\n suggestions,\n markNotificationsAsSeen,\n dismissNotification,\n vote,\n fetchPoll,\n fetchFavoritedByUsers,\n fetchRebloggedByUsers,\n fetchEmojiReactions,\n reactWithEmoji,\n unreactWithEmoji,\n reportUser,\n updateNotificationSettings,\n search2,\n searchUsers,\n fetchKnownDomains,\n fetchDomainMutes,\n muteDomain,\n unmuteDomain,\n chats,\n getOrCreateChat,\n chatMessages,\n sendChatMessage,\n readChat,\n deleteChatMessage\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n if (r === null || typeof r === 'undefined') {\n return undefined\n }\n // TODO: clean up this mess\n if (r[0] === '#' || r === 'transparent') {\n return r\n }\n if (typeof r === 'object') {\n ({ r, g, b } = r)\n }\n [r, g, b] = [r, g, b].map(val => {\n val = Math.ceil(val)\n val = val < 0 ? 0 : val\n val = val > 255 ? 255 : val\n return val\n })\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n // W3C gives 0.03928 while wikipedia states 0.04045\n // what those magical numbers mean - I don't know.\n // something about gamma-correction, i suppose.\n // Sticking with W3C example.\n const c = bit / 255\n if (c < 0.03928) {\n return c / 12.92\n } else {\n return Math.pow((c + 0.055) / 1.055, 2.4)\n }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n const { r, g, b } = srgbToLinear(srgb)\n return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n const la = relativeLuminance(a)\n const lb = relativeLuminance(b)\n const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n if (fga === 1 || typeof fga === 'undefined') return fg\n return 'rgb'.split('').reduce((acc, c) => {\n // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n // for opaque bg and transparent fg\n acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n return acc\n }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n return 'rgb'.split('').reduce((acc, c) => {\n acc[c] = 255 - rgb[c]\n return acc\n }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n return result ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16)\n } : null\n}\n\n/**\n * Old somewhat weird function for mixing two colors together\n *\n * @param {Object} a - one color (rgb)\n * @param {Object} b - other color (rgb)\n * @returns {Object} result\n */\nexport const mixrgb = (a, b) => {\n return 'rgb'.split('').reduce((acc, k) => {\n acc[k] = (a[k] + b[k]) / 2\n return acc\n }, {})\n}\n/**\n * Converts rgb object into a CSS rgba() color\n *\n * @param {Object} color - rgb\n * @returns {String} CSS rgba() color\n */\nexport const rgba2css = function (rgba) {\n return `rgba(${Math.floor(rgba.r)}, ${Math.floor(rgba.g)}, ${Math.floor(rgba.b)}, ${rgba.a})`\n}\n\n/**\n * Get text color for given background color and intended text color\n * This checks if text and background don't have enough color and inverts\n * text color's lightness if needed. If text color is still not enough it\n * will fall back to black or white\n *\n * @param {Object} bg - background color\n * @param {Object} text - intended text color\n * @param {Boolean} preserve - try to preserve intended text color's hue/saturation (i.e. no BW)\n */\nexport const getTextColor = function (bg, text, preserve) {\n const contrast = getContrastRatio(bg, text)\n\n if (contrast < 4.5) {\n const base = typeof text.a !== 'undefined' ? { a: text.a } : {}\n const result = Object.assign(base, invertLightness(text).rgb)\n if (!preserve && getContrastRatio(bg, result) < 4.5) {\n // B&W\n return contrastRatio(bg, text).rgb\n }\n // Inverted color\n return result\n }\n return text\n}\n\n/**\n * Converts color to CSS Color value\n *\n * @param {Object|String} input - color\n * @param {Number} [a] - alpha value\n * @returns {String} a CSS Color value\n */\nexport const getCssColor = (input, a) => {\n let rgb = {}\n if (typeof input === 'object') {\n rgb = input\n } else if (typeof input === 'string') {\n if (input.startsWith('#')) {\n rgb = hex2rgb(input)\n } else {\n return input\n }\n }\n return rgba2css({ ...rgb, a })\n}\n","import { includes } from 'lodash'\n\nconst generateProfileLink = (id, screenName, restrictedNicknames) => {\n const complicated = !screenName || (isExternal(screenName) || includes(restrictedNicknames, screenName))\n return {\n name: (complicated ? 'external-user-profile' : 'user-profile'),\n params: (complicated ? { id } : { name: screenName })\n }\n}\n\nconst isExternal = screenName => screenName && screenName.includes('@')\n\nexport default generateProfileLink\n","import StillImage from '../still-image/still-image.vue'\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact'\n ],\n data () {\n return {\n showPlaceholder: false,\n defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n }\n },\n components: {\n StillImage\n },\n methods: {\n imgSrc (src) {\n return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n },\n imageLoadError () {\n this.showPlaceholder = true\n }\n }\n}\n\nexport default UserAvatar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_avatar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_avatar.js\"\nimport __vue_script__ from \"!!babel-loader!./user_avatar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1bc06501\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.user)?_c('StillImage',{staticClass:\"Avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name_ui,\"title\":_vm.user.screen_name_ui,\"src\":_vm.imgSrc(_vm.user.profile_image_url_original),\"image-load-error\":_vm.imageLoadError}}):_c('div',{staticClass:\"Avatar -placeholder\",class:{ 'avatar-compact': _vm.compact }})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n\n // Either 'top' or 'bottom'\n placement: String,\n\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n\n // Replaces the classes you may want for the popover container.\n // Use 'popover-default' in addition to get the default popover\n // styles with your custom class.\n popoverClass: String,\n\n // If true, subtract padding when calculating position for the popover,\n // use it when popover offset looks to be different on top vs bottom.\n removePadding: Boolean\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one v-slot:trigger.\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n // SVGs don't have offsetWidth/Height, use fallback\n const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n const screenBox = anchorEl.getBoundingClientRect()\n // Screen position of the origin point for popover\n const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n const content = this.$refs.content\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentBounds = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n min: parentBounds.left + (margin.left || 0),\n max: parentBounds.right - (margin.right || 0)\n } : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n min: parentBounds.top + (margin.top || 0),\n max: parentBounds.bottom - (margin.bottom || 0)\n } : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n\n // If overflowing from left, move it so that it doesn't\n if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n }\n\n // If overflowing from right, move it so that it doesn't\n if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n }\n\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n let vPadding = 0\n if (this.removePadding && usingTop) {\n const anchorStyle = getComputedStyle(anchorEl)\n vPadding = parseFloat(anchorStyle.paddingTop) + parseFloat(anchorStyle.paddingBottom)\n }\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorHeight + vPadding - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = anchorWidth * 0.5 - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n // Note, separate translateX and translateY avoids blurry text on chromium,\n // single translate or translate3d resulted in blurry text.\n this.styles = {\n opacity: 1,\n transform: `translateX(${Math.round(translateX)}px) translateY(${Math.round(translateY)}px)`\n }\n },\n showPopover () {\n const wasHidden = this.hidden\n this.hidden = false\n this.$nextTick(() => {\n if (wasHidden) this.$emit('show')\n this.updateStyles()\n })\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n destroyed () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./popover.js\"\nimport __vue_script__ from \"!!babel-loader!./popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-67137541\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"mouseenter\":_vm.onMouseenter,\"mouseleave\":_vm.onMouseleave}},[_c('button',{ref:\"trigger\",staticClass:\"button-unstyled -fullwidth popover-trigger-button\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass || 'popover-default',style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n const rootState = store.rootState || store.state\n\n return ([\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.followRequest && 'follow_request',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n if (isStatusNotification(notification.type) && !notification.status) {\n return false\n }\n return true\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst isMutedNotification = (store, notification) => {\n if (!notification.status) return\n return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n\n if (notification.seen) return\n if (!visibleTypes(store).includes(notification.type)) return\n if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/flash/)) {\n return 'flash'\n }\n\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dialog_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./dialog_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./dialog_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70b9d662\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dialog_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:{ 'dark-overlay': _vm.darkOverlay },on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }$event.stopPropagation();return _vm.onCancel()}}},[_c('div',{staticClass:\"dialog-modal panel panel-default\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"panel-heading dialog-modal-heading\"},[_c('div',{staticClass:\"title\"},[_vm._t(\"header\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-footer user-interactions panel-footer\"},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./moderation_tools.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./moderation_tools.js\"\nimport __vue_script__ from \"!!babel-loader!./moderation_tools.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3f96e1c9\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./moderation_tools.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Popover',{staticClass:\"moderation-tools-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"offset\":{ y: 5 }},on:{\"show\":function($event){return _vm.setToggled(true)},\"close\":function($event){return _vm.setToggled(false)}},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleActivationStatus()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.deleteUserDialog(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.SANDBOX)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n \")]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.QUARANTINE)}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }}),_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n \")]):_vm._e()]):_vm._e()])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"btn button-default btn-block moderation-tools-button\",class:{ toggled: _vm.toggled }},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n \"),_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}})],1)]},proxy:true}])}),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")]},proxy:true},{key:\"footer\",fn:function(){return [_c('button',{staticClass:\"btn button-default\",on:{\"click\":function($event){return _vm.deleteUserDialog(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])]},proxy:true}],null,false,2753940671)},[_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))])]):_vm._e()],1)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEllipsisV\n)\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n },\n openChat () {\n this.$router.push({\n name: 'chat',\n params: { recipient_id: this.user.id }\n })\n }\n },\n computed: {\n ...mapState({\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n })\n }\n}\n\nexport default AccountActions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./account_actions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./account_actions.js\"\nimport __vue_script__ from \"!!babel-loader!./account_actions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3b4867b7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"AccountActions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.relationship.following)?[(_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn button-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.relationship.blocking)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.report'))+\"\\n \")]),_vm._v(\" \"),(_vm.pleromaChatMessagesAvailable)?_c('button',{staticClass:\"btn button-default btn-block dropdown-item\",on:{\"click\":_vm.openChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.message'))+\"\\n \")]):_vm._e()],2)]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled ellipsis-button\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"ellipsis-v\"}})],1)]},proxy:true}])})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport Select from '../select/select.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRss,\n faBell,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit\n)\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton,\n Select\n },\n methods: {\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrent', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e5e22042\\\",\\\"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('button',{staticClass:\"button-unstyled edit-profile-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.openProfileTab($event)}}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"fixed-width\":\"\",\"icon\":\"edit\",\"title\":_vm.$t('user_card.edit_profile')}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('button',{staticClass:\"button-unstyled external-link-button\",attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"external-link-alt\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user,\"relationship\":_vm.relationship}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"title\":_vm.user.screen_name_ui,\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name_ui)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"general.role.\" + _vm.visibleRole)))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.bot'))+\"\\n \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('FAIcon',{staticClass:\"lock-icon\",attrs:{\"icon\":\"lock\",\"size\":\"sm\"}})],1):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],2)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.relationship.followed_by && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('Select',{staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},model:{value:(_vm.userHighlightType),callback:function ($$v) {_vm.userHighlightType=$$v},expression:\"userHighlightType\"}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.highlight.disabled'))+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.highlight.solid'))+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.highlight.striped'))+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.highlight.side'))+\"\\n \")])])],1):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"relationship\":_vm.relationship}}),_vm._v(\" \"),(_vm.relationship.following)?[(!_vm.relationship.subscribing)?_c('ProgressButton',{staticClass:\"btn button-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1):_c('ProgressButton',{staticClass:\"btn button-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('FALayers',[_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"left-5 shrink-6 up-3 rotate-20\",\"flip\":\"horizontal\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"rss\",\"transform\":\"right-5 shrink-6 up-3 rotate-20\"}}),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"bell\"}})],1)],1)]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn button-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio && _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 alertSuccess: {\n depends: ['cGreen'],\n opacity: 'alert'\n },\n alertSuccessText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertSuccess',\n textColor: true\n },\n alertSuccessPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertSuccess',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupSuccess: {\n depends: ['alertSuccess'],\n opacity: 'alertPopup'\n },\n alertPopupSuccessText: {\n depends: ['alertSuccessText'],\n layer: 'popover',\n variant: 'alertPopupSuccess',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n },\n\n chatBg: {\n depends: ['bg']\n },\n\n chatMessageIncomingBg: {\n depends: ['chatBg']\n },\n\n chatMessageIncomingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: true\n },\n\n chatMessageIncomingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageIncomingBg',\n textColor: 'preserve'\n },\n\n chatMessageIncomingBorder: {\n depends: ['border'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n },\n\n chatMessageOutgoingBg: {\n depends: ['chatMessageIncomingBg'],\n color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n },\n\n chatMessageOutgoingText: {\n depends: ['text'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: true\n },\n\n chatMessageOutgoingLink: {\n depends: ['link'],\n layer: 'chatMessage',\n variant: 'chatMessageOutgoingBg',\n textColor: 'preserve'\n },\n\n chatMessageOutgoingBorder: {\n depends: ['chatMessageOutgoingBg'],\n opacity: 'border',\n color: (mod, border) => brightness(2 * mod, border).rgb\n }\n}\n","import { convert } from 'chromatism'\nimport { rgb2hex, hex2rgb, rgba2css, getCssColor, relativeLuminance } from '../color_convert/color_convert.js'\nimport { getColors, computeDynamicColor, getOpacitySlot } from '../theme_data/theme_data.service.js'\n\nexport const applyTheme = (input) => {\n const { rules } = generatePreset(input)\n const head = document.head\n const body = document.body\n body.classList.add('hidden')\n\n const styleEl = document.createElement('style')\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`body { ${rules.radii} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.colors} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.shadows} }`, 'index-max')\n styleSheet.insertRule(`body { ${rules.fonts} }`, 'index-max')\n body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n .filter(_ => usesDropShadow ? _.inset : _)\n .map((shad) => [\n shad.x,\n shad.y,\n shad.blur,\n shad.spread\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n if (input.length === 0) {\n return 'none'\n }\n\n return input\n // drop-shadow doesn't support inset or spread\n .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n .map((shad) => [\n shad.x,\n shad.y,\n // drop-shadow's blur is twice as strong compared to box-shadow\n shad.blur / 2\n ].map(_ => _ + 'px').concat([\n getCssColor(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n const sourceColors = !themeData.themeEngineVersion\n ? colors2to3(themeData.colors || themeData)\n : themeData.colors || themeData\n\n const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n const htmlColors = Object.entries(colors)\n .reduce((acc, [k, v]) => {\n if (!v) return acc\n acc.solid[k] = rgb2hex(v)\n acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n return acc\n }, { complete: {}, solid: {} })\n return {\n rules: {\n colors: Object.entries(htmlColors.complete)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`)\n .join(';')\n },\n theme: {\n colors: htmlColors.solid,\n opacity\n }\n }\n}\n\nexport const generateRadii = (input) => {\n let inputRadii = input.radii || {}\n // v1 -> v2\n if (typeof input.btnRadius !== 'undefined') {\n inputRadii = Object\n .entries(input)\n .filter(([k, v]) => k.endsWith('Radius'))\n .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n }\n const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {\n btn: 4,\n input: 4,\n checkbox: 2,\n panel: 10,\n avatar: 5,\n avatarAlt: 50,\n tooltip: 2,\n attachment: 5,\n chatMessage: inputRadii.panel\n })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n\n const cleanInputShadows = Object.fromEntries(\n Object.entries(input.shadows || {})\n .map(([name, shadowSlot]) => [\n name,\n // defaulting color to black to avoid potential problems\n shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n ])\n )\n const inputShadows = cleanInputShadows && !input.themeEngineVersion\n ? shadows2to3(cleanInputShadows, input.opacity)\n : cleanInputShadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faReply } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faReply)\n\nconst ReplyButton = {\n name: 'ReplyButton',\n props: ['status', 'replying'],\n computed: {\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n }\n}\n\nexport default ReplyButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./reply_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./reply_button.js\"\nimport __vue_script__ from \"!!babel-loader!./reply_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-56f413c0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./reply_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ReplyButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:{'-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('toggle')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\"}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"reply\",\"title\":_vm.$t('tool_tip.reply')}})],1),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.replies_count)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faStar } from '@fortawesome/free-solid-svg-icons'\nimport {\n faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faStar,\n faStarRegular\n)\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21f861d8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"FavoriteButton\"},[(_vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.favorited && '-favorited',attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":[_vm.status.favorited ? 'fas' : 'far', 'star'],\"spin\":_vm.animated}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"title\":_vm.$t('tool_tip.favorite'),\"icon\":['far', 'star']}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',{staticClass:\"action-counter\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.fave_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(faSmileBeam)\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n },\n focusInput () {\n this.$nextTick(() => {\n const input = this.$el.querySelector('input')\n if (input) input.focus()\n })\n }\n },\n computed: {\n commonEmojis () {\n return [\n { displayText: 'thumbsup', replacement: '👍' },\n { displayText: 'angry', replacement: '😠' },\n { displayText: 'eyes', replacement: '👀' },\n { displayText: 'joy', replacement: '😂' },\n { displayText: 'fire', replacement: '🔥' }\n ]\n },\n emojis () {\n if (this.filterWord !== '') {\n const filterWordLowercase = this.filterWord.toLowerCase()\n let orderedEmojiList = []\n for (const emoji of this.$store.state.instance.emoji) {\n if (emoji.replacement === this.filterWord) return [emoji]\n\n const indexOfFilterWord = emoji.displayText.toLowerCase().indexOf(filterWordLowercase)\n if (indexOfFilterWord > -1) {\n if (!Array.isArray(orderedEmojiList[indexOfFilterWord])) {\n orderedEmojiList[indexOfFilterWord] = []\n }\n orderedEmojiList[indexOfFilterWord].push(emoji)\n }\n }\n return orderedEmojiList.flat()\n }\n return this.$store.state.instance.emoji || []\n },\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a936ed34\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ReactButton\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},on:{\"show\":_vm.focusInput},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"size\":\"1\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji.replacement,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)]}},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled popover-trigger\",attrs:{\"title\":_vm.$t('tool_tip.add_reaction')}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":['far', 'smile-beam']}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faRetweet } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faRetweet)\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n }\n }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46fe49c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"RetweetButton\"},[(_vm.visibility !== 'private' && _vm.visibility !== 'direct' && _vm.loggedIn)?_c('button',{staticClass:\"button-unstyled interactive\",class:_vm.status.repeated && '-repeated',attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"spin\":_vm.animated}})],1):(_vm.loggedIn)?_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\",\"title\":_vm.$t('timeline.no_retweet_hint')}})],1):_c('span',[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"retweet\",\"title\":_vm.$t('tool_tip.repeat')}})],1),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',{staticClass:\"no-event\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.repeat_num)+\"\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEllipsisH,\n faBookmark,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faBookmark as faBookmarkReg,\n faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n faEllipsisH,\n faBookmark,\n faBookmarkReg,\n faEyeSlash,\n faThumbtack,\n faShareAlt,\n faExternalLinkAlt,\n faFlag\n)\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n reportStatus () {\n this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3a956a44\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"ExtraButtons\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"eye-slash\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"thumbtack\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])],1):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'bookmark']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])],1):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"times\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"share-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])],1),_vm._v(\" \"),(!_vm.status.is_local)?_c('a',{staticClass:\"button-default dropdown-item dropdown-item-icon\",attrs:{\"title\":\"Source\",\"href\":_vm.status.external_url,\"target\":\"_blank\"}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":\"external-link-alt\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.external_source\")))])],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.reportStatus($event)},close]}},[_c('FAIcon',{attrs:{\"fixed-width\":\"\",\"icon\":['far', 'flag']}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"user_card.report\")))])],1)])]}},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled popover-trigger\"},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"ellipsis-h\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: () => import('../status/status.vue'),\n Popover: () => import('../popover/popover.vue')\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fa4a5d94\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"popover-class\":\"popover-default status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"default\")]},proxy:true},{key:\"content\",fn:function(){return [(_vm.status)?_c('Status',{attrs:{\"is-preview\":true,\"statusoid\":_vm.status,\"compact\":true}}):(_vm.error)?_c('div',{staticClass:\"status-preview-no-content faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.status_unavailable'))+\"\\n \")]):_c('div',{staticClass:\"status-preview-no-content\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"2x\"}})],1)]},proxy:true}],null,true)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst UserListPopover = {\n name: 'UserListPopover',\n props: [\n 'users'\n ],\n components: {\n Popover: () => import('../popover/popover.vue'),\n UserAvatar: () => import('../user_avatar/user_avatar.vue')\n },\n computed: {\n usersCapped () {\n return this.users.slice(0, 16)\n }\n }\n}\n\nexport default UserListPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_list_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_list_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./user_list_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c55da98a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_list_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_vm._t(\"default\")]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticClass:\"user-list-popover\"},[(_vm.users.length)?_vm._l((_vm.usersCapped),function(user){return _c('div',{key:user.id,staticClass:\"user-list-row\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":user,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"user-list-names\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(user.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"user-list-screen-name\"},[_vm._v(_vm._s(user.screen_name_ui))])])],1)}):[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}})]],2)]},proxy:true}],null,true)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n UserListPopover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a9f972b4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('UserListPopover',{key:reaction.name,attrs:{\"users\":_vm.accountsForEmoji[reaction.name]}},[_c('button',{staticClass:\"emoji-reaction btn button-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}}},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport 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 Select from '../select/select.vue'\nimport {\n faTimes,\n faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faPlus\n)\n\nexport default {\n components: {\n Select\n },\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n this.updatePollToParent()\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1d460e1a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"size\":\"1\",\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('button',{staticClass:\"delete-option button-unstyled -hover-highlight\",on:{\"click\":function($event){return _vm.deleteOption(index)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('button',{staticClass:\"add-option faint button-unstyled -hover-highlight\",on:{\"click\":_vm.addOption}},[_c('FAIcon',{attrs:{\"icon\":\"plus\",\"size\":\"sm\"}}),_vm._v(\"\\n\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('Select',{staticClass:\"poll-type-select\",attrs:{\"unstyled\":\"true\"},on:{\"change\":_vm.updatePollToParent},model:{value:(_vm.pollType),callback:function ($$v) {_vm.pollType=$$v},expression:\"pollType\"}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.single_choice'))+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.multiple_choices'))+\"\\n \")])])],1),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('Select',{staticClass:\"expiry-unit\",attrs:{\"unstyled\":\"true\"},on:{\"change\":_vm.expiryAmountChange},model:{value:(_vm.expiryUnit),callback:function ($$v) {_vm.expiryUnit=$$v},expression:\"expiryUnit\"}},_vm._l((_vm.expiryUnits),function(unit){return _c('option',{key:unit,domProps:{\"value\":unit}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"time.\" + unit + \"_short\"), ['']))+\"\\n \")])}),0)],1)])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSmileBeam,\n faPollH,\n faUpload,\n faBan,\n faTimes,\n faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject',\n 'disableSubject',\n 'disableScopeSelector',\n 'disableNotice',\n 'disableLockWarning',\n 'disablePolls',\n 'disableSensitivityCheckbox',\n 'disableSubmit',\n 'disablePreview',\n 'placeholder',\n 'maxHeight',\n 'postHandler',\n 'preserveFocus',\n 'autoFocus',\n 'fileLimit',\n 'submitOnEnter',\n 'emojiPickerPlacement',\n 'optimisticPosting'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Select,\n Attachment,\n StatusContent\n },\n mounted () {\n this.updateIdempotencyKey()\n this.resize(this.$refs.textarea)\n\n if (this.replyTo) {\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n }\n\n if (this.replyTo || this.autoFocus) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n uploadingFiles: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: !!sensitiveByDefault,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false,\n emojiInputShown: false,\n idempotencyKey: ''\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n store: this.$store\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2 &&\n this.disablePolls !== true\n },\n hideScopeNotice () {\n return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n },\n pollContentError () {\n return this.pollFormVisible &&\n this.newStatus.poll &&\n this.newStatus.poll.error\n },\n showPreview () {\n return !this.disablePreview && (!!this.preview || this.previewLoading)\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n uploadFileLimitReached () {\n return this.newStatus.files.length >= this.fileLimit\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n mobileLayout: state => state.interface.mobileLayout\n })\n },\n watch: {\n 'newStatus': {\n deep: true,\n handler () {\n this.statusChanged()\n }\n }\n },\n methods: {\n statusChanged () {\n this.autoPreview()\n this.updateIdempotencyKey()\n },\n clearStatus () {\n const newStatus = this.newStatus\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n if (this.preserveFocus) {\n this.$nextTick(() => {\n this.$refs.textarea.focus()\n })\n }\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n },\n async postStatus (event, newStatus, opts = {}) {\n if (this.posting && !this.optimisticPosting) { return }\n if (this.disableSubmit) { return }\n if (this.emojiInputShown) { return }\n if (this.submitOnEnter) {\n event.stopPropagation()\n event.preventDefault()\n }\n\n if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n if (this.emptyStatus) {\n this.error = this.$t('post_status.empty_status_error')\n return\n }\n\n const poll = this.pollFormVisible ? this.newStatus.poll : {}\n if (this.pollContentError) {\n this.error = this.pollContentError\n return\n }\n\n this.posting = true\n\n try {\n await this.setAllMediaDescriptions()\n } catch (e) {\n this.error = this.$t('post_status.media_description_error')\n this.posting = false\n return\n }\n\n const postingOptions = {\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll,\n idempotencyKey: this.idempotencyKey\n }\n\n const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n postHandler(postingOptions).then((data) => {\n if (!data.error) {\n this.clearStatus()\n this.$emit('posted', data)\n } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n previewStatus () {\n if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n this.preview = { error: this.$t('post_status.preview_empty') }\n this.previewLoading = false\n return\n }\n const newStatus = this.newStatus\n this.previewLoading = true\n statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: [],\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll: {},\n preview: true\n }).then((data) => {\n // Don't apply preview if not loading, because it means\n // user has closed the preview manually.\n if (!this.previewLoading) return\n if (!data.error) {\n this.preview = data\n } else {\n this.preview = { error: data.error }\n }\n }).catch((error) => {\n this.preview = { error }\n }).finally(() => {\n this.previewLoading = false\n })\n },\n debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n autoPreview () {\n if (!this.preview) return\n this.previewLoading = true\n this.debouncePreviewStatus()\n },\n closePreview () {\n this.preview = null\n this.previewLoading = false\n },\n togglePreview () {\n if (this.showPreview) {\n this.closePreview()\n } else {\n this.previewStatus()\n }\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.$emit('resize', { delayed: true })\n },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n this.$emit('resize')\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n startedUploadingFiles () {\n this.uploadingFiles = true\n },\n finishedUploadingFiles () {\n this.$emit('resize')\n this.uploadingFiles = false\n },\n type (fileInfo) {\n return fileTypeService.fileType(fileInfo.mimetype)\n },\n paste (e) {\n this.autoPreview()\n this.resize(e)\n if (e.clipboardData.files.length > 0) {\n // prevent pasting of file as text\n e.preventDefault()\n // Strangely, files property gets emptied after event propagation\n // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n // to hold more than one file in clipboard.\n this.dropFiles = [e.clipboardData.files[0]]\n }\n },\n fileDrop (e) {\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'hide'\n }\n },\n fileDragStop (e) {\n // The false-setting is done with delay because just using leave-events\n // directly caused unwanted flickering, this is not perfect either but\n // much less noticable.\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'fade'\n this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$emit('resize')\n this.$refs['emoji-input'].resize()\n return\n }\n\n const formRef = this.$refs['form']\n const bottomRef = this.$refs['bottom']\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n\n // Getting info about padding we have to account for, removing 'px' part\n const topPaddingStr = window.getComputedStyle(target)['padding-top']\n const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n const topPadding = pxStringToNumber(topPaddingStr)\n const bottomPadding = pxStringToNumber(bottomPaddingStr)\n const vertPadding = topPadding + bottomPadding\n\n const oldHeight = pxStringToNumber(target.style.height)\n\n /* Explanation:\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n * scrollHeight returns element's scrollable content height, i.e. visible\n * element + overscrolled parts of it. We use it to determine when text\n * inside the textarea exceeded its height, so we can set height to prevent\n * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n * explicitly set new height, scrollHeight won't go below that, so we can't\n * SHRINK the textarea when there's extra space. To workaround that we set\n * height to 'auto' which makes textarea tiny again, so that scrollHeight\n * will match text height again. HOWEVER, shrinking textarea can screw with\n * the scroll since there might be not enough padding around form-bottom to even\n * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n * so we check current scroll position before shrinking and then restore it\n * with needed delta.\n */\n\n // this part has to be BEFORE the content size update\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n const scrollerBottomBorder = currentScroll + scrollerHeight\n\n // BEGIN content size update\n target.style.height = 'auto'\n const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n // This is a bit of a hack to combat target.scrollHeight being different on every other input\n // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n if (Math.abs(newHeight - oldHeight) <= 1) {\n newHeight = oldHeight\n }\n target.style.height = `${newHeight}px`\n this.$emit('resize', newHeight)\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = Math.round(currentScroll + totalDelta)\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n },\n handleEmojiInputShow (value) {\n this.emojiInputShown = value\n },\n updateIdempotencyKey () {\n this.idempotencyKey = Date.now().toString()\n },\n openProfileTab () {\n this.$store.dispatch('openSettingsModalTab', 'profile')\n }\n }\n}\n\nexport default PostStatusForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_form.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7d4cd85a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"form\",staticClass:\"post-status-form\"},[_c('form',{attrs:{\"autocomplete\":\"off\"},on:{\"submit\":function($event){$event.preventDefault();},\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDropIcon !== 'hide'),expression:\"showDropIcon !== 'hide'\"}],staticClass:\"drop-indicator\",style:({ animation: _vm.showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }),on:{\"dragleave\":_vm.fileDragStop,\"drop\":function($event){$event.stopPropagation();return _vm.fileDrop($event)}}},[_c('FAIcon',{attrs:{\"icon\":_vm.uploadFileLimitReached ? 'ban' : 'upload'}})],1),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private' && !_vm.disableLockWarning)?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":_vm.openProfileTab}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),(!_vm.disablePreview)?_c('div',{staticClass:\"preview-heading faint\"},[_c('a',{staticClass:\"preview-toggle faint\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePreview($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.preview'))+\"\\n \"),_c('FAIcon',{attrs:{\"icon\":_vm.showPreview ? 'chevron-left' : 'chevron-right'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"preview-spinner\"},[_c('FAIcon',{staticClass:\"fa-old-padding\",attrs:{\"spin\":\"\",\"icon\":\"circle-notch\"}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.showPreview)?_c('div',{staticClass:\"preview-container\"},[(!_vm.preview)?_c('div',{staticClass:\"preview-status\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")]):(_vm.preview.error)?_c('div',{staticClass:\"preview-status preview-error\"},[_vm._v(\"\\n \"+_vm._s(_vm.preview.error)+\"\\n \")]):_c('StatusContent',{staticClass:\"preview-status\",attrs:{\"status\":_vm.preview}})],1):_vm._e(),_vm._v(\" \"),(!_vm.disableSubject && (_vm.newStatus.spoilerText || _vm.alwaysShowSubject))?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning'),\"disabled\":_vm.posting && !_vm.optimisticPosting,\"size\":\"1\"},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"placement\":_vm.emojiPickerPlacement,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"newline-on-ctrl-enter\":_vm.submitOnEnter,\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed,\"shown\":_vm.handleEmojiInputShow},model:{value:(_vm.newStatus.status),callback:function ($$v) {_vm.$set(_vm.newStatus, \"status\", $$v)},expression:\"newStatus.status\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.status),expression:\"newStatus.status\"}],ref:\"textarea\",staticClass:\"form-post-body\",class:{ 'scrollable-form': !!_vm.maxHeight },attrs:{\"placeholder\":_vm.placeholder || _vm.$t('post_status.default'),\"rows\":\"1\",\"cols\":\"1\",\"disabled\":_vm.posting && !_vm.optimisticPosting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }return _vm.postStatus($event, _vm.newStatus)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }!_vm.submitOnEnter && _vm.postStatus($event, _vm.newStatus)}],\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"status\", $event.target.value)},_vm.resize],\"compositionupdate\":_vm.resize,\"paste\":_vm.paste}}),_vm._v(\" \"),(_vm.hasStatusLengthLimit)?_c('p',{staticClass:\"character-counter faint\",class:{ error: _vm.isOverLengthLimit }},[_vm._v(\"\\n \"+_vm._s(_vm.charactersLeft)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(!_vm.disableScopeSelector)?_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('Select',{staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},model:{value:(_vm.newStatus.contentType),callback:function ($$v) {_vm.$set(_vm.newStatus, \"contentType\", $$v)},expression:\"newStatus.contentType\"}},_vm._l((_vm.postFormats),function(postFormat){return _c('option',{key:postFormat,domProps:{\"value\":postFormat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + postFormat + \"\\\"]\")))+\"\\n \")])}),0)],1):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n \")])]):_vm._e()],1):_vm._e()],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('poll-form',{ref:\"pollForm\",attrs:{\"visible\":_vm.pollFormVisible},on:{\"update-poll\":_vm.setPoll}}):_vm._e(),_vm._v(\" \"),_c('div',{ref:\"bottom\",staticClass:\"form-bottom\"},[_c('div',{staticClass:\"form-bottom-left\"},[_c('media-upload',{ref:\"mediaUpload\",staticClass:\"media-upload-icon\",attrs:{\"drop-files\":_vm.dropFiles,\"disabled\":_vm.uploadFileLimitReached},on:{\"uploading\":_vm.startedUploadingFiles,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed,\"all-uploaded\":_vm.finishedUploadingFiles}}),_vm._v(\" \"),_c('button',{staticClass:\"emoji-icon button-unstyled\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}},[_c('FAIcon',{attrs:{\"icon\":\"smile-beam\"}})],1),_vm._v(\" \"),(_vm.pollsAvailable)?_c('button',{staticClass:\"poll-icon button-unstyled\",class:{ selected: _vm.pollFormVisible },attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}},[_c('FAIcon',{attrs:{\"icon\":\"poll-h\"}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.post'))+\"\\n \")]):_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.uploadingFiles || _vm.disableSubmit},on:{\"touchstart\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.postStatus($event, _vm.newStatus)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.post'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1),_vm._v(\" \"),_c('attachment',{attrs:{\"attachment\":file,\"set-media\":function () { return _vm.$store.dispatch('setMedia', _vm.newStatus.files); },\"size\":\"small\",\"allow-play\":\"false\"}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.mediaDescriptions[file.id]),expression:\"newStatus.mediaDescriptions[file.id]\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.media_description')},domProps:{\"value\":(_vm.newStatus.mediaDescriptions[file.id])},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus.mediaDescriptions, file.id, $event.target.value)}}})],1)}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0 && !_vm.disableSensitivityCheckbox)?_c('div',{staticClass:\"upload_settings\"},[_c('Checkbox',{model:{value:(_vm.newStatus.nsfw),callback:function ($$v) {_vm.$set(_vm.newStatus, \"nsfw\", $$v)},expression:\"newStatus.nsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.attachments_sensitive'))+\"\\n \")])],1):_vm._e()],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const createRuffleService = () => {\n let ruffleInstance = null\n\n const getRuffle = () => new Promise((resolve, reject) => {\n if (ruffleInstance) {\n resolve(ruffleInstance)\n return\n }\n // Ruffle needs these to be set before it's loaded\n // https://github.com/ruffle-rs/ruffle/issues/3952\n window.RufflePlayer = {}\n window.RufflePlayer.config = {\n polyfills: false,\n publicPath: '/static/ruffle'\n }\n\n // Currently it's seems like a better way of loading ruffle\n // because it needs the wasm publically accessible, but it needs path to it\n // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n const script = document.createElement('script')\n // see webpack config, using CopyPlugin to copy it from node_modules\n // provided via ruffle-mirror\n script.src = '/static/ruffle/ruffle.js'\n script.type = 'text/javascript'\n script.onerror = (e) => { reject(e) }\n script.onabort = (e) => { reject(e) }\n script.oncancel = (e) => { reject(e) }\n script.onload = () => {\n ruffleInstance = window.RufflePlayer\n resolve(ruffleInstance)\n }\n document.body.appendChild(script)\n })\n\n return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faStop,\n faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faStop,\n faExclamationTriangle\n)\n\nconst Flash = {\n props: [ 'src' ],\n data () {\n return {\n player: false, // can be true, \"hidden\", false. hidden = element exists\n loaded: false,\n ruffleInstance: null\n }\n },\n methods: {\n openPlayer () {\n if (this.player) return // prevent double-loading, or re-loading on failure\n this.player = 'hidden'\n RuffleService.getRuffle().then((ruffle) => {\n const player = ruffle.newest().createPlayer()\n player.config = {\n letterbox: 'on'\n }\n const container = this.$refs.container\n container.appendChild(player)\n player.style.width = '100%'\n player.style.height = '100%'\n player.load(this.src).then(() => {\n this.player = true\n }).catch((e) => {\n console.error('Error loading ruffle', e)\n this.player = 'error'\n })\n this.ruffleInstance = player\n })\n },\n closePlayer () {\n console.log(this.ruffleInstance)\n this.ruffleInstance.remove()\n this.player = false\n }\n }\n}\n\nexport default Flash\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./flash.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./flash.js\"\nimport __vue_script__ from \"!!babel-loader!./flash.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-41d6a8a4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./flash.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Flash\"},[(_vm.player === true || _vm.player === 'hidden')?_c('div',{ref:\"container\",staticClass:\"player\",class:{ hidden: _vm.player === 'hidden' }}):_vm._e(),_vm._v(\" \"),(_vm.player !== true)?_c('button',{staticClass:\"button-unstyled placeholder\",on:{\"click\":_vm.openPlayer}},[(_vm.player === 'hidden')?_c('span',{staticClass:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.player === 'error')?_c('span',{staticClass:\"label\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.flash_fail'))+\"\\n \")]):_c('span',{staticClass:\"label\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.flash_content'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_c('FAIcon',{attrs:{\"icon\":\"exclamation-triangle\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.flash_security'))+\"\\n \")],1)])]):_vm._e(),_vm._v(\" \"),(_vm.player)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":_vm.closePlayer}},[_c('FAIcon',{attrs:{\"icon\":\"stop\"}})],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFile,\n faMusic,\n faImage,\n faVideo,\n faPlayCircle,\n faTimes\n)\n\nconst Attachment = {\n props: [\n 'attachment',\n 'nsfw',\n 'size',\n 'allowPlay',\n 'setMedia',\n 'naturalSizeLoad'\n ],\n data () {\n return {\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false\n }\n },\n components: {\n Flash,\n StillImage,\n VideoAttachment\n },\n computed: {\n usePlaceholder () {\n return this.size === 'hide' || this.type === 'unknown'\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'image'\n if (this.type === 'video') return 'video'\n if (this.type === 'audio') return 'music'\n return 'file'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n },\n isSmall () {\n return this.size === 'small'\n },\n fullwidth () {\n if (this.size === 'hide') return false\n return this.type === 'html' || this.type === 'audio' || this.type === 'unknown'\n },\n useModal () {\n const modalTypes = this.size === 'hide' ? ['image', 'video', 'audio']\n : this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n return modalTypes.includes(this.type)\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n event.stopPropagation()\n event.preventDefault()\n this.setMedia()\n this.$store.dispatch('setCurrent', this.attachment)\n }\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n }\n }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1c20d79c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceholder)?_c('div',{class:{ 'fullwidth': _vm.fullwidth },on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description}},[_c('FAIcon',{attrs:{\"icon\":_vm.placeholderIconClass}}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n \")],1):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] = _vm.fullwidth, _obj['nsfw-placeholder'] = _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('button',{staticClass:\"button-unstyled hider\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\"},on:{\"click\":_vm.openModal}},[_c('StillImage',{staticClass:\"image\",attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad,\"alt\":_vm.attachment.description}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('FAIcon',{staticClass:\"play-icon\",attrs:{\"icon\":\"play-circle\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"controls\":\"\"},on:{\"play\":function($event){return _vm.$emit('play')},\"pause\":function($event){return _vm.$emit('pause')}}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e(),_vm._v(\" \"),(_vm.type === 'flash')?_c('Flash',{attrs:{\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url}}):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n : this.time.toLocaleString(browserLocale)\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n destroyed () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-afc3a092\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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 { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronDown\n)\n\nexport default {\n model: {\n prop: 'value',\n event: 'change'\n },\n props: [\n 'value',\n 'disabled',\n 'unstyled',\n 'kind'\n ]\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./select.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./select.js\"\nimport __vue_script__ from \"!!babel-loader!./select.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07c8d34f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./select.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"Select input\",class:{ disabled: _vm.disabled, unstyled: _vm.unstyled }},[_c('select',{attrs:{\"disabled\":_vm.disabled},domProps:{\"value\":_vm.value},on:{\"change\":function($event){return _vm.$emit('change', $event.target.value)}}},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('FAIcon',{staticClass:\"select-down-icon\",attrs:{\"icon\":\"chevron-down\"}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false,\n idempotencyKey = ''\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview,\n idempotencyKey\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","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 hideShoutbox: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n streaming: false,\n emojiReactionsOnTimeline: true,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: false,\n replyVisibility: 'all',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: true,\n followRequest: true,\n chatMention: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n sidebarRight: undefined, // instance default\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: false,\n greentext: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideUserStats: undefined, // instance default\n virtualScrolling: undefined, // instance default\n sensitiveByDefault: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: { ...defaultState },\n getters: {\n defaultConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...defaultState,\n ...Object.fromEntries(\n instanceDefaultProperties.map(key => [key, instance[key]])\n )\n }\n },\n mergedConfig (state, getters, rootState, rootGetters) {\n const { defaultConfig } = rootGetters\n return {\n ...defaultConfig,\n // Do not override with undefined\n ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n set(state, name, value)\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n set(state.highlight, user, { color: color || data.color, type: type || data.type })\n } else {\n del(state.highlight, user)\n }\n }\n },\n actions: {\n loadSettings ({ dispatch }, data) {\n const knownKeys = new Set(Object.keys(defaultState))\n const presentKeys = new Set(Object.keys(data))\n const intersection = new Set()\n for (let elem of presentKeys) {\n if (knownKeys.has(elem)) {\n intersection.add(elem)\n }\n }\n\n intersection.forEach(\n name => dispatch('setOption', { name, value: data[name] })\n )\n },\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n break\n }\n }\n }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","export const newExporter = ({\n filename = 'data',\n getExportedObject\n}) => ({\n exportData () {\n const stringified = JSON.stringify(getExportedObject(), null, 2) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', `${filename}.json`)\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n }\n})\n\nexport const newImporter = ({\n onImport,\n onImportFailure,\n validator = () => true\n}) => ({\n importData () {\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const validationResult = validator(parsed)\n if (validationResult === true) {\n onImport(parsed)\n } else {\n onImportFailure({ validationResult })\n }\n } catch (error) {\n onImportFailure({ error })\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n})\n","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'labelFollowing', 'buttonClass'],\n data () {\n return {\n inProgress: false\n }\n },\n computed: {\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_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 // TODO VUE3: change to modelValue, change 'input' event to 'input'\n value: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n },\n placement: {\n /**\n * Forces the panel to take a specific position relative to the input element.\n * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n */\n required: false,\n type: String, // 'auto', 'top', 'bottom'\n default: 'auto'\n },\n newlineOnCtrlEnter: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false,\n suggestions: []\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.value && this.caret) {\n const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const { root } = this.$refs\n const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n if (!input) return\n this.input = input\n this.resize()\n input.addEventListener('blur', this.onBlur)\n input.addEventListener('focus', this.onFocus)\n input.addEventListener('paste', this.onPaste)\n input.addEventListener('keyup', this.onKeyUp)\n input.addEventListener('keydown', this.onKeyDown)\n input.addEventListener('click', this.onClickInput)\n input.addEventListener('transitionend', this.onTransition)\n input.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.removeEventListener('blur', this.onBlur)\n input.removeEventListener('focus', this.onFocus)\n input.removeEventListener('paste', this.onPaste)\n input.removeEventListener('keyup', this.onKeyUp)\n input.removeEventListener('keydown', this.onKeyDown)\n input.removeEventListener('click', this.onClickInput)\n input.removeEventListener('transitionend', this.onTransition)\n input.removeEventListener('input', this.onInput)\n }\n },\n watch: {\n showSuggestions: function (newValue) {\n this.$emit('shown', newValue)\n },\n textAtCaret: async function (newWord) {\n const firstchar = newWord.charAt(0)\n this.suggestions = []\n if (newWord === firstchar) return\n const matchedSuggestions = await this.suggest(newWord)\n // Async: cancel if textAtCaret has changed during wait\n if (this.textAtCaret !== newWord) return\n if (matchedSuggestions.length <= 0) return\n this.suggestions = take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }) => ({\n ...rest,\n img: imageUrl || ''\n }))\n },\n suggestions (newValue) {\n this.$nextTick(this.resize)\n }\n },\n methods: {\n focusPickerInput () {\n const pickerEl = this.$refs.picker.$el\n if (!pickerEl) return\n const pickerInput = pickerEl.querySelector('input')\n if (pickerInput) pickerInput.focus()\n },\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n this.focusPickerInput()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(this.focusPickerInput)\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen, surroundingSpace = true }) {\n const before = this.value.substring(0, this.caret) || ''\n const after = this.value.substring(this.caret) || ''\n\n /* Using a bit more smart approach to padding emojis with spaces:\n * - put a space before cursor if there isn't one already, unless we\n * are at the beginning of post or in spam mode\n * - put a space after emoji if there isn't one already unless we are\n * in spam mode\n *\n * The idea is that when you put a cursor somewhere in between sentence\n * inserting just ' :emoji: ' will add more spaces to post which might\n * break the flow/spacing, as well as the case where user ends sentence\n * with a space before adding emoji.\n *\n * Spam mode is intended for creating multi-part emojis and overall spamming\n * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n */\n const isSpaceRegex = /\\s/\n const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.keepOpen = keepOpen\n this.$emit('input', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.focus()\n // Set selection right after the replacement instead of the very end\n this.input.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted -= 1\n if (this.highlighted < 0) {\n this.highlighted = this.suggestions.length - 1\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = 0\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs['picker'].$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onTransition (e) {\n this.resize()\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n this.resize()\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n if (!this.keepOpen) {\n this.showPicker = false\n }\n this.focused = true\n this.setCaret(e)\n this.resize()\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n this.resize()\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n this.resize()\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n this.insert({ insertion: '\\n', surroundingSpace: false })\n // Ensure only one new line is added on macos\n e.stopPropagation()\n e.preventDefault()\n\n // Scroll the input element to the position of the cursor\n this.$nextTick(() => {\n this.input.blur()\n this.input.focus()\n })\n }\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.focus()\n }\n }\n\n this.showPicker = false\n this.resize()\n },\n onInput (e) {\n this.showPicker = false\n this.setCaret(e)\n this.resize()\n this.$emit('input', e.target.value)\n },\n onClickInput (e) {\n this.showPicker = false\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n this.showPicker = false\n },\n onStickerUploaded (e) {\n this.showPicker = false\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.showPicker = false\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n },\n resize () {\n const panel = this.$refs.panel\n if (!panel) return\n const picker = this.$refs.picker.$el\n const panelBody = this.$refs['panel-body']\n const { offsetHeight, offsetTop } = this.input\n const offsetBottom = offsetTop + offsetHeight\n\n this.setPlacement(panelBody, panel, offsetBottom)\n this.setPlacement(picker, picker, offsetBottom)\n },\n setPlacement (container, target, offsetBottom) {\n if (!container || !target) return\n\n target.style.top = offsetBottom + 'px'\n target.style.bottom = 'auto'\n\n if (this.placement === 'top' || (this.placement === 'auto' && this.overflowsBottom(container))) {\n target.style.top = 'auto'\n target.style.bottom = this.input.offsetHeight + 'px'\n }\n },\n overflowsBottom (el) {\n return el.getBoundingClientRect().bottom > window.innerHeight\n }\n }\n}\n\nexport default EmojiInput\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_input.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_input.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_input.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a09d1882\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_input.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],ref:\"root\",staticClass:\"emoji-input\",class:{ 'with-picker': !_vm.hideEmojiButton }},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.enableEmojiPicker)?[(!_vm.hideEmojiButton)?_c('button',{staticClass:\"button-unstyled emoji-picker-icon\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('FAIcon',{attrs:{\"icon\":['far', 'smile-beam']}})],1):_vm._e(),_vm._v(\" \"),(_vm.enableEmojiPicker)?_c('EmojiPicker',{ref:\"picker\",staticClass:\"emoji-picker-panel\",class:{ hide: !_vm.showPicker },attrs:{\"enable-sticker-picker\":_vm.enableStickerPicker},on:{\"emoji\":_vm.insert,\"sticker-uploaded\":_vm.onStickerUploaded,\"sticker-upload-failed\":_vm.onStickerUploadFailed}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"autocomplete-panel\",class:{ hide: !_vm.showSuggestions }},[_c('div',{ref:\"panel-body\",staticClass:\"autocomplete-panel-body\"},_vm._l((_vm.suggestions),function(suggestion,index){return _c('div',{key:index,staticClass:\"autocomplete-item\",class:{ highlighted: index === _vm.highlighted },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onClick($event, suggestion)}}},[_c('span',{staticClass:\"image\"},[(suggestion.img)?_c('img',{attrs:{\"src\":suggestion.img}}):_c('span',[_vm._v(_vm._s(suggestion.replacement))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_c('span',{staticClass:\"displayText\"},[_vm._v(_vm._s(suggestion.displayText))]),_vm._v(\" \"),_c('span',{staticClass:\"detailText\"},[_vm._v(_vm._s(suggestion.detailText))])])])}),0)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faEnvelope,\n faLock,\n faLockOpen,\n faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faEnvelope,\n faGlobe,\n faLock,\n faLockOpen\n)\n\nconst ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./scope_selector.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./scope_selector.js\"\nimport __vue_script__ from \"!!babel-loader!./scope_selector.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b1abde80\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./scope_selector.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showNothing)?_c('div',{staticClass:\"ScopeSelector\"},[(_vm.showDirect)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('direct')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"envelope\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('private')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"lock-open\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('button',{staticClass:\"button-unstyled scope\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public'),\"type\":\"button\"},on:{\"click\":function($event){return _vm.changeVis('public')}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"globe\"}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"static/img/nsfw.74818f9.png\";","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./timeline.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b92cece\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Timeline .loadmore-text{opacity:1}.Timeline.-blocked{cursor:progress}.Timeline .timeline-heading{max-width:100%;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-align:center;align-items:center;position:relative}.Timeline .timeline-heading .loadmore-button{-ms-flex-negative:0;flex-shrink:0}.Timeline .timeline-heading .loadmore-text{-ms-flex-negative:0;flex-shrink:0;line-height:1em}.Timeline .timeline-footer{border:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./status.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"80571546\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Status{min-width:0}.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;overflow:auto;display:block;padding:.5em .75em;clear:both;font-weight:400;text-align:inherit;white-space:nowrap;border:none;border-radius:0;background-color:transparent;box-shadow:none;width:100%;height:100%;box-sizing:border-box;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon svg{width:22px;margin-right:.75rem;color:var(--menuPopoverIcon,#666)}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.dropdown-menu .dropdown-item:active svg,.dropdown-menu .dropdown-item:hover svg{color:var(--selectedMenuPopoverIcon,#666)}.dropdown-menu .dropdown-item .menu-checkbox{display:inline-block;vertical-align:middle;min-width:22px;max-width:22px;min-height:22px;max-height:22px;line-height:22px;text-align:center;border-radius:0;background-color:#182230;background-color:var(--input,#182230);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.75em}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-checked:after{font-size:1.25em;content:\\\"\\\\2713\\\"}.dropdown-menu .dropdown-item .menu-checkbox.menu-checkbox-radio:after{font-size:2em;content:\\\"\\\\2022\\\"}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./retweet_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c52cbcb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".RetweetButton{display:-ms-flexbox;display:flex}.RetweetButton>:first-child{padding:10px;margin:-10px -8px -10px -10px}.RetweetButton .action-counter{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.RetweetButton .interactive .svg-inline--fa{animation-duration:.6s}.RetweetButton .interactive.-repeated .svg-inline--fa,.RetweetButton .interactive:hover .svg-inline--fa{color:#0fa00f;color:var(--cGreen,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./extra_buttons.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0d2c533c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ExtraButtons .popover-trigger-button{width:auto}.ExtraButtons .popover-trigger{position:static;padding:10px;margin:-10px}.ExtraButtons .popover-trigger:hover .svg-inline--fa{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce7966a8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tribute-container ul{padding:0}.tribute-container ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.tribute-container img{padding:3px;width:16px;height:16px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.post-status-form{position:relative}.post-status-form .form-bottom{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:.5em;height:32px}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.post-status-form .form-bottom-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding-right:7px;margin-right:7px;max-width:10em}.post-status-form .preview-heading{display:-ms-flexbox;display:flex;padding-left:.5em}.post-status-form .preview-toggle{-ms-flex:1;flex:1;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .preview-toggle i,.post-status-form .preview-toggle svg{margin-left:.2em;font-size:.8em;transform:rotate(90deg)}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{font-style:italic;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);padding:.5em;margin:0;line-height:1.4em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-top:5px}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{font-size:26px;line-height:1.1;-ms-flex:1;flex:1;padding:0 .1em}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon.selected svg,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .emoji-icon:hover svg,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon.selected svg,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .media-upload-icon:hover svg,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon.selected svg,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label,.post-status-form .poll-icon:hover svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .emoji-icon.disabled i,.post-status-form .emoji-icon.disabled svg,.post-status-form .media-upload-icon.disabled i,.post-status-form .media-upload-icon.disabled svg,.post-status-form .poll-icon.disabled i,.post-status-form .poll-icon.disabled svg{cursor:not-allowed;color:#666;color:var(--btnDisabledText,#666)}.post-status-form .emoji-icon.disabled i:hover,.post-status-form .emoji-icon.disabled svg:hover,.post-status-form .media-upload-icon.disabled i:hover,.post-status-form .media-upload-icon.disabled svg:hover,.post-status-form .poll-icon.disabled i:hover,.post-status-form .poll-icon.disabled svg:hover{color:#666;color:var(--btnDisabledText,#666)}.post-status-form .media-upload-icon{-ms-flex-order:1;order:1;text-align:left}.post-status-form .emoji-icon{-ms-flex-order:2;order:2;text-align:center}.post-status-form .poll-icon{-ms-flex-order:3;order:3;text-align:right;cursor:pointer}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-right:.2em;margin-bottom:.5em;width:18em}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{-o-object-fit:contain;object-fit:contain;max-height:10em}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{-ms-flex:1;flex:1;width:100%}.post-status-form .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .attachments .media-upload-wrapper{position:relative}.post-status-form .attachments .media-upload-wrapper .attachment{margin:0;padding:0}.post-status-form form{margin:.6em;position:relative}.post-status-form .form-group,.post-status-form form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.post-status-form .form-group{padding:.25em .5em .5em;line-height:24px}.post-status-form .form-post-body,.post-status-form form textarea.form-cw{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:1px}.post-status-form .form-post-body{height:16px;padding-bottom:1.75em;box-sizing:content-box}.post-status-form .form-post-body.scrollable-form{overflow-y:auto}.post-status-form .main-input{position:relative}.post-status-form .character-counter{position:absolute;bottom:0;right:0;padding:0;margin:0 .5em}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}.post-status-form .btn{cursor:pointer}.post-status-form .btn[disabled]{cursor:not-allowed}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{position:absolute;z-index:1;width:100%;height:100%;font-size:5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;opacity:.6;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24);border-radius:5px;border-radius:var(--tooltipRadius,5px);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba)}.media-upload-container>video,img.media-upload{line-height:0;max-height:200px;max-width:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_upload.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8585287c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-upload{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scope_selector.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"770eecd8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".ScopeSelector .scope{display:inline-block;cursor:pointer;min-width:1.3em;min-height:1.3em;text-align:center}.ScopeSelector .scope.selected svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_input.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d6bd964a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:relative}.emoji-input.with-picker input{padding-right:30px}.emoji-input .emoji-picker-icon{position:absolute;top:0;right:0;margin:.2em .25em;font-size:16px;cursor:pointer;line-height:24px}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input .autocomplete-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .autocomplete-panel.hide{display:none}.emoji-input .autocomplete-panel-body{margin:0 .5em;border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:1px 2px 4px rgba(0,0,0,.5);box-shadow:var(--popupShadow);min-width:75%;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.emoji-input .autocomplete-item{display:-ms-flexbox;display:flex;cursor:pointer;padding:.2em .4em;border-bottom:1px solid rgba(0,0,0,.4);height:32px}.emoji-input .autocomplete-item .image{width:32px;height:32px;line-height:32px;text-align:center;font-size:32px;margin-right:4px}.emoji-input .autocomplete-item .image img{width:32px;height:32px;-o-object-fit:contain;object-fit:contain}.emoji-input .autocomplete-item .label{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;margin:0 .1em 0 .2em}.emoji-input .autocomplete-item .label .displayText{line-height:1.5}.emoji-input .autocomplete-item .label .detailText{font-size:9px;line-height:9px}.emoji-input .autocomplete-item.highlighted{background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.emoji-input input,.emoji-input textarea{-ms-flex:1 0 auto;flex:1 0 auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bb72e68\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-picker{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;right:0;left:0;margin:0!important;z-index:1;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--lightText:var(--popoverLightText,$fallback--faint);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{padding:7px;line-height:normal}.emoji-picker .too-many-emoji{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.emoji-picker .keep-open-label{padding:0 7px;display:-ms-flexbox;display:flex}.emoji-picker .heading{display:-ms-flexbox;display:flex;height:32px;padding:10px 7px 5px}.emoji-picker .content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-tabs{-ms-flex-positive:1;flex-grow:1}.emoji-picker .emoji-groups{min-height:200px}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:#666;border-left-color:var(--icon,#666);padding-left:7px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{display:block;min-width:0;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-negative:1;flex-shrink:1}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{padding:0 7px;cursor:pointer;font-size:24px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active svg,.emoji-picker .emoji-tabs-item.active svg{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{-ms-flex:1 1 auto;flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{padding:5px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{-ms-flex:1 1 1px;flex:1 1 1px;position:relative;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:5px;-ms-flex-pack:left;justify-content:left}.emoji-picker .emoji-group-title{font-size:12px;width:100%;margin:0}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{width:32px;height:32px;box-sizing:border-box;display:-ms-flexbox;display:flex;font-size:32px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:4px;cursor:pointer}.emoji-picker .emoji-item img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"002629bb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox{position:relative;display:inline-block;min-height:1.2em}.checkbox-indicator{position:relative;padding-left:1.2em}.checkbox-indicator:before{position:absolute;right:0;top:0;display:block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]{display:none}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{content:\\\"\\\\2013\\\";color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox>span{margin-left:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60db0262\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{-ms-flex-item-align:start;align-self:flex-start;padding-top:.25em;padding-left:.1em}.poll-form .poll-option{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .delete-option{width:1.5em;margin-left:-1.5em;z-index:1}.poll-form .poll-type-expiry{margin-top:.5em;display:-ms-flexbox;display:flex;width:100%}.poll-form .poll-type{margin-right:.75em;-ms-flex:1 1 60%;flex:1 1 60%}.poll-form .poll-type .poll-type-select{padding-right:.75em}.poll-form .poll-expiry{display:-ms-flexbox;display:flex}.poll-form .poll-expiry .expiry-amount{width:3em;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./select.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"fc9a36fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Select{padding:0}.Select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);margin:0;padding:0 2em 0 .2em;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;width:100%;z-index:1;height:28px;line-height:16px}.Select .select-down-icon{position:absolute;top:0;bottom:0;right:5px;height:100%;color:#b9b9ba;color:var(--inputText,#b9b9ba);line-height:28px;z-index:0;pointer-events:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./attachment.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60b296ca\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".attachments{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachments .non-gallery{max-width:100%}.attachments .placeholder{display:inline-block;padding:.3em 1em .3em 0;color:#d8a070;color:var(--postLink,#d8a070);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.attachments .placeholder svg{color:inherit}.attachments .nsfw-placeholder{cursor:pointer}.attachments .nsfw-placeholder.loading{cursor:progress}.attachments .attachment{position:relative;margin-top:.5em;-ms-flex-item-align:start;align-self:flex-start;line-height:0;border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222);overflow:hidden}.attachments .non-gallery.attachment.flash,.attachments .non-gallery.attachment.video{-ms-flex:1 0 40%;flex:1 0 40%}.attachments .non-gallery.attachment .nsfw{height:260px}.attachments .non-gallery.attachment .small{height:120px;-ms-flex-positive:0;flex-grow:0}.attachments .non-gallery.attachment .video{height:260px;display:-ms-flexbox;display:flex}.attachments .non-gallery.attachment video{max-height:100%;-o-object-fit:contain;object-fit:contain}.attachments .fullwidth{-ms-flex-preferred-size:100%;flex-basis:100%}.attachments.video{line-height:0}.attachments .video-container{display:-ms-flexbox;display:flex;max-height:100%}.attachments .video{width:100%;height:100%}.attachments .play-icon{position:absolute;font-size:64px;top:calc(50% - 32px);left:calc(50% - 32px);color:hsla(0,0%,100%,.75);text-shadow:0 0 2px rgba(0,0,0,.4)}.attachments .play-icon:before{margin:0}.attachments.html{-ms-flex-preferred-size:90%;flex-basis:90%;width:100%;display:-ms-flexbox;display:flex}.attachments .hider{position:absolute;right:0;margin:10px;padding:0;z-index:4;border-radius:5px;border-radius:var(--tooltipRadius,5px);text-align:center;width:2em;height:2em;font-size:1.25em;background:hsla(0,0%,90%,.7)}.attachments .hider .svg-inline--fa{color:rgba(0,0,0,.6)}.attachments .hider:hover .svg-inline--fa{color:rgba(0,0,0,.9)}.attachments video{z-index:0}.attachments audio{width:100%}.attachments img.media-upload{line-height:0;max-height:200px;max-width:100%}.attachments .oembed{line-height:1.2em;-ms-flex:1 0 100%;flex:1 0 100%;width:100%;margin-right:15px;display:-ms-flexbox;display:flex}.attachments .oembed img{width:100%}.attachments .oembed .image{-ms-flex:1;flex:1}.attachments .oembed .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.attachments .oembed .text{-ms-flex:2;flex:2;margin:8px;word-break:break-all}.attachments .oembed .text h1{font-size:14px;margin:0}.attachments .image-attachment,.attachments .image-attachment .image{width:100%;height:100%}.attachments .image-attachment.hidden{display:none}.attachments .image-attachment .nsfw{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.attachments .image-attachment img{image-orientation:from-image}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./still-image.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"24ab97e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".still-image{position:relative;line-height:0;overflow:hidden;display:-ms-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!./flash.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34e407cc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Flash{width:100%;height:260px;position:relative}.Flash .player{height:100%;width:100%}.Flash .hider{top:0}.Flash .label{text-align:center;-ms-flex:1 1 0px;flex:1 1 0;line-height:1.2;white-space:normal;word-wrap:normal}.Flash .hidden{display:none;visibility:\\\"hidden\\\"}.Flash .placeholder{height:100%;-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_content.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af4a4f5c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".StatusContent{-ms-flex:1;flex:1;min-width:0}.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 .edit-profile-button,.user-info .external-link-button{cursor:pointer;width:2.5em;text-align:center;margin:-.5em 0;padding:.5em 0}.user-info .edit-profile-button:not(:hover) .icon,.user-info .external-link-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .user-summary{display:block;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1 1 0px;flex:1 1 0;z-index:1}.user-info .user-summary 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{padding-top:0;padding-bottom:0;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightText{width:70px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightText{vertical-align:top;margin-right:.5em;margin-bottom:.25em}.user-info .user-interactions{position:relative;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-.75em}.user-info .user-interactions>*{margin:0 .75em .6em 0;white-space:nowrap;min-width:95px}.user-info .user-interactions button{margin:0}.sidebar .edit-profile-button{display:none}.user-counts{display:-ms-flexbox;display:flex;line-height:16px;padding:.5em 1.5em 0;text-align:center;-ms-flex-pack:justify;justify-content:space-between;color:#b9b9ba;color:var(--lightText,#b9b9ba);-ms-flex-wrap:wrap;flex-wrap:wrap}.user-count{-ms-flex:1 0 auto;flex:1 0 auto;padding:.5em 0;margin:0 .5em}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_avatar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b6f3617\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Avatar{--_avatarShadowBox:var(--avatarStatusShadow);--_avatarShadowFilter:var(--avatarStatusShadowFilter);--_avatarShadowInset:var(--avatarStatusShadowInset);--_still-image-label-visibility:hidden;width:48px;height:48px;box-shadow:var(--_avatarShadowBox);border-radius:4px;border-radius:var(--avatarRadius,4px)}.Avatar img{width:100%;height:100%}.Avatar.better-shadow{box-shadow:var(--_avatarShadowInset);filter:var(--_avatarShadowFilter)}.Avatar.animated:before{display:none}.Avatar.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.Avatar.-placeholder{background-color:#182230;background-color:var(--fg,#182230)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4852bbb4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".remote-follow{max-width:220px}.remote-follow .remote-button{width:100%;min-height:28px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./moderation_tools.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0672fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:-ms-flexbox!important;display:flex!important;height:100%}.moderation-tools-button i,.moderation-tools-button svg{font-size:.8em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dialog_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"56d82e88\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dark-overlay:before{bottom:0;content:\\\" \\\";left:0;right:0;background:rgba(27,31,35,.5);z-index:99}.dark-overlay:before,.dialog-modal.panel{display:block;cursor:default;position:fixed;top:0}.dialog-modal.panel{left:50%;max-height:80vh;max-width:90vw;margin:15vh auto;transform:translateX(-50%);z-index:999;background-color:#121a24;background-color:var(--bg,#121a24)}.dialog-modal.panel .dialog-modal-heading{padding:.5em;margin-right:auto;margin-bottom:0;white-space:nowrap;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230)}.dialog-modal.panel .dialog-modal-heading .title{margin-bottom:0;text-align:center}.dialog-modal.panel .dialog-modal-content{margin:0;padding:1rem;background-color:#121a24;background-color:var(--bg,#121a24);white-space:normal}.dialog-modal.panel .dialog-modal-footer{margin:0;padding:.5em;background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end}.dialog-modal.panel .dialog-modal-footer button{width:auto;margin-left:.5rem}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./account_actions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8c9d5016\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".AccountActions button.dropdown-item{margin-left:0}.AccountActions .ellipsis-button{width:2.5em;margin:-.5em 0;padding:.5em 0;text-align:center}.AccountActions .ellipsis-button:not(:hover) .icon{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./avatar_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7096a06e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatars{display:-ms-flexbox;display:flex;margin:0;padding:0;-ms-flex-wrap:wrap;flex-wrap:wrap;height:24px}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"14cff5b4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-popover.popover{font-size:1rem;min-width:15em;max-width:95%;border-color:#222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow)}.status-popover.popover .Status.Status{border:none}.status-popover.popover .status-preview-no-content{padding:1em;text-align:center}.status-popover.popover .status-preview-no-content i{font-size:2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_list_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50540f22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-list-popover{padding:.5em}.user-list-popover .user-list-row{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.user-list-popover .user-list-row .user-list-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.user-list-popover .user-list-row .user-list-names img{width:1em;height:1em}.user-list-popover .user-list-row .user-list-screen-name{font-size:9px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_reactions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cf35b50a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-reactions{display:-ms-flexbox;display:flex;margin-top:.25em;-ms-flex-wrap:wrap;flex-wrap:wrap}.emoji-reaction{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box}.emoji-reaction .reaction-emoji{width:1.25em;margin-right:.25em}.emoji-reaction:focus{outline:none}.emoji-reaction.not-clickable{cursor:default}.emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.emoji-reaction-expand{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.emoji-reaction-expand:hover{text-decoration:underline}.picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./conversation.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"93498d0a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Conversation .conversation-status{border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:var(--border,#222);border-radius:0}.Conversation.-expanded .conversation-status:last-child{border-bottom:none;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_menu.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b449a0b2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineMenu{-ms-flex-negative:1;flex-shrink:1;margin-right:auto;min-width:0;width:24rem}.TimelineMenu .timeline-menu-popover-wrap{overflow:hidden;margin-top:.6rem;padding:0 15px 15px}.TimelineMenu .timeline-menu-popover{width:24rem;max-width:100vw;margin:0;font-size:1rem;transform:translateY(-100%);transition:transform .1s}.TimelineMenu .panel:after,.TimelineMenu .timeline-menu-popover{border-top-right-radius:0;border-top-left-radius:0}.TimelineMenu.open .timeline-menu-popover{transform:translateY(0)}.TimelineMenu .timeline-menu-title{margin:0;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;display:-ms-flexbox;display:flex}.TimelineMenu .timeline-menu-title .timeline-menu-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TimelineMenu .timeline-menu-title svg{margin-left:.6em;transition:transform .1s}.TimelineMenu .timeline-menu-title .click-blocker{cursor:default;-ms-flex-positive:1;flex-grow:1}.TimelineMenu.open .timeline-menu-title svg{color:#b9b9ba;color:var(--panelText,#b9b9ba);transform:rotate(180deg)}.TimelineMenu .panel{box-shadow:var(--popoverShadow)}.TimelineMenu ul{list-style:none;margin:0;padding:0}.TimelineMenu li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.TimelineMenu li:last-child a{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.TimelineMenu li:last-child{border:none}.TimelineMenu a{display:block;padding:.6em .65em}.TimelineMenu a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.TimelineMenu a.router-link-active,.TimelineMenu a:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.TimelineMenu a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.TimelineMenu a.router-link-active:hover{text-decoration:underline}.TimelineMenu a svg{margin-right:.4em;margin-left:-.2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline_quick_settings.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b6e5d822\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".TimelineQuickSettings{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.TimelineQuickSettings>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.TimelineQuickSettings .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"87e1cf2e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".Notifications:not(.minimal){padding-bottom:15em}.Notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.Notifications .notifications-footer{border:none}.Notifications .notification{position:relative}.Notifications .notification .notification-overlay{position:absolute;top:0;right:0;left:0;bottom:0;pointer-events:none}.Notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-wrap:break-word;word-break:break-word}.notification:hover .animated.Avatar canvas{display:none}.notification:hover .animated.Avatar img{visibility:visible}.notification .non-mention{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.6em;min-width:0;--link:var(--faintLink);--text:var(--faint)}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .follow-request-accept{cursor:pointer}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject{cursor:pointer}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{padding:.5em 0;overflow-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .Status{-ms-flex:1;flex:1}.notification time{white-space:nowrap}.notification .notification-right{-ms-flex:1;flex:1;padding-left:.8em;min-width:0}.notification .notification-right .timeago{min-width:3em;text-align:right}.notification .emoji-reaction-emoji{font-size:16px}.notification .notification-details{min-width:0;word-wrap:break-word;line-height:18px;position:relative;overflow:hidden;width:100%;-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between}.notification .notification-details .name-and-action{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .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!./notification_filters.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"590c30d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NotificationFilters{-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.NotificationFilters>button{font-size:1.2em;padding-left:.7em;padding-right:.2em;line-height:100%;height:100%}.NotificationFilters .dropdown-item{margin:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3a6f72a2\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list{min-height:25em;margin-bottom:0}.emtpy-chat-list-alert{padding:3em;font-size:1.2em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;color:#b9b9ba;color:var(--faint,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_list_item.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33c6b65e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".chat-list-item{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:.75em;height:5em;overflow:hidden;box-sizing:border-box;cursor:pointer}.chat-list-item :focus{outline:none}.chat-list-item:hover{background-color:var(--selectedPost,#151e2a);box-shadow:0 0 3px 1px rgba(0,0,0,.1)}.chat-list-item .chat-list-item-left{margin-right:1em}.chat-list-item .chat-list-item-center{width:100%;box-sizing:border-box;overflow:hidden;word-wrap:break-word}.chat-list-item .heading{width:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:justify;justify-content:space-between;line-height:1em}.chat-list-item .heading-right{white-space:nowrap}.chat-list-item .name-and-account-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-ms-flex-negative:1;flex-shrink:1;line-height:1.4em}.chat-list-item .chat-preview{display:-ms-inline-flexbox;display:inline-flex;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin:.35em 0;color:#b9b9ba;color:var(--faint,#b9b9ba);width:100%}.chat-list-item a{color:var(--faintLink,#d8a070);text-decoration:none;pointer-events:none}.chat-list-item:hover .animated.avatar canvas{display:none}.chat-list-item:hover .animated.avatar img{visibility:visible}.chat-list-item .Avatar{border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.chat-list-item .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!./shout_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"50606708\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".floating-shout{position:fixed;right:0;bottom:0;z-index:1000;max-width:25em}.shout-panel .shout-heading{cursor:pointer}.shout-panel .shout-heading .icon{color:#b9b9ba;color:var(--text,#b9b9ba);margin-right:.5em}.shout-panel .shout-heading .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.shout-panel .shout-window{overflow-y:auto;overflow-x:hidden;max-height:20em}.shout-panel .shout-window-container{height:100%}.shout-panel .shout-message{display:-ms-flexbox;display:flex;padding:.2em .5em}.shout-panel .shout-avatar img{height:24px;width:24px;border-radius:4px;border-radius:var(--avatarRadius,4px);margin-right:.5em;margin-top:.25em}.shout-panel .shout-input{display:-ms-flexbox;display:flex}.shout-panel .shout-input textarea{-ms-flex:1;flex:1;margin:.6em;min-height:3.5em;resize:none}.shout-panel .shout-panel .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c74f4f44\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./about.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7dfaed97\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./features_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55ca8508\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".features-panel li{line-height:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./terms_of_service_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42aabc98\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tos-content{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./staff_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5aa588af\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".staff-group{padding-left:1em;padding-top:1em}.staff-group .basic-user-card{padding-left:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mrf_transparency_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72647543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mrf-section{margin:1em}\", \"\"]);\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,input,textarea{border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);color:#b9b9ba;color:var(--inputText,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;margin:0;box-sizing:border-box;display:inline-block;position:relative;height:28px;line-height:16px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;padding:8px .5em}.input.unstyled,input.unstyled,textarea.unstyled{border-radius:0;background:none;box-shadow:none;height:unset}.input.disabled,.input:disabled,.input[disabled=disabled],input.disabled,input:disabled,input[disabled=disabled],textarea.disabled,textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input[type=range],input[type=range],textarea[type=range]{background:none;border:none;margin:0;box-shadow:none;-ms-flex:1;flex:1}.input[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset;background-color:var(--accent,#d8a070)}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\";transition:box-shadow .2s;width:1.1em;height:1.1em;border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input[type=checkbox],input[type=checkbox],textarea[type=checkbox]{display:none}.input[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\\2713\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input.resize-height,input.resize-height,textarea.resize-height{resize:vertical}option{color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.hide-number-spinner{-moz-appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{opacity:0;display:none}.svg-inline--fa,i[class*=icon-]{color:#666;color:var(--icon,#666)}.btn-block{display:block;width:100%}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group button{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.auto-size,main-router{-ms-flex:1;flex:1}.status.compact{color:rgba(0,0,0,.42);font-weight:300}.status.compact p{margin:0;font-size:.8em}.panel{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:column;flex-direction:column;margin:.5em;background-color:#121a24;background-color:var(--bg,#121a24)}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{content:\\\"\\\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow)}.panel-body:empty:before{content:\\\"\\\\AF\\\\\\\\_(\\\\30C4)_/\\\\AF\\\";display:block;margin:1em;text-align:center}.panel-heading{display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;background-size:cover;padding:.6em;text-align:left;line-height:28px;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230);-ms-flex-align:baseline;align-items:baseline;box-shadow:var(--panelHeaderShadow)}.panel-heading .title{-ms-flex:1 0 auto;flex:1 0 auto;font-size:1.3em}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading .alert{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.panel-heading .alert,.panel-heading .button-default{line-height:21px;min-height:0;box-sizing:border-box;margin:0;margin-left:.5em;min-width:1px;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.panel-heading .button-default{-ms-flex-negative:0;flex-shrink:0}.panel-heading .button-default,.panel-heading .button-default i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading .button-default:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading .button-default.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading .-link,.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer,.timeline-footer{display:-ms-flexbox;display:flex;border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);-ms-flex:none;flex:none;padding:.6em;text-align:left;line-height:28px;-ms-flex-align:baseline;align-items:baseline;border-width:1px 0 0;border-style:solid;border-color:var(--border,#222)}.panel-footer .faint,.timeline-footer .faint{color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-footer .-link,.panel-footer a,.timeline-footer .-link,.timeline-footer a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-body>p{line-height:18px;padding:1em;margin:0}.container>*{min-width:0}.fa{color:grey}nav{z-index:1000;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow);box-sizing:border-box}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.main{-ms-flex-preferred-size:50%;flex-basis:50%;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.sidebar-bounds{-ms-flex:0;flex:0;-ms-flex-preferred-size:35%;flex-basis:35%}.sidebar-flexer{-ms-flex:1;flex:1;-ms-flex-preferred-size:345px;flex-basis:345px;width:365px}.mobile-shown{display:none}@media (min-width:800px){body{overflow-y:scroll}.sidebar-bounds{overflow:hidden;max-height:100vh;width:345px;position:fixed;margin-top:-10px}.sidebar-bounds .sidebar-scroller{height:96vh;width:365px;padding-top:10px;padding-right:50px;overflow-x:hidden;overflow-y:scroll}.sidebar-bounds .sidebar{width:345px}.sidebar-flexer{max-height:96vh;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}}.badge{box-sizing:border-box;display:inline-block;border-radius:99px;max-width:10em;min-width:1.7em;height:1.3em;padding:.15em;vertical-align:middle;font-weight:400;font-style:normal;font-size:.9em;line-height:1;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{margin:.35em;padding:.25em;border-radius:5px;border-radius:var(--tooltipRadius,5px);min-height:28px;line-height:28px}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.alert.success{background-color:var(--alertSuccess,rgba(111,111,20,.5));color:var(--alertSuccessText,#b9b9ba)}.panel-heading .alert.success{color:var(--alertSuccessPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}.visibility-notice{padding:.5em;border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px)}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{position:absolute;top:0;right:0;padding:.5em;color:inherit}.fa-scale-110.svg-inline--fa{font-size:1.1em}.fa-old-padding.svg-inline--fa{padding:0 .3em}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}@media (max-width:800px){.mobile-hidden{display:none}.panel-switcher{display:-ms-flexbox;display:flex}.container{padding:0}.panel{margin:.5em 0}.menu-button{display:block;margin-right:.8em}.main{margin-bottom:7em}}.option-list,.setting-list{list-style-type:none;padding-left:2em}.option-list li,.setting-list li{margin-bottom:.5em}.option-list .suboptions,.setting-list .suboptions{margin-top:.3em}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.button-default{min-height:28px}.animate-spin{animation:spin 2s infinite linear;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.new-status-notification{position:relative;font-size:1.1em;z-index:1;-ms-flex:1;flex:1}.chat-layout{height:100%}.chat-layout,.chat-layout body{overflow:hidden}@media (max-width:800px){.chat-layout body{height:100%}.chat-layout #app{height:100%;overflow:hidden;min-height:auto}.chat-layout #app_bg_wrapper{overflow:hidden}.chat-layout .main{overflow:hidden;height:100%}.chat-layout #content{padding-top:0;height:100%;overflow:visible}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"04d46dee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-panel .signed-in{overflow:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./nav_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b030addc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".NavPanel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.NavPanel ul{list-style:none;margin:0;padding:0}.NavPanel li{position:relative;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.NavPanel li:first-child .menu-item{border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px);border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child .menu-item{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.NavPanel li:last-child{border:none}.NavPanel .menu-item{display:block;box-sizing:border-box;height:3.5em;line-height:3.5em;padding:0 1em;width:100%;color:#d8a070;color:var(--link,#d8a070)}.NavPanel .menu-item:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.NavPanel .menu-item.router-link-active,.NavPanel .menu-item:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.NavPanel .menu-item.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.NavPanel .menu-item.router-link-active:hover{text-decoration:underline}.NavPanel .timelines-chevron{margin-left:.8em;font-size:1.1em}.NavPanel .timelines-background{padding:0 0 0 .6em;background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);border-top:1px solid;border-color:#222;border-color:var(--border,#222)}.NavPanel .timelines{background-color:#121a24;background-color:var(--bg,#121a24)}.NavPanel .fa-scale-110{margin-right:.8em}.NavPanel .badge{position:absolute;right:.6rem;top:1.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f18dd03\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".who-to-follow *{vertical-align:middle}.who-to-follow img{width:32px;height:32px}.who-to-follow{padding:0 1em;margin:0}.who-to-follow-items{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:1em 0}.who-to-follow-more{padding:0;margin:1em 0;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7272e6fe\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".settings-modal{overflow:hidden}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(((100vh - 100%) / 2 + 100%) - 50px))}@media (max-width:800px){.settings-modal.peek .settings-modal-panel{transform:translateY(calc(100% - 50px))}}.settings-modal .settings-modal-panel{overflow:hidden;transition:transform;transition-timing-function:ease-in-out;transition-duration:.3s;width:1000px;max-width:90vw;height:90vh}@media (max-width:800px){.settings-modal .settings-modal-panel{max-width:100vw;height:100%}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:28px;min-width:10em;padding:0 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"f7395e92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view{z-index:1000;position:fixed;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow:auto;pointer-events:none;animation-duration:.2s;animation-name:modal-background-fadein;opacity:0}.modal-view>*{pointer-events:auto}.modal-view.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5)}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel_loading.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1c82888b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".panel-loading{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:2em;color:#b9b9ba;color:var(--text,#b9b9ba)}.panel-loading .loading-text svg{line-height:0;vertical-align:middle;color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./async_component_error.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2970b266\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".async-component-error{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"23b00cfc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.media-modal-view{z-index:1001}.modal-view.media-modal-view .modal-view-button-arrow{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover{outline:none;box-shadow:none}.modal-view.media-modal-view .modal-view-button-arrow:hover{opacity:1}@keyframes media-fadein{0%{opacity:0}to{opacity:1}}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image;animation:.1s cubic-bezier(.7,0,1,.6) media-fadein}.modal-view-button-arrow{position:absolute;display:block;top:50%;margin-top:-50px;width:70px;height:100px;border:0;padding:0;opacity:0;box-shadow:none;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:visible;cursor:pointer;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.modal-view-button-arrow .arrow-icon{position:absolute;top:35px;height:30px;width:32px;font-size:14px;line-height:30px;color:#fff;text-align:center;background-color:rgba(0,0,0,.3)}.modal-view-button-arrow--prev{left:0}.modal-view-button-arrow--prev .arrow-icon{left:6px}.modal-view-button-arrow--next{right:0}.modal-view-button-arrow--next .arrow-icon{right:6px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side_drawer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34992fba\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".side-drawer-container{position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;transition-duration:0s;transition-property:transform}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transition-delay:.35s;transform:translate(-100%)}.side-drawer-darken{top:0;left:0;width:100vw;height:100vh;position:fixed;z-index:-1;transition:.35s;transition-property:background-color;background-color:rgba(0,0,0,.5)}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{-ms-flex:1 1 100%;flex:1 1 100%}.side-drawer{overflow-x:hidden;transition-timing-function:cubic-bezier(0,1,.5,1);transition:.35s;transition-property:transform;margin:0 0 0 -100px;padding:0 0 1em 100px;width:80%;max-width:20em;-ms-flex:0 0 80%;flex:0 0 80%;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.side-drawer .badge{margin-left:10px}.side-drawer-logo-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.85em}.side-drawer-logo-wrapper img{-ms-flex:none;flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{-ms-flex:0 0 0px;flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;padding:0;margin:0}.side-drawer ul{list-style:none;margin:0;padding:0;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a,.side-drawer li button{box-sizing:border-box;display:block;height:3em;line-height:3em;padding:0 .7em}.side-drawer li a:hover,.side-drawer li button:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_post_status_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f8eca07\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".new-status-button{width:5em;height:5em;border-radius:100%;position:fixed;bottom:1.5em;right:1.5em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);z-index:10;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1)}.new-status-button.hidden{transform:translateY(150%)}.new-status-button svg{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button{display:none}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_nav.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1e0fbcf8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".MobileNav .mobile-nav{display:-ms-grid;display:grid;line-height:50px;height:50px;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto;grid-template-columns:2fr auto;width:100%;position:fixed;box-sizing:border-box}.MobileNav .mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.MobileNav .mobile-nav-button{display:inline-block;text-align:center;padding:0 1em;position:relative;cursor:pointer}.MobileNav .site-name{padding:0 .3em;display:inline-block}.MobileNav .item{display:-ms-flexbox;display:flex}.MobileNav .alert-dot{border-radius:100%;height:8px;width:8px;position:absolute;left:calc(50% - 4px);top:calc(50% - 4px);margin-left:6px;margin-top:-6px;background-color:red;background-color:var(--badgeNotification,red)}.MobileNav .mobile-notifications-drawer{width:100%;height:100vh;overflow-x:hidden;position:fixed;top:0;left:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);transition-property:transform;transition-duration:.25s;transform:translateX(0);z-index:1001;-webkit-overflow-scrolling:touch}.MobileNav .mobile-notifications-drawer.closed{transform:translateX(100%)}.MobileNav .mobile-notifications-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;z-index:1;width:100%;height:50px;line-height:50px;position:absolute;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.MobileNav .mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.MobileNav .mobile-notifications{margin-top:50px;width:100vw;height:calc(100vh - 50px);overflow-x:hidden;overflow-y:scroll;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.MobileNav .mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.MobileNav .mobile-notifications .notifications .panel:after{border-radius:0}.MobileNav .mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./desktop_nav.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"385f563e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".DesktopNav{height:50px;width:100%;position:fixed}.DesktopNav a{color:var(--topBarLink,#d8a070)}.DesktopNav .inner-nav{display:-ms-grid;display:grid;-ms-grid-rows:50px;grid-template-rows:50px;-ms-grid-columns:2fr auto 2fr;grid-template-columns:2fr auto 2fr;grid-template-areas:\\\"sitename logo actions\\\";box-sizing:border-box;padding:0 1.2em;margin:auto;max-width:980px}.DesktopNav.-logoLeft{-ms-grid-columns:auto 2fr 2fr;grid-template-columns:auto 2fr 2fr;grid-template-areas:\\\"logo sitename actions\\\"}.DesktopNav .button-default,.DesktopNav .button-default svg{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.DesktopNav .button-default:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.DesktopNav .button-default:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.DesktopNav .button-default.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.DesktopNav .logo{grid-area:logo;position:relative;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}@media (min-width:800px){.DesktopNav .logo{opacity:1!important}}.DesktopNav .logo .mask{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;background-color:#182230;background-color:var(--topBarText,#182230);position:absolute;top:0;bottom:0;left:0;right:0}.DesktopNav .logo img{display:inline-block;height:50px}.DesktopNav .nav-icon{margin-left:.2em;width:2em;height:100%;text-align:center}.DesktopNav .nav-icon .svg-inline--fa{color:#d8a070;color:var(--topBarLink,#d8a070)}.DesktopNav .sitename{grid-area:sitename}.DesktopNav .actions{grid-area:actions}.DesktopNav .item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.DesktopNav .item.right{-ms-flex-pack:end;justify-content:flex-end;text-align:right}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search_bar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ea9aafc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".SearchBar{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;vertical-align:baseline;-ms-flex-pack:end;justify-content:flex-end}.SearchBar.-expanded{width:100%}.SearchBar .search-bar-input,.SearchBar .search-button{height:29px}.SearchBar .search-bar-input{-ms-flex:1 0 auto;flex:1 0 auto}.SearchBar .cancel-search{height:50px}.SearchBar .cancel-icon{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_reporting_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10c04f96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-reporting-panel{width:90vw;max-width:700px;min-height:20vh;max-height:80vh}.user-reporting-panel .panel-heading .title{text-align:center;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-reporting-panel .panel-body{display:-ms-flexbox;display:flex;-ms-flex-direction:column-reverse;flex-direction:column-reverse;border-top:1px solid;border-color:#222;border-color:var(--border,#222);overflow:hidden}.user-reporting-panel-left{padding:1.1em .7em .7em;line-height:1.4em;box-sizing:border-box}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:44px;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{margin:1em 0 0;line-height:1.3em}.user-reporting-panel-right{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.user-reporting-panel-sitem>.Status{-ms-flex:1;flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{-ms-flex-direction:row;flex-direction:row}.user-reporting-panel-left{width:50%;max-width:320px;border-right:1px solid;border-color:#222;border-color:var(--border,#222);padding:1.1em}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{width:50%;-ms-flex:1 1 auto;flex:1 1 auto;margin-bottom:12px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7628c2ae\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.post-form-modal-view{-ms-flex-align:start;align-items:flex-start}.post-form-modal-panel{-ms-flex-negative:0;flex-shrink:0;margin-top:25%;margin-bottom:2em;width:100%;max-width:700px}@media (orientation:landscape){.post-form-modal-panel{margin-top:8%}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./global_notice_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cdffaf96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".global-notice-list{position:fixed;top:50px;width:100%;pointer-events:none;z-index:1001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.global-notice-list .global-notice{pointer-events:auto;text-align:center;width:40em;max-width:calc(100% - 3em);display:-ms-flexbox;display:flex;padding-left:1.5em;line-height:2em}.global-notice-list .global-notice .notice-message{-ms-flex:1 1 100%;flex:1 1 100%}.global-notice-list .global-notice i{-ms-flex:0 0;flex:0 0;width:1.5em;cursor:pointer}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error .svg-inline--fa{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning .svg-inline--fa{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-success{background-color:var(--alertPopupSuccess,#0fa00f)}.global-notice-list .global-success,.global-notice-list .global-success .svg-inline--fa{color:var(--alertPopupSuccessText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info .svg-inline--fa{color:var(--alertPopupNeutralText,#b9b9ba)}.global-notice-list .close-notice{padding-right:.2em}.global-notice-list .close-notice .svg-inline--fa:hover{opacity:.6}\", \"\"]);\n\n// exports\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","import { set, delete as del } from 'vue'\n\nconst defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settingsModalTargetTab: null,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n mobileLayout: false,\n globalNotices: [],\n layoutHeight: 0,\n lastTimeline: null\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n set(state.settings, 'currentSaveStateNotice', { error: false, data: success })\n set(state.settings, 'noticeClearTimeout',\n setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))\n } else {\n set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setMobileLayout (state, value) {\n state.mobileLayout = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n setSettingsModalTargetTab (state, value) {\n state.settingsModalTargetTab = value\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n },\n setLayoutHeight (state, value) {\n state.layoutHeight = value\n },\n setLastTimeline (state, value) {\n state.lastTimeline = value\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n setMobileLayout ({ commit }, value) {\n commit('setMobileLayout', value)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n clearSettingsModalTargetTab ({ commit }) {\n commit('setSettingsModalTargetTab', null)\n },\n openSettingsModalTab ({ commit }, value) {\n commit('setSettingsModalTargetTab', value)\n commit('openSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', notice), timeout)\n }\n commit('pushGlobalNotice', notice)\n return notice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n },\n setLayoutHeight ({ commit }, value) {\n commit('setLayoutHeight', value)\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n }\n }\n}\n\nexport default interfaceMod\n","import { set } from 'vue'\nimport { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n server: 'http://localhost:4040/',\n textlimit: 5000,\n themeData: undefined,\n vapidPublicKey: undefined,\n\n // Stuff from static/config.json\n alwaysShowSubjectInput: true,\n defaultAvatar: '/images/avi.png',\n defaultBanner: '/images/banner.png',\n background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n greentext: false,\n hideFilteredStatuses: false,\n hideMutedPosts: false,\n hidePostStats: false,\n hideSitename: false,\n hideUserStats: false,\n loginMethod: 'password',\n logo: '/static/logo.svg',\n logoMargin: '.2em',\n logoMask: true,\n logoLeft: false,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n virtualScrolling: true,\n sensitiveByDefault: false,\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: [],\n emojiFetched: false,\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n set(state, name, value)\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'shoutAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const res = await window.fetch('/static/emoji.json')\n if (res.ok) {\n const values = await res.json()\n const emoji = Object.keys(values).map((key) => {\n return {\n displayText: key,\n imageUrl: false,\n replacement: values[key]\n }\n }).sort((a, b) => a.name > b.name ? 1 : -1)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : -1)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport { set } from 'vue'\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n set(obj, item.id, item)\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n set(conversationsObject, conversationId, [status])\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n each(notifications, (notification) => {\n // If invalid notification, update ids but don't add it to store\n if (!isValidNotification(notification)) {\n console.error('Invalid notification:', notification)\n updateNotificationsMinMaxId(state, notification)\n return\n }\n\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n updateNotificationsMinMaxId(state, notification)\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n newNotificationSideEffects(notification)\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n if (newStatus) newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n dismissNotifications (state, { finder }) {\n state.notifications.data = state.notifications.data.filter(n => finder)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n set(status, 'emoji_reactions', emojiReactions)\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', [...status.emoji_reactions, newReaction])\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', status.emoji_reactions.filter(r => r.name !== emoji))\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n },\n setVirtualHeight (state, { statusId, height }) {\n state.allStatusesObject[statusId].virtualHeight = height\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, rootGetters } = store\n\n const newNotificationSideEffects = (notification) => {\n maybeShowNotification(store, notification)\n }\n commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n deleteStatusById ({ rootState, commit }, id) {\n const status = rootState.statuses.allStatusesObject[id]\n commit('setDeleted', { status })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n },\n setVirtualHeight ({ commit }, { statusId, height }) {\n commit('setVirtualHeight', { statusId, height })\n }\n },\n mutations\n}\n\nexport default statuses\n","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n let stopped = false\n let timeout = null\n\n const func = () => {\n const promise = promiseCall()\n // something unexpected happened and promiseCall did not\n // return a promise, abort the loop.\n if (!(promise && promise.finally)) {\n console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n return\n }\n promise.finally(() => {\n if (stopped) return\n timeout = window.setTimeout(func, interval)\n })\n }\n\n const stopFetcher = () => {\n stopped = true\n window.clearTimeout(timeout)\n }\n\n timeout = window.setTimeout(func, interval)\n\n return { stop: stopFetcher }\n}\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until,\n since\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args['until'] = until || timelineData.minId\n } else {\n if (since === undefined) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n args['replyVisibility'] = replyVisibility\n }\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n const allowFollowingMove = rootState.users.currentUser.allow_following_move\n\n args['withMuted'] = !hideMutedPosts\n\n args['withMove'] = !allowFollowingMove\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\n } else if (since !== null) {\n args['since'] = since\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((response) => {\n if (response.errors) {\n throw new Error(`${response.status} ${response.statusText}`)\n }\n const notifications = response.data\n update({ store, notifications, older })\n return notifications\n })\n .catch((error) => {\n store.dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'notifications.error',\n messageArgs: [error.message],\n timeout: 5000\n })\n })\n}\n\nconst startFetching = ({ credentials, store }) => {\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n boundFetchAndUpdate()\n return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n fetchTimeline (args) {\n return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n fetchNotifications (args) {\n return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { set } from 'vue'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n set(obj, item.id, item)\n if (item.screen_name && !item.screen_name.includes('@')) {\n set(obj, item.screen_name.toLowerCase(), item)\n }\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n set(user, 'tags', newTags)\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n set(user, 'tags', newTags)\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n let newRights = user.rights\n newRights[right] = value\n set(user, 'rights', newRights)\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n set(user, 'deactivated', deactivated)\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'friendIds', [])\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'followerIds', [])\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n set(state.relationships, user.relationship.id, user.relationship)\n }\n mergeOrAdd(state.users, state.usersObject, user)\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n set(state.relationships, relationship.id, relationship)\n })\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n user.pinnedStatusIds = user.pinnedStatusIds || []\n const index = user.pinnedStatusIds.indexOf(status.id)\n\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n set(user, 'highlight', highlighted)\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then(({ deactivated }) => commit('updateActivationStatus', { user, deactivated }))\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n store.dispatch('resetChats')\n store.dispatch('setLastTimeline', 'public-timeline')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n\n // Start fetching chats\n store.dispatch('startFetchingChats')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('fetchTimeline', 'friends', { since: null })\n store.dispatch('fetchNotifications', { since: null })\n store.dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n store.dispatch('fetchChats', { latest: true })\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n if (!chat.lastMessage) return\n if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n const opts = {\n tag: chat.lastMessage.id,\n title: chat.account.name,\n icon: chat.account.profile_image_url,\n body: chat.lastMessage.content\n }\n\n if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n opts.image = chat.lastMessage.attachment.preview_url\n }\n\n showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n const fakeMessage = {\n content,\n chat_id: chatId,\n created_at: new Date(),\n id: `${new Date().getTime()}`,\n attachments: attachments,\n account_id: userId,\n idempotency_key: idempotencyKey,\n emojis: [],\n pending: true,\n isNormalized: true\n }\n\n if (attachments[0]) {\n fakeMessage.attachment = attachments[0]\n }\n\n return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n state: {\n retryMultiplier: 1,\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n mastoUserSocketStatus: null,\n followRequests: []\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName].stop()\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n },\n setMastoUserSocketStatus (state, value) {\n state.mastoUserSocketStatus = value\n },\n incrementRetryMultiplier (state) {\n state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n },\n resetRetryMultiplier (state) {\n state.retryMultiplier = 1\n }\n },\n actions: {\n /**\n * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n *\n * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n */\n enableMastoSockets (store, initial) {\n const { state, dispatch, commit } = store\n // Do not initialize unless nonexistent or closed\n if (\n state.mastoUserSocket &&\n ![\n WebSocket.CLOSED,\n WebSocket.CLOSING\n ].includes(state.mastoUserSocket.getState())\n ) {\n return\n }\n if (initial) {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n } else {\n commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n }\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch, commit } = store\n if (!state.mastoUserSocket) return\n commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, commit, dispatch, rootState } = store\n const timelineData = rootState.statuses.timelines.friends\n state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n state.mastoUserSocket.addEventListener(\n 'message',\n ({ detail: message }) => {\n if (!message) return // pings\n if (message.event === 'notification') {\n dispatch('addNewNotifications', {\n notifications: [message.notification],\n older: false\n })\n } else if (message.event === 'update') {\n dispatch('addNewStatuses', {\n statuses: [message.status],\n userId: false,\n showImmediately: timelineData.visibleStatuses.length === 0,\n timeline: 'friends'\n })\n } else if (message.event === 'delete') {\n dispatch('deleteStatusById', message.id)\n } else if (message.event === 'pleroma:chat_update') {\n // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n setTimeout(() => {\n dispatch('addChatMessages', {\n chatId: message.chatUpdate.id,\n messages: [message.chatUpdate.lastMessage]\n })\n dispatch('updateChat', { chat: message.chatUpdate })\n maybeShowChatNotification(store, message.chatUpdate)\n }, 100)\n }\n }\n )\n state.mastoUserSocket.addEventListener('open', () => {\n // Do not show notification when we just opened up the page\n if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n dispatch('pushGlobalNotice', {\n level: 'success',\n messageKey: 'timeline.socket_reconnected',\n timeout: 5000\n })\n }\n // Stop polling if we were errored or disabled\n if (new Set([\n WSConnectionStatus.ERROR,\n WSConnectionStatus.DISABLED\n ]).has(state.mastoUserSocketStatus)) {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n dispatch('stopFetchingChats')\n }\n commit('resetRetryMultiplier')\n commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n })\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n // TODO is this needed?\n dispatch('clearOpenedChats')\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n setTimeout(() => {\n dispatch('startMastoUserSocket')\n }, retryTimeout(state.retryMultiplier))\n commit('incrementRetryMultiplier')\n if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'timeline.socket_broke',\n messageArgs: [code],\n timeout: 5000\n })\n }\n commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n }\n dispatch('clearOpenedChats')\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('startFetchingChats')\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n fetchTimeline (store, timeline, { ...rest }) {\n store.state.backendInteractor.fetchTimeline({\n store,\n timeline,\n ...rest\n })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n fetchNotifications (store, { ...rest }) {\n store.state.backendInteractor.fetchNotifications({\n store,\n ...rest\n })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers['followRequests']) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n let requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeShout', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","const shout = {\n state: {\n messages: [],\n channel: { state: '' }\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n }\n },\n actions: {\n initializeShout (store, socket) {\n const channel = socket.channel('chat:public')\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default shout\n","import { delete as del } from 'vue'\n\nconst oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n del(state, 'token')\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrent (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return type === 'image' || type === 'video' || type === 'audio'\n })\n commit('setMedia', media)\n },\n setCurrent ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrent', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n userId: null,\n statuses: [],\n preTickedIds: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n state.userId = userId\n state.statuses = statuses\n state.preTickedIds = preTickedIds\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n const preTickedIds = statusIds\n const statuses = preTickedStatuses.concat(\n filter(rootState.statuses.allStatuses,\n status => status.user.id === userId && !preTickedIds.includes(status.id)\n )\n )\n commit('openUserReportingModal', { userId, statuses, preTickedIds })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\nimport { set } from 'vue'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n set(state.pollsObject, poll.id, merge(existingPoll, poll))\n } else {\n set(state.pollsObject, poll.id, poll)\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue + 1)\n } else {\n set(state.trackedPolls, pollId, 1)\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue - 1)\n } else {\n set(state.trackedPolls, pollId, 0)\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n return {\n idIndex: {},\n idempotencyKeyIndex: {},\n messages: [],\n newMessageCount: 0,\n lastSeenMessageId: '0',\n chatId: chatId,\n minId: undefined,\n maxId: undefined\n }\n}\n\nconst clear = (storage) => {\n const failedMessageIds = []\n\n for (const message of storage.messages) {\n if (message.error) {\n failedMessageIds.push(message.id)\n } else {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n\n storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n storage.newMessageCount = 0\n storage.lastSeenMessageId = '0'\n storage.minId = undefined\n storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n if (!storage) { return }\n storage.messages = storage.messages.filter(m => m.id !== messageId)\n delete storage.idIndex[messageId]\n\n if (storage.maxId === messageId) {\n const lastMessage = _.maxBy(storage.messages, 'id')\n storage.maxId = lastMessage.id\n }\n\n if (storage.minId === messageId) {\n const firstMessage = _.minBy(storage.messages, 'id')\n storage.minId = firstMessage.id\n }\n}\n\nconst cullOlderMessages = (storage) => {\n const maxIndex = storage.messages.length\n const minIndex = maxIndex - 50\n if (maxIndex <= 50) return\n\n storage.messages = _.sortBy(storage.messages, ['id'])\n storage.minId = storage.messages[minIndex].id\n for (const message of storage.messages) {\n if (message.id < storage.minId) {\n delete storage.idIndex[message.id]\n delete storage.idempotencyKeyIndex[message.idempotency_key]\n }\n }\n storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n if (!storage) { return }\n const fakeMessage = storage.idIndex[fakeId]\n if (fakeMessage) {\n fakeMessage.error = true\n fakeMessage.pending = false\n if (!isRetry) {\n // Ensure the failed message doesn't stay at the bottom of the list.\n const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n if (lastPersistedMessage) {\n const oldId = fakeMessage.id\n fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[oldId]\n }\n }\n }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n if (!storage) { return }\n for (let i = 0; i < newMessages.length; i++) {\n const message = newMessages[i]\n\n // sanity check\n if (message.chat_id !== storage.chatId) { return }\n\n if (message.fakeId) {\n const fakeMessage = storage.idIndex[message.fakeId]\n if (fakeMessage) {\n // In case the same id exists (chat update before POST response)\n // make sure to remove the older duplicate message.\n if (storage.idIndex[message.id]) {\n delete storage.idIndex[message.id]\n storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n }\n Object.assign(fakeMessage, message, { error: false })\n delete fakeMessage['fakeId']\n storage.idIndex[fakeMessage.id] = fakeMessage\n delete storage.idIndex[message.fakeId]\n\n return\n }\n }\n\n if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n storage.minId = message.id\n }\n\n if (!storage.maxId || message.id > storage.maxId) {\n if (updateMaxId) {\n storage.maxId = message.id\n }\n }\n\n if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n if (storage.lastSeenMessageId < message.id) {\n storage.newMessageCount++\n }\n storage.idIndex[message.id] = message\n storage.messages.push(storage.idIndex[message.id])\n storage.idempotencyKeyIndex[message.idempotency_key] = true\n }\n }\n}\n\nconst isConfirmation = (storage, message) => {\n if (!message.idempotency_key) return\n return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n if (!storage) { return }\n storage.newMessageCount = 0\n storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n if (!storage) { return [] }\n\n const result = []\n const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n const firstMessage = messages[0]\n let previousMessage = messages[messages.length - 1]\n let currentMessageChainId\n\n if (firstMessage) {\n const date = new Date(firstMessage.created_at)\n date.setHours(0, 0, 0, 0)\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n }\n\n let afterDate = false\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i]\n const nextMessage = messages[i + 1]\n\n const date = new Date(message.created_at)\n date.setHours(0, 0, 0, 0)\n\n // insert date separator and start a new message chain\n if (previousMessage && previousMessage.date < date) {\n result.push({\n type: 'date',\n date,\n id: date.getTime().toString()\n })\n\n previousMessage['isTail'] = true\n currentMessageChainId = undefined\n afterDate = true\n }\n\n const object = {\n type: 'message',\n data: message,\n date,\n id: message.id,\n messageChainId: currentMessageChainId\n }\n\n // end a message chian\n if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n object['isTail'] = true\n currentMessageChainId = undefined\n }\n\n // start a new message chain\n if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n currentMessageChainId = _.uniqueId()\n object['isHead'] = true\n object['messageChainId'] = currentMessageChainId\n }\n\n result.push(object)\n previousMessage = object\n afterDate = false\n }\n\n return result\n}\n\nconst ChatService = {\n add,\n empty,\n getView,\n deleteMessage,\n cullOlderMessages,\n resetNewMessageCount,\n clear,\n handleMessageError\n}\n\nexport default ChatService\n","import Vue from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n data: [],\n idStore: {}\n})\n\nconst defaultState = {\n chatList: emptyChatList(),\n chatListFetcher: null,\n openedChats: {},\n openedChatMessageServices: {},\n fetcher: undefined,\n currentChatId: null,\n lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n state: { ...defaultState },\n getters: {\n currentChat: state => state.openedChats[state.currentChatId],\n currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n sortedChatList,\n unreadChatCount\n },\n actions: {\n // Chat list\n startFetchingChats ({ dispatch, commit }) {\n const fetcher = () => dispatch('fetchChats', { latest: true })\n fetcher()\n commit('setChatListFetcher', {\n fetcher: () => promiseInterval(fetcher, 5000)\n })\n },\n stopFetchingChats ({ commit }) {\n commit('setChatListFetcher', { fetcher: undefined })\n },\n fetchChats ({ dispatch, rootState, commit }, params = {}) {\n return rootState.api.backendInteractor.chats()\n .then(({ chats }) => {\n dispatch('addNewChats', { chats })\n return chats\n })\n },\n addNewChats (store, { chats }) {\n const { commit, dispatch, rootGetters } = store\n const newChatMessageSideEffects = (chat) => {\n maybeShowChatNotification(store, chat)\n }\n commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n },\n updateChat ({ commit }, { chat }) {\n commit('updateChat', { chat })\n },\n\n // Opened Chats\n startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n dispatch('setCurrentChatFetcher', { fetcher })\n },\n setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n commit('setCurrentChatFetcher', { fetcher })\n },\n addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n dispatch('addNewUsers', [chat.account])\n },\n addChatMessages ({ commit }, value) {\n commit('addChatMessages', { commit, ...value })\n },\n resetChatNewMessageCount ({ commit }, value) {\n commit('resetChatNewMessageCount', value)\n },\n clearCurrentChat ({ rootState, commit, dispatch }, value) {\n commit('setCurrentChatId', { chatId: undefined })\n commit('setCurrentChatFetcher', { fetcher: undefined })\n },\n readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n dispatch('resetChatNewMessageCount')\n commit('readChat', { id, lastReadId })\n\n if (isNewMessage) {\n rootState.api.backendInteractor.readChat({ id, lastReadId })\n }\n },\n deleteChatMessage ({ rootState, commit }, value) {\n rootState.api.backendInteractor.deleteChatMessage(value)\n commit('deleteChatMessage', { commit, ...value })\n },\n resetChats ({ commit, dispatch }) {\n dispatch('clearCurrentChat')\n commit('resetChats', { commit })\n },\n clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n commit('clearOpenedChats', { commit })\n },\n handleMessageError ({ commit }, value) {\n commit('handleMessageError', { commit, ...value })\n },\n cullOlderMessages ({ commit }, chatId) {\n commit('cullOlderMessages', chatId)\n }\n },\n mutations: {\n setChatListFetcher (state, { commit, fetcher }) {\n const prevFetcher = state.chatListFetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.chatListFetcher = fetcher && fetcher()\n },\n setCurrentChatFetcher (state, { fetcher }) {\n const prevFetcher = state.fetcher\n if (prevFetcher) {\n prevFetcher.stop()\n }\n state.fetcher = fetcher && fetcher()\n },\n addOpenedChat (state, { _dispatch, chat }) {\n state.currentChatId = chat.id\n Vue.set(state.openedChats, chat.id, chat)\n\n if (!state.openedChatMessageServices[chat.id]) {\n Vue.set(state.openedChatMessageServices, chat.id, chatService.empty(chat.id))\n }\n },\n setCurrentChatId (state, { chatId }) {\n state.currentChatId = chatId\n },\n addNewChats (state, { chats, newChatMessageSideEffects }) {\n chats.forEach((updatedChat) => {\n const chat = getChatById(state, updatedChat.id)\n\n if (chat) {\n const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n if (isNewMessage && chat.unread) {\n newChatMessageSideEffects(updatedChat)\n }\n } else {\n state.chatList.data.push(updatedChat)\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n }\n })\n },\n updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n const chat = getChatById(state, updatedChat.id)\n if (chat) {\n chat.lastMessage = updatedChat.lastMessage\n chat.unread = updatedChat.unread\n chat.updated_at = updatedChat.updated_at\n }\n if (!chat) { state.chatList.data.unshift(updatedChat) }\n Vue.set(state.chatList.idStore, updatedChat.id, updatedChat)\n },\n deleteChat (state, { _dispatch, id, _rootGetters }) {\n state.chats.data = state.chats.data.filter(conversation =>\n conversation.last_status.id !== id\n )\n state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n },\n resetChats (state, { commit }) {\n state.chatList = emptyChatList()\n state.currentChatId = null\n commit('setChatListFetcher', { fetcher: undefined })\n for (const chatId in state.openedChats) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n },\n setChatsLoading (state, { value }) {\n state.chats.loading = value\n },\n addChatMessages (state, { chatId, messages, updateMaxId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n }\n },\n deleteChatMessage (state, { chatId, messageId }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n if (chatMessageService) {\n chatService.deleteMessage(chatMessageService, messageId)\n }\n },\n resetChatNewMessageCount (state, _value) {\n const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n chatService.resetNewMessageCount(chatMessageService)\n },\n // Used when a connection loss occurs\n clearOpenedChats (state) {\n const currentChatId = state.currentChatId\n for (const chatId in state.openedChats) {\n if (currentChatId !== chatId) {\n chatService.clear(state.openedChatMessageServices[chatId])\n Vue.delete(state.openedChats, chatId)\n Vue.delete(state.openedChatMessageServices, chatId)\n }\n }\n },\n readChat (state, { id, lastReadId }) {\n state.lastReadMessageId = lastReadId\n const chat = getChatById(state, id)\n if (chat) {\n chat.unread = 0\n }\n },\n handleMessageError (state, { chatId, fakeId, isRetry }) {\n const chatMessageService = state.openedChatMessageServices[chatId]\n chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n },\n cullOlderMessages (state, chatId) {\n chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n }\n }\n}\n\nexport default chats\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(state, paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n inserted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n componentUpdated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unbind: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId',\n 'virtualHidden'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n hideStatus () {\n if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n return this.virtualHidden && this.$refs.statusComponent[0].suspendable\n } else {\n return this.virtualHidden\n }\n },\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id: id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return this.expanded || this.isPage\n },\n hiddenStyle () {\n const height = (this.status && this.status.virtualHeight) || '120px'\n return this.virtualHidden ? { height } : {}\n }\n },\n components: {\n Status\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n }\n },\n virtualHidden (value) {\n this.$store.dispatch(\n 'setVirtualHeight',\n { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n )\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n focused (id) {\n return (this.isExpanded) && id === this.statusId\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n }\n }\n}\n\nexport default conversation\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./conversation.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./conversation.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-203ee410\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"Conversation\",class:{ '-expanded' : _vm.isExpanded, 'panel' : _vm.isExpanded },style:(_vm.hiddenStyle)},[(_vm.isExpanded)?_c('div',{staticClass:\"panel-heading conversation-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('timeline.conversation'))+\" \")]),_vm._v(\" \"),(_vm.collapsable)?_c('button',{staticClass:\"button-unstyled -link\",on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.collapse'))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,ref:\"statusComponent\",refInFor:true,staticClass:\"conversation-status status-fadein panel-body\",attrs:{\"inline-expanded\":_vm.collapsable && _vm.isExpanded,\"statusoid\":status,\"expandable\":!_vm.isExpanded,\"show-pinned\":_vm.pinnedStatusIdsObject && _vm.pinnedStatusIdsObject[status.id],\"focused\":_vm.focused(status.id),\"in-conversation\":_vm.isExpanded,\"highlight\":_vm.getHighlight(),\"replies\":_vm.getReplies(status.id),\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.profileUserId},on:{\"goto\":_vm.setHighlight,\"toggleExpanded\":_vm.toggleExpanded}})})],2):_c('div',{style:(_vm.hiddenStyle)})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faHome\n)\n\nconst TimelineMenuContent = {\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\n }\n}\n\nexport default TimelineMenuContent\n","/* script */\nexport * from \"!!babel-loader!./timeline_menu_content.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu_content.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9e3b525a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friends' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"home\"}}),_vm._v(_vm._s(_vm.$t(\"nav.home_timeline\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"users\"}}),_vm._v(_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"globe\"}}),_vm._v(_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'bookmarks'}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"bookmark\"}}),_vm._v(_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding \",attrs:{\"fixed-width\":\"\",\"icon\":\"envelope\"}}),_vm._v(_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")],1)],1):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport TimelineMenuContent from './timeline_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n return {\n 'friends': 'nav.home_timeline',\n 'bookmarks': 'nav.bookmarks',\n 'dms': 'nav.dms',\n 'public-timeline': 'nav.public_tl',\n 'public-external-timeline': 'nav.twkn'\n }\n}\n\nconst TimelineMenu = {\n components: {\n Popover,\n TimelineMenuContent\n },\n data () {\n return {\n isOpen: false\n }\n },\n created () {\n if (timelineNames()[this.$route.name]) {\n this.$store.dispatch('setLastTimeline', this.$route.name)\n }\n },\n methods: {\n openMenu () {\n // $nextTick is too fast, animation won't play back but\n // instead starts in fully open position. Low values\n // like 1-5 work on fast machines but not on mobile, 25\n // seems like a good compromise that plays without significant\n // added lag.\n setTimeout(() => {\n this.isOpen = true\n }, 25)\n },\n blockOpen (event) {\n // For the blank area inside the button element.\n // Just setting @click.stop=\"\" makes unintuitive behavior when\n // menu is open and clicking on the blank area doesn't close it.\n if (!this.isOpen) {\n event.stopPropagation()\n }\n },\n timelineName () {\n const route = this.$route.name\n if (route === 'tag-timeline') {\n return '#' + this.$route.params.tag\n }\n const i18nkey = timelineNames()[this.$route.name]\n return i18nkey ? this.$t(i18nkey) : route\n }\n }\n}\n\nexport default TimelineMenu\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_menu.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_menu.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_menu.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-82631696\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_menu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineMenu\",class:{ 'open': _vm.isOpen },attrs:{\"trigger\":\"click\",\"margin\":{ left: -15, right: -200 },\"bound-to\":{ x: 'container' },\"popover-class\":\"timeline-menu-popover-wrap\"},on:{\"show\":_vm.openMenu,\"close\":function () { return _vm.isOpen = false; }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"timeline-menu-popover popover-default\"},[_c('TimelineMenuContent')],1)]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled title timeline-menu-title\"},[_c('span',{staticClass:\"timeline-title\"},[_vm._v(_vm._s(_vm.timelineName()))]),_vm._v(\" \"),_c('span',[_c('FAIcon',{attrs:{\"size\":\"sm\",\"icon\":\"chevron-down\"}})],1),_vm._v(\" \"),_c('span',{staticClass:\"click-blocker\",on:{\"click\":_vm.blockOpen}})])]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter,\n faFont,\n faWrench\n)\n\nconst TimelineQuickSettings = {\n components: {\n Popover\n },\n methods: {\n setReplyVisibility (visibility) {\n this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n this.$store.dispatch('queueFlushAll')\n },\n openTab (tab) {\n this.$store.dispatch('openSettingsModalTab', tab)\n }\n },\n computed: {\n ...mapGetters(['mergedConfig']),\n loggedIn () {\n return !!this.$store.state.users.currentUser\n },\n replyVisibilitySelf: {\n get () { return this.mergedConfig.replyVisibility === 'self' },\n set () { this.setReplyVisibility('self') }\n },\n replyVisibilityFollowing: {\n get () { return this.mergedConfig.replyVisibility === 'following' },\n set () { this.setReplyVisibility('following') }\n },\n replyVisibilityAll: {\n get () { return this.mergedConfig.replyVisibility === 'all' },\n set () { this.setReplyVisibility('all') }\n },\n hideMedia: {\n get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n set () {\n const value = !this.hideMedia\n this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n }\n },\n hideMutedPosts: {\n get () { return this.mergedConfig.hideMutedPosts || this.mergedConfig.hideFilteredStatuses },\n set () {\n const value = !this.hideMutedPosts\n this.$store.dispatch('setOption', { name: 'hideMutedPosts', value })\n this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n }\n }\n }\n}\n\nexport default TimelineQuickSettings\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline_quick_settings.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline_quick_settings.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline_quick_settings.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-38afd010\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline_quick_settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"TimelineQuickSettings\",attrs:{\"trigger\":\"click\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[(_vm.loggedIn)?_c('div',[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityAll = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityAll }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_all'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilityFollowing = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilityFollowing }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_following_short'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.replyVisibilitySelf = true}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-radio': _vm.replyVisibilitySelf }}),_vm._v(_vm._s(_vm.$t('settings.reply_visibility_self_short'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMedia = !_vm.hideMedia}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMedia }}),_vm._v(_vm._s(_vm.$t('settings.hide_media_previews'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){_vm.hideMutedPosts = !_vm.hideMutedPosts}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hideMutedPosts }}),_vm._v(_vm._s(_vm.$t('settings.hide_all_muted_posts'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('filtering')}}},[_c('FAIcon',{attrs:{\"icon\":\"font\"}}),_vm._v(_vm._s(_vm.$t('settings.word_filter'))+\"\\n \")],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":function($event){return _vm.openTab('general')}}},[_c('FAIcon',{attrs:{\"icon\":\"wrench\"}}),_vm._v(_vm._s(_vm.$t('settings.more_settings'))+\"\\n \")],1)])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled\"},[_c('FAIcon',{attrs:{\"icon\":\"filter\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport TimelineQuickSettings from './timeline_quick_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCog } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faCog\n)\n\nexport const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {\n const ids = []\n if (pinnedStatusIds && pinnedStatusIds.length > 0) {\n for (let status of statuses) {\n if (!pinnedStatusIds.includes(status.id)) {\n break\n }\n ids.push(status.id)\n }\n }\n return ids\n}\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile'\n ],\n data () {\n return {\n paused: false,\n unfocused: false,\n bottomedOut: false,\n virtualScrollIndex: 0,\n blockingClicks: false\n }\n },\n components: {\n Status,\n Conversation,\n TimelineMenu,\n TimelineQuickSettings\n },\n computed: {\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n classes () {\n let rootClasses = !this.embedded ? ['panel', 'panel-default'] : []\n if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n return {\n root: rootClasses,\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n excludedStatusIdsObject () {\n const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)\n // Convert id array to object\n return keyBy(ids)\n },\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n },\n statusesToDisplay () {\n const amount = this.timeline.visibleStatuses.length\n const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n const min = Math.max(0, this.virtualScrollIndex - statusesPerSide)\n const max = Math.min(amount, this.virtualScrollIndex + statusesPerSide)\n return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n },\n virtualScrollingEnabled () {\n return this.$store.getters.mergedConfig.virtualScrolling\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.handleScroll)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n setTimeout(this.determineVisibleStatuses, 250)\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n stopBlockingClicks: debounce(function () {\n this.blockingClicks = false\n }, 1000),\n blockClicksTemporarily () {\n if (!this.blockingClicks) {\n this.blockingClicks = true\n }\n this.stopBlockingClicks()\n },\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.blockClicksTemporarily()\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n }).finally(() =>\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n )\n }, 1000, this),\n determineVisibleStatuses () {\n if (!this.$refs.timeline) return\n if (!this.virtualScrollingEnabled) return\n\n const statuses = this.$refs.timeline.children\n const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n if (statuses.length === 0) return\n\n const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n // Start from approximating the index of some visible status by using the\n // the center of the screen on the timeline.\n let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n let err = statuses[approxIndex].getBoundingClientRect().y\n\n // if we have a previous scroll index that can be used, test if it's\n // closer than the previous approximation, use it if so\n\n const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n if (Math.abs(err) > virtualScrollIndexY) {\n approxIndex = cappedScrollIndex\n err = virtualScrollIndexY\n }\n\n // if the status is too far from viewport, check the next/previous ones if\n // they happen to be better\n while (err < -20 && approxIndex < statuses.length - 1) {\n err += statuses[approxIndex].offsetHeight\n approxIndex++\n }\n while (err > window.innerHeight + 100 && approxIndex > 0) {\n approxIndex--\n err -= statuses[approxIndex].offsetHeight\n }\n\n // this status is now the center point for virtual scrolling and visible\n // statuses will be nearby statuses before and after it\n this.virtualScrollIndex = approxIndex\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleScroll: throttle(function (e) {\n this.determineVisibleStatuses()\n this.scrollLoad(e)\n }, 200),\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./timeline.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3c11ece0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.classes.root, 'Timeline']},[_c('div',{class:_vm.classes.header},[(!_vm.embedded)?_c('TimelineMenu'):_vm._e(),_vm._v(\" \"),(_vm.showLoadButton)?_c('button',{staticClass:\"button-default loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.loadButtonString)+\"\\n \")]):_c('div',{staticClass:\"loadmore-text faint\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.up_to_date'))+\"\\n \")]),_vm._v(\" \"),(!_vm.embedded)?_c('TimelineQuickSettings'):_vm._e()],1),_vm._v(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{ref:\"timeline\",staticClass:\"timeline\"},[_vm._l((_vm.pinnedStatusIds),function(statusId){return [(_vm.timeline.statusesObject[statusId])?_c('conversation',{key:statusId + '-pinned',staticClass:\"status-fadein\",attrs:{\"status-id\":statusId,\"collapsable\":true,\"pinned-status-ids-object\":_vm.pinnedStatusIdsObject,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]}),_vm._v(\" \"),_vm._l((_vm.timeline.visibleStatuses),function(status){return [(!_vm.excludedStatusIdsObject[status.id])?_c('conversation',{key:status.id,staticClass:\"status-fadein\",attrs:{\"status-id\":status.id,\"collapsable\":true,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId,\"virtual-hidden\":_vm.virtualScrollingEnabled && !_vm.statusesToDisplay.includes(status.id)}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_statuses'))+\"\\n \")]):(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_more_statuses'))+\"\\n \")]):(!_vm.timeline.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f2a502e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.public_tl'),\"timeline\":_vm.timeline,\"timeline-name\":'public'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_and_external_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_and_external_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f6923484\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_and_external_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.twkn'),\"timeline\":_vm.timeline,\"timeline-name\":'publicAndExternal'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","/* script */\nexport * from \"!!babel-loader!./friends_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./friends_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-22490669\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./friends_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.timeline'),\"timeline\":_vm.timeline,\"timeline-name\":'friends'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","/* script */\nexport * from \"!!babel-loader!./tag_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./tag_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-047310d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tag_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.tag,\"timeline\":_vm.timeline,\"timeline-name\":'tag',\"tag\":_vm.tag}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n destroyed () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","/* script */\nexport * from \"!!babel-loader!./bookmark_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./bookmark_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b9c8ba0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./bookmark_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.bookmarks'),\"timeline\":_vm.timeline,\"timeline-name\":'bookmarks'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","/* script */\nexport * from \"!!babel-loader!./conversation-page.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation-page.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46654d24\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('conversation',{attrs:{\"collapsable\":false,\"is-page\":\"true\",\"status-id\":_vm.statusId}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport { 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","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 }","<template>\n <Popover\n trigger=\"click\"\n class=\"NotificationFilters\"\n placement=\"bottom\"\n :bound-to=\"{ x: 'container' }\"\n >\n <template v-slot:content>\n <div class=\"dropdown-menu\">\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"button-default dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n </div>\n </template>\n <template v-slot:trigger>\n <button class=\"button-unstyled\">\n <FAIcon icon=\"filter\" />\n </button>\n </template>\n </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faFilter\n)\n\nexport default {\n components: { Popover },\n computed: {\n filters () {\n return this.$store.getters.mergedConfig.notificationVisibility\n }\n },\n methods: {\n toggleNotificationFilter (type) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: {\n ...this.filters,\n [type]: !this.filters[type]\n }\n })\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n\n.NotificationFilters {\n align-self: stretch;\n\n > button {\n font-size: 1.2em;\n padding-left: 0.7em;\n padding-right: 0.2em;\n line-height: 100%;\n height: 100%;\n }\n\n .dropdown-item {\n margin: 0;\n }\n}\n\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./notification_filters.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./notification_filters.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b3300ab\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification_filters.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","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 _c('Popover',{staticClass:\"NotificationFilters\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('likes')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.likes }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_likes'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('repeats')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.repeats }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_repeats'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('follows')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.follows }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_follows'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('mentions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.mentions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_mentions'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('emojiReactions')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.emojiReactions }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_emoji_reactions'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item\",on:{\"click\":function($event){return _vm.toggleNotificationFilter('moves')}}},[_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.filters.moves }}),_vm._v(_vm._s(_vm.$t('settings.notification_visibility_moves'))+\"\\n \")])])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-unstyled\"},[_c('FAIcon',{attrs:{\"icon\":\"filter\"}})],1)]},proxy:true}])})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n components: {\n Notification,\n NotificationFilters\n },\n props: {\n // Disables display of panel header\n noHeading: Boolean,\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array\n },\n data () {\n return {\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountTitle () {\n return this.unseenCount + (this.unreadChatCount)\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n },\n ...mapGetters(['unreadChatCount'])\n },\n watch: {\n unseenCountTitle (count) {\n if (count > 0) {\n FaviconService.drawFaviconBadge()\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n FaviconService.clearFaviconBadge()\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notifications.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notifications.js\"\nimport __vue_script__ from \"!!babel-loader!./notifications.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-78de60bd\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"Notifications\",class:{ minimal: _vm.minimalMode }},[_c('div',{class:_vm.mainClass},[(!_vm.noHeading)?_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.notifications'))+\"\\n \"),(_vm.unseenCount)?_c('span',{staticClass:\"badge badge-notification unseen-count\"},[_vm._v(_vm._s(_vm.unseenCount))]):_vm._e()]),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"button-default read-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.markAsSeen($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.read'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('NotificationFilters')],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.notificationsToDisplay),function(notification){return _c('div',{key:notification.id,staticClass:\"notification\",class:{\"unseen\": !_vm.minimalMode && !notification.seen}},[_c('div',{staticClass:\"notification-overlay\"}),_vm._v(\" \"),_c('notification',{attrs:{\"notification\":notification}})],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer notifications-footer\"},[(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.no_more_notifications'))+\"\\n \")]):(!_vm.loading)?_c('button',{staticClass:\"button-unstyled -link -fullwidth\",on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderNotifications()}}},[_c('div',{staticClass:\"new-status-notification text-center\"},[_vm._v(\"\\n \"+_vm._s(_vm.minimalMode ? _vm.$t('interactions.load_older') : _vm.$t('notifications.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"lg\"}})],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notifications from '../notifications/notifications.vue'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications\n }\n}\n\nexport default Interactions\n","/* script */\nexport * from \"!!babel-loader!./interactions.js\"\nimport __vue_script__ from \"!!babel-loader!./interactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-109005c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])]),_vm._v(\" \"),_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onModeSwitch}},[_c('span',{key:\"mentions\",attrs:{\"label\":_vm.$t('nav.mentions')}}),_vm._v(\" \"),_c('span',{key:\"likes+repeats\",attrs:{\"label\":_vm.$t('interactions.favs_repeats')}}),_vm._v(\" \"),_c('span',{key:\"follows\",attrs:{\"label\":_vm.$t('interactions.follows')}}),_vm._v(\" \"),(!_vm.allowFollowingMove)?_c('span',{key:\"moves\",attrs:{\"label\":_vm.$t('interactions.moves')}}):_vm._e()]),_vm._v(\" \"),_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true,\"minimal-mode\":true,\"filter-mode\":_vm.filterMode}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","/* script */\nexport * from \"!!babel-loader!./dm_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./dm_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-294f8b6d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dm_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.dms'),\"timeline\":_vm.timeline,\"timeline-name\":'dms'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\n\nexport default Vue.component('chat-title', {\n name: 'ChatTitle',\n components: {\n UserAvatar\n },\n props: [\n 'user', 'withAvatar'\n ],\n computed: {\n title () {\n return this.user ? this.user.screen_name_ui : ''\n },\n htmlTitle () {\n return this.user ? this.user.name_html : ''\n }\n },\n methods: {\n getUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name)\n }\n }\n})\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_title.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_title.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_title.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-392970fa\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_title.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-title\",attrs:{\"title\":_vm.title}},[(_vm.withAvatar && _vm.user)?_c('router-link',{attrs:{\"to\":_vm.getUserProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"user\":_vm.user,\"width\":\"23px\",\"height\":\"23px\"}})],1):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"username\",domProps:{\"innerHTML\":_vm._s(_vm.htmlTitle)}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport 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-2f573a3c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isNew)?_c('div',[_c('ChatNew',{on:{\"cancel\":_vm.cancelNewChat}})],1):_c('div',{staticClass:\"chat-list panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.chats\"))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-default\",on:{\"click\":_vm.newChat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"chats.new\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.sortedChatList.length > 0)?_c('div',{staticClass:\"timeline\"},[_c('List',{attrs:{\"items\":_vm.sortedChatList},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('ChatListItem',{key:item.id,attrs:{\"compact\":false,\"chat\":item}})]}}],null,false,1412157271)})],1):_c('div',{staticClass:\"emtpy-chat-list-alert\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chats.empty_chat_list_placeholder')))])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time>\n {{ displayDate }}\n </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n name: 'Timeago',\n props: ['date'],\n computed: {\n displayDate () {\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n if (this.date.getTime() === today.getTime()) {\n return this.$t('display_date.today')\n } else {\n return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./chat_message_date.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23377998\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message_date.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',[_vm._v(\"\\n \"+_vm._s(_vm.displayDate)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes,\n faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faEllipsisH\n)\n\nconst ChatMessage = {\n name: 'ChatMessage',\n props: [\n 'author',\n 'edited',\n 'noHeading',\n 'chatViewItem',\n 'hoveredMessageChain'\n ],\n components: {\n Popover,\n Attachment,\n StatusContent,\n UserAvatar,\n Gallery,\n LinkPreview,\n ChatMessageDate\n },\n computed: {\n // Returns HH:MM (hours and minutes) in local time.\n createdAt () {\n const time = this.chatViewItem.data.created_at\n return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n },\n isCurrentUser () {\n return this.message.account_id === this.currentUser.id\n },\n message () {\n return this.chatViewItem.data\n },\n userProfileLink () {\n return generateProfileLink(this.author.id, this.author.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n isMessage () {\n return this.chatViewItem.type === 'message'\n },\n messageForStatusContent () {\n return {\n summary: '',\n 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-0243e648\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_message.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMessage)?_c('div',{staticClass:\"chat-message-wrapper\",class:{ 'hovered-message-chain': _vm.hoveredMessageChain },on:{\"mouseover\":function($event){return _vm.onHover(true)},\"mouseleave\":function($event){return _vm.onHover(false)}}},[_c('div',{staticClass:\"chat-message\",class:[{ 'outgoing': _vm.isCurrentUser, 'incoming': !_vm.isCurrentUser }]},[(!_vm.isCurrentUser)?_c('div',{staticClass:\"avatar-wrapper\"},[(_vm.chatViewItem.isHead)?_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.author}})],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"chat-message-inner\"},[_c('div',{staticClass:\"status-body\",style:({ 'min-width': _vm.message.attachment ? '80%' : '' })},[_c('div',{staticClass:\"media status\",class:{ 'without-attachment': !_vm.hasAttachment, 'pending': _vm.chatViewItem.data.pending, 'error': _vm.chatViewItem.data.error },staticStyle:{\"position\":\"relative\"},on:{\"mouseenter\":function($event){_vm.hovered = true},\"mouseleave\":function($event){_vm.hovered = false}}},[_c('div',{staticClass:\"chat-message-menu\",class:{ 'visible': _vm.hovered || _vm.menuOpened }},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to-selector\":_vm.isCurrentUser ? '' : '.scrollable-message-list',\"bound-to\":{ x: 'container' },\"margin\":_vm.popoverMarginStyle},on:{\"show\":function($event){_vm.menuOpened = true},\"close\":function($event){_vm.menuOpened = false}},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":_vm.deleteMessage}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}}),_vm._v(\" \"+_vm._s(_vm.$t(\"chats.delete\"))+\"\\n \")],1)])]},proxy:true},{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"button-default menu-icon\",attrs:{\"title\":_vm.$t('chats.more')}},[_c('FAIcon',{attrs:{\"icon\":\"ellipsis-h\"}})],1)]},proxy:true}],null,false,140024536)})],1),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.messageForStatusContent,\"full-content\":true},scopedSlots:_vm._u([{key:\"footer\",fn:function(){return [_c('span',{staticClass:\"created-at\"},[_vm._v(\"\\n \"+_vm._s(_vm.createdAt)+\"\\n \")])]},proxy:true}],null,false,4198611077)})],1)])])])]):_c('div',{staticClass:\"chat-message-date-separator\"},[_c('ChatMessageDate',{attrs:{\"date\":_vm.chatViewItem.date}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// Captures a scroll position\nexport const getScrollPosition = (el) => {\n return {\n scrollTop: el.scrollTop,\n scrollHeight: el.scrollHeight,\n offsetHeight: el.offsetHeight\n }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (el, offset = 0) => {\n if (!el) { return }\n const scrollHeight = el.scrollTop + offset\n const totalHeight = el.scrollHeight - el.offsetHeight\n return totalHeight <= scrollHeight\n}\n\n// Height of the scrollable container. The dynamic height is needed to ensure the mobile browser panel doesn't overlap or hide the posting form.\nexport const scrollableContainerHeight = (inner, header, footer) => {\n return inner.offsetHeight - header.clientHeight - footer.clientHeight\n}\n\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = (el) => {\n if (!el) return\n\n return el.scrollHeight > el.clientHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, scrollableContainerHeight, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronDown,\n faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n faChevronDown,\n faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 150\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n components: {\n ChatMessage,\n ChatTitle,\n PostStatusForm\n },\n data () {\n return {\n jumpToBottomButtonVisible: false,\n hoveredMessageChainId: undefined,\n lastScrollPosition: {},\n scrollableContainerHeight: '100%',\n errorLoadingChat: false,\n messageRetriers: {}\n }\n },\n created () {\n this.startFetching()\n window.addEventListener('resize', this.handleLayoutChange)\n },\n mounted () {\n window.addEventListener('scroll', this.handleScroll)\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.handleResize()\n })\n this.setChatLayout()\n },\n destroyed () {\n window.removeEventListener('scroll', this.handleScroll)\n window.removeEventListener('resize', this.handleLayoutChange)\n this.unsetChatLayout()\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.dispatch('clearCurrentChat')\n },\n computed: {\n recipient () {\n return this.currentChat && this.currentChat.account\n },\n recipientId () {\n return this.$route.params.recipient_id\n },\n formPlaceholder () {\n if (this.recipient) {\n return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n } else {\n return ''\n }\n },\n chatViewItems () {\n return chatService.getView(this.currentChatMessageService)\n },\n newMessageCount () {\n return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n },\n streamingEnabled () {\n return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n },\n ...mapGetters([\n 'currentChat',\n 'currentChatMessageService',\n 'findOpenedChatByRecipientId',\n 'mergedConfig'\n ]),\n ...mapState({\n backendInteractor: state => state.api.backendInteractor,\n mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n mobileLayout: state => state.interface.mobileLayout,\n layoutHeight: state => state.interface.layoutHeight,\n currentUser: state => state.users.currentUser\n })\n },\n watch: {\n chatViewItems () {\n // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n this.$nextTick(() => {\n if (bottomedOutBeforeUpdate) {\n this.scrollDown()\n }\n })\n },\n '$route': function () {\n this.startFetching()\n },\n layoutHeight () {\n this.handleResize({ expand: true })\n },\n mastoUserSocketStatus (newValue) {\n if (newValue === WSConnectionStatus.JOINED) {\n this.fetchChat({ isFirstFetch: true })\n }\n }\n },\n methods: {\n // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n onMessageHover ({ isHovered, messageChainId }) {\n this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n },\n onFilesDropped () {\n this.$nextTick(() => {\n this.handleResize()\n this.updateScrollableContainerHeight()\n })\n },\n handleVisibilityChange () {\n this.$nextTick(() => {\n if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n this.scrollDown({ forceRead: true })\n }\n })\n },\n setChatLayout () {\n // This is a hacky way to adjust the global layout to the mobile chat (without modifying the rest of the app).\n // This layout prevents empty spaces from being visible at the bottom\n // of the chat on iOS Safari (`safe-area-inset`) when\n // - the on-screen keyboard appears and the user starts typing\n // - the user selects the text inside the input area\n // - the user selects and deletes the text that is multiple lines long\n // TODO: unify the chat layout with the global layout.\n let html = document.querySelector('html')\n if (html) {\n html.classList.add('chat-layout')\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n })\n },\n unsetChatLayout () {\n let html = document.querySelector('html')\n if (html) {\n html.classList.remove('chat-layout')\n }\n },\n handleLayoutChange () {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.scrollDown()\n })\n },\n // Ensures the proper position of the posting form in the mobile layout (the mobile browser panel does not overlap or hide it)\n updateScrollableContainerHeight () {\n const header = this.$refs.header\n const footer = this.$refs.footer\n const inner = this.mobileLayout ? window.document.body : this.$refs.inner\n this.scrollableContainerHeight = scrollableContainerHeight(inner, header, footer) + 'px'\n },\n // Preserves the scroll position when OSK appears or the posting form changes its height.\n handleResize (opts = {}) {\n const { expand = false, delayed = false } = opts\n\n if (delayed) {\n setTimeout(() => {\n this.handleResize({ ...opts, delayed: false })\n }, SAFE_RESIZE_TIME_OFFSET)\n return\n }\n\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n\n const { offsetHeight = undefined } = this.lastScrollPosition\n this.lastScrollPosition = getScrollPosition(this.$refs.scrollable)\n\n const diff = this.lastScrollPosition.offsetHeight - offsetHeight\n if (diff < 0 || (!this.bottomedOut() && expand)) {\n this.$nextTick(() => {\n this.updateScrollableContainerHeight()\n this.$refs.scrollable.scrollTo({\n top: this.$refs.scrollable.scrollTop - diff,\n left: 0\n })\n })\n }\n })\n },\n scrollDown (options = {}) {\n const { behavior = 'auto', forceRead = false } = options\n const scrollable = this.$refs.scrollable\n if (!scrollable) { return }\n this.$nextTick(() => {\n scrollable.scrollTo({ top: scrollable.scrollHeight, left: 0, behavior })\n })\n if (forceRead) {\n this.readChat()\n }\n },\n readChat () {\n if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n if (document.hidden) { return }\n const lastReadId = this.currentChatMessageService.maxId\n this.$store.dispatch('readChat', {\n id: this.currentChat.id,\n lastReadId\n })\n },\n bottomedOut (offset) {\n return isBottomedOut(this.$refs.scrollable, offset)\n },\n reachedTop () {\n const scrollable = this.$refs.scrollable\n return scrollable && scrollable.scrollTop <= 0\n },\n cullOlderCheck () {\n window.setTimeout(() => {\n if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n }\n }, 5000)\n },\n handleScroll: _.throttle(function () {\n if (!this.currentChat) { return }\n\n if (this.reachedTop()) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n this.jumpToBottomButtonVisible = false\n this.cullOlderCheck()\n if (this.newMessageCount > 0) {\n // Use a delay before marking as read to prevent situation where new messages\n // arrive just as you're leaving the view and messages that you didn't actually\n // get to see get marked as read.\n window.setTimeout(() => {\n // Don't mark as read if the element doesn't exist, user has left chat view\n if (this.$el) this.readChat()\n }, MARK_AS_READ_DELAY)\n }\n } else {\n this.jumpToBottomButtonVisible = true\n }\n }, 200),\n handleScrollUp (positionBeforeLoading) {\n const positionAfterLoading = getScrollPosition(this.$refs.scrollable)\n this.$refs.scrollable.scrollTo({\n top: getNewTopPosition(positionBeforeLoading, positionAfterLoading),\n left: 0\n })\n },\n fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n const chatMessageService = this.currentChatMessageService\n if (!chatMessageService) { return }\n if (fetchLatest && this.streamingEnabled) { return }\n\n const chatId = chatMessageService.chatId\n const fetchOlderMessages = !!maxId\n const sinceId = fetchLatest && chatMessageService.maxId\n\n return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n .then((messages) => {\n // Clear the current chat in case we're recovering from a ws connection loss.\n if (isFirstFetch) {\n chatService.clear(chatMessageService)\n }\n\n const positionBeforeUpdate = getScrollPosition(this.$refs.scrollable)\n this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n this.$nextTick(() => {\n if (fetchOlderMessages) {\n this.handleScrollUp(positionBeforeUpdate)\n }\n\n if (isFirstFetch) {\n this.updateScrollableContainerHeight()\n }\n\n // In vertical screens, the first batch of fetched messages may not always take the\n // full height of the scrollable container.\n // If this is the case, we want to fetch the messages until the scrollable container\n // is fully populated so that the user has the ability to scroll up and load the history.\n if (!isScrollable(this.$refs.scrollable) && messages.length > 0) {\n this.fetchChat({ maxId: this.currentChatMessageService.minId })\n }\n })\n })\n })\n },\n async startFetching () {\n let chat = this.findOpenedChatByRecipientId(this.recipientId)\n if (!chat) {\n try {\n chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n } catch (e) {\n console.error('Error creating or getting a chat', e)\n this.errorLoadingChat = true\n }\n }\n if (chat) {\n this.$nextTick(() => {\n this.scrollDown({ forceRead: true })\n })\n this.$store.dispatch('addOpenedChat', { chat })\n this.doStartFetching()\n }\n },\n doStartFetching () {\n this.$store.dispatch('startFetchingCurrentChat', {\n fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n })\n this.fetchChat({ isFirstFetch: true })\n },\n handleAttachmentPosting () {\n this.$nextTick(() => {\n this.handleResize()\n // When the posting form size changes because of a media attachment, we need an extra resize\n // to account for the potential delay in the DOM update.\n setTimeout(() => {\n this.updateScrollableContainerHeight()\n }, SAFE_RESIZE_TIME_OFFSET)\n this.scrollDown({ forceRead: true })\n })\n },\n sendMessage ({ status, media, idempotencyKey }) {\n const params = {\n id: this.currentChat.id,\n content: status,\n idempotencyKey\n }\n\n if (media[0]) {\n params.mediaId = media[0].id\n }\n\n const fakeMessage = buildFakeMessage({\n attachments: media,\n chatId: this.currentChat.id,\n content: status,\n userId: this.currentUser.id,\n idempotencyKey\n })\n\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n messages: [fakeMessage]\n }).then(() => {\n this.handleAttachmentPosting()\n })\n\n return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n },\n doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n if (retriesLeft <= 0) return\n\n this.backendInteractor.sendChatMessage(params)\n .then(data => {\n this.$store.dispatch('addChatMessages', {\n chatId: this.currentChat.id,\n updateMaxId: false,\n messages: [{ ...data, fakeId: fakeMessage.id }]\n })\n\n return data\n })\n .catch(error => {\n console.error('Error sending message', error)\n this.$store.dispatch('handleMessageError', {\n chatId: this.currentChat.id,\n fakeId: fakeMessage.id,\n isRetry: retriesLeft !== MAX_RETRIES\n })\n if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n }\n return {}\n })\n\n return Promise.resolve(fakeMessage)\n },\n goBack () {\n this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n }\n }\n}\n\nexport default Chat\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat.js\"\nimport __vue_script__ from \"!!babel-loader!./chat.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4b3f1f68\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-view\"},[_c('div',{staticClass:\"chat-view-inner\"},[_c('div',{ref:\"inner\",staticClass:\"panel-default panel chat-view-body\",attrs:{\"id\":\"nav\"}},[_c('div',{ref:\"header\",staticClass:\"panel-heading chat-view-heading mobile-hidden\"},[_c('a',{staticClass:\"go-back-button\",on:{\"click\":_vm.goBack}},[_c('FAIcon',{attrs:{\"size\":\"lg\",\"icon\":\"chevron-left\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"title text-center\"},[_c('ChatTitle',{attrs:{\"user\":_vm.recipient,\"with-avatar\":true}})],1)]),_vm._v(\" \"),[_c('div',{ref:\"scrollable\",staticClass:\"scrollable-message-list\",style:({ height: _vm.scrollableContainerHeight }),on:{\"scroll\":_vm.handleScroll}},[(!_vm.errorLoadingChat)?_vm._l((_vm.chatViewItems),function(chatViewItem){return _c('ChatMessage',{key:chatViewItem.id,attrs:{\"author\":_vm.recipient,\"chat-view-item\":chatViewItem,\"hovered-message-chain\":chatViewItem.messageChainId === _vm.hoveredMessageChainId},on:{\"hover\":_vm.onMessageHover}})}):_c('div',{staticClass:\"chat-loading-error\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('chats.error_loading_chat'))+\"\\n \")])])],2),_vm._v(\" \"),_c('div',{ref:\"footer\",staticClass:\"panel-body footer\"},[_c('div',{staticClass:\"jump-to-bottom-button\",class:{ 'visible': _vm.jumpToBottomButtonVisible },on:{\"click\":function($event){return _vm.scrollDown({ behavior: 'smooth' })}}},[_c('span',[_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}}),_vm._v(\" \"),(_vm.newMessageCount)?_c('div',{staticClass:\"badge badge-notification unread-chat-count unread-message-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.newMessageCount)+\"\\n \")]):_vm._e()],1)]),_vm._v(\" \"),_c('PostStatusForm',{attrs:{\"disable-subject\":true,\"disable-scope-selector\":true,\"disable-notice\":true,\"disable-lock-warning\":true,\"disable-polls\":true,\"disable-sensitivity-checkbox\":true,\"disable-submit\":_vm.errorLoadingChat || !_vm.currentChat,\"disable-preview\":true,\"optimistic-posting\":true,\"post-handler\":_vm.sendMessage,\"submit-on-enter\":!_vm.mobileLayout,\"preserve-focus\":!_vm.mobileLayout,\"auto-focus\":!_vm.mobileLayout,\"placeholder\":_vm.formPlaceholder,\"file-limit\":1,\"max-height\":\"160\",\"emoji-picker-placement\":\"top\"},on:{\"resize\":_vm.handleResize}})],1)]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-064803a0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-card-content-container\"},[(_vm.isMe || (!_vm.noFollowsYou && _vm.relationship.followed_by))?_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.isMe ? _vm.$t('user_card.its_you') : _vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn)?[(!_vm.relationship.following)?_c('div',{staticClass:\"follow-card-follow-button\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()]:(!_vm.isMe)?[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]:_vm._e()],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n destroy, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return Vue.component('withLoadMore', {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false,\n entries: []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\n destroy && destroy(this.$props, this.$store)\n },\n methods: {\n // Entries is not a computed because computed can't track the dynamic\n // selector for changes and won't trigger after fetch.\n updateEntries () {\n this.entries = select(this.$props, this.$store) || []\n },\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n .finally(() => {\n this.updateEntries()\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render (h) {\n const props = {\n props: {\n ...this.$props,\n [childPropName]: this.entries\n },\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }\n const children = Object.entries(this.$slots).map(([key, value]) => h('template', { slot: key }, value))\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error &&\n <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n {this.$t('general.generic_error')}\n </button>\n }\n {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n })\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.js'\nimport 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-43cda8d1\\\",\\\"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-52163aea\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./registration.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.registration'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"registration-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit(_vm.user)}}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-fields\"},[_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.username.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.username.$model),expression:\"$v.user.username.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-username\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.username_placeholder')},domProps:{\"value\":(_vm.$v.user.username.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.username, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.username.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.username.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.username_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.fullname.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-fullname\"}},[_vm._v(_vm._s(_vm.$t('registration.fullname')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.fullname.$model),expression:\"$v.user.fullname.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-fullname\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.fullname_placeholder')},domProps:{\"value\":(_vm.$v.user.fullname.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.fullname, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.fullname.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.fullname.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.fullname_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.email.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t('registration.email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.$v.user.email.$model),expression:\"$v.user.email.$model\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"disabled\":_vm.isPending,\"type\":\"email\"},domProps:{\"value\":(_vm.$v.user.email.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.email, \"$model\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.email.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.email.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.email_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"bio\"}},[_vm._v(_vm._s(_vm.$t('registration.bio'))+\" (\"+_vm._s(_vm.$t('general.optional'))+\")\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.bio),expression:\"user.bio\"}],staticClass:\"form-control\",attrs:{\"id\":\"bio\",\"disabled\":_vm.isPending,\"placeholder\":_vm.bioPlaceholder},domProps:{\"value\":(_vm.user.bio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"bio\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.password.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.password.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.password.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.confirm.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password-confirmation\"}},[_vm._v(_vm._s(_vm.$t('registration.password_confirm')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.confirm),expression:\"user.confirm\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password-confirmation\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.confirm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"confirm\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.confirm.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.confirm.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_required')))])]):_vm._e(),_vm._v(\" \"),(!_vm.$v.user.confirm.sameAsPassword)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_match')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.accountApprovalRequired)?_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"reason\"}},[_vm._v(_vm._s(_vm.$t('registration.reason')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.reason),expression:\"user.reason\"}],staticClass:\"form-control\",attrs:{\"id\":\"reason\",\"disabled\":_vm.isPending,\"placeholder\":_vm.reasonPlaceholder},domProps:{\"value\":(_vm.user.reason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"reason\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),(_vm.captcha.type != 'none')?_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"captcha-group\"}},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"captcha-label\"}},[_vm._v(_vm._s(_vm.$t('registration.captcha')))]),_vm._v(\" \"),(['kocaptcha', 'native'].includes(_vm.captcha.type))?[_c('img',{attrs:{\"src\":_vm.captcha.url},on:{\"click\":_vm.setCaptcha}}),_vm._v(\" \"),_c('sub',[_vm._v(_vm._s(_vm.$t('registration.new_captcha')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.captcha.solution),expression:\"captcha.solution\"}],staticClass:\"form-control\",attrs:{\"id\":\"captcha-answer\",\"disabled\":_vm.isPending,\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":(_vm.captcha.solution)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.captcha, \"solution\", $event.target.value)}}})]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.token)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"token\"}},[_vm._v(_vm._s(_vm.$t('registration.token')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.token),expression:\"token\"}],staticClass:\"form-control\",attrs:{\"id\":\"token\",\"disabled\":\"true\",\"type\":\"text\"},domProps:{\"value\":(_vm.token)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.token=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.register'))+\"\\n \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"terms-of-service\",domProps:{\"innerHTML\":_vm._s(_vm.termsOfService)}})]),_vm._v(\" \"),(_vm.serverValidationErrors.length)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},_vm._l((_vm.serverValidationErrors),function(error){return _c('span',{key:error},[_vm._v(_vm._s(error))])}),0)]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./password_reset.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./password_reset.js\"\nimport __vue_script__ from \"!!babel-loader!./password_reset.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-63bf2728\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./password_reset.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"password-reset-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"container\"},[(!_vm.mailerEnabled)?_c('div',[(_vm.passwordResetRequested)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required_but_mailer_is_disabled'))+\"\\n \")]):_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_disabled'))+\"\\n \")])]):(_vm.success || _vm.throttled)?_c('div',[(_vm.success)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.check_email'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group text-center\"},[_c('router-link',{attrs:{\"to\":{name: 'root'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.return_home'))+\"\\n \")])],1)]):_c('div',[(_vm.passwordResetRequested)?_c('p',{staticClass:\"password-reset-required error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.instruction'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.email),expression:\"user.email\"}],ref:\"email\",staticClass:\"form-control\",attrs:{\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('password_reset.placeholder'),\"type\":\"input\"},domProps:{\"value\":(_vm.user.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"email\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn button-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.save'))+\"\\n \")])])]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"alert error notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.error))]),_vm._v(\" \"),_c('a',{staticClass:\"fa-scale-110 fa-old-padding dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('FAIcon',{attrs:{\"icon\":\"times\"}})],1)]):_vm._e()])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_request_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_request_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_request_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-84be1288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_request_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-request-card-content-container\"},[_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.denyUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.deny'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!./follow_requests.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_requests.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-62e19784\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_requests.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.friend_requests'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.requests),function(request){return _c('FollowRequestCard',{key:request.id,staticClass:\"list-item\",attrs:{\"user\":request}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","/* script */\nexport * from \"!!babel-loader!./oauth_callback.js\"\nimport __vue_script__ from \"!!babel-loader!./oauth_callback.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f514124c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./oauth_callback.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"...\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./login_form.js\"\nimport __vue_script__ from \"!!babel-loader!./login_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d5a53416\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[(_vm.isPasswordAuth)?[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.username),expression:\"user.username\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"disabled\":_vm.loggingIn,\"placeholder\":_vm.$t('login.placeholder')},domProps:{\"value\":(_vm.user.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"username\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],ref:\"passwordInput\",staticClass:\"form-control\",attrs:{\"id\":\"password\",\"disabled\":_vm.loggingIn,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('router-link',{attrs:{\"to\":{name: 'password-reset'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.forgot_password'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.isTokenAuth)?_c('div',{staticClass:\"form-group\"},[_c('p',[_vm._v(_vm._s(_vm.$t('login.description')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[(_vm.registrationOpen)?_c('router-link',{staticClass:\"register\",attrs:{\"to\":{name: 'registration'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.register'))+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.loggingIn,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")])])])],2)]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./recovery_form.js\"\nimport __vue_script__ from \"!!babel-loader!./recovery_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0b425343\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./recovery_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.recovery'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(_vm._s(_vm.$t('login.recovery_code')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireTOTP($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_two_factor_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./totp_form.js\"\nimport __vue_script__ from \"!!babel-loader!./totp_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60cb7c28\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./totp_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.totp'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.authentication_code'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireRecovery($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_recovery_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled -link\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"size\":\"lg\",\"icon\":\"times\"},on:{\"click\":_vm.clearError}})],1)]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render (createElement) {\n return createElement('component', { is: this.authForm })\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBullhorn,\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faBullhorn,\n faTimes\n)\n\nconst shoutPanel = {\n props: [ 'floating' ],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.shout.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n messages (newVal) {\n const scrollEl = this.$el.querySelector('.chat-window')\n if (!scrollEl) return\n if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n this.$nextTick(() => {\n if (!scrollEl) return\n scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n })\n }\n }\n }\n}\n\nexport default shoutPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./shout_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./shout_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./shout_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-bca6b182\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./shout_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.collapsed || !_vm.floating)?_c('div',{staticClass:\"shout-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading timeline-heading\",class:{ 'shout-heading': _vm.floating },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n \"),(_vm.floating)?_c('FAIcon',{staticClass:\"close-icon\",attrs:{\"icon\":\"times\"}}):_vm._e()],1)]),_vm._v(\" \"),_c('div',{staticClass:\"shout-window\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"shout-message\"},[_c('span',{staticClass:\"shout-avatar\"},[_c('img',{attrs:{\"src\":message.author.avatar}})]),_vm._v(\" \"),_c('div',{staticClass:\"shout-content\"},[_c('router-link',{staticClass:\"shout-name\",attrs:{\"to\":_vm.userProfileLink(message.author)}},[_vm._v(\"\\n \"+_vm._s(message.author.username)+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"shout-text\"},[_vm._v(\"\\n \"+_vm._s(message.text)+\"\\n \")])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"shout-input\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentMessage),expression:\"currentMessage\"}],staticClass:\"shout-input-textarea\",attrs:{\"rows\":\"1\"},domProps:{\"value\":(_vm.currentMessage)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit(_vm.currentMessage)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentMessage=$event.target.value}}})])])]):_c('div',{staticClass:\"shout-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading stub timeline-heading shout-heading\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('FAIcon',{staticClass:\"icon\",attrs:{\"icon\":\"bullhorn\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('shoutbox.title'))+\"\\n \")],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4f8c3288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item\",attrs:{\"user\":user}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","/* script */\nexport * from \"!!babel-loader!./instance_specific_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./instance_specific_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b01187b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./instance_specific_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"instance-specific-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.instanceSpecificPanelContent)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n computed: {\n shout: function () { return this.$store.state.instance.shoutAvailable },\n pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit },\n uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n }\n}\n\nexport default FeaturesPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./features_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./features_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./features_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9d4c35f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./features_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"features-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body features-panel\"},[_c('ul',[(_vm.shout)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.shout'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.pleromaChatMessages)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.pleroma_chat_messages'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.gopher)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.gopher'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.whoToFollow)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.who_to_follow'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.media_proxy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.scope_options')))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.text_limit'))+\" = \"+_vm._s(_vm.textlimit))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.upload_limit'))+\" = \"+_vm._s(_vm.uploadlimit.num)+\" \"+_vm._s(_vm.$t('upload.file_size_units.' + _vm.uploadlimit.unit)))])])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./terms_of_service_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./terms_of_service_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./terms_of_service_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-687e38f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./terms_of_service_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"tos-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n groupedStaffAccounts () {\n const staffAccounts = map(this.staffAccounts, this.findUser).filter(_ => _)\n const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n return [\n { role: 'admin', users: groupedStaffAccounts['admin'] },\n { role: 'moderator', users: groupedStaffAccounts['moderator'] }\n ].filter(group => group.users)\n },\n ...mapGetters([\n 'findUser'\n ]),\n ...mapState({\n staffAccounts: state => state.instance.staffAccounts\n })\n }\n}\n\nexport default StaffPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./staff_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./staff_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./staff_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31dce24a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./staff_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"staff-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.staff\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.groupedStaffAccounts),function(group){return _c('div',{key:group.role,staticClass:\"staff-group\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('general.role.' + group.role)))]),_vm._v(\" \"),_vm._l((group.users),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})})],2)}),0)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\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 ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n let routes = [\n { name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n { name: 'remote-user-profile-acct',\n path: '/remote-users/(@?):username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'user-profile', path: '/(users/)?:name', component: UserProfile }\n ]\n\n if (store.state.instance.pleromaChatMessagesAvailable) {\n routes = routes.concat([\n { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n ])\n }\n\n return routes\n}\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./user_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d2d72c5e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-panel\"},[(_vm.signedIn)?_c('div',{key:\"user-panel\",staticClass:\"panel panel-default signed-in\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"hide-bio\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),_c('PostStatusForm')],1):_c('auth-form',{key:\"user-panel\"})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import TimelineMenuContent from '../timeline_menu/timeline_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUsers,\n faGlobe,\n faBookmark,\n faEnvelope,\n faChevronDown,\n faChevronUp,\n faComments,\n faBell,\n faInfoCircle,\n faStream\n)\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: {\n TimelineMenuContent\n },\n data () {\n return {\n showTimelines: false\n }\n },\n methods: {\n toggleTimelines () {\n this.showTimelines = !this.showTimelines\n }\n },\n computed: {\n ...mapState({\n currentUser: state => state.users.currentUser,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating,\n pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n }),\n ...mapGetters(['unreadChatCount'])\n }\n}\n\nexport default NavPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./nav_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./nav_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./nav_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fdfe5e92\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./nav_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"NavPanel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('button',{staticClass:\"button-unstyled menu-item\",on:{\"click\":_vm.toggleTimelines}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"stream\"}}),_vm._v(_vm._s(_vm.$t(\"nav.timelines\"))+\"\\n \"),_c('FAIcon',{staticClass:\"timelines-chevron\",attrs:{\"fixed-width\":\"\",\"icon\":_vm.showTimelines ? 'chevron-up' : 'chevron-down'}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTimelines),expression:\"showTimelines\"}],staticClass:\"timelines-background\"},[_c('TimelineMenuContent',{staticClass:\"timelines\"})],1)]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"bell\"}}),_vm._v(_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.pleromaChatMessagesAvailable)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'chats', params: { username: _vm.currentUser.screen_name } }}},[(_vm.unreadChatCount)?_c('div',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.unreadChatCount)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"comments\"}}),_vm._v(_vm._s(_vm.$t(\"nav.chats\"))+\"\\n \")],1)],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'friend-requests' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"user-plus\"}}),_vm._v(_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{staticClass:\"menu-item\",attrs:{\"to\":{ name: 'about' }}},[_c('FAIcon',{staticClass:\"fa-scale-110\",attrs:{\"fixed-width\":\"\",\"icon\":\"info-circle\"}}),_vm._v(_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")],1)],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || this.$store.state.instance.defaultAvatar\n let name = user.acct\n\n toFollow.img = img\n toFollow.name = name\n\n panel.$store.state.api.backendInteractor.fetchUser({ id: name })\n .then((externalUser) => {\n if (!externalUser.error) {\n panel.$store.commit('addNewUsers', [externalUser])\n toFollow.id = externalUser.id\n }\n })\n })\n}\n\nfunction getWhoToFollow (panel) {\n var credentials = panel.$store.state.users.currentUser.credentials\n if (credentials) {\n panel.usersToFollow.forEach(toFollow => {\n toFollow.name = 'Loading...'\n })\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n showWhoToFollow(panel, reply)\n })\n }\n}\n\nconst WhoToFollowPanel = {\n data: () => ({\n usersToFollow: []\n }),\n computed: {\n user: function () {\n return this.$store.state.users.currentUser.screen_name\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n }\n },\n methods: {\n userProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n user: function (user, oldUser) {\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n },\n mounted:\n function () {\n this.usersToFollow = new Array(3).fill().map(x => (\n {\n img: this.$store.state.instance.defaultAvatar,\n name: '',\n id: 0\n }\n ))\n if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4d31272\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"who-to-follow-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"who-to-follow\"},[_vm._l((_vm.usersToFollow),function(user){return _c('p',{key:user.id,staticClass:\"who-to-follow-items\"},[_c('img',{attrs:{\"src\":user.img}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink(user.id, user.name)}},[_vm._v(\"\\n \"+_vm._s(user.name)+\"\\n \")]),_c('br')],1)}),_vm._v(\" \"),_c('p',{staticClass:\"who-to-follow-more\"},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.more'))+\"\\n \")])],1)],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9413504\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"},{name:\"body-scroll-lock\",rawName:\"v-body-scroll-lock\",value:(_vm.isOpen && !_vm.noBackground),expression:\"isOpen && !noBackground\"}],staticClass:\"modal-view\",class:_vm.classes,on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"panel-loading\">\n <span class=\"loading-text\">\n <FAIcon\n icon=\"circle-notch\"\n spin\n size=\"3x\"\n />\n {{ $t('general.loading') }}\n </span>\n </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: $fallback--text;\n color: var(--text, $fallback--text);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./panel_loading.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./panel_loading.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-595215a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./panel_loading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-loading\"},[_c('span',{staticClass:\"loading-text\"},[_c('FAIcon',{attrs:{\"icon\":\"circle-notch\",\"spin\":\"\",\"size\":\"3x\"}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./async_component_error.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6b205c72\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./async_component_error.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn button-default\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"async-component-error\"},[_c('div',[_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.generic_error'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.error_retry'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.retry'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => ({\n component: asyncComponent(),\n ...options\n })\n\n const observe = Vue.observable({ c: asyncComponentFactory() })\n\n return {\n functional: true,\n render (createElement, { data, children }) {\n // emit event resetAsyncComponent to reloading\n data.on = {}\n data.on.resetAsyncComponent = () => {\n observe.c = asyncComponentFactory()\n // parent.$forceUpdate()\n }\n return createElement(observe.c, data, children)\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { cloneDeep } from 'lodash'\nimport {\n newImporter,\n newExporter\n} from 'src/services/export_import/export_import.js'\nimport {\n faTimes,\n faFileUpload,\n faFileDownload,\n faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n faWindowMinimize\n} from '@fortawesome/free-regular-svg-icons'\n\nconst PLEROMAFE_SETTINGS_MAJOR_VERSION = 1\nconst PLEROMAFE_SETTINGS_MINOR_VERSION = 0\n\nlibrary.add(\n faTimes,\n faWindowMinimize,\n faFileUpload,\n faFileDownload,\n faChevronDown\n)\n\nconst SettingsModal = {\n data () {\n return {\n dataImporter: newImporter({\n validator: this.importValidator,\n onImport: this.onImport,\n onImportFailure: this.onImportFailure\n }),\n dataThemeExporter: newExporter({\n filename: 'pleromafe_settings.full',\n getExportedObject: () => this.generateExport(true)\n }),\n dataExporter: newExporter({\n filename: 'pleromafe_settings',\n getExportedObject: () => this.generateExport()\n })\n }\n },\n components: {\n Modal,\n Popover,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loading: PanelLoading,\n error: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n },\n importValidator (data) {\n if (!Array.isArray(data._pleroma_settings_version)) {\n return {\n messageKey: 'settings.file_import_export.invalid_file'\n }\n }\n\n const [major, minor] = data._pleroma_settings_version\n\n if (major > PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_new',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (major < PLEROMAFE_SETTINGS_MAJOR_VERSION) {\n return {\n messageKey: 'settings.file_export_import.errors.file_too_old',\n messageArgs: {\n fileMajor: major,\n feMajor: PLEROMAFE_SETTINGS_MAJOR_VERSION\n }\n }\n }\n\n if (minor > PLEROMAFE_SETTINGS_MINOR_VERSION) {\n this.$store.dispatch('pushGlobalNotice', {\n level: 'warning',\n messageKey: 'settings.file_export_import.errors.file_slightly_new'\n })\n }\n\n return true\n },\n onImportFailure (result) {\n if (result.error) {\n this.$store.dispatch('pushGlobalNotice', { messageKey: 'settings.invalid_settings_imported', level: 'error' })\n } else {\n this.$store.dispatch('pushGlobalNotice', { ...result.validationResult, level: 'error' })\n }\n },\n onImport (data) {\n if (data) { this.$store.dispatch('loadSettings', data) }\n },\n restore () {\n this.dataImporter.importData()\n },\n backup () {\n this.dataExporter.exportData()\n },\n backupWithTheme () {\n this.dataThemeExporter.exportData()\n },\n generateExport (theme = false) {\n const { config } = this.$store.state\n let sample = config\n if (!theme) {\n const ignoreList = new Set([\n 'customTheme',\n 'customThemeSource',\n 'colors'\n ])\n sample = Object.fromEntries(\n Object\n .entries(sample)\n .filter(([key]) => !ignoreList.has(key))\n )\n }\n const clone = cloneDeep(sample)\n clone._pleroma_settings_version = [\n PLEROMAFE_SETTINGS_MAJOR_VERSION,\n PLEROMAFE_SETTINGS_MINOR_VERSION\n ]\n return clone\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n }\n }\n}\n\nexport default SettingsModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./settings_modal.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./settings_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./settings_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-978574a4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"settings-modal\",class:{ peek: _vm.modalPeeked },attrs:{\"is-open\":_vm.modalActivated,\"no-background\":_vm.modalPeeked}},[_c('div',{staticClass:\"settings-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.settings'))+\"\\n \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.currentSaveStateNotice)?[(_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_err'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert transparent\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_ok'))+\"\\n \")]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.peek')},on:{\"click\":_vm.peekModal}},[_c('FAIcon',{attrs:{\"icon\":['far', 'window-minimize'],\"fixed-width\":\"\"}})],1),_vm._v(\" \"),_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.close')},on:{\"click\":_vm.closeModal}},[_c('FAIcon',{attrs:{\"icon\":\"times\",\"fixed-width\":\"\"}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.modalOpenedOnce)?_c('SettingsModalContent'):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer\"},[_c('Popover',{staticClass:\"export\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5, x: 5 },\"bound-to\":{ x: 'container' },\"remove-padding\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('button',{staticClass:\"btn button-default\",attrs:{\"title\":_vm.$t('general.close')}},[_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_restore\")))]),_vm._v(\" \"),_c('FAIcon',{attrs:{\"icon\":\"chevron-down\"}})],1)]},proxy:true},{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('div',{staticClass:\"dropdown-menu\"},[_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.backup($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-download\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_settings\")))])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.backupWithTheme($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-download\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.backup_settings_theme\")))])],1),_vm._v(\" \"),_c('button',{staticClass:\"button-default dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.restore($event)},close]}},[_c('FAIcon',{attrs:{\"icon\":\"file-upload\",\"fixed-width\":\"\"}}),_c('span',[_vm._v(_vm._s(_vm.$t(\"settings.file_export_import.restore_settings\")))])],1)])]}}])})],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchEventCoord = e => ([e.touches[0].screenX, e.touches[0].screenY])\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe\n}\n\nexport default GestureService\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faChevronLeft,\n faChevronRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faChevronLeft,\n faChevronRight\n)\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n Modal\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? fileTypeService.fileType(this.currentMedia.mimetype) : null\n }\n },\n created () {\n this.mediaSwipeGestureRight = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.goPrev,\n 50\n )\n this.mediaSwipeGestureLeft = GestureService.swipeGesture(\n GestureService.DIRECTION_LEFT,\n this.goNext,\n 50\n )\n },\n methods: {\n mediaTouchStart (e) {\n GestureService.beginSwipe(e, this.mediaSwipeGestureRight)\n GestureService.beginSwipe(e, this.mediaSwipeGestureLeft)\n },\n mediaTouchMove (e) {\n GestureService.updateSwipe(e, this.mediaSwipeGestureRight)\n GestureService.updateSwipe(e, this.mediaSwipeGestureLeft)\n },\n hide () {\n this.$store.dispatch('closeMediaViewer')\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n this.$store.dispatch('setCurrent', this.media[prevIndex])\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n this.$store.dispatch('setCurrent', this.media[nextIndex])\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n destroyed () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./media_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07b118f4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showing)?_c('Modal',{staticClass:\"media-modal-view\",on:{\"backdropClicked\":_vm.hide}},[(_vm.type === 'image')?_c('img',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description},on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.mediaTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.mediaTouchMove($event)},\"click\":_vm.hide}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'video')?_c('VideoAttachment',{staticClass:\"modal-image\",attrs:{\"attachment\":_vm.currentMedia,\"controls\":true}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--prev\",attrs:{\"title\":_vm.$t('media_modal.previous')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goPrev($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-left\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--next\",attrs:{\"title\":_vm.$t('media_modal.next')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goNext($event)}}},[_c('FAIcon',{staticClass:\"arrow-icon\",attrs:{\"icon\":\"chevron-right\"}})],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faSignInAlt,\n faSignOutAlt,\n faHome,\n faComments,\n faBell,\n faUserPlus,\n faBullhorn,\n faSearch,\n faTachometerAlt,\n faCog,\n faInfoCircle\n)\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n 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-41c96ad1\\\",\\\"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-1daff3b2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_reporting_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isOpen)?_c('Modal',{on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"user-reporting-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.title', [_vm.user.screen_name_ui]))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"user-reporting-panel-left\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.add_comment_description')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.comment),expression:\"comment\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.$t('user_reporting.additional_comments'),\"rows\":\"1\"},domProps:{\"value\":(_vm.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.comment=$event.target.value},_vm.resize]}})]),_vm._v(\" \"),(!_vm.user.is_local)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.forward_description')))]),_vm._v(\" \"),_c('Checkbox',{model:{value:(_vm.forward),callback:function ($$v) {_vm.forward=$$v},expression:\"forward\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.forward_to', [_vm.remoteInstance]))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn button-default\",attrs:{\"disabled\":_vm.processing},on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.generic_error'))+\"\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"user-reporting-panel-right\"},[_c('List',{attrs:{\"items\":_vm.statuses},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"status-fadein user-reporting-panel-sitem\"},[_c('Status',{attrs:{\"in-conversation\":false,\"focused\":false,\"statusoid\":item}}),_vm._v(\" \"),_c('Checkbox',{attrs:{\"checked\":_vm.isChecked(item.id)},on:{\"change\":function (checked) { return _vm.toggleStatus(checked, item.id); }}})],1)]}}],null,false,2514683306)})],1)])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6b8d3a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn && !_vm.resettingForm)?_c('Modal',{staticClass:\"post-form-modal-view\",attrs:{\"is-open\":_vm.modalActivated},on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"post-form-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.new_status'))+\"\\n \")]),_vm._v(\" \"),_c('PostStatusForm',_vm._b({staticClass:\"panel-body\",on:{\"posted\":_vm.closeModal}},'PostStatusForm',_vm.params,false))],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes\n)\n\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./global_notice_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./global_notice_list.js\"\nimport __vue_script__ from \"!!babel-loader!./global_notice_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-022f2108\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./global_notice_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"global-notice-list\"},_vm._l((_vm.notices),function(notice,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"alert global-notice\",class:( _obj = {}, _obj['global-' + notice.level] = true, _obj )},[_c('div',{staticClass:\"notice-message\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(notice.messageKey, notice.messageArgs))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"button-unstyled close-notice\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}},[_c('FAIcon',{staticClass:\"fa-scale-110 fa-old-padding\",attrs:{\"icon\":\"times\"}})],1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n\nexport const windowHeight = () =>\n window.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight\n","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport Notifications from './components/notifications/notifications.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications,\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ShoutPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n DesktopNav,\n SettingsModal,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline'\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n destroyed () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n userBackground () { return this.currentUser.background_image },\n instanceBackground () {\n return this.mergedConfig.hideInstanceWallpaper\n ? null\n : this.$store.state.instance.background\n },\n background () { return this.userBackground || this.instanceBackground },\n bgStyle () {\n if (this.background) {\n return {\n '--body-background-image': `url(${this.background})`\n }\n }\n },\n shout () { return this.$store.state.shout.channel.state === 'joined' },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n hideShoutbox () {\n return this.$store.getters.mergedConfig.hideShoutbox\n },\n isMobileLayout () { return this.$store.state.interface.mobileLayout },\n privateMode () { return this.$store.state.instance.private },\n sidebarAlign () {\n return {\n 'order': this.$store.getters.mergedConfig.sidebarRight ? 99 : 0\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n updateMobileState () {\n const mobileLayout = windowWidth() <= 800\n const layoutHeight = windowHeight()\n const changed = mobileLayout !== this.isMobileLayout\n if (changed) {\n this.$store.dispatch('setMobileLayout', mobileLayout)\n }\n this.$store.dispatch('setLayoutHeight', layoutHeight)\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./App.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./App.js\"\nimport __vue_script__ from \"!!babel-loader!./App.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0bd607a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.bgStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('DesktopNav'),_vm._v(\" \"),_c('div',{staticClass:\"app-bg-wrapper app-container-wrapper\"}),_vm._v(\" \"),_c('div',{staticClass:\"container underlay\",attrs:{\"id\":\"content\"}},[_c('div',{staticClass:\"sidebar-flexer mobile-hidden\",style:(_vm.sidebarAlign)},[_c('div',{staticClass:\"sidebar-bounds\"},[_c('div',{staticClass:\"sidebar-scroller\"},[_c('div',{staticClass:\"sidebar\"},[_c('user-panel'),_vm._v(\" \"),(!_vm.isMobileLayout)?_c('div',[_c('nav-panel'),_vm._v(\" \"),(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),(!_vm.currentUser && _vm.showFeaturesPanel)?_c('features-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('who-to-follow-panel'):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('notifications'):_vm._e()],1):_vm._e()],1)])])]),_vm._v(\" \"),_c('div',{staticClass:\"main\"},[(!_vm.currentUser)?_c('div',{staticClass:\"login-hint panel panel-default\"},[_c('router-link',{staticClass:\"panel-body\",attrs:{\"to\":{ name: 'login' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"login.hint\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('router-view')],1),_vm._v(\" \"),_c('media-modal')],1),_vm._v(\" \"),(_vm.currentUser && _vm.shout && !_vm.hideShoutbox)?_c('shout-panel',{staticClass:\"floating-shout mobile-hidden\",attrs:{\"floating\":true}}):_vm._e(),_vm._v(\" \"),_c('MobilePostStatusButton'),_vm._v(\" \"),_c('UserReportingModal'),_vm._v(\" \"),_c('PostStatusModal'),_vm._v(\" \"),_c('SettingsModal'),_vm._v(\" \"),_c('portal-target',{attrs:{\"name\":\"modal\"}}),_vm._v(\" \"),_c('GlobalNoticeList')],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport routes from './routes'\nimport App from '../App.vue'\nimport { windowWidth } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n const rawData = atob(data)\n const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n const text = new TextDecoder().decode(array)\n return text\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const decoded = decodeUTF8Base64(data[request])\n const requestData = JSON.parse(decoded)\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n copyInstanceOption('logoLeft')\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n const width = windowWidth()\n store.dispatch('setMobileLayout', width <= 800)\n\n FaviconService.initFaviconService()\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = new VueRouter({\n mode: 'history',\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { x: 0, y: 0 }\n }\n })\n\n /* eslint-disable no-new */\n return new Vue({\n router,\n store,\n i18n,\n el: '#app',\n render: h => h(App)\n })\n}\n\nexport default afterStoreSetup\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Vuex from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport chatsModule from './modules/chats.js'\n\nimport VueI18n from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport VueClickOutside from 'v-click-outside'\nimport PortalVue from 'portal-vue'\nimport VBodyScrollLock from './directives/body_scroll_lock'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nVue.use(Vuex)\nVue.use(VueRouter)\nVue.use(VueI18n)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\n\nVue.component('FAIcon', FontAwesomeIcon)\nVue.component('FALayers', FontAwesomeLayers)\n\nconst i18n = new VueI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = new Vuex.Store({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n statuses: statusesModule,\n users: usersModule,\n api: apiModule,\n config: configModule,\n shout: shoutModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule,\n chats: chatsModule\n },\n plugins,\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\n if (storageError) {\n store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n }\n afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n"],"sourceRoot":""} \ No newline at end of file