pleroma/priv/static/static/js/app.53001fa190f37cf2743e.js...

1 line
1.3 MiB
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/services/color_convert/color_convert.js","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/notification_utils/notification_utils.js","webpack:///./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack:///./src/services/file_type/file_type.service.js","webpack:///./src/components/dialog_modal/dialog_modal.js","webpack:///./src/components/dialog_modal/dialog_modal.vue","webpack:///./src/components/dialog_modal/dialog_modal.vue?5301","webpack:///./src/components/moderation_tools/moderation_tools.js","webpack:///./src/components/moderation_tools/moderation_tools.vue","webpack:///./src/components/moderation_tools/moderation_tools.vue?ab91","webpack:///./src/components/account_actions/account_actions.js","webpack:///./src/components/account_actions/account_actions.vue","webpack:///./src/components/account_actions/account_actions.vue?fce5","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?b45d","webpack:///./src/components/user_avatar/user_avatar.js","webpack:///./src/components/user_avatar/user_avatar.vue","webpack:///./src/components/user_avatar/user_avatar.vue?7f9b","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/components/favorite_button/favorite_button.js","webpack:///./src/components/favorite_button/favorite_button.vue","webpack:///./src/components/favorite_button/favorite_button.vue?d75b","webpack:///./src/components/react_button/react_button.js","webpack:///./src/components/react_button/react_button.vue","webpack:///./src/components/react_button/react_button.vue?875f","webpack:///./src/components/retweet_button/retweet_button.js","webpack:///./src/components/retweet_button/retweet_button.vue","webpack:///./src/components/retweet_button/retweet_button.vue?98e9","webpack:///./src/components/extra_buttons/extra_buttons.js","webpack:///./src/components/extra_buttons/extra_buttons.vue","webpack:///./src/components/extra_buttons/extra_buttons.vue?566f","webpack:///./src/components/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/status_popover/status_popover.js","webpack:///./src/components/status_popover/status_popover.vue","webpack:///./src/components/status_popover/status_popover.vue?1d9f","webpack:///./src/components/emoji_reactions/emoji_reactions.js","webpack:///./src/components/emoji_reactions/emoji_reactions.vue","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?c07b","webpack:///./src/components/status/status.js","webpack:///./src/components/status/status.vue","webpack:///./src/components/status/status.vue?0336","webpack:///./src/components/popover/popover.js","webpack:///./src/components/popover/popover.vue","webpack:///./src/components/popover/popover.vue?46e2","webpack:///./src/services/date_utils/date_utils.js","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?d842","webpack:///./src/components/basic_user_card/basic_user_card.js","webpack:///./src/components/basic_user_card/basic_user_card.vue","webpack:///./src/components/basic_user_card/basic_user_card.vue?78e9","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?ccd6","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7538","webpack:///./src/components/link-preview/link-preview.js","webpack:///./src/components/link-preview/link-preview.vue","webpack:///./src/components/link-preview/link-preview.vue?7d0d","webpack:///./src/components/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?fd69","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/media_upload/media_upload.vue?0a6d","webpack:///./src/components/poll/poll_form.js","webpack:///./src/components/poll/poll_form.vue","webpack:///./src/components/poll/poll_form.vue?41d8","webpack:///./src/components/post_status_form/post_status_form.js","webpack:///./src/components/post_status_form/post_status_form.vue","webpack:///./src/components/post_status_form/post_status_form.vue?d029","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.vue?3659","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?d70d","webpack:///./src/components/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?a634","webpack:///./src/i18n/messages.js","webpack:///src/components/list/list.vue","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?c7b8","webpack:///src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?6be4","webpack:///./src/modules/config.js","webpack:///./src/services/status_parser/status_parser.js","webpack:///./src/services/offset_finder/offset_finder.service.js","webpack:///./src/services/follow_manipulate/follow_manipulate.js","webpack:///./src/components/follow_button/follow_button.js","webpack:///./src/components/follow_button/follow_button.vue","webpack:///./src/components/follow_button/follow_button.vue?8c95","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?ba43","webpack:///./src/components/remote_follow/remote_follow.js","webpack:///./src/components/remote_follow/remote_follow.vue","webpack:///./src/components/remote_follow/remote_follow.vue?deba","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/services/component_utils/component_utils.js","webpack:///./src/services/completion/completion.js","webpack:///./src/components/emoji_picker/emoji_picker.js","webpack:///./src/components/emoji_picker/emoji_picker.vue","webpack:///./src/components/emoji_picker/emoji_picker.vue?3a64","webpack:///./src/components/emoji_input/emoji_input.js","webpack:///./src/components/emoji_input/emoji_input.vue","webpack:///./src/components/emoji_input/emoji_input.vue?5e8c","webpack:///./src/components/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?4ef5","webpack:///./src/assets/nsfw.png","webpack:///./src/components/timeline/timeline.vue?f674","webpack:///./src/components/timeline/timeline.vue?d6bb","webpack:///./src/components/status/status.vue?fa33","webpack:///./src/components/status/status.vue?733b","webpack:///./src/components/favorite_button/favorite_button.vue?0184","webpack:///./src/components/favorite_button/favorite_button.vue?9b9b","webpack:///./src/components/react_button/react_button.vue?f6fc","webpack:///./src/components/react_button/react_button.vue?5317","webpack:///./src/components/popover/popover.vue?1bf1","webpack:///./src/components/popover/popover.vue?333e","webpack:///./src/components/retweet_button/retweet_button.vue?8eee","webpack:///./src/components/retweet_button/retweet_button.vue?ecd9","webpack:///./src/components/extra_buttons/extra_buttons.vue?2134","webpack:///./src/components/extra_buttons/extra_buttons.vue?bef5","webpack:///./src/components/post_status_form/post_status_form.vue?fd6e","webpack:///./src/components/post_status_form/post_status_form.vue?5887","webpack:///./src/components/media_upload/media_upload.vue?d613","webpack:///./src/components/media_upload/media_upload.vue?1e11","webpack:///./src/components/scope_selector/scope_selector.vue?baf6","webpack:///./src/components/scope_selector/scope_selector.vue?341e","webpack:///./src/components/emoji_input/emoji_input.vue?88c6","webpack:///./src/components/emoji_input/emoji_input.vue?c0d0","webpack:///./src/components/emoji_picker/emoji_picker.scss?a54d","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?3599","webpack:///./src/components/checkbox/checkbox.vue?bf55","webpack:///./src/components/poll/poll_form.vue?43b8","webpack:///./src/components/poll/poll_form.vue?f333","webpack:///./src/components/attachment/attachment.vue?4fa7","webpack:///./src/components/attachment/attachment.vue?5971","webpack:///./src/components/still-image/still-image.vue?21db","webpack:///./src/components/still-image/still-image.vue?da13","webpack:///./src/components/status_content/status_content.vue?2f26","webpack:///./src/components/status_content/status_content.vue?6841","webpack:///./src/components/poll/poll.vue?7318","webpack:///./src/components/poll/poll.vue?192f","webpack:///./src/components/gallery/gallery.vue?ea2c","webpack:///./src/components/gallery/gallery.vue?759e","webpack:///./src/components/link-preview/link-preview.vue?95df","webpack:///./src/components/link-preview/link-preview.vue?40b7","webpack:///./src/components/user_card/user_card.vue?1920","webpack:///./src/components/user_card/user_card.vue?a3c0","webpack:///./src/components/user_avatar/user_avatar.vue?aac8","webpack:///./src/components/user_avatar/user_avatar.vue?6951","webpack:///./src/components/remote_follow/remote_follow.vue?44cd","webpack:///./src/components/remote_follow/remote_follow.vue?2689","webpack:///./src/components/moderation_tools/moderation_tools.vue?3b42","webpack:///./src/components/moderation_tools/moderation_tools.vue?870b","webpack:///./src/components/dialog_modal/dialog_modal.vue?66ca","webpack:///./src/components/dialog_modal/dialog_modal.vue?e653","webpack:///./src/components/account_actions/account_actions.vue?755f","webpack:///./src/components/account_actions/account_actions.vue?1dab","webpack:///./src/components/avatar_list/avatar_list.vue?83d0","webpack:///./src/components/avatar_list/avatar_list.vue?4546","webpack:///./src/components/status_popover/status_popover.vue?91c2","webpack:///./src/components/status_popover/status_popover.vue?2f11","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?bab1","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?6021","webpack:///./src/components/conversation/conversation.vue?e1e5","webpack:///./src/components/conversation/conversation.vue?e01a","webpack:///./src/components/notifications/notifications.scss?c04f","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/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/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/search/search.vue?9825","webpack:///./src/components/search/search.vue?e198","webpack:///./src/components/registration/registration.vue?d518","webpack:///./src/components/registration/registration.vue?fd73","webpack:///./src/components/password_reset/password_reset.vue?d048","webpack:///./src/components/password_reset/password_reset.vue?5ec5","webpack:///./src/components/follow_request_card/follow_request_card.vue?c9e7","webpack:///./src/components/follow_request_card/follow_request_card.vue?b0bb","webpack:///./src/components/login_form/login_form.vue?99e8","webpack:///./src/components/login_form/login_form.vue?9c6d","webpack:///./src/components/chat_panel/chat_panel.vue?9dd9","webpack:///./src/components/chat_panel/chat_panel.vue?d094","webpack:///./src/components/who_to_follow/who_to_follow.vue?6f47","webpack:///./src/components/who_to_follow/who_to_follow.vue?4eb6","webpack:///./src/components/about/about.vue?47a2","webpack:///./src/components/about/about.vue?7cdd","webpack:///./src/components/features_panel/features_panel.vue?b8ab","webpack:///./src/components/features_panel/features_panel.vue?867d","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7e97","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?7643","webpack:///./src/components/staff_panel/staff_panel.vue?020d","webpack:///./src/components/staff_panel/staff_panel.vue?a8d5","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?eece","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?6ed6","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?7d1a","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?f8d3","webpack:///./src/App.scss?b70d","webpack:///./src/App.scss","webpack:///./src/components/user_panel/user_panel.vue?e12b","webpack:///./src/components/user_panel/user_panel.vue?63b4","webpack:///./src/components/nav_panel/nav_panel.vue?7be9","webpack:///./src/components/nav_panel/nav_panel.vue?be5f","webpack:///./src/components/search_bar/search_bar.vue?269b","webpack:///./src/components/search_bar/search_bar.vue?0fb3","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?2f6b","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?1274","webpack:///./src/components/settings_modal/settings_modal.scss?e42a","webpack:///./src/components/settings_modal/settings_modal.scss","webpack:///./src/components/modal/modal.vue?a37f","webpack:///./src/components/modal/modal.vue?328d","webpack:///./src/components/panel_loading/panel_loading.vue?b42a","webpack:///./src/components/panel_loading/panel_loading.vue?0d54","webpack:///./src/components/async_component_error/async_component_error.vue?82c7","webpack:///./src/components/async_component_error/async_component_error.vue?e57d","webpack:///./src/components/media_modal/media_modal.vue?2930","webpack:///./src/components/media_modal/media_modal.vue?1d79","webpack:///./src/components/side_drawer/side_drawer.vue?472d","webpack:///./src/components/side_drawer/side_drawer.vue?fcf9","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?1868","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?7cf2","webpack:///./src/components/mobile_nav/mobile_nav.vue?46cb","webpack:///./src/components/mobile_nav/mobile_nav.vue?9a0e","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?7889","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?1af4","webpack:///./src/components/post_status_modal/post_status_modal.vue?892e","webpack:///./src/components/post_status_modal/post_status_modal.vue?b34c","webpack:///./src/components/global_notice_list/global_notice_list.vue?353b","webpack:///./src/components/global_notice_list/global_notice_list.vue?3d13","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/modules/instance.js","webpack:///./src/modules/statuses.js","webpack:///./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack:///./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack:///./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack:///./src/services/backend_interactor_service/backend_interactor_service.js","webpack:///./src/services/new_api/oauth.js","webpack:///./src/services/push/push.js","webpack:///./src/modules/users.js","webpack:///./src/modules/api.js","webpack:///./src/modules/chat.js","webpack:///./src/modules/oauth.js","webpack:///./src/modules/auth_flow.js","webpack:///./src/modules/media_viewer.js","webpack:///./src/modules/oauth_tokens.js","webpack:///./src/modules/reports.js","webpack:///./src/modules/polls.js","webpack:///./src/modules/postStatus.js","webpack:///./src/lib/persisted_state.js","webpack:///./src/lib/push_notifications_plugin.js","webpack:///./src/directives/body_scroll_lock.js","webpack:///./src/components/conversation/conversation.js","webpack:///./src/components/conversation/conversation.vue","webpack:///./src/components/conversation/conversation.vue?84c4","webpack:///./src/components/timeline/timeline.js","webpack:///./src/components/timeline/timeline.vue","webpack:///./src/components/timeline/timeline.vue?3685","webpack:///./src/components/public_timeline/public_timeline.js","webpack:///./src/components/public_timeline/public_timeline.vue","webpack:///./src/components/public_timeline/public_timeline.vue?bba0","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack:///./src/components/public_and_external_timeline/public_and_external_timeline.vue?0d56","webpack:///./src/components/friends_timeline/friends_timeline.js","webpack:///./src/components/friends_timeline/friends_timeline.vue","webpack:///./src/components/friends_timeline/friends_timeline.vue?0810","webpack:///./src/components/tag_timeline/tag_timeline.js","webpack:///./src/components/tag_timeline/tag_timeline.vue","webpack:///./src/components/tag_timeline/tag_timeline.vue?ee38","webpack:///./src/components/bookmark_timeline/bookmark_timeline.js","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue","webpack:///./src/components/bookmark_timeline/bookmark_timeline.vue?9b5f","webpack:///./src/components/conversation-page/conversation-page.js","webpack:///./src/components/conversation-page/conversation-page.vue","webpack:///./src/components/conversation-page/conversation-page.vue?d63c","webpack:///./src/components/notification/notification.js","webpack:///./src/components/notification/notification.vue","webpack:///./src/components/notification/notification.vue?1bfa","webpack:///./src/components/notifications/notifications.js","webpack:///./src/components/notifications/notifications.vue","webpack:///./src/components/notifications/notifications.vue?a489","webpack:///./src/components/interactions/interactions.js","webpack:///./src/components/interactions/interactions.vue","webpack:///./src/components/interactions/interactions.vue?db62","webpack:///./src/components/dm_timeline/dm_timeline.js","webpack:///./src/components/dm_timeline/dm_timeline.vue","webpack:///./src/components/dm_timeline/dm_timeline.vue?4177","webpack:///./src/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.vue?ac60","webpack:///./src/hocs/with_load_more/with_load_more.js","webpack:///./src/components/user_profile/user_profile.js","webpack:///./src/components/user_profile/user_profile.vue","webpack:///./src/components/user_profile/user_profile.vue?063f","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?ec9a","webpack:///./src/components/registration/registration.js","webpack:///./src/components/registration/registration.vue","webpack:///./src/components/registration/registration.vue?3c1d","webpack:///./src/services/new_api/password_reset.js","webpack:///./src/components/password_reset/password_reset.js","webpack:///./src/components/password_reset/password_reset.vue","webpack:///./src/components/password_reset/password_reset.vue?4c1d","webpack:///./src/components/follow_request_card/follow_request_card.js","webpack:///./src/components/follow_request_card/follow_request_card.vue","webpack:///./src/components/follow_requests/follow_requests.js","webpack:///./src/components/follow_request_card/follow_request_card.vue?e2ae","webpack:///./src/components/follow_requests/follow_requests.vue","webpack:///./src/components/follow_requests/follow_requests.vue?6944","webpack:///./src/components/oauth_callback/oauth_callback.js","webpack:///./src/components/oauth_callback/oauth_callback.vue","webpack:///./src/components/oauth_callback/oauth_callback.vue?99e7","webpack:///./src/components/login_form/login_form.js","webpack:///./src/components/login_form/login_form.vue","webpack:///./src/components/login_form/login_form.vue?ec94","webpack:///./src/services/new_api/mfa.js","webpack:///./src/components/mfa_form/recovery_form.js","webpack:///./src/components/mfa_form/recovery_form.vue","webpack:///./src/components/mfa_form/recovery_form.vue?9df7","webpack:///./src/components/mfa_form/totp_form.js","webpack:///./src/components/mfa_form/totp_form.vue","webpack:///./src/components/mfa_form/totp_form.vue?2e19","webpack:///./src/components/auth_form/auth_form.js","webpack:///./src/components/chat_panel/chat_panel.js","webpack:///./src/components/chat_panel/chat_panel.vue","webpack:///./src/components/chat_panel/chat_panel.vue?3953","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?33c8","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?25e4","webpack:///./src/components/staff_panel/staff_panel.js","webpack:///./src/components/staff_panel/staff_panel.vue","webpack:///./src/components/staff_panel/staff_panel.vue?0ab8","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack:///./src/components/about/about.js","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?8c91","webpack:///./src/components/about/about.vue","webpack:///./src/components/about/about.vue?7acf","webpack:///./src/components/remote_user_resolver/remote_user_resolver.js","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?5c98","webpack:///./src/boot/routes.js","webpack:///./src/components/user_panel/user_panel.js","webpack:///./src/components/user_panel/user_panel.vue","webpack:///./src/components/user_panel/user_panel.vue?b455","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/nav_panel/nav_panel.vue?9880","webpack:///./src/components/search_bar/search_bar.js","webpack:///./src/components/search_bar/search_bar.vue","webpack:///./src/components/search_bar/search_bar.vue?fd14","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?3d0c","webpack:///src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue","webpack:///./src/components/modal/modal.vue?8f96","webpack:///./src/components/panel_loading/panel_loading.vue","webpack:///./src/components/async_component_error/async_component_error.vue","webpack:///./src/services/resettable_async_component.js","webpack:///./src/components/settings_modal/settings_modal.js","webpack:///./src/components/panel_loading/panel_loading.vue?d82c","webpack:///src/components/async_component_error/async_component_error.vue","webpack:///./src/components/async_component_error/async_component_error.vue?b33c","webpack:///./src/components/settings_modal/settings_modal.vue","webpack:///./src/components/settings_modal/settings_modal.vue?9c49","webpack:///./src/services/gesture_service/gesture_service.js","webpack:///./src/components/media_modal/media_modal.js","webpack:///./src/components/media_modal/media_modal.vue","webpack:///./src/components/media_modal/media_modal.vue?360f","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?9da3","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?c48d","webpack:///./src/components/mobile_nav/mobile_nav.js","webpack:///./src/components/mobile_nav/mobile_nav.vue","webpack:///./src/components/mobile_nav/mobile_nav.vue?4e77","webpack:///./src/components/user_reporting_modal/user_reporting_modal.js","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?5d77","webpack:///./src/components/post_status_modal/post_status_modal.js","webpack:///./src/components/post_status_modal/post_status_modal.vue","webpack:///./src/components/post_status_modal/post_status_modal.vue?e267","webpack:///./src/components/global_notice_list/global_notice_list.js","webpack:///./src/components/global_notice_list/global_notice_list.vue","webpack:///./src/components/global_notice_list/global_notice_list.vue?2baf","webpack:///./src/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?f37c","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","0","exports","module","l","e","promises","2","3","Promise","resolve","reject","href","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","undefined","setTimeout","head","all","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","rgb2hex","g","b","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_2___default","_r","_map","map","val","Math","ceil","_map2","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default","concat","toString","srgbToLinear","srgb","split","reduce","acc","bit","pow","c2linear","relativeLuminance","_srgbToLinear","getContrastRatio","a","la","lb","_ref","_ref2","getContrastRatioLayers","text","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","_ref3","_ref4","color","opacity","hex2rgb","hex","exec","parseInt","mixrgb","k","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","_objectSpread","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","field","fields_text","unescape","replace","profile_image_url","avatar","profile_image_url_original","cover_photo","header","friends_count","following_count","bot","pleroma","relationship","background_image","token","chat_token","allow_following_move","hide_follows","hide_followers","hide_follows_count","hide_followers_count","rights","moderator","is_moderator","admin","is_admin","role","source","default_scope","privacy","no_rich_text","show_role","discoverable","is_local","includes","delete_others_notice","muting","muted","blocking","statusnet_blocking","followed_by","follows_you","following","created_at","Date","locked","followers_count","statuses_count","friendIds","followerIds","pinnedStatusIds","follow_request_count","tags","deactivated","notification_settings","parseAttachment","mimetype","mime_type","meta","string","matchOperatorsRegex","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","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","favourite","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","StatusCodeError","statusCode","body","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","_Error","_this","errors","classCallCheck_default","possibleConstructorReturn_default","getPrototypeOf_default","assertThisInitialized_default","parse","typeof_default","errorContents","ap_id","username","entries","errs","slicedToArray_default","capitalize_default","join","toConsumableArray_default","inherits_default","wrapNativeSuper_default","PERMISSION_GROUP_URL","screenName","right","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_USER_TIMELINE_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","oldfetch","fetch","fullUrl","credentials","promisedRequest","method","params","payload","_ref$headers","headers","api_service_objectSpread","Accept","Content-Type","encodeURIComponent","authHeaders","json","ok","accessToken","Authorization","fetchFriends","_ref22","maxId","sinceId","_ref22$limit","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","_ref83","stream","_ref83$args","access_token","_ref84","_ref85","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","ProcessedWS","_ref86","_ref86$preprocessor","preprocessor","handleMastoWS","_ref86$id","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","arguments","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","parsedEvent","has","warn","notification","apiService","verifyCredentials","fetchTimeline","_ref36","timeline","_ref36$since","since","_ref36$until","until","_ref36$userId","userId","_ref36$tag","_ref36$withMuted","withMuted","_ref36$replyVisibilit","replyVisibility","isNotifications","public","friends","dms","notifications","publicAndExternal","media","favorites","bookmarks","queryString","map_default","param","statusText","pagination","linkHeader","flakeId","parsedLinkHeader","parseLinkHeader","next","max_id","minId","prev","min_id","parseLinkHeaderPagination","fetchPinnedStatuses","_ref37","fetchConversation","_ref26","urlContext","MASTODON_STATUS_CONTEXT_URL","_ref27","ancestors","descendants","fetchStatus","_ref28","MASTODON_STATUS_URL","exportFriends","_ref23","more","users","regenerator_default","async","_context","last_default","awrap","sent","concat_default","t0","stop","fetchFollowers","_ref24","_ref24$limit","MASTODON_FOLLOWERS_URL","followUser","_ref10","objectWithoutProperties_default","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","_ref11","MASTODON_UNFOLLOW_URL","pinOwnStatus","_ref12","unpinOwnStatus","_ref13","muteConversation","_ref14","unmuteConversation","_ref15","blockUser","_ref16","MASTODON_BLOCK_USER_URL","unblockUser","_ref17","MASTODON_UNBLOCK_USER_URL","fetchUser","_ref20","fetchUserRelationship","_ref21","favorite","_ref38","unfavorite","_ref39","retweet","_ref40","unretweet","_ref41","bookmarkStatus","_ref42","unbookmarkStatus","_ref43","postStatus","_ref44","spoilerText","_ref44$mediaIds","mediaIds","inReplyToStatusId","contentType","preview","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","deleteStatus","_ref45","MASTODON_DELETE_URL","uploadMedia","_ref46","formData","setMediaDescription","_ref47","fetchMutes","_ref58","muteUser","_ref59","unmuteUser","_ref60","subscribeUser","_ref61","unsubscribeUser","_ref62","fetchBlocks","_ref63","fetchOAuthTokens","_ref64","revokeOAuthToken","_ref65","tagUser","_ref29","nicknames","untagUser","_ref30","deleteUser","_ref35","addRight","_ref31","deleteRight","_ref32","activateUser","_ref33","nickname","get_default","deactivateUser","_ref34","register","_ref9","rest","locale","agreement","getCaptcha","resp","updateAvatar","_ref5","updateBg","_ref6","background","updateProfile","_ref8","updateBanner","_ref7","banner","importBlocks","_ref48","file","importFollows","_ref49","deleteAccount","_ref50","password","changeEmail","_ref51","email","changePassword","_ref52","newPassword","newPasswordConfirmation","settingsMFA","_ref53","mfaDisableOTP","_ref54","generateMfaBackupCodes","_ref57","mfaSetupOTP","_ref56","mfaConfirmOTP","_ref55","fetchFollowRequests","_ref25","approveUser","_ref18","MASTODON_APPROVE_USER_URL","denyUser","_ref19","MASTODON_DENY_USER_URL","suggestions","_ref66","markNotificationsAsSeen","_ref67","_ref67$single","single","dismissNotification","_ref82","vote","_ref68","pollId","choices","fetchPoll","_ref69","fetchFavoritedByUsers","_ref70","fetchRebloggedByUsers","_ref71","fetchEmojiReactions","_ref72","reactions","accounts","reactWithEmoji","_ref73","unreactWithEmoji","_ref74","reportUser","_ref75","statusIds","comment","forward","account_id","status_ids","updateNotificationSettings","settings","each_default","search2","_ref77","q","offset","u","statuses","searchUsers","_ref76","query","fetchKnownDomains","_ref78","fetchDomainMutes","_ref79","muteDomain","_ref80","domain","unmuteDomain","_ref81","notificationsFromStore","store","state","statusNotifications","lodash_includes__WEBPACK_IMPORTED_MODULE_0___default","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","filteredNotificationsFromStore","types","sortedNotifications","sort","lodash_sortBy__WEBPACK_IMPORTED_MODULE_1___default","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","visibleTypes","unseenNotificationsFromStore","lodash_filter__WEBPACK_IMPORTED_MODULE_2___default","prepareNotificationObject","i18n","i18nString","notifObj","icon","image","isExternal","generateProfileLink","restrictedNicknames","complicated","fileType","fileTypeService","fileMatchesSomeType","DialogModal","props","darkOverlay","default","onCancel","Function","__vue_styles__","context","dialog_modal_dialog_modal","component_normalizer","dialog_modal","_vm","_h","$createElement","_c","_self","class","dark-overlay","on","click","$event","currentTarget","stopPropagation","staticClass","_t","_v","ModerationTools","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","toggled","components","Popover","computed","tagsSet","hasTagPolicy","$store","instance","tagPolicyAvailable","methods","hasTag","tagName","toggleTag","api","backendInteractor","commit","toggleRight","_this2","toggleActivationStatus","dispatch","deleteUserDialog","show","_this3","isProfile","$route","isTargetUser","history","back","setToggled","moderation_tools_vue_styles_","moderation_tools_moderation_tools","moderation_tools","attrs","trigger","placement","y","slot","_s","$t","_e","menu-checkbox-checked","to","on-cancel","AccountActions","ProgressButton","showRepeats","hideRepeats","account_actions_vue_styles_","account_actions_account_actions","account_actions","bound-to","x","showing_reblogs","user_card","followRequestInProgress","betterShadow","browserSupport","cssFilter","created","getters","findUser","classes","user-card-rounded-t","rounded","user-card-rounded","user-card-bordered","bordered","style","backgroundImage","isOtherUser","currentUser","subscribeUrl","serverUrl","URL","protocol","host","loggedIn","dailyAvg","days","round","userHighlightType","mergedConfig","highlight","set","mapGetters","userHighlightColor","visibleRole","validRole","roleTitle","hideFollowsCount","hideFollowersCount","UserAvatar","RemoteFollow","FollowButton","setProfileView","v","switcher","linkClicked","open","userProfileLink","zoomAvatar","attachment","mentionUser","replyTo","repliedUser","user_card_vue_styles_","user_card_Component","hide-bio","hideBio","better-shadow","_m","domProps","innerHTML","hideUserStats","directives","rawName","expression","composing","for","change","$$selectedVal","Array","selected","_value","subscribing","preventDefault","__webpack_exports__","showPlaceholder","StillImage","imgSrc","imageLoadError","watch","Component","user_avatar","avatar-compact","compact","alt","image-load-error","LAYERS","DEFAULT_OPACITY","SLOT_INHERITANCE","chromatism__WEBPACK_IMPORTED_MODULE_0__","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_1__","undelay","topBar","badge","profileTint","panel","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","faint","underlay","alertPopup","depends","priority","layer","link","accent","faintLink","postFaintLink","cBlue","cRed","cGreen","cOrange","profileBg","mod","brightness","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","border","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tab","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","applyTheme","rules","generatePreset","classList","add","styleEl","styleSheet","sheet","insertRule","radii","colors","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","generateColors","themeData","sourceColors","themeEngineVersion","colors2to3","_getColors","getColors","htmlColors","_babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_3___default","solid","complete","theme","generateRadii","inputRadii","btnRadius","endsWith","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","top","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","convert","newShadow","shadowAcc","def","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default","computeDynamicColor","variableSlot","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_2___default","composePreset","getThemes","cache","themes","_babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default","statePositionAcc","position","getOpacitySlot","substring","getPreset","isV1","isArray","setPreset","FavoriteButton","animated","icon-star-empty","icon-star","animate-spin","favorite_button_favorite_button","favorite_button","hidePostStats","ReactButton","filterWord","addReaction","existingReaction","find","me","react_button_objectSpread","commonEmojis","displayText","react_button_vue_styles_","react_button_react_button","react_button","scopedSlots","_u","fn","ref","placeholder","_l","replacement","RetweetButton","retweet_button_objectSpread","retweeted","retweeted-empty","retweet_button_vue_styles_","retweet_button_retweet_button","retweet_button","ExtraButtons","confirm","pinStatus","$emit","unpinStatus","_this4","copyLink","_this5","navigator","clipboard","writeText","statusLink","_this6","_this7","canDelete","ownStatus","canPin","canMute","server","$router","extra_buttons_vue_styles_","extra_buttons_extra_buttons","extra_buttons","AvatarList","slicedUsers","avatar_list_vue_styles_","avatar_list_avatar_list","avatar_list","StatusPopover","find_default","allStatuses","statusId","Status","enter","status_popover_vue_styles_","status_popover_status_popover","status_popover","popover-class","is-preview","statusoid","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","emoji_reactions_vue_styles_","emoji_reactions_emoji_reactions","picked-reaction","not-clickable","mouseenter","count","replying","unmuted","userExpanded","status_objectSpread","muteWords","showReasonMutedThread","inConversation","repeaterClass","highlightClass","userClass","deleted","repeaterStyle","highlightStyle","userStyle","noHeading","generateUserProfileLink","replyProfileLink","isReply","replyToName","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","muteWordHits","relationshipReblog","reasonsToMute","excusesNotToMute","inProfile","profileUserId","hideFilteredStatuses","hideStatus","isFocused","focused","replySubject","decodedSummary","unescape_default","behavior","subjectLineBehavior","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","uniqBy_default","tagObj","mapState","PostStatusForm","UserCard","Timeago","StatusContent","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","rect","$el","getBoundingClientRect","scrollBy","height","innerHeight","bottom","status.repeat_num","num","status.fave_num","filters","capitalize","str","charAt","toUpperCase","status_vue_styles_","status_Component","status_status","status-el_focused","status-conversation","inlineExpanded","isPreview","highlighted","is-retweet","data-tags","nativeOn","!click","user-id","time","auto-update","_f","expandable","staticStyle","min-width","status-id","aria-label","strikethrough","replies","reply","no-heading","emojiReactionsOnTimeline","button-icon-active","logged-in","onError","onSuccess","reply-to","replied-user","copy-message-scope","subject","posted","boundTo","boundToSelector","margin","popoverClass","hidden","styles","oldSize","width","containerBoundingClientRect","closest","offsetParent","updateStyles","anchorEl","$refs","children","screenBox","origin","left","parentBounds","xBounds","min","max","innerWidth","yBounds","horizOffset","offsetWidth","usingTop","offsetHeight","yOffset","translateY","xOffset","translateX","transform","showPopover","$nextTick","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","destroyed","removeEventListener","mouseleave","MINUTE","HOUR","DAY","relativeTime","relativeTimeShort","WEEK","MONTH","YEAR","date","nowThreshold","now","abs","CURRENT_VERSION","getLayersArray","array","parent","unshift","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_3___default","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","pop","depsA","depsB","topoSort","aV","bV","_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","_sourceColor$split$ma","trim","_sourceColor$split$ma2","variable","modifier","parseFloat","sourceOpacity","deps","isTextColor","backgroundColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","_color_convert_color_convert_js__WEBPACK_IMPORTED_MODULE_0__","prefs","solidColor","tintColor","tintColor2","backgroundPosition","model","prop","disabled","indeterminate","checked","$slots","BasicUserCard","basic_user_card","statusPosterService","_ref$media","_ref$inReplyToStatusI","_ref$contentType","_ref$preview","lodash_map__WEBPACK_IMPORTED_MODULE_0___default","showImmediately","noIdUpdate","loading","polls","pollsObject","basePoll","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","index","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","allElements","querySelectorAll","clickedElement","querySelector","forEach_default","element","optionId","poll_poll","path","now-threshold","Gallery","sizes","Attachment","rows","chunk_default","lastAttachment","allButLastRow","dropRight_default","useContainFit","onNaturalSizeLoad","size","$set","rowStyle","itemsPerRow","padding-bottom","itemStyle","row","total","sumBy_default","item","getAspectRatio","flex","gallery_vue_styles_","gallery_gallery","gallery","contain-fit","cover-fit","set-media","setMedia","allow-play","natural-size-load","LinkPreview","imageLoaded","useImage","useDescription","test","newImg","Image","link_preview_vue_styles_","link_preview_link_preview","link_preview","small-image","provider_name","showingTall","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","handleBr","handleOpen","handleClose","char","tagFull","processHtml","Poll","className","attn","attention","_attention$screen_nam","_attention$screen_nam2","namepart","instancepart","matchstring","mentionMatchesUrl","dataset","generateTagLink","toggleShowMore","status_content_vue_styles_","status_content_Component","status_content","tall-subject","tall-subject-hider_focused","tall-status","tall-status-hider_focused","base-poll","mediaUpload","uploadCount","uploadReady","uploading","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","iterator","done","dropFiles","fileInfos","media_upload_media_upload","media_upload","poll_form","pollType","expiryAmount","expiryUnit","pollLimits","maxOptions","max_options","maxLength","max_option_chars","expiryUnits","expiry","convertExpiryFromUnit","max_expiration","minExpirationInCurrentUnit","convertExpiryToUnit","min_expiration","maxExpirationInCurrentUnit","clear","nextOption","focus","addOption","deleteOption","amount","DateUtils","expiryAmountChange","updatePollToParent","uniq_default","poll_form_vue_styles_","poll_poll_form","maxlength","keydown","indexOf","_k","keyCode","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","resize","textarea","textLength","setSelectionRange","scopeCopy","_ref$attentions","allAttentions","reject_default","buildMentionsString","scope","copyMessageScope","postContentType","submitDisabled","posting","newStatus","mediaDescriptions","caret","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","updateUsersList","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","hideScopeNotice","pollContentError","showPreview","emptyStatus","newStatus.contentType","autoPreview","newStatus.spoilerText","el","abrupt","setAllMediaDescriptions","statusPoster","clearPollForm","previewStatus","debouncePreviewStatus","debounce_default","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","uploadFailed","errString","templateArgs","disableSubmit","enableSubmit","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","getComputedStyle","bottomBottomPadding","scrollerRef","topPaddingStr","bottomPaddingStr","vertPadding","currentScroll","scrollY","scrollTop","scrollerHeight","scrollerBottomBorder","newHeight","scrollHeight","bottomBottomBorder","findOffset","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","targetScroll","selectionStart","scroll","showEmojiPicker","triggerShowPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","ids","post_status_form_vue_styles_","post_status_form_Component","post_status_form","autocomplete","submit","dragover","animation","dragleave","drop","enable-emoji-picker","suggest","callback","$$v","hide-emoji-button","enable-sticker-picker","sticker-uploaded","sticker-upload-failed","metaKey","ctrlKey","compositionupdate","show-all","user-default","original-scope","initial-scope","on-scope-change","postFormat","visible","update-poll","drop-files","uploaded","upload-failed","all-uploaded","stopGifs","onLoad","imageLoadHandler","canvas","naturalWidth","naturalHeight","getContext","drawImage","still_image","referrerpolicy","load","timeago","interval","localeDateString","toLocaleString","refreshRelativeTimeObject","longFormat","date_utils","autoUpdate","datetime","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","img","modalOpen","showHidden","VideoAttachment","usePlaceholder","placeholderName","placeholderIconClass","mediaProxyAvailable","isEmpty","oembed","isSmall","fullwidth","useModal","openModal","toggleHidden","useOneClickNsfw","onImageLoad","naturalSizeLoad","_obj","small","large_thumb_url","image-load-handler","allowPlay","controls","thumb_url","oembedHTML","loaders","ar","ca","cs","de","eo","es","et","eu","fi","fr","ga","he","hu","it","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","zh","messages","languages","en","require","setLanguage","language","_messages","_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","setLocaleMessage","list","items","getKey","empty","progress_button","progress","browserLocale","multiChoiceProperties","defaultState","customTheme","customThemeSource","hideISP","hideMutedPosts","padEmoji","loopVideo","loopVideoSilentOnly","autoLoad","streaming","hoverPreview","autohideFloatingPostButton","pauseOnUnfocused","webPushNotifications","interfaceLanguage","useStreamingApi","instanceDefaultProperties","rootState","rootGetters","mutations","setOption","setHighlight","del","actions","toLowerCase","statusSummary","lodash_filter__WEBPACK_IMPORTED_MODULE_0___default","muteWord","child","_ref$top","_ref$left","ignorePadding","offsetTop","offsetLeft","_findPadding","findPadding","topPadding","leftPadding","_findPadding2","leftPaddingStr","requestFollow","requested","fetchRelationship","attempt","follow_button","inProgress","isPressed","label","labelFollowing","unfollow","follow","requestUnfollow","onVideoDataLoad","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","video_attachment","loop","playsinline","loadeddata","remote_follow","exponent","units","log","toFixed","debounceUserSearch","lodash_debounce__WEBPACK_IMPORTED_MODULE_0___default","firstChar","suggestEmoji","suggestUsers","noPrefix","substr","aScore","bScore","imageUrl","newUsers","detailText","vue__WEBPACK_IMPORTED_MODULE_0__","vue__WEBPACK_IMPORTED_MODULE_0___default","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","sideTabBar","active","findIndex","activeIndex","beforeUpdate","activateTab","contents","render","h","tabs","classesTab","classesWrapper","fullHeight","renderSlot","getComponentProps","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0__","lodash_isFunction__WEBPACK_IMPORTED_MODULE_0___default","isFunction","getComponentOptions","addPositionToWords","words","reduce_default","word","start","end","previous","splitIntoWords","triggers","matches","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","filterByKeyword","keyword","EmojiPicker","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiBufferSlice","customEmojiTimeout","customEmojiLoadAllConfirmed","StickerPicker","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","onScroll","updateScrolledClass","scrolledGroup","triggerLoadMore","setShowStickers","scrollTopMax","scrollerBottom","clientHeight","scrollerTop","scrollerMax","loadEmoji","emojisView","group","customEmojiBuffer","filteredEmoji","startEmojiLoad","forceUpdate","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","stickerPickerEnabled","emoji_picker_emoji_picker","emoji_picker","refInFor","enableEmojiPicker","hideEmojiButton","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","firstchar","textAtCaret","matchedSuggestions","take_default","showSuggestions","wordAtCaret","Completion","slots","elm","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","picker","scrollIntoView","togglePicker","newValue","insert","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","shiftKey","_this$$refs","_this$input$elm","offsetBottom","emoji_input_vue_styles_","emoji_input_Component","emoji_input","with-picker","hide","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","scope_selector","locals","EventTargetPolyfill","interfaceMod","settingsModalState","settingsModalLoaded","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","mobileLayout","globalNotices","settingsSaved","success","errorData","setNotificationPermission","permission","setMobileLayout","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","pushGlobalNotice","removeGlobalNotice","setPageTitle","messageKey","_ref11$messageArgs","messageArgs","_ref11$level","_ref11$timeout","registrationOpen","vapidPublicKey","disableChat","hideSitename","loginMethod","logo","logoMargin","logoMask","redirectRootLogin","redirectRootNoLogin","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","customEmojiFetched","emojiFetched","pleromaBackend","knownDomains","chatAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","setKnownDomains","domains","instanceDefaultConfig","defineProperty_default","getStaticEmoji","res","values","getCustomEmoji","_context2","image_url","setTheme","themeName","themeSource","fetchEmoji","getKnownDomains","_context3","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minVisibleId","followers","flushMarker","emptyNotifications","desktopNotificationSilence","POSITIVE_INFINITY","idStore","conversationsObject","timelines","visibleNotificationTypes","mergeOrAdd","arr","obj","oldItem","merge_default","omitBy_default","new","sortTimeline","addStatusToGlobalStorage","conversationId","addNewStatuses","_ref2$showImmediately","_ref2$user","_ref2$noIdUpdate","_ref2$pagination","isArray_default","timelineObject","minNew","minBy_default","maxNew","maxBy_default","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","_status2","_x","counter","favoriteStatus","deletion","remove_default","removeStatusFromGlobalStorage","unknown","addNewNotifications","Notification","desktopNotification","removeStatus","first_default","showNewStatuses","oldTimeline","slice_default","resetStatuses","emptyState","clearTimeline","_ref8$excludeUserId","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","findIndex_default","setMutedStatus","setRetweeted","setRetweetedConfirm","setBookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setError","setErrorData","setNotificationsLoading","setNotificationsError","setNotificationsSilence","markSingleNotificationAsSeen","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","statuses_objectSpread","removeOwnReaction","updateStatusWithPoll","_ref36$showImmediatel","_ref36$timeline","_ref36$noIdUpdate","markStatusesAsDeleted","bookmark","unbookmark","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","fetchAndUpdate","_ref2$timeline","_ref2$older","_ref2$userId","_ref2$tag","timelineData","camelCase_default","_getters$mergedConfig","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","_ref3$timeline","_ref3$userId","_ref3$tag","setInterval","fetchNotifications","readNotifsIds","notificationsFetcher","requests","followRequestFetcher","backendInteractorService","backend_interactor_service_objectSpread","startFetchingTimeline","_ref$userId","timelineFetcherService","startFetchingNotifications","startFetchingFollowRequests","startUserSocket","func","REDIRECT_URI","location","getOrCreateApp","clientId","clientSecret","___pleromafe_commit_hash","toISOString","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","dataString","encoded","getToken","getTokenWithCredentials","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","registerPushNotifications","isEnabled","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","from","charCodeAt","pushManager","subscribe","subscribePush","subscription","alerts","mention","move","responseData","sendSubscriptionToBackEnd","mergeArrayLength","oldValue","mergeWith_default","predictedRelationship","relationships","loggingIn","lastLoginName","usersObject","signUpPending","signUpErrors","newTags","updateRight","newRights","updateActivationStatus","setCurrentUser","clearCurrentUser","beginLogin","endLogin","saveFriendIds","saveFollowerIds","clearFriends","clearFollowers","addNewUsers","updateUserRelationship","saveBlockIds","blockIds","addBlockId","blockId","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","setUserForStatus","setUserForNotification","setColor","signUpSuccess","signUpFailure","fetchUserIfMissing","blocks","blockUsers","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","compact_default","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","users_objectSpread","logout","_store$rootState","oauthApi","userToken","loginUser","requestPermission","startPolling","fetchers","mastoUserSocket","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","clearInterval","setWsToken","wsToken","setSocket","setFollowRequests","enableMastoSockets","disableMastoSockets","startMastoUserSocket","closeEvent","ignoreCodes","restartMastoUserSocket","stopMastoUserSocket","_ref8$timeline","_ref8$tag","_ref8$userId","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","chat","channel","setChannel","addMessage","setMessages","initializeChat","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","auth_flow","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","mediaViewer","currentIndex","activated","setCurrent","current","closeMediaViewer","oauthTokens","tokens","fetchTokens","swapTokens","reports","modalActivated","openUserReportingModal","closeUserReportingModal","trackedPolls","mergeOrAddPoll","existingPoll","trackPoll","currentValue","untrackPoll","updateTrackedPoll","votePoll","openPostStatusModal","closePostStatusModal","loaded","defaultReducer","paths","substate","set_default","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","_ref$key","_ref$paths","_ref$getState","getState","storage","getItem","_ref$setState","setState","setItem","_ref$reducer","reducer","_ref$storage","_ref$subscriber","subscriber","handler","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","push_notifications_plugin","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","lockerEls","disableBodyScroll","scrollBarGap","documentElement","clientWidth","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","unbind","idA","idB","conversation","expanded","isPage","originalStatusId","getConversationId","isExpanded","clone_default","statusIndex","filter_default","sortAndFilterConversation","irid","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","src_components_conversation_conversation","components_conversation_conversation","inline-expanded","collapsable","show-pinned","pinnedStatusIdsObject","in-conversation","in-profile","profile-user-id","goto","Timeline","paused","unfocused","bottomedOut","timelineError","showLoadButton","loadButtonString","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","keyBy_default","Conversation","scrollLoad","timelineName","handleVisibilityChange","handleShortKey","fetchOlderStatuses","throttle_default","bodyBRect","pageYOffset","doc","clientTop","timeline_vue_styles_","components_timeline_timeline","timeline_timeline","pinned-status-ids-object","PublicTimeline","public_timeline_public_timeline","public_timeline","timeline-name","PublicAndExternalTimeline","public_and_external_timeline_public_and_external_timeline","public_and_external_timeline","FriendsTimeline","friends_timeline_friends_timeline","friends_timeline","TagTimeline","tag_timeline_tag_timeline","tag_timeline","Bookmarks","bookmark_timeline_bookmark_timeline","bookmark_timeline","conversationPage","conversation_page_conversation_page","conversation_page","is-page","getUser","targetUser","targetUserProfileLink","needMute","components_notification_notification","notification_notification","white-space","Notifications","minimalMode","filterMode","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","notifications_vue_styles_","components_notifications_notifications","notifications_notifications","minimal","unseen","tabModeDict","likes+repeats","Interactions","allowFollowingMove","onModeSwitch","interactions_interactions","interactions","on-switch","minimal-mode","filter-mode","DMs","dm_timeline_dm_timeline","dm_timeline","FollowCard","isMe","follow_card_vue_styles_","follow_card_follow_card","follow_card","noFollowsYou","label-following","withLoadMore","select","destroy","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","WrappedComponent","$props","fetchEntries","newEntries","with_load_more_objectSpread","$listeners","$scopedSlots","helper_default","FollowerList","List","FriendList","UserProfile","routeParams","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","$route.params.id","$route.params.name","$route.query","TabSwitcher","user_profile_vue_styles_","user_profile_user_profile","user_profile","viewing","allow-zooming-avatar","active-tab","render-only-focused","pinned-status-ids","no-follows-you","Search","searchTerm","userIds","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","search_vue_styles_","components_search_search","search_search","keyup","uses","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","signedIn","setCaptcha","registration_objectSpread","bioPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","registration_vue_styles_","src_components_registration_registration","components_registration_registration","form-group--error","$error","modifiers","$forceUpdate","autocorrect","autocapitalize","spellcheck","resetPassword","passwordReset","throttled","password_reset_objectSpread","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","password_reset_vue_styles_","components_password_reset_password_reset","password_reset_password_reset","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","follow_request_card_vue_styles_","FollowRequests","follow_request_card","follow_requests_follow_requests","follow_requests","oac","_this$$store$state$oa","oauth_callback_oauth_callback","oauth_callback","LoginForm","login_form_objectSpread","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","_this$oauth","identifier","focusOnPasswordInput","passwordInput","login_form_vue_styles_","login_form_login_form","login_form","mfa","recovery_form","recovery_form_objectSpread","authSettings","mfa_token","mfaApi","mfa_form_recovery_form","totp_form","totp_form_objectSpread","mfa_form_totp_form","AuthForm","is","authForm","auth_form_objectSpread","MFARecoveryForm","MFATOTPForm","chatPanel","currentMessage","collapsed","togglePanel","chat_panel_vue_styles_","chat_panel_chat_panel","chat_panel","floating","chat-heading","author","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","who_to_follow_vue_styles_","who_to_follow_who_to_follow","who_to_follow","InstanceSpecificPanel","instance_specific_panel_instance_specific_panel","instance_specific_panel","FeaturesPanel","gopher","whoToFollow","mediaProxy","features_panel_vue_styles_","features_panel_features_panel","features_panel","TermsOfServicePanel","terms_of_service_panel_vue_styles_","terms_of_service_panel_terms_of_service_panel","terms_of_service_panel","StaffPanel","staffAccounts","staff_panel_vue_styles_","staff_panel_staff_panel","staff_panel","MRFTransparencyPanel","mrf_transparency_panel_objectSpread","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","mrf_transparency_panel_vue_styles_","About","mrf_transparency_panel","policy","textContent","pattern","about_vue_styles_","about_about","about","RemoteUserResolver","redirect","hostname","remote_user_resolver_vue_styles_","remote_user_resolver_remote_user_resolver","remote_user_resolver","routes","validateAuthenticatedRoute","_to","beforeEnter","BookmarkTimeline","ConversationPage","dontScroll","Registration","PasswordReset","ChatPanel","OAuthCallback","route","UserPanel","user_panel_objectSpread","user_panel_vue_styles_","user_panel_user_panel","user_panel","NavPanel","followRequestCount","privateMode","federating","nav_panel_vue_styles_","nav_panel_nav_panel","nav_panel","SearchBar","search_bar_vue_styles_","search_bar_search_bar","search_bar","usersToFollow","toFollow","shuffled","shuffle_default","WhoToFollowPanel","fill","oldUser","who_to_follow_panel_vue_styles_","who_to_follow_panel_who_to_follow_panel","who_to_follow_panel","modal","isOpen","noBackground","modal-background","modal_vue_styles_","modal_modal","panel_loading_vue_styles_","async_component_error_vue_styles_","getResettableAsyncComponent","SettingsModal","Modal","SettingsModalContent","asyncComponent","asyncComponentFactory","resettable_async_component_objectSpread","observe","observable","functional","resetAsyncComponent","retry","delay","closeModal","peekModal","modalOpenedOnce","modalPeeked","settings_modal_vue_styles_","settings_modal_settings_modal","settings_modal","peek","is-open","no-background","touchEventCoord","touches","screenX","screenY","vectorLength","sqrt","dotProduct","v1","v2","project","scalar","GestureService","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","oldCoord","newCoord","delta","towardsDir","perpendicularDir","towardsPerpendicular","MediaModal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","media_modal_vue_styles_","media_modal_media_modal","media_modal","backdropClicked","touchstart","touchmove","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","doLogout","touchStart","touchMove","side_drawer_vue_styles_","side_drawer_side_drawer","side_drawer","side-drawer-container-closed","side-drawer-container-open","side-drawer-darken-closed","side-drawer-closed","side-drawer-click-outside-closed","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","leading","trailing","mobile_post_status_button_vue_styles_","mobile_post_status_button_mobile_post_status_button","mobile_post_status_button","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","_ref$target","mobile_nav_vue_styles_","mobile_nav_mobile_nav","mobile_nav","active-class","UserReportingModal","statusIdsToReport","processing","remoteInstance","user_reporting_modal_objectSpread","isChecked","toggleStatus","user_reporting_modal_vue_styles_","user_reporting_modal_user_reporting_modal","user_reporting_modal","PostStatusModal","resettingForm","isFormVisible","post_status_modal_vue_styles_","post_status_modal_post_status_modal","post_status_modal","_b","GlobalNoticeList","notices","closeNotice","global_notice_list_vue_styles_","global_notice_list_global_notice_list","global_notice_list","windowWidth","App","mobileActivePanel","searchBarHidden","supportsMask","updateMobileState","enableMask","logoStyle","logoMaskStyle","mask-image","background-color","logoBgStyle","bgStyle","background-image","bgAppStyle","--body-background-image","isMobileLayout","sidebarAlign","order","onSearchBarToggled","App_vue_styles_","src_App","staticInitialResults","preloadFetch","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","getBackendProvidedConfig","pleroma_fe","getStaticConfig","_context4","setSettings","apiConfig","staticConfig","overrides","env","copyInstanceOption","_context5","___pleromafe_dev_overrides","___pleromafe_mode","NODE_ENV","staticConfigPreference","getTOS","_context6","getInstancePanel","_context7","getStickers","_context9","resPack","_context8","pack","localeCompare","t1","getAppSecret","_context10","after_store_objectSpread","resolveStaffAccounts","getNodeInfo","metadata","features","uploadLimits","software","priv","federation","_context11","nodeName","openRegistrations","general","fieldsLimits","enabled","web","version","mrf_policies","setConfig","configInfos","_context12","checkOAuthToken","_context14","_context13","afterStoreSetup","_store$state$config","router","_context15","VueRouter","scrollBehavior","_from","savedPosition","matched","currentLocale","use","Vuex","VueI18n","VueChatScroll","VueClickOutside","PortalVue","fallbackLocale","storageError","plugins","persistedState","persistedStateOptions","pushNotifications","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","chatModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","strict","process","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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","file":"static/js/app.53001fa190f37cf2743e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"f8dee9318a6f84ea92c3\",\"3\":\"e1f7d368d5840e12e850\",\"4\":\"c3f92d0b6ff90b36e3f5\",\"5\":\"d30e50cd5c52d54ffdc9\",\"6\":\"fa6d5c2d85d44f0ba121\",\"7\":\"d558a086622f668601a6\",\"8\":\"615136ce6c34a6b96a29\",\"9\":\"ef4eb9703f9aee67515e\",\"10\":\"4a22c77e34edcd678d2f\",\"11\":\"787aa24e4fd5caef9adb\",\"12\":\"35a510cf14233f0c6e1f\",\"13\":\"7931a609d62a42678085\",\"14\":\"cc092634462fd2a4cfbc\",\"15\":\"e9ddc5dfd38426398e00\",\"16\":\"476e7809b8593264469e\",\"17\":\"acbe4c09f05ae56c76a2\",\"18\":\"a8ccd7f2a47c5c94b3b9\",\"19\":\"5894e9c12b4fd5e45872\",\"20\":\"43b5b27b0f68474f3b72\",\"21\":\"72b45b01be9d0f4c62ce\",\"22\":\"26f13a22ad57a0d14670\",\"23\":\"91a60b775352a806f887\",\"24\":\"c8d8438aac954d4707ac\",\"25\":\"79ac9e020d571b67f02a\",\"26\":\"3af8f54349f672f2c7c8\",\"27\":\"51287d408313da67b0b8\",\"28\":\"be5118beb1098a81332d\",\"29\":\"084f6fb0987d3862d410\",\"30\":\"6e6d63411def2e175d11\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"2\":\"0778a6a864a1307a6c41\",\"3\":\"b2603a50868c68a1c192\",\"4\":\"31d6cfe0d16ae931b73c\",\"5\":\"31d6cfe0d16ae931b73c\",\"6\":\"31d6cfe0d16ae931b73c\",\"7\":\"31d6cfe0d16ae931b73c\",\"8\":\"31d6cfe0d16ae931b73c\",\"9\":\"31d6cfe0d16ae931b73c\",\"10\":\"31d6cfe0d16ae931b73c\",\"11\":\"31d6cfe0d16ae931b73c\",\"12\":\"31d6cfe0d16ae931b73c\",\"13\":\"31d6cfe0d16ae931b73c\",\"14\":\"31d6cfe0d16ae931b73c\",\"15\":\"31d6cfe0d16ae931b73c\",\"16\":\"31d6cfe0d16ae931b73c\",\"17\":\"31d6cfe0d16ae931b73c\",\"18\":\"31d6cfe0d16ae931b73c\",\"19\":\"31d6cfe0d16ae931b73c\",\"20\":\"31d6cfe0d16ae931b73c\",\"21\":\"31d6cfe0d16ae931b73c\",\"22\":\"31d6cfe0d16ae931b73c\",\"23\":\"31d6cfe0d16ae931b73c\",\"24\":\"31d6cfe0d16ae931b73c\",\"25\":\"31d6cfe0d16ae931b73c\",\"26\":\"31d6cfe0d16ae931b73c\",\"27\":\"31d6cfe0d16ae931b73c\",\"28\":\"31d6cfe0d16ae931b73c\",\"29\":\"31d6cfe0d16ae931b73c\",\"30\":\"31d6cfe0d16ae931b73c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([537,1]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\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 escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\n\nconst qvitterStatusType = (status) => {\n if (status.is_post_verb) {\n return 'status'\n }\n\n if (status.retweeted_status) {\n return 'retweet'\n }\n\n if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n (typeof status.text === 'string' && status.text.match(/favorited/))) {\n return 'favorite'\n }\n\n if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n return 'deletion'\n }\n\n if (status.text.match(/started following/) || status.activity_type === 'follow') {\n return 'follow'\n }\n\n return 'unknown'\n}\n\nexport const parseUser = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('acct')\n // case for users in \"mentions\" property for statuses in MastoAPI\n const mastoShort = masto && !data.hasOwnProperty('avatar')\n\n output.id = String(data.id)\n\n if (masto) {\n output.screen_name = data.acct\n output.statusnet_profile_url = data.url\n\n // There's nothing else to get\n if (mastoShort) {\n return output\n }\n\n output.name = data.display_name\n output.name_html = addEmojis(escape(data.display_name), data.emojis)\n\n output.description = data.note\n output.description_html = addEmojis(data.note, data.emojis)\n\n output.fields = data.fields\n output.fields_html = data.fields.map(field => {\n return {\n name: addEmojis(field.name, data.emojis),\n value: addEmojis(field.value, data.emojis)\n }\n })\n output.fields_text = data.fields.map(field => {\n return {\n name: unescape(field.name.replace(/<[^>]*>/g, '')),\n value: unescape(field.value.replace(/<[^>]*>/g, ''))\n }\n })\n\n // Utilize avatar_static for gif avatars?\n output.profile_image_url = data.avatar\n output.profile_image_url_original = data.avatar\n\n // Same, utilize header_static?\n output.cover_photo = data.header\n\n output.friends_count = data.following_count\n\n output.bot = data.bot\n\n if (data.pleroma) {\n const relationship = data.pleroma.relationship\n\n output.background_image = data.pleroma.background_image\n output.token = data.pleroma.chat_token\n\n if (relationship) {\n output.relationship = relationship\n }\n\n output.allow_following_move = data.pleroma.allow_following_move\n\n output.hide_follows = data.pleroma.hide_follows\n output.hide_followers = data.pleroma.hide_followers\n output.hide_follows_count = data.pleroma.hide_follows_count\n output.hide_followers_count = data.pleroma.hide_followers_count\n\n output.rights = {\n moderator: data.pleroma.is_moderator,\n admin: data.pleroma.is_admin\n }\n // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n if (output.rights.admin) {\n output.role = 'admin'\n } else if (output.rights.moderator) {\n output.role = 'moderator'\n } else {\n output.role = 'member'\n }\n }\n\n if (data.source) {\n output.description = data.source.note\n output.default_scope = data.source.privacy\n output.fields = data.source.fields\n if (data.source.pleroma) {\n output.no_rich_text = data.source.pleroma.no_rich_text\n output.show_role = data.source.pleroma.show_role\n output.discoverable = data.source.pleroma.discoverable\n }\n }\n\n // TODO: handle is_local\n output.is_local = !output.screen_name.includes('@')\n } else {\n output.screen_name = data.screen_name\n\n output.name = data.name\n output.name_html = data.name_html\n\n output.description = data.description\n output.description_html = data.description_html\n\n output.profile_image_url = data.profile_image_url\n output.profile_image_url_original = data.profile_image_url_original\n\n output.cover_photo = data.cover_photo\n\n output.friends_count = data.friends_count\n\n // output.bot = ??? missing\n\n output.statusnet_profile_url = data.statusnet_profile_url\n\n output.is_local = data.is_local\n output.role = data.role\n output.show_role = data.show_role\n\n if (data.rights) {\n output.rights = {\n moderator: data.rights.delete_others_notice,\n admin: data.rights.admin\n }\n }\n output.no_rich_text = data.no_rich_text\n output.default_scope = data.default_scope\n output.hide_follows = data.hide_follows\n output.hide_followers = data.hide_followers\n output.hide_follows_count = data.hide_follows_count\n output.hide_followers_count = data.hide_followers_count\n output.background_image = data.background_image\n // Websocket token\n output.token = data.token\n\n // Convert relationsip data to expected format\n output.relationship = {\n muting: data.muted,\n blocking: data.statusnet_blocking,\n followed_by: data.follows_you,\n following: data.following\n }\n }\n\n output.created_at = new Date(data.created_at)\n output.locked = data.locked\n output.followers_count = data.followers_count\n output.statuses_count = data.statuses_count\n output.friendIds = []\n output.followerIds = []\n output.pinnedStatusIds = []\n\n if (data.pleroma) {\n output.follow_request_count = data.pleroma.follow_request_count\n\n output.tags = data.pleroma.tags\n output.deactivated = data.pleroma.deactivated\n\n output.notification_settings = data.pleroma.notification_settings\n }\n\n output.tags = output.tags || []\n output.rights = output.rights || {}\n output.notification_settings = output.notification_settings || {}\n\n return output\n}\n\nexport const parseAttachment = (data) => {\n const output = {}\n const masto = !data.hasOwnProperty('oembed')\n\n if (masto) {\n // Not exactly same...\n output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n output.meta = data.meta // not present in BE yet\n output.id = data.id\n } else {\n output.mimetype = data.mimetype\n // output.meta = ??? missing\n }\n\n output.url = data.url\n output.description = data.description\n\n return output\n}\nexport const addEmojis = (string, emojis) => {\n const matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g\n return emojis.reduce((acc, emoji) => {\n const regexSafeShortCode = emoji.shortcode.replace(matchOperatorsRegex, '\\\\$&')\n return acc.replace(\n new RegExp(`:${regexSafeShortCode}:`, 'g'),\n `<img src='${emoji.url}' alt=':${emoji.shortcode}:' title=':${emoji.shortcode}:' class='emoji' />`\n )\n }, string)\n}\n\nexport const parseStatus = (data) => {\n const output = {}\n const masto = data.hasOwnProperty('account')\n\n if (masto) {\n output.favorited = data.favourited\n output.fave_num = data.favourites_count\n\n output.repeated = data.reblogged\n output.repeat_num = data.reblogs_count\n\n output.bookmarked = data.bookmarked\n\n output.type = data.reblog ? 'retweet' : 'status'\n output.nsfw = data.sensitive\n\n output.statusnet_html = addEmojis(data.content, data.emojis)\n\n output.tags = data.tags\n\n if (data.pleroma) {\n const { pleroma } = data\n output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n output.statusnet_conversation_id = data.pleroma.conversation_id\n output.is_local = pleroma.local\n output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n output.thread_muted = pleroma.thread_muted\n output.emoji_reactions = pleroma.emoji_reactions\n output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n } else {\n output.text = data.content\n output.summary = data.spoiler_text\n }\n\n output.in_reply_to_status_id = data.in_reply_to_id\n output.in_reply_to_user_id = data.in_reply_to_account_id\n output.replies_count = data.replies_count\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.reblog)\n }\n\n output.summary_html = addEmojis(escape(data.spoiler_text), data.emojis)\n output.external_url = data.url\n output.poll = data.poll\n if (output.poll) {\n output.poll.options = (output.poll.options || []).map(field => ({\n ...field,\n title_html: addEmojis(field.title, data.emojis)\n }))\n }\n output.pinned = data.pinned\n output.muted = data.muted\n } else {\n output.favorited = data.favorited\n output.fave_num = data.fave_num\n\n output.repeated = data.repeated\n output.repeat_num = data.repeat_num\n\n // catchall, temporary\n // Object.assign(output, data)\n\n output.type = qvitterStatusType(data)\n\n if (data.nsfw === undefined) {\n output.nsfw = isNsfw(data)\n if (data.retweeted_status) {\n output.nsfw = data.retweeted_status.nsfw\n }\n } else {\n output.nsfw = data.nsfw\n }\n\n output.statusnet_html = data.statusnet_html\n output.text = data.text\n\n output.in_reply_to_status_id = data.in_reply_to_status_id\n output.in_reply_to_user_id = data.in_reply_to_user_id\n output.in_reply_to_screen_name = data.in_reply_to_screen_name\n output.statusnet_conversation_id = data.statusnet_conversation_id\n\n if (output.type === 'retweet') {\n output.retweeted_status = parseStatus(data.retweeted_status)\n }\n\n output.summary = data.summary\n output.summary_html = data.summary_html\n output.external_url = data.external_url\n output.is_local = data.is_local\n }\n\n output.id = String(data.id)\n output.visibility = data.visibility\n output.card = data.card\n output.created_at = new Date(data.created_at)\n\n // Converting to string, the right way.\n output.in_reply_to_status_id = output.in_reply_to_status_id\n ? String(output.in_reply_to_status_id)\n : null\n output.in_reply_to_user_id = output.in_reply_to_user_id\n ? String(output.in_reply_to_user_id)\n : null\n\n output.user = parseUser(masto ? data.account : data.user)\n\n output.attentions = ((masto ? data.mentions : data.attentions) || []).map(parseUser)\n\n output.attachments = ((masto ? data.media_attachments : data.attachments) || [])\n .map(parseAttachment)\n\n const retweetedStatus = masto ? data.reblog : data.retweeted_status\n if (retweetedStatus) {\n output.retweeted_status = parseStatus(retweetedStatus)\n }\n\n output.favoritedBy = []\n output.rebloggedBy = []\n\n return output\n}\n\nexport const parseNotification = (data) => {\n const mastoDict = {\n 'favourite': 'like',\n 'reblog': 'repeat'\n }\n const masto = !data.hasOwnProperty('ntype')\n const output = {}\n\n if (masto) {\n output.type = mastoDict[data.type] || data.type\n output.seen = data.pleroma.is_seen\n output.status = isStatusNotification(output.type) ? parseStatus(data.status) : null\n output.action = output.status // TODO: Refactor, this is unneeded\n output.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n } else {\n const parsedNotice = parseStatus(data.notice)\n output.type = data.ntype\n output.seen = Boolean(data.is_seen)\n output.status = output.type === 'like'\n ? parseStatus(data.notice.favorited_status)\n : parsedNotice\n output.action = parsedNotice\n output.from_profile = 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","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, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst TAG_USER_URL = '/api/pleroma/admin/users/tag'\nconst PERMISSION_GROUP_URL = (screenName, right) => `/api/pleroma/admin/users/${screenName}/permission_group/${right}`\nconst ACTIVATE_USER_URL = '/api/pleroma/admin/users/activate'\nconst DEACTIVATE_USER_URL = '/api/pleroma/admin/users/deactivate'\nconst ADMIN_USERS_URL = '/api/pleroma/admin/users'\nconst SUGGESTIONS_URL = '/api/v1/suggestions'\nconst NOTIFICATION_SETTINGS_URL = '/api/pleroma/notification_settings'\nconst NOTIFICATION_READ_URL = '/api/v1/pleroma/notifications/read'\n\nconst MFA_SETTINGS_URL = '/api/pleroma/accounts/mfa'\nconst MFA_BACKUP_CODES_URL = '/api/pleroma/accounts/mfa/backup_codes'\n\nconst MFA_SETUP_OTP_URL = '/api/pleroma/accounts/mfa/setup/totp'\nconst MFA_CONFIRM_OTP_URL = '/api/pleroma/accounts/mfa/confirm/totp'\nconst MFA_DISABLE_OTP_URL = '/api/pleroma/accounts/mfa/totp'\n\nconst MASTODON_LOGIN_URL = '/api/v1/accounts/verify_credentials'\nconst MASTODON_REGISTRATION_URL = '/api/v1/accounts'\nconst MASTODON_USER_FAVORITES_TIMELINE_URL = '/api/v1/favourites'\nconst MASTODON_USER_NOTIFICATIONS_URL = '/api/v1/notifications'\nconst MASTODON_DISMISS_NOTIFICATION_URL = id => `/api/v1/notifications/${id}/dismiss`\nconst MASTODON_FAVORITE_URL = id => `/api/v1/statuses/${id}/favourite`\nconst MASTODON_UNFAVORITE_URL = id => `/api/v1/statuses/${id}/unfavourite`\nconst MASTODON_RETWEET_URL = id => `/api/v1/statuses/${id}/reblog`\nconst MASTODON_UNRETWEET_URL = id => `/api/v1/statuses/${id}/unreblog`\nconst MASTODON_DELETE_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_FOLLOW_URL = id => `/api/v1/accounts/${id}/follow`\nconst MASTODON_UNFOLLOW_URL = id => `/api/v1/accounts/${id}/unfollow`\nconst MASTODON_FOLLOWING_URL = id => `/api/v1/accounts/${id}/following`\nconst MASTODON_FOLLOWERS_URL = id => `/api/v1/accounts/${id}/followers`\nconst MASTODON_FOLLOW_REQUESTS_URL = '/api/v1/follow_requests'\nconst MASTODON_APPROVE_USER_URL = id => `/api/v1/follow_requests/${id}/authorize`\nconst MASTODON_DENY_USER_URL = id => `/api/v1/follow_requests/${id}/reject`\nconst MASTODON_DIRECT_MESSAGES_TIMELINE_URL = '/api/v1/timelines/direct'\nconst MASTODON_PUBLIC_TIMELINE = '/api/v1/timelines/public'\nconst MASTODON_USER_HOME_TIMELINE_URL = '/api/v1/timelines/home'\nconst MASTODON_STATUS_URL = id => `/api/v1/statuses/${id}`\nconst MASTODON_STATUS_CONTEXT_URL = id => `/api/v1/statuses/${id}/context`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = `/api/v2/search`\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\n\nconst oldfetch = window.fetch\n\nlet fetch = (url, options) => {\n options = options || {}\n const baseUrl = ''\n const fullUrl = baseUrl + url\n options.credentials = 'same-origin'\n return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n const options = {\n method,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n if (params) {\n url += '?' + Object.entries(params)\n .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n .join('&')\n }\n if (payload) {\n options.body = JSON.stringify(payload)\n }\n if (credentials) {\n options.headers = {\n ...options.headers,\n ...authHeaders(credentials)\n }\n }\n return fetch(url, options)\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url, options }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n const form = new FormData()\n\n each(settings, (value, key) => {\n form.append(key, value)\n })\n\n return fetch(NOTIFICATION_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'PUT',\n body: form\n }).then((data) => data.json())\n}\n\nconst updateAvatar = ({ credentials, avatar }) => {\n const form = new FormData()\n form.append('avatar', avatar)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n }).then((data) => data.json())\n .then((data) => parseUser(data))\n}\n\nconst updateBg = ({ credentials, background }) => {\n const form = new FormData()\n form.append('pleroma_background_image', background)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n })\n .then((data) => data.json())\n .then((data) => parseUser(data))\n}\n\nconst updateBanner = ({ credentials, banner }) => {\n const form = new FormData()\n form.append('header', banner)\n return fetch(MASTODON_PROFILE_UPDATE_URL, {\n headers: authHeaders(credentials),\n method: 'PATCH',\n body: form\n }).then((data) => data.json())\n .then((data) => parseUser(data))\n}\n\nconst updateProfile = ({ credentials, params }) => {\n return promisedRequest({\n url: MASTODON_PROFILE_UPDATE_URL,\n method: 'PATCH',\n payload: params,\n credentials\n }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\nconst register = ({ params, credentials }) => {\n const { nickname, ...rest } = params\n return fetch(MASTODON_REGISTRATION_URL, {\n method: 'POST',\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n nickname,\n locale: 'en_US',\n agreement: true,\n ...rest\n })\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return response.json().then((error) => { throw new RegistrationError(error) })\n }\n })\n}\n\nconst getCaptcha = () => fetch('/api/pleroma/captcha').then(resp => resp.json())\n\nconst authHeaders = (accessToken) => {\n if (accessToken) {\n return { 'Authorization': `Bearer ${accessToken}` }\n } else {\n return { }\n }\n}\n\nconst followUser = ({ id, credentials, ...options }) => {\n let url = MASTODON_FOLLOW_URL(id)\n const form = {}\n if (options.reblogs !== undefined) { form['reblogs'] = options.reblogs }\n return fetch(url, {\n body: JSON.stringify(form),\n headers: {\n ...authHeaders(credentials),\n 'Content-Type': 'application/json'\n },\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unfollowUser = ({ id, credentials }) => {\n let url = MASTODON_UNFOLLOW_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst pinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_PIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unpinOwnStatus = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNPIN_OWN_STATUS(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst muteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst unmuteConversation = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_CONVERSATION(id), credentials, method: 'POST' })\n .then((data) => parseStatus(data))\n}\n\nconst blockUser = ({ id, credentials }) => {\n return fetch(MASTODON_BLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst unblockUser = ({ id, credentials }) => {\n return fetch(MASTODON_UNBLOCK_USER_URL(id), {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst approveUser = ({ id, credentials }) => {\n let url = MASTODON_APPROVE_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst denyUser = ({ id, credentials }) => {\n let url = MASTODON_DENY_USER_URL(id)\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst fetchUser = ({ id, credentials }) => {\n let url = `${MASTODON_USER_URL}/${id}`\n return promisedRequest({ url, credentials })\n .then((data) => parseUser(data))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n let url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n return fetch(url, { headers: authHeaders(credentials) })\n .then((response) => {\n return new Promise((resolve, reject) => response.json()\n .then((json) => {\n if (!response.ok) {\n return reject(new StatusCodeError(response.status, json, { url }, response))\n }\n return resolve(json)\n }))\n })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWING_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url = url + (args ? '?' + args : '')\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n return new Promise(async (resolve, reject) => {\n try {\n let friends = []\n let more = true\n while (more) {\n const maxId = friends.length > 0 ? last(friends).id : undefined\n const users = await fetchFriends({ id, maxId, credentials })\n friends = concat(friends, users)\n if (users.length === 0) {\n more = false\n }\n }\n resolve(friends)\n } catch (err) {\n reject(err)\n }\n })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n let url = MASTODON_FOLLOWERS_URL(id)\n const args = [\n maxId && `max_id=${maxId}`,\n sinceId && `since_id=${sinceId}`,\n limit && `limit=${limit}`,\n `with_relationships=true`\n ].filter(_ => _).join('&')\n\n url += args ? '?' + args : ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n const url = MASTODON_FOLLOW_REQUESTS_URL\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => data.json())\n .then((data) => data.map(parseUser))\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n let urlContext = MASTODON_STATUS_CONTEXT_URL(id)\n return fetch(urlContext, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then(({ ancestors, descendants }) => ({\n ancestors: ancestors.map(parseStatus),\n descendants: descendants.map(parseStatus)\n }))\n}\n\nconst fetchStatus = ({ id, credentials }) => {\n let url = MASTODON_STATUS_URL(id)\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching timeline', data)\n })\n .then((data) => data.json())\n .then((data) => parseStatus(data))\n}\n\nconst tagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const form = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'PUT',\n headers: headers,\n body: JSON.stringify(form)\n })\n}\n\nconst untagUser = ({ tag, credentials, user }) => {\n const screenName = user.screen_name\n const body = {\n nicknames: [screenName],\n tags: [tag]\n }\n\n const headers = authHeaders(credentials)\n headers['Content-Type'] = 'application/json'\n\n return fetch(TAG_USER_URL, {\n method: 'DELETE',\n headers: headers,\n body: JSON.stringify(body)\n })\n}\n\nconst addRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'POST',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst deleteRight = ({ right, credentials, user }) => {\n const screenName = user.screen_name\n\n return fetch(PERMISSION_GROUP_URL(screenName, right), {\n method: 'DELETE',\n headers: authHeaders(credentials),\n body: {}\n })\n}\n\nconst activateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: ACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deactivateUser = ({ credentials, user: { screen_name: nickname } }) => {\n return promisedRequest({\n url: DEACTIVATE_USER_URL,\n method: 'PATCH',\n credentials,\n payload: {\n nicknames: [nickname]\n }\n }).then(response => get(response, 'users.0'))\n}\n\nconst deleteUser = ({ credentials, user }) => {\n const screenName = user.screen_name\n const headers = authHeaders(credentials)\n\n return fetch(`${ADMIN_USERS_URL}?nickname=${screenName}`, {\n method: 'DELETE',\n headers: headers\n })\n}\n\nconst fetchTimeline = ({\n timeline,\n credentials,\n since = false,\n until = false,\n userId = false,\n tag = false,\n withMuted = false,\n replyVisibility = 'all'\n}) => {\n const timelineUrls = {\n public: MASTODON_PUBLIC_TIMELINE,\n friends: MASTODON_USER_HOME_TIMELINE_URL,\n dms: MASTODON_DIRECT_MESSAGES_TIMELINE_URL,\n notifications: MASTODON_USER_NOTIFICATIONS_URL,\n 'publicAndExternal': MASTODON_PUBLIC_TIMELINE,\n user: MASTODON_USER_TIMELINE_URL,\n media: MASTODON_USER_TIMELINE_URL,\n favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'user' || timeline === 'media') {\n url = url(userId)\n }\n\n if (since) {\n params.push(['since_id', since])\n }\n if (until) {\n params.push(['max_id', until])\n }\n if (tag) {\n url = url(tag)\n }\n if (timeline === 'media') {\n params.push(['only_media', 1])\n }\n if (timeline === 'public') {\n params.push(['local', true])\n }\n if (timeline === 'public' || timeline === 'publicAndExternal') {\n params.push(['only_media', false])\n }\n if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n params.push(['with_muted', withMuted])\n }\n if (replyVisibility !== 'all') {\n params.push(['reply_visibility', replyVisibility])\n }\n\n params.push(['limit', 20])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n let status = ''\n let statusText = ''\n let pagination = {}\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.error) {\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.status = status\n data.statusText = statusText\n return data\n }\n })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n return promisedRequest({ url, credentials })\n .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n return fetch(MASTODON_LOGIN_URL, {\n headers: authHeaders(user)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_BOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n headers: authHeaders(credentials),\n method: 'POST'\n })\n}\n\nconst postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType,\n preview\n}) => {\n const form = new FormData()\n const pollOptions = poll.options || []\n\n form.append('status', status)\n form.append('source', 'Pleroma FE')\n if (spoilerText) form.append('spoiler_text', spoilerText)\n if (visibility) form.append('visibility', visibility)\n if (sensitive) form.append('sensitive', sensitive)\n if (contentType) form.append('content_type', contentType)\n mediaIds.forEach(val => {\n form.append('media_ids[]', val)\n })\n if (pollOptions.some(option => option !== '')) {\n const normalizedPoll = {\n expires_in: poll.expiresIn,\n multiple: poll.multiple\n }\n Object.keys(normalizedPoll).forEach(key => {\n form.append(`poll[${key}]`, normalizedPoll[key])\n })\n\n pollOptions.forEach(option => {\n form.append('poll[options][]', option)\n })\n }\n if (inReplyToStatusId) {\n form.append('in_reply_to_id', inReplyToStatusId)\n }\n if (preview) {\n form.append('preview', 'true')\n }\n\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => {\n return response.json()\n })\n .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n return fetch(MASTODON_DELETE_URL(id), {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((data) => data.json())\n .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n return promisedRequest({\n url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n method: 'PUT',\n headers: authHeaders(credentials),\n payload: {\n description\n }\n }).then((data) => parseAttachment(data))\n}\n\nconst importBlocks = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(BLOCKS_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n const formData = new FormData()\n formData.append('list', file)\n return fetch(FOLLOW_IMPORT_URL, {\n body: formData,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(DELETE_ACCOUNT_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n const form = new FormData()\n\n form.append('email', email)\n form.append('password', password)\n\n return fetch(CHANGE_EMAIL_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst changePassword = ({ credentials, password, newPassword, newPasswordConfirmation }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('new_password', newPassword)\n form.append('new_password_confirmation', newPasswordConfirmation)\n\n return fetch(CHANGE_PASSWORD_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst settingsMFA = ({ credentials }) => {\n return fetch(MFA_SETTINGS_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst mfaDisableOTP = ({ credentials, password }) => {\n const form = new FormData()\n\n form.append('password', password)\n\n return fetch(MFA_DISABLE_OTP_URL, {\n body: form,\n method: 'DELETE',\n headers: authHeaders(credentials)\n })\n .then((response) => response.json())\n}\n\nconst mfaConfirmOTP = ({ credentials, password, token }) => {\n const form = new FormData()\n\n form.append('password', password)\n form.append('code', token)\n\n return fetch(MFA_CONFIRM_OTP_URL, {\n body: form,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\nconst mfaSetupOTP = ({ credentials }) => {\n return fetch(MFA_SETUP_OTP_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\nconst generateMfaBackupCodes = ({ credentials }) => {\n return fetch(MFA_BACKUP_CODES_URL, {\n headers: authHeaders(credentials),\n method: 'GET'\n }).then((data) => data.json())\n}\n\nconst fetchMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_MUTES_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst unmuteUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNMUTE_USER_URL(id), credentials, method: 'POST' })\n}\n\nconst subscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_SUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst unsubscribeUser = ({ id, credentials }) => {\n return promisedRequest({ url: MASTODON_UNSUBSCRIBE_USER(id), credentials, method: 'POST' })\n}\n\nconst fetchBlocks = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_USER_BLOCKS_URL, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst fetchOAuthTokens = ({ credentials }) => {\n const url = '/api/oauth_tokens.json'\n\n return fetch(url, {\n headers: authHeaders(credentials)\n }).then((data) => {\n if (data.ok) {\n return data.json()\n }\n throw new Error('Error fetching auth tokens', data)\n })\n}\n\nconst revokeOAuthToken = ({ id, credentials }) => {\n const url = `/api/oauth_tokens/${id}`\n\n return fetch(url, {\n headers: authHeaders(credentials),\n method: 'DELETE'\n })\n}\n\nconst suggestions = ({ credentials }) => {\n return fetch(SUGGESTIONS_URL, {\n headers: authHeaders(credentials)\n }).then((data) => data.json())\n}\n\nconst markNotificationsAsSeen = ({ id, credentials, single = false }) => {\n const body = new FormData()\n\n if (single) {\n body.append('id', id)\n } else {\n body.append('max_id', id)\n }\n\n return fetch(NOTIFICATION_READ_URL, {\n body,\n headers: authHeaders(credentials),\n method: 'POST'\n }).then((data) => data.json())\n}\n\nconst vote = ({ pollId, choices, credentials }) => {\n const form = new FormData()\n form.append('choices', choices)\n\n return promisedRequest({\n url: MASTODON_VOTE_URL(encodeURIComponent(pollId)),\n method: 'POST',\n credentials,\n payload: {\n choices: choices\n }\n })\n}\n\nconst fetchPoll = ({ pollId, credentials }) => {\n return promisedRequest(\n {\n url: MASTODON_POLL_URL(encodeURIComponent(pollId)),\n method: 'GET',\n credentials\n }\n )\n}\n\nconst fetchFavoritedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_FAVORITEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchRebloggedByUsers = ({ id, credentials }) => {\n return promisedRequest({\n url: MASTODON_STATUS_REBLOGGEDBY_URL(id),\n method: 'GET',\n credentials\n }).then((users) => users.map(parseUser))\n}\n\nconst fetchEmojiReactions = ({ id, credentials }) => {\n return promisedRequest({ url: PLEROMA_EMOJI_REACTIONS_URL(id), credentials })\n .then((reactions) => reactions.map(r => {\n r.accounts = r.accounts.map(parseUser)\n return r\n }))\n}\n\nconst reactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_REACT_URL(id, emoji),\n method: 'PUT',\n credentials\n }).then(parseStatus)\n}\n\nconst unreactWithEmoji = ({ id, emoji, credentials }) => {\n return promisedRequest({\n url: PLEROMA_EMOJI_UNREACT_URL(id, emoji),\n method: 'DELETE',\n credentials\n }).then(parseStatus)\n}\n\nconst reportUser = ({ credentials, userId, statusIds, comment, forward }) => {\n return promisedRequest({\n url: MASTODON_REPORT_USER_URL,\n method: 'POST',\n payload: {\n 'account_id': userId,\n 'status_ids': statusIds,\n comment,\n forward\n },\n credentials\n })\n}\n\nconst searchUsers = ({ credentials, query }) => {\n return promisedRequest({\n url: MASTODON_USER_SEARCH_URL,\n params: {\n q: query,\n resolve: true\n },\n credentials\n })\n .then((data) => data.map(parseUser))\n}\n\nconst search2 = ({ credentials, q, resolve, limit, offset, following }) => {\n let url = MASTODON_SEARCH_2\n let params = []\n\n if (q) {\n params.push(['q', encodeURIComponent(q)])\n }\n\n if (resolve) {\n params.push(['resolve', resolve])\n }\n\n if (limit) {\n params.push(['limit', limit])\n }\n\n if (offset) {\n params.push(['offset', offset])\n }\n\n if (following) {\n params.push(['following', true])\n }\n\n params.push(['with_relationships', true])\n\n let queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n if (data.ok) {\n return data\n }\n throw new Error('Error fetching search result', data)\n })\n .then((data) => { return data.json() })\n .then((data) => {\n data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n return data\n })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'POST',\n payload: { domain },\n credentials\n })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n return promisedRequest({\n url: MASTODON_DOMAIN_BLOCKS_URL,\n method: 'DELETE',\n payload: { domain },\n credentials\n })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n return promisedRequest({\n url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n method: 'POST',\n payload: { id },\n credentials\n })\n}\n\nexport const getMastodonSocketURI = ({ credentials, stream, args = {} }) => {\n return Object.entries({\n ...(credentials\n ? { access_token: credentials }\n : {}\n ),\n stream,\n ...args\n }).reduce((acc, [key, val]) => {\n return acc + `${key}=${val}&`\n }, MASTODON_STREAMING + '?')\n}\n\nconst MASTODON_STREAMING_EVENTS = new Set([\n 'update',\n 'notification',\n 'delete',\n 'filters_changed'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n url,\n preprocessor = handleMastoWS,\n id = 'Unknown'\n}) => {\n const eventTarget = new EventTarget()\n const socket = new WebSocket(url)\n if (!socket) throw new Error(`Failed to create socket ${id}`)\n const proxy = (original, eventName, processor = a => a) => {\n original.addEventListener(eventName, (eventData) => {\n eventTarget.dispatchEvent(new CustomEvent(\n eventName,\n { detail: processor(eventData) }\n ))\n })\n }\n socket.addEventListener('open', (wsEvent) => {\n console.debug(`[WS][${id}] Socket connected`, wsEvent)\n })\n socket.addEventListener('error', (wsEvent) => {\n console.debug(`[WS][${id}] Socket errored`, wsEvent)\n })\n socket.addEventListener('close', (wsEvent) => {\n console.debug(\n `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n wsEvent\n )\n })\n // Commented code reason: very spammy, uncomment to enable message debug logging\n /*\n socket.addEventListener('message', (wsEvent) => {\n console.debug(\n `[WS][${id}] Message received`,\n wsEvent\n )\n })\n /**/\n\n proxy(socket, 'open')\n proxy(socket, 'close')\n proxy(socket, 'message', preprocessor)\n proxy(socket, 'error')\n\n // 1000 = Normal Closure\n eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n\n return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n const { data } = wsEvent\n if (!data) return\n const parsedEvent = JSON.parse(data)\n const { event, payload } = parsedEvent\n if (MASTODON_STREAMING_EVENTS.has(event)) {\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 }\n } else {\n console.warn('Unknown event', wsEvent)\n return null\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 updateAvatar,\n updateBg,\n updateProfile,\n updateBanner,\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}\n\nexport default apiService\n","import { filter, sortBy, includes } from 'lodash'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => ([\n store.state.config.notificationVisibility.likes && 'like',\n store.state.config.notificationVisibility.mentions && 'mention',\n store.state.config.notificationVisibility.repeats && 'repeat',\n store.state.config.notificationVisibility.follows && 'follow',\n store.state.config.notificationVisibility.followRequest && 'follow_request',\n store.state.config.notificationVisibility.moves && 'move',\n store.state.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction'\n].filter(_ => _))\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n // map is just to clone the array since sort mutates it and it causes some issues\n let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n sortedNotifications = sortBy(sortedNotifications, 'seen')\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store =>\n filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n const notifObj = {\n tag: notification.id\n }\n const status = notification.status\n const title = notification.from_profile.name\n notifObj.title = title\n notifObj.icon = notification.from_profile.profile_image_url\n let i18nString\n switch (notification.type) {\n case 'like':\n i18nString = 'favorited_you'\n break\n case 'repeat':\n i18nString = 'repeated_you'\n break\n case 'follow':\n i18nString = 'followed_you'\n break\n case 'move':\n i18nString = 'migrated_to'\n break\n case 'follow_request':\n i18nString = 'follow_request'\n break\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = i18n.t('notifications.' + i18nString)\n } else if (isStatusNotification(notification.type)) {\n notifObj.body = notification.status.text\n }\n\n // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n status.attachments[0].mimetype.startsWith('image/')) {\n notifObj.image = status.attachments[0].url\n }\n\n return notifObj\n}\n","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","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n if (mimetype.match(/text\\/html/)) {\n return 'html'\n }\n\n if (mimetype.match(/image/)) {\n return 'image'\n }\n\n if (mimetype.match(/video/)) {\n return 'video'\n }\n\n if (mimetype.match(/audio/)) {\n return 'audio'\n }\n\n return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileMatchesSomeType\n}\n\nexport default fileTypeService\n","const DialogModal = {\n props: {\n darkOverlay: {\n default: true,\n type: Boolean\n },\n onCancel: {\n default: () => {},\n type: Function\n }\n }\n}\n\nexport default DialogModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./dialog_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./dialog_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./dialog_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-70b9d662\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dialog_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:{ 'dark-overlay': _vm.darkOverlay },on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }$event.stopPropagation();return _vm.onCancel()}}},[_c('div',{staticClass:\"dialog-modal panel panel-default\",on:{\"click\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"panel-heading dialog-modal-heading\"},[_c('div',{staticClass:\"title\"},[_vm._t(\"header\")],2)]),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-content\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{staticClass:\"dialog-modal-footer user-interactions panel-footer\"},[_vm._t(\"footer\")],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n props: [\n 'user'\n ],\n data () {\n return {\n tags: {\n FORCE_NSFW,\n STRIP_MEDIA,\n FORCE_UNLISTED,\n DISABLE_REMOTE_SUBSCRIPTION,\n DISABLE_ANY_SUBSCRIPTION,\n SANDBOX,\n QUARANTINE\n },\n showDeleteUserDialog: false,\n toggled: false\n }\n },\n components: {\n DialogModal,\n Popover\n },\n computed: {\n tagsSet () {\n return new Set(this.user.tags)\n },\n hasTagPolicy () {\n return this.$store.state.instance.tagPolicyAvailable\n }\n },\n methods: {\n hasTag (tagName) {\n return this.tagsSet.has(tagName)\n },\n toggleTag (tag) {\n const store = this.$store\n if (this.tagsSet.has(tag)) {\n store.state.api.backendInteractor.untagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('untagUser', { user: this.user, tag })\n })\n } else {\n store.state.api.backendInteractor.tagUser({ user: this.user, tag }).then(response => {\n if (!response.ok) { return }\n store.commit('tagUser', { user: this.user, tag })\n })\n }\n },\n toggleRight (right) {\n const store = this.$store\n if (this.user.rights[right]) {\n store.state.api.backendInteractor.deleteRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: false })\n })\n } else {\n store.state.api.backendInteractor.addRight({ user: this.user, right }).then(response => {\n if (!response.ok) { return }\n store.commit('updateRight', { user: this.user, right, value: true })\n })\n }\n },\n toggleActivationStatus () {\n this.$store.dispatch('toggleActivationStatus', { user: this.user })\n },\n deleteUserDialog (show) {\n this.showDeleteUserDialog = show\n },\n deleteUser () {\n const store = this.$store\n const user = this.user\n const { id, name } = user\n store.state.api.backendInteractor.deleteUser({ user })\n .then(e => {\n this.$store.dispatch('markStatusesAsDeleted', status => user.id === status.user.id)\n const isProfile = this.$route.name === 'external-user-profile' || this.$route.name === 'user-profile'\n const isTargetUser = this.$route.params.name === name || this.$route.params.id === id\n if (isProfile && isTargetUser) {\n window.history.back()\n }\n })\n },\n setToggled (value) {\n this.toggled = value\n }\n }\n}\n\nexport default ModerationTools\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./moderation_tools.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./moderation_tools.js\"\nimport __vue_script__ from \"!!babel-loader!./moderation_tools.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-168f1ca6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./moderation_tools.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Popover',{staticClass:\"moderation-tools-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"offset\":{ y: 5 }},on:{\"show\":function($event){return _vm.setToggled(true)},\"close\":function($event){return _vm.setToggled(false)}}},[_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.user.is_local)?_c('span',[_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"admin\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleRight(\"moderator\")}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleActivationStatus()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(!!_vm.user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.deleteUserDialog(true)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_account'))+\"\\n \")]),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasTagPolicy)?_c('span',[_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_NSFW)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_nsfw'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_NSFW) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.STRIP_MEDIA)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.strip_media'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.STRIP_MEDIA) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.FORCE_UNLISTED)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.force_unlisted'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.FORCE_UNLISTED) }})]),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.SANDBOX)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.sandbox'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.SANDBOX) }})]),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_remote_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_REMOTE_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.disable_any_subscription'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.DISABLE_ANY_SUBSCRIPTION) }})]):_vm._e(),_vm._v(\" \"),(_vm.user.is_local)?_c('button',{staticClass:\"dropdown-item\",on:{\"click\":function($event){return _vm.toggleTag(_vm.tags.QUARANTINE)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.quarantine'))+\"\\n \"),_c('span',{staticClass:\"menu-checkbox\",class:{ 'menu-checkbox-checked': _vm.hasTag(_vm.tags.QUARANTINE) }})]):_vm._e()]):_vm._e()])]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default btn-block\",class:{ toggled: _vm.toggled },attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.moderation'))+\"\\n \")])]),_vm._v(\" \"),_c('portal',{attrs:{\"to\":\"modal\"}},[(_vm.showDeleteUserDialog)?_c('DialogModal',{attrs:{\"on-cancel\":_vm.deleteUserDialog.bind(this, false)}},[_c('template',{slot:\"header\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('user_card.admin_menu.delete_user_confirmation')))]),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('button',{staticClass:\"btn btn-default\",on:{\"click\":function($event){return _vm.deleteUserDialog(false)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default danger\",on:{\"click\":function($event){return _vm.deleteUser()}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.admin_menu.delete_user'))+\"\\n \")])])],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\n\nconst AccountActions = {\n props: [\n 'user', 'relationship'\n ],\n data () {\n return { }\n },\n components: {\n ProgressButton,\n Popover\n },\n methods: {\n showRepeats () {\n this.$store.dispatch('showReblogs', this.user.id)\n },\n hideRepeats () {\n this.$store.dispatch('hideReblogs', this.user.id)\n },\n blockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n reportUser () {\n this.$store.dispatch('openUserReportingModal', this.user.id)\n }\n }\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-555be8dc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./account_actions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"account-actions\"},[_c('Popover',{attrs:{\"trigger\":\"click\",\"placement\":\"bottom\",\"bound-to\":{ x: 'container' }}},[_c('div',{staticClass:\"account-tools-popover\",attrs:{\"slot\":\"content\"},slot:\"content\"},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.relationship.following)?[(_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn btn-default dropdown-item\",on:{\"click\":_vm.hideRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.hide_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.relationship.showing_reblogs)?_c('button',{staticClass:\"btn btn-default dropdown-item\",on:{\"click\":_vm.showRepeats}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.show_repeats'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"dropdown-divider\",attrs:{\"role\":\"separator\"}})]:_vm._e(),_vm._v(\" \"),(_vm.relationship.blocking)?_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.unblockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.blockUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default btn-block dropdown-item\",on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.report'))+\"\\n \")])],2)]),_vm._v(\" \"),_c('div',{staticClass:\"btn btn-default ellipsis-button\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"},[_c('i',{staticClass:\"icon-ellipsis trigger-button\"})])])],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\nimport ModerationTools from '../moderation_tools/moderation_tools.vue'\nimport AccountActions from '../account_actions/account_actions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\n\nexport default {\n props: [\n 'userId', 'switcher', 'selected', 'hideBio', 'rounded', 'bordered', 'allowZoomingAvatar'\n ],\n data () {\n return {\n followRequestInProgress: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter\n }\n },\n created () {\n this.$store.dispatch('fetchUserRelationship', this.user.id)\n },\n computed: {\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n relationship () {\n return this.$store.getters.relationship(this.userId)\n },\n classes () {\n return [{\n 'user-card-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n 'user-card-rounded': this.rounded === true, // set border-radius for all sides\n 'user-card-bordered': this.bordered === true // set border for all sides\n }]\n },\n style () {\n return {\n backgroundImage: [\n `linear-gradient(to bottom, var(--profileTint), var(--profileTint))`,\n `url(${this.user.cover_photo})`\n ].join(', ')\n }\n },\n isOtherUser () {\n return this.user.id !== this.$store.state.users.currentUser.id\n },\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n dailyAvg () {\n const days = Math.ceil((new Date() - new Date(this.user.created_at)) / (60 * 60 * 24 * 1000))\n return Math.round(this.user.statuses_count / days)\n },\n userHighlightType: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return (data && data.type) || 'disabled'\n },\n set (type) {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n if (type !== 'disabled') {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: (data && data.color) || '#FFFFFF', type })\n } else {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color: undefined })\n }\n },\n ...mapGetters(['mergedConfig'])\n },\n userHighlightColor: {\n get () {\n const data = this.$store.getters.mergedConfig.highlight[this.user.screen_name]\n return data && data.color\n },\n set (color) {\n this.$store.dispatch('setHighlight', { user: this.user.screen_name, color })\n }\n },\n visibleRole () {\n const rights = this.user.rights\n if (!rights) { return }\n const validRole = rights.admin || rights.moderator\n const roleTitle = rights.admin ? 'admin' : 'moderator'\n return validRole && roleTitle\n },\n hideFollowsCount () {\n return this.isOtherUser && this.user.hide_follows_count\n },\n hideFollowersCount () {\n return this.isOtherUser && this.user.hide_followers_count\n },\n ...mapGetters(['mergedConfig'])\n },\n components: {\n UserAvatar,\n RemoteFollow,\n ModerationTools,\n AccountActions,\n ProgressButton,\n FollowButton\n },\n methods: {\n muteUser () {\n this.$store.dispatch('muteUser', this.user.id)\n },\n unmuteUser () {\n this.$store.dispatch('unmuteUser', this.user.id)\n },\n subscribeUser () {\n return this.$store.dispatch('subscribeUser', this.user.id)\n },\n unsubscribeUser () {\n return this.$store.dispatch('unsubscribeUser', this.user.id)\n },\n setProfileView (v) {\n if (this.switcher) {\n const store = this.$store\n store.commit('setProfileView', { v })\n }\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n userProfileLink (user) {\n return generateProfileLink(\n user.id, user.screen_name,\n this.$store.state.instance.restrictedNicknames\n )\n },\n zoomAvatar () {\n const attachment = {\n url: this.user.profile_image_url_original,\n mimetype: 'image'\n }\n this.$store.dispatch('setMedia', [attachment])\n this.$store.dispatch('setCurrent', attachment)\n },\n mentionUser () {\n this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-037aac13\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-card\",class:_vm.classes},[_c('div',{staticClass:\"background-image\",class:{ 'hide-bio': _vm.hideBio },style:(_vm.style)}),_vm._v(\" \"),_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"user-info\"},[_c('div',{staticClass:\"container\"},[(_vm.allowZoomingAvatar)?_c('a',{staticClass:\"user-info-avatar-link\",on:{\"click\":_vm.zoomAvatar}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}}),_vm._v(\" \"),_vm._m(0)],1):_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.user}})],1),_vm._v(\" \"),_c('div',{staticClass:\"user-summary\"},[_c('div',{staticClass:\"top-line\"},[(_vm.user.name_html)?_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name},domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('div',{staticClass:\"user-name\",attrs:{\"title\":_vm.user.name}},[_vm._v(\"\\n \"+_vm._s(_vm.user.name)+\"\\n \")]),_vm._v(\" \"),(_vm.isOtherUser && !_vm.user.is_local)?_c('a',{attrs:{\"href\":_vm.user.statusnet_profile_url,\"target\":\"_blank\"}},[_c('i',{staticClass:\"icon-link-ext usersettings\"})]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && _vm.loggedIn)?_c('AccountActions',{attrs:{\"user\":_vm.user,\"relationship\":_vm.relationship}}):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"bottom-line\"},[_c('router-link',{staticClass:\"user-screen-name\",attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name)+\"\\n \")]),_vm._v(\" \"),(!_vm.hideBio)?[(!!_vm.visibleRole)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n \"+_vm._s(_vm.visibleRole)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.user.bot)?_c('span',{staticClass:\"alert user-role\"},[_vm._v(\"\\n bot\\n \")]):_vm._e()]:_vm._e(),_vm._v(\" \"),(_vm.user.locked)?_c('span',[_c('i',{staticClass:\"icon icon-lock\"})]):_vm._e(),_vm._v(\" \"),(!_vm.mergedConfig.hideUserStats && !_vm.hideBio)?_c('span',{staticClass:\"dailyAvg\"},[_vm._v(_vm._s(_vm.dailyAvg)+\" \"+_vm._s(_vm.$t('user_card.per_day')))]):_vm._e()],2)])],1),_vm._v(\" \"),_c('div',{staticClass:\"user-meta\"},[(_vm.relationship.followed_by && _vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"following\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isOtherUser && (_vm.loggedIn || !_vm.switcher))?_c('div',{staticClass:\"highlighter\"},[(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightText\",attrs:{\"id\":'userHighlightColorTx'+_vm.user.id,\"type\":\"text\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),(_vm.userHighlightType !== 'disabled')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightColor),expression:\"userHighlightColor\"}],staticClass:\"userHighlightCl\",attrs:{\"id\":'userHighlightColor'+_vm.user.id,\"type\":\"color\"},domProps:{\"value\":(_vm.userHighlightColor)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.userHighlightColor=$event.target.value}}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"userHighlightSel select\",attrs:{\"for\":\"theme_tab\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.userHighlightType),expression:\"userHighlightType\"}],staticClass:\"userHighlightSel\",attrs:{\"id\":'userHighlightSel'+_vm.user.id},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.userHighlightType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"disabled\"}},[_vm._v(\"No highlight\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"solid\"}},[_vm._v(\"Solid bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"striped\"}},[_vm._v(\"Striped bg\")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"side\"}},[_vm._v(\"Side stripe\")])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_vm._e()]),_vm._v(\" \"),(_vm.loggedIn && _vm.isOtherUser)?_c('div',{staticClass:\"user-interactions\"},[_c('div',{staticClass:\"btn-group\"},[_c('FollowButton',{attrs:{\"relationship\":_vm.relationship}}),_vm._v(\" \"),(_vm.relationship.following)?[(!_vm.relationship.subscribing)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":_vm.subscribeUser,\"title\":_vm.$t('user_card.subscribe')}},[_c('i',{staticClass:\"icon-bell-alt\"})]):_c('ProgressButton',{staticClass:\"btn btn-default toggled\",attrs:{\"click\":_vm.unsubscribeUser,\"title\":_vm.$t('user_card.unsubscribe')}},[_c('i',{staticClass:\"icon-bell-ringing-o\"})])]:_vm._e()],2),_vm._v(\" \"),_c('div',[(_vm.relationship.muting)?_c('button',{staticClass:\"btn btn-default btn-block toggled\",on:{\"click\":_vm.unmuteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.muted'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default btn-block\",on:{\"click\":_vm.muteUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")])]),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn btn-default btn-block\",on:{\"click\":_vm.mentionUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mention'))+\"\\n \")])]),_vm._v(\" \"),(_vm.loggedIn.role === \"admin\")?_c('ModerationTools',{attrs:{\"user\":_vm.user}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn && _vm.user.is_local)?_c('div',{staticClass:\"user-interactions\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()])]),_vm._v(\" \"),(!_vm.hideBio)?_c('div',{staticClass:\"panel-body\"},[(!_vm.mergedConfig.hideUserStats && _vm.switcher)?_c('div',{staticClass:\"user-counts\"},[_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('statuses')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.statuses')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.user.statuses_count)+\" \"),_c('br')])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('friends')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followees')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowsCount ? _vm.$t('user_card.hidden') : _vm.user.friends_count))])]),_vm._v(\" \"),_c('div',{staticClass:\"user-count\",on:{\"click\":function($event){$event.preventDefault();return _vm.setProfileView('followers')}}},[_c('h5',[_vm._v(_vm._s(_vm.$t('user_card.followers')))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.hideFollowersCount ? _vm.$t('user_card.hidden') : _vm.user.followers_count))])])]):_vm._e(),_vm._v(\" \"),(!_vm.hideBio && _vm.user.description_html)?_c('p',{staticClass:\"user-card-bio\",domProps:{\"innerHTML\":_vm._s(_vm.user.description_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):(!_vm.hideBio)?_c('p',{staticClass:\"user-card-bio\"},[_vm._v(\"\\n \"+_vm._s(_vm.user.description)+\"\\n \")]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-info-avatar-link-overlay\"},[_c('i',{staticClass:\"button-icon icon-zoom-in\"})])}]\nexport { render, staticRenderFns }","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 }\n },\n components: {\n StillImage\n },\n computed: {\n imgSrc () {\n return this.showPlaceholder ? '/images/avi.png' : this.user.profile_image_url_original\n }\n },\n methods: {\n imageLoadError () {\n this.showPlaceholder = true\n }\n },\n watch: {\n src () {\n this.showPlaceholder = false\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-056a5e34\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_avatar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('StillImage',{staticClass:\"avatar\",class:{ 'avatar-compact': _vm.compact, 'better-shadow': _vm.betterShadow },attrs:{\"alt\":_vm.user.screen_name,\"title\":_vm.user.screen_name,\"src\":_vm.imgSrc,\"image-load-error\":_vm.imageLoadError}})}\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}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n profileTint: 0.5,\n alert: 0.5,\n input: 0.5,\n faint: 0.5,\n underlay: 0.15,\n alertPopup: 0.95\n}\n\n/** SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n * dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n * defined in hexadecimal representation (i.e. #FFFFFF) and will be\n * used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n * cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n * opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n * that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n * used to determine the color. By default it just copies first color in\n * dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n * depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n * color from `depends` array. All colors take user customizations into\n * account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n * color. This enables automatic text color generation for the slot. Use\n * 'preserve' string if you don't want text color to fall back to\n * black/white. Use 'bw' to only ever use black or white. This also makes\n * following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n * to account for transparency in text color calculation\n * layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n * above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n bg: {\n depends: [],\n opacity: 'bg',\n priority: 1\n },\n fg: {\n depends: [],\n priority: 1\n },\n text: {\n depends: [],\n layer: 'bg',\n opacity: null,\n priority: 1\n },\n underlay: {\n default: '#000000',\n opacity: 'underlay'\n },\n link: {\n depends: ['accent'],\n priority: 1\n },\n accent: {\n depends: ['link'],\n priority: 1\n },\n faint: {\n depends: ['text'],\n opacity: 'faint'\n },\n faintLink: {\n depends: ['link'],\n opacity: 'faint'\n },\n postFaintLink: {\n depends: ['postLink'],\n opacity: 'faint'\n },\n\n cBlue: '#0000ff',\n cRed: '#FF0000',\n cGreen: '#00FF00',\n cOrange: '#E3FF00',\n\n profileBg: {\n depends: ['bg'],\n color: (mod, bg) => ({\n r: Math.floor(bg.r * 0.53),\n g: Math.floor(bg.g * 0.56),\n b: Math.floor(bg.b * 0.59)\n })\n },\n profileTint: {\n depends: ['bg'],\n layer: 'profileTint',\n opacity: 'profileTint'\n },\n\n highlight: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n highlightLightText: {\n depends: ['lightText'],\n layer: 'highlight',\n textColor: true\n },\n highlightPostLink: {\n depends: ['postLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightFaintText: {\n depends: ['faint'],\n layer: 'highlight',\n textColor: true\n },\n highlightFaintLink: {\n depends: ['faintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightText: {\n depends: ['text'],\n layer: 'highlight',\n textColor: true\n },\n highlightLink: {\n depends: ['link'],\n layer: 'highlight',\n textColor: 'preserve'\n },\n highlightIcon: {\n depends: ['highlight', 'highlightText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n popover: {\n depends: ['bg'],\n opacity: 'popover'\n },\n popoverLightText: {\n depends: ['lightText'],\n layer: 'popover',\n textColor: true\n },\n popoverPostLink: {\n depends: ['postLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverFaintText: {\n depends: ['faint'],\n layer: 'popover',\n textColor: true\n },\n popoverFaintLink: {\n depends: ['faintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverPostFaintLink: {\n depends: ['postFaintLink'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverText: {\n depends: ['text'],\n layer: 'popover',\n textColor: true\n },\n popoverLink: {\n depends: ['link'],\n layer: 'popover',\n textColor: 'preserve'\n },\n popoverIcon: {\n depends: ['popover', 'popoverText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedPost: '--highlight',\n selectedPostFaintText: {\n depends: ['highlightFaintText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLightText: {\n depends: ['highlightLightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostPostLink: {\n depends: ['highlightPostLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostText: {\n depends: ['highlightText'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: true\n },\n selectedPostLink: {\n depends: ['highlightLink'],\n layer: 'highlight',\n variant: 'selectedPost',\n textColor: 'preserve'\n },\n selectedPostIcon: {\n depends: ['selectedPost', 'selectedPostText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenu: {\n depends: ['bg'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuLightText: {\n depends: ['highlightLightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintText: {\n depends: ['highlightFaintText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuFaintLink: {\n depends: ['highlightFaintLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuText: {\n depends: ['highlightText'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: true\n },\n selectedMenuLink: {\n depends: ['highlightLink'],\n layer: 'selectedMenu',\n variant: 'selectedMenu',\n textColor: 'preserve'\n },\n selectedMenuIcon: {\n depends: ['selectedMenu', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n selectedMenuPopover: {\n depends: ['popover'],\n color: (mod, bg) => brightness(5 * mod, bg).rgb\n },\n selectedMenuPopoverLightText: {\n depends: ['selectedMenuLightText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintText: {\n depends: ['selectedMenuFaintText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverFaintLink: {\n depends: ['selectedMenuFaintLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverText: {\n depends: ['selectedMenuText'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: true\n },\n selectedMenuPopoverLink: {\n depends: ['selectedMenuLink'],\n layer: 'selectedMenuPopover',\n variant: 'selectedMenuPopover',\n textColor: 'preserve'\n },\n selectedMenuPopoverIcon: {\n depends: ['selectedMenuPopover', 'selectedMenuText'],\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n lightText: {\n depends: ['text'],\n layer: 'bg',\n textColor: 'preserve',\n color: (mod, text) => brightness(20 * mod, text).rgb\n },\n\n postLink: {\n depends: ['link'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n postGreentext: {\n depends: ['cGreen'],\n layer: 'bg',\n textColor: 'preserve'\n },\n\n border: {\n depends: ['fg'],\n opacity: 'border',\n color: (mod, fg) => brightness(2 * mod, fg).rgb\n },\n\n poll: {\n depends: ['accent', 'bg'],\n copacity: 'poll',\n color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n },\n pollText: {\n depends: ['text'],\n layer: 'poll',\n textColor: true\n },\n\n icon: {\n depends: ['bg', 'text'],\n inheritsOpacity: false,\n color: (mod, bg, text) => mixrgb(bg, text)\n },\n\n // Foreground\n fgText: {\n depends: ['text'],\n layer: 'fg',\n textColor: true\n },\n fgLink: {\n depends: ['link'],\n layer: 'fg',\n textColor: 'preserve'\n },\n\n // Panel header\n panel: {\n depends: ['fg'],\n opacity: 'panel'\n },\n panelText: {\n depends: ['text'],\n layer: 'panel',\n textColor: true\n },\n panelFaint: {\n depends: ['fgText'],\n layer: 'panel',\n opacity: 'faint',\n textColor: true\n },\n panelLink: {\n depends: ['fgLink'],\n layer: 'panel',\n textColor: 'preserve'\n },\n\n // Top bar\n topBar: '--fg',\n topBarText: {\n depends: ['fgText'],\n layer: 'topBar',\n textColor: true\n },\n topBarLink: {\n depends: ['fgLink'],\n layer: 'topBar',\n textColor: 'preserve'\n },\n\n // Tabs\n tab: {\n depends: ['btn']\n },\n tabText: {\n depends: ['btnText'],\n layer: 'btn',\n textColor: true\n },\n tabActiveText: {\n depends: ['text'],\n layer: 'bg',\n textColor: true\n },\n\n // Buttons\n btn: {\n depends: ['fg'],\n variant: 'btn',\n opacity: 'btn'\n },\n btnText: {\n depends: ['fgText'],\n layer: 'btn',\n textColor: true\n },\n btnPanelText: {\n depends: ['btnText'],\n layer: 'btnPanel',\n variant: 'btn',\n textColor: true\n },\n btnTopBarText: {\n depends: ['btnText'],\n layer: 'btnTopBar',\n variant: 'btn',\n textColor: true\n },\n\n // Buttons: pressed\n btnPressed: {\n depends: ['btn'],\n layer: 'btn'\n },\n btnPressedText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedPanel: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnPressed',\n textColor: true\n },\n btnPressedTopBar: {\n depends: ['btnPressed'],\n layer: 'btn'\n },\n btnPressedTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnPressed',\n textColor: true\n },\n\n // Buttons: toggled\n btnToggled: {\n depends: ['btn'],\n layer: 'btn',\n color: (mod, btn) => brightness(mod * 20, btn).rgb\n },\n btnToggledText: {\n depends: ['btnText'],\n layer: 'btn',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledPanelText: {\n depends: ['btnPanelText'],\n layer: 'btnPanel',\n variant: 'btnToggled',\n textColor: true\n },\n btnToggledTopBarText: {\n depends: ['btnTopBarText'],\n layer: 'btnTopBar',\n variant: 'btnToggled',\n textColor: true\n },\n\n // Buttons: disabled\n btnDisabled: {\n depends: ['btn', 'bg'],\n color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n },\n btnDisabledText: {\n depends: ['btnText', 'btnDisabled'],\n layer: 'btn',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledPanelText: {\n depends: ['btnPanelText', 'btnDisabled'],\n layer: 'btnPanel',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n btnDisabledTopBarText: {\n depends: ['btnTopBarText', 'btnDisabled'],\n layer: 'btnTopBar',\n variant: 'btnDisabled',\n color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n },\n\n // Input fields\n input: {\n depends: ['fg'],\n opacity: 'input'\n },\n inputText: {\n depends: ['text'],\n layer: 'input',\n textColor: true\n },\n inputPanelText: {\n depends: ['panelText'],\n layer: 'inputPanel',\n variant: 'input',\n textColor: true\n },\n inputTopbarText: {\n depends: ['topBarText'],\n layer: 'inputTopBar',\n variant: 'input',\n textColor: true\n },\n\n alertError: {\n depends: ['cRed'],\n opacity: 'alert'\n },\n alertErrorText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertError',\n textColor: true\n },\n alertErrorPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertError',\n textColor: true\n },\n\n alertWarning: {\n depends: ['cOrange'],\n opacity: 'alert'\n },\n alertWarningText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertWarning',\n textColor: true\n },\n alertWarningPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertWarning',\n textColor: true\n },\n\n alertNeutral: {\n depends: ['text'],\n opacity: 'alert'\n },\n alertNeutralText: {\n depends: ['text'],\n layer: 'alert',\n variant: 'alertNeutral',\n color: (mod, text) => invertLightness(text).rgb,\n textColor: true\n },\n alertNeutralPanelText: {\n depends: ['panelText'],\n layer: 'alertPanel',\n variant: 'alertNeutral',\n textColor: true\n },\n\n alertPopupError: {\n depends: ['alertError'],\n opacity: 'alertPopup'\n },\n alertPopupErrorText: {\n depends: ['alertErrorText'],\n layer: 'popover',\n variant: 'alertPopupError',\n textColor: true\n },\n\n alertPopupWarning: {\n depends: ['alertWarning'],\n opacity: 'alertPopup'\n },\n alertPopupWarningText: {\n depends: ['alertWarningText'],\n layer: 'popover',\n variant: 'alertPopupWarning',\n textColor: true\n },\n\n alertPopupNeutral: {\n depends: ['alertNeutral'],\n opacity: 'alertPopup'\n },\n alertPopupNeutralText: {\n depends: ['alertNeutralText'],\n layer: 'popover',\n variant: 'alertPopupNeutral',\n textColor: true\n },\n\n badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n }\n}\n","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 })\n\n return {\n rules: {\n radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n },\n theme: {\n radii\n }\n }\n}\n\nexport const generateFonts = (input) => {\n const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, acc[k])\n return acc\n }, {\n interface: {\n family: 'sans-serif'\n },\n input: {\n family: 'inherit'\n },\n post: {\n family: 'inherit'\n },\n postCode: {\n family: 'monospace'\n }\n })\n\n return {\n rules: {\n fonts: Object\n .entries(fonts)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n },\n theme: {\n fonts\n }\n }\n}\n\nconst border = (top, shadow) => ({\n x: 0,\n y: top ? 1 : -1,\n blur: 0,\n spread: 0,\n color: shadow ? '#000000' : '#FFFFFF',\n alpha: 0.2,\n inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--faint',\n alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n panel: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n topBar: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n popup: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }],\n avatar: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }],\n avatarStatus: [],\n panelHeader: [],\n button: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, ...buttonInsetFakeBorders],\n buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n input: [...inputInsetFakeBorders, {\n x: 0,\n y: 0,\n blur: 2,\n inset: true,\n spread: 0,\n color: '#000000',\n alpha: 1\n }]\n}\nexport const generateShadows = (input, colors) => {\n // TODO this is a small hack for `mod` to work with shadows\n // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n const hackContextDict = {\n button: 'btn',\n panel: 'bg',\n top: 'topBar',\n popup: 'popover',\n avatar: 'bg',\n panelHeader: 'panel',\n input: 'input'\n }\n const inputShadows = input.shadows && !input.themeEngineVersion\n ? shadows2to3(input.shadows, input.opacity)\n : input.shadows || {}\n const shadows = Object.entries({\n ...DEFAULT_SHADOWS,\n ...inputShadows\n }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n const colorSlotName = hackContextDict[slotFirstWord]\n const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n color: rgb2hex(computeDynamicColor(\n def.color,\n (variableSlot) => convert(colors[variableSlot]).rgb,\n mod\n ))\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n\n return {\n rules: {\n shadows: Object\n .entries(shadows)\n // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n // convert all non-inset shadows into filter: drop-shadow() to boost performance\n .map(([k, v]) => [\n `--${k}Shadow: ${getCssShadow(v)}`,\n `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n `--${k}ShadowInset: ${getCssShadow(v, true)}`\n ].join(';'))\n .join(';')\n },\n theme: {\n shadows\n }\n }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n return {\n rules: {\n ...shadows.rules,\n ...colors.rules,\n ...radii.rules,\n ...fonts.rules\n },\n theme: {\n ...shadows.theme,\n ...colors.theme,\n ...radii.theme,\n ...fonts.theme\n }\n }\n}\n\nexport const generatePreset = (input) => {\n const colors = generateColors(input)\n return composePreset(\n colors,\n generateRadii(input),\n generateShadows(input, colors.theme.colors, colors.mod),\n generateFonts(input)\n )\n}\n\nexport const getThemes = () => {\n const cache = 'no-store'\n\n return window.fetch('/static/styles.json', { cache })\n .then((data) => data.json())\n .then((themes) => {\n return Object.entries(themes).map(([k, v]) => {\n let promise = null\n if (typeof v === 'object') {\n promise = Promise.resolve(v)\n } else if (typeof v === 'string') {\n promise = window.fetch(v, { cache })\n .then((data) => data.json())\n .catch((e) => {\n console.error(e)\n return null\n })\n }\n return [k, promise]\n })\n })\n .then((promises) => {\n return promises\n .reduce((acc, [k, v]) => {\n acc[k] = v\n return acc\n }, {})\n })\n}\nexport const colors2to3 = (colors) => {\n return Object.entries(colors).reduce((acc, [slotName, color]) => {\n const btnPositions = ['', 'Panel', 'TopBar']\n switch (slotName) {\n case 'lightBg':\n return { ...acc, highlight: color }\n case 'btnText':\n return {\n ...acc,\n ...btnPositions\n .reduce(\n (statePositionAcc, position) =>\n ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n , {}\n )\n }\n default:\n return { ...acc, [slotName]: color }\n }\n }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n const isDynamic = ({ color }) => color.startsWith('--')\n const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n ...shadowAcc,\n {\n ...def,\n alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n }\n ], [])\n return { ...shadowsAcc, [slotName]: newShadow }\n }, {})\n}\n\nexport const getPreset = (val) => {\n return getThemes()\n .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n .then((theme) => {\n const isV1 = Array.isArray(theme)\n const data = isV1 ? {} : theme.theme\n\n if (isV1) {\n const bg = hex2rgb(theme[1])\n const fg = hex2rgb(theme[2])\n const text = hex2rgb(theme[3])\n const link = hex2rgb(theme[4])\n\n const cRed = hex2rgb(theme[5] || '#FF0000')\n const cGreen = hex2rgb(theme[6] || '#00FF00')\n const cBlue = hex2rgb(theme[7] || '#0000FF')\n const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n }\n\n return { theme: data, source: theme.source }\n })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { mapGetters } from 'vuex'\n\nconst FavoriteButton = {\n props: ['status', 'loggedIn'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n favorite () {\n if (!this.status.favorited) {\n this.$store.dispatch('favorite', { id: this.status.id })\n } else {\n this.$store.dispatch('unfavorite', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n classes () {\n return {\n 'icon-star-empty': !this.status.favorited,\n 'icon-star': this.status.favorited,\n 'animate-spin': this.animated\n }\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default FavoriteButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./favorite_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./favorite_button.js\"\nimport __vue_script__ from \"!!babel-loader!./favorite_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2ced002f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./favorite_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon favorite-button fav-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')},on:{\"click\":function($event){$event.preventDefault();return _vm.favorite()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()]):_c('div',[_c('i',{staticClass:\"button-icon favorite-button\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.favorite')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.fave_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.fave_num))]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\n\nconst ReactButton = {\n props: ['status'],\n data () {\n return {\n filterWord: ''\n }\n },\n components: {\n Popover\n },\n methods: {\n addReaction (event, emoji, close) {\n const existingReaction = this.status.emoji_reactions.find(r => r.name === emoji)\n if (existingReaction && existingReaction.me) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n } else {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n }\n close()\n }\n },\n computed: {\n commonEmojis () {\n return ['👍', '😠', '👀', '😂', '🔥']\n },\n emojis () {\n if (this.filterWord !== '') {\n return this.$store.state.instance.emoji.filter(emoji => emoji.displayText.includes(this.filterWord))\n }\n return this.$store.state.instance.emoji || []\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default ReactButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./react_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./react_button.js\"\nimport __vue_script__ from \"!!babel-loader!./react_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-185f65eb\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./react_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"react-button-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"offset\":{ y: 5 }},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"reaction-picker-filter\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterWord),expression:\"filterWord\"}],attrs:{\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.filterWord)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterWord=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker\"},[_vm._l((_vm.commonEmojis),function(emoji){return _c('span',{key:emoji,staticClass:\"emoji-button\",on:{\"click\":function($event){return _vm.addReaction($event, emoji, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-picker-divider\"}),_vm._v(\" \"),_vm._l((_vm.emojis),function(emoji,key){return _c('span',{key:key,staticClass:\"emoji-button\",on:{\"click\":function($event){return _vm.addReaction($event, emoji.replacement, close)}}},[_vm._v(\"\\n \"+_vm._s(emoji.replacement)+\"\\n \")])}),_vm._v(\" \"),_c('div',{staticClass:\"reaction-bottom-fader\"})],2)])}}])},[_vm._v(\" \"),_c('i',{staticClass:\"icon-smile button-icon add-reaction-button\",attrs:{\"slot\":\"trigger\",\"title\":_vm.$t('tool_tip.add_reaction')},slot:\"trigger\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapGetters } from 'vuex'\n\nconst RetweetButton = {\n props: ['status', 'loggedIn', 'visibility'],\n data () {\n return {\n animated: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated) {\n this.$store.dispatch('retweet', { id: this.status.id })\n } else {\n this.$store.dispatch('unretweet', { id: this.status.id })\n }\n this.animated = true\n setTimeout(() => {\n this.animated = false\n }, 500)\n }\n },\n computed: {\n classes () {\n return {\n 'retweeted': this.status.repeated,\n 'retweeted-empty': !this.status.repeated,\n 'animate-spin': this.animated\n }\n },\n ...mapGetters(['mergedConfig'])\n }\n}\n\nexport default RetweetButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./retweet_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./retweet_button.js\"\nimport __vue_script__ from \"!!babel-loader!./retweet_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-538410cc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./retweet_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loggedIn)?_c('div',[(_vm.visibility !== 'private' && _vm.visibility !== 'direct')?[_c('i',{staticClass:\"button-icon retweet-button icon-retweet rt-active\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')},on:{\"click\":function($event){$event.preventDefault();return _vm.retweet()}}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]:[_c('i',{staticClass:\"button-icon icon-lock\",class:_vm.classes,attrs:{\"title\":_vm.$t('timeline.no_retweet_hint')}})]],2):(!_vm.loggedIn)?_c('div',[_c('i',{staticClass:\"button-icon icon-retweet\",class:_vm.classes,attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),(!_vm.mergedConfig.hidePostStats && _vm.status.repeat_num > 0)?_c('span',[_vm._v(_vm._s(_vm.status.repeat_num))]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Popover from '../popover/popover.vue'\n\nconst ExtraButtons = {\n props: [ 'status' ],\n components: { Popover },\n methods: {\n deleteStatus () {\n const confirmed = window.confirm(this.$t('status.delete_confirm'))\n if (confirmed) {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n }\n },\n pinStatus () {\n this.$store.dispatch('pinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unpinStatus () {\n this.$store.dispatch('unpinStatus', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n muteConversation () {\n this.$store.dispatch('muteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unmuteConversation () {\n this.$store.dispatch('unmuteConversation', this.status.id)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n copyLink () {\n navigator.clipboard.writeText(this.statusLink)\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n bookmarkStatus () {\n this.$store.dispatch('bookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n },\n unbookmarkStatus () {\n this.$store.dispatch('unbookmark', { id: this.status.id })\n .then(() => this.$emit('onSuccess'))\n .catch(err => this.$emit('onError', err.error.error))\n }\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n canDelete () {\n if (!this.currentUser) { return }\n const superuser = this.currentUser.rights.moderator || this.currentUser.rights.admin\n return superuser || this.status.user.id === this.currentUser.id\n },\n ownStatus () {\n return this.status.user.id === this.currentUser.id\n },\n canPin () {\n return this.ownStatus && (this.status.visibility === 'public' || this.status.visibility === 'unlisted')\n },\n canMute () {\n return !!this.currentUser\n },\n statusLink () {\n return `${this.$store.state.instance.server}${this.$router.resolve({ name: 'conversation', params: { id: this.status.id } }).href}`\n }\n }\n}\n\nexport default ExtraButtons\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./extra_buttons.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./extra_buttons.js\"\nimport __vue_script__ from \"!!babel-loader!./extra_buttons.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2d820a60\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./extra_buttons.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{staticClass:\"extra-button-popover\",attrs:{\"trigger\":\"click\",\"placement\":\"top\",\"bound-to\":{ x: 'container' }},scopedSlots:_vm._u([{key:\"content\",fn:function(ref){\nvar close = ref.close;\nreturn _c('div',{},[_c('div',{staticClass:\"dropdown-menu\"},[(_vm.canMute && !_vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.muteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.mute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canMute && _vm.status.thread_muted)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.unmuteConversation($event)}}},[_c('i',{staticClass:\"icon-eye-off\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unmute_conversation\")))])]):_vm._e(),_vm._v(\" \"),(!_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.pinStatus($event)},close]}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.pin\")))])]):_vm._e(),_vm._v(\" \"),(_vm.status.pinned && _vm.canPin)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unpinStatus($event)},close]}},[_c('i',{staticClass:\"icon-pin\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unpin\")))])]):_vm._e(),_vm._v(\" \"),(!_vm.status.bookmarked)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.bookmarkStatus($event)},close]}},[_c('i',{staticClass:\"icon-bookmark-empty\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.bookmark\")))])]):_vm._e(),_vm._v(\" \"),(_vm.status.bookmarked)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.unbookmarkStatus($event)},close]}},[_c('i',{staticClass:\"icon-bookmark\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.unbookmark\")))])]):_vm._e(),_vm._v(\" \"),(_vm.canDelete)?_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.deleteStatus($event)},close]}},[_c('i',{staticClass:\"icon-cancel\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.delete\")))])]):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"dropdown-item dropdown-item-icon\",on:{\"click\":[function($event){$event.preventDefault();return _vm.copyLink($event)},close]}},[_c('i',{staticClass:\"icon-share\"}),_c('span',[_vm._v(_vm._s(_vm.$t(\"status.copy_link\")))])])])])}}])},[_vm._v(\" \"),_c('i',{staticClass:\"icon-ellipsis button-icon\",attrs:{\"slot\":\"trigger\"},slot:\"trigger\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import 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 }","import { find } from 'lodash'\n\nconst StatusPopover = {\n name: 'StatusPopover',\n props: [\n 'statusId'\n ],\n data () {\n return {\n error: false\n }\n },\n computed: {\n status () {\n return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n }\n },\n components: {\n Status: () => import('../status/status.vue'),\n Popover: () => import('../popover/popover.vue')\n },\n methods: {\n enter () {\n if (!this.status) {\n if (!this.statusId) {\n this.error = true\n return\n }\n this.$store.dispatch('fetchStatus', this.statusId)\n .then(data => (this.error = false))\n .catch(e => (this.error = true))\n }\n }\n }\n}\n\nexport default StatusPopover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status_popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status_popover.js\"\nimport __vue_script__ from \"!!babel-loader!./status_popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3b873076\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popover',{attrs:{\"trigger\":\"hover\",\"popover-class\":\"status-popover\",\"bound-to\":{ x: 'container' }},on:{\"show\":_vm.enter}},[_c('template',{slot:\"trigger\"},[_vm._t(\"default\")],2),_vm._v(\" \"),_c('div',{attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.status)?_c('Status',{attrs:{\"is-preview\":true,\"statusoid\":_vm.status,\"compact\":true}}):(_vm.error)?_c('div',{staticClass:\"status-preview-no-content faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.status_unavailable'))+\"\\n \")]):_c('div',{staticClass:\"status-preview-no-content\"},[_c('i',{staticClass:\"icon-spin4 animate-spin\"})])],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport Popover from '../popover/popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n name: 'EmojiReactions',\n components: {\n UserAvatar,\n Popover\n },\n props: ['status'],\n data: () => ({\n showAll: false\n }),\n computed: {\n tooManyReactions () {\n return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n },\n emojiReactions () {\n return this.showAll\n ? this.status.emoji_reactions\n : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n },\n showMoreString () {\n return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n },\n accountsForEmoji () {\n return this.status.emoji_reactions.reduce((acc, reaction) => {\n acc[reaction.name] = reaction.accounts || []\n return acc\n }, {})\n },\n loggedIn () {\n return !!this.$store.state.users.currentUser\n }\n },\n methods: {\n toggleShowAll () {\n this.showAll = !this.showAll\n },\n reactedWith (emoji) {\n return this.status.emoji_reactions.find(r => r.name === emoji).me\n },\n fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n }\n },\n reactWith (emoji) {\n this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n },\n unreact (emoji) {\n this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n },\n emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n }\n }\n}\n\nexport default EmojiReactions\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./emoji_reactions.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_reactions.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_reactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-09ec7fb6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_reactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-reactions\"},[_vm._l((_vm.emojiReactions),function(reaction){return _c('Popover',{key:reaction.name,attrs:{\"trigger\":\"hover\",\"placement\":\"top\",\"offset\":{ y: 5 }}},[_c('div',{staticClass:\"reacted-users\",attrs:{\"slot\":\"content\"},slot:\"content\"},[(_vm.accountsForEmoji[reaction.name].length)?_c('div',_vm._l((_vm.accountsForEmoji[reaction.name]),function(account){return _c('div',{key:account.id,staticClass:\"reacted-user\"},[_c('UserAvatar',{staticClass:\"avatar-small\",attrs:{\"user\":account,\"compact\":true}}),_vm._v(\" \"),_c('div',{staticClass:\"reacted-user-names\"},[_c('span',{staticClass:\"reacted-user-name\",domProps:{\"innerHTML\":_vm._s(account.name_html)}}),_vm._v(\" \"),_c('span',{staticClass:\"reacted-user-screen-name\"},[_vm._v(_vm._s(account.screen_name))])])],1)}),0):_c('div',[_c('i',{staticClass:\"icon-spin4 animate-spin\"})])]),_vm._v(\" \"),_c('button',{staticClass:\"emoji-reaction btn btn-default\",class:{ 'picked-reaction': _vm.reactedWith(reaction.name), 'not-clickable': !_vm.loggedIn },attrs:{\"slot\":\"trigger\"},on:{\"click\":function($event){return _vm.emojiOnClick(reaction.name, $event)},\"mouseenter\":function($event){return _vm.fetchEmojiReactionsByIfMissing()}},slot:\"trigger\"},[_c('span',{staticClass:\"reaction-emoji\"},[_vm._v(_vm._s(reaction.name))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(reaction.count))])])])}),_vm._v(\" \"),(_vm.tooManyReactions)?_c('a',{staticClass:\"emoji-reaction-expand faint\",attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":_vm.toggleShowAll}},[_vm._v(\"\\n \"+_vm._s(_vm.showAll ? _vm.$t('general.show_less') : _vm.showMoreString)+\"\\n \")]):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\nimport { mapGetters, mapState } from 'vuex'\n\nconst Status = {\n name: 'Status',\n props: [\n 'statusoid',\n 'expandable',\n 'inConversation',\n 'focused',\n 'highlight',\n 'compact',\n 'replies',\n 'isPreview',\n 'noHeading',\n 'inlineExpanded',\n 'showPinned',\n 'inProfile',\n 'profileUserId'\n ],\n data () {\n return {\n replying: false,\n unmuted: false,\n userExpanded: false,\n error: null\n }\n },\n computed: {\n muteWords () {\n return this.mergedConfig.muteWords\n },\n showReasonMutedThread () {\n return (\n this.status.thread_muted ||\n (this.status.reblog && this.status.reblog.thread_muted)\n ) && !this.inConversation\n },\n repeaterClass () {\n const user = this.statusoid.user\n return highlightClass(user)\n },\n userClass () {\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n return highlightClass(user)\n },\n deleted () {\n return this.statusoid.deleted\n },\n repeaterStyle () {\n const user = this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userStyle () {\n if (this.noHeading) return\n const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n const highlight = this.mergedConfig.highlight\n return highlightStyle(highlight[user.screen_name])\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n },\n replyProfileLink () {\n if (this.isReply) {\n return this.generateUserProfileLink(this.status.in_reply_to_user_id, this.replyToName)\n }\n },\n retweet () { return !!this.statusoid.retweeted_status },\n retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name },\n retweeterHtml () { return this.statusoid.user.name_html },\n retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n status () {\n if (this.retweet) {\n return this.statusoid.retweeted_status\n } else {\n return this.statusoid\n }\n },\n statusFromGlobalRepository () {\n // NOTE: Consider to replace status with statusFromGlobalRepository\n return this.$store.state.statuses.allStatusesObject[this.status.id]\n },\n loggedIn () {\n return !!this.currentUser\n },\n muteWordHits () {\n return muteWordHits(this.status, this.muteWords)\n },\n muted () {\n const { status } = this\n const { reblog } = status\n const relationship = this.$store.getters.relationship(status.user.id)\n const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n const reasonsToMute = (\n // Post is muted according to BE\n status.muted ||\n // Reprööt of a muted post according to BE\n (reblog && reblog.muted) ||\n // Muted user\n relationship.muting ||\n // Muted user of a reprööt\n (relationshipReblog && relationshipReblog.muting) ||\n // Thread is muted\n status.thread_muted ||\n // Wordfiltered\n this.muteWordHits.length > 0\n )\n const excusesNotToMute = (\n (\n this.inProfile && (\n // Don't mute user's posts on user timeline (except reblogs)\n (!reblog && status.user.id === this.profileUserId) ||\n // Same as above but also allow self-reblogs\n (reblog && reblog.user.id === this.profileUserId)\n )\n ) ||\n // Don't mute statuses in muted conversation when said conversation is opened\n (this.inConversation && status.thread_muted)\n // No excuses if post has muted words\n ) && !this.muteWordHits.length > 0\n\n return !this.unmuted && !excusesNotToMute && reasonsToMute\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideStatus () {\n return this.deleted || (this.muted && this.hideFilteredStatuses)\n },\n isFocused () {\n // retweet or root of an expanded conversation\n if (this.focused) {\n return true\n } else if (!this.inConversation) {\n return false\n }\n // use conversation highlight only when in conversation\n return this.status.id === this.highlight\n },\n isReply () {\n return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n },\n replyToName () {\n if (this.status.in_reply_to_screen_name) {\n return this.status.in_reply_to_screen_name\n } else {\n const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n return user && user.screen_name\n }\n },\n replySubject () {\n if (!this.status.summary) return ''\n const decodedSummary = unescape(this.status.summary)\n const behavior = this.mergedConfig.subjectLineBehavior\n const startsWithRe = decodedSummary.match(/^re[: ]/i)\n if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n return decodedSummary\n } else if (behavior === 'email') {\n return 're: '.concat(decodedSummary)\n } else if (behavior === 'noop') {\n return ''\n }\n },\n combinedFavsAndRepeatsUsers () {\n // Use the status from the global status repository since favs and repeats are saved in it\n const combinedUsers = [].concat(\n this.statusFromGlobalRepository.favoritedBy,\n this.statusFromGlobalRepository.rebloggedBy\n )\n return uniqBy(combinedUsers, 'id')\n },\n tags () {\n return this.status.tags.filter(tagObj => tagObj.hasOwnProperty('name')).map(tagObj => tagObj.name).join(' ')\n },\n hidePostStats () {\n return this.mergedConfig.hidePostStats\n },\n ...mapGetters(['mergedConfig']),\n ...mapState({\n betterShadow: state => state.interface.browserSupport.cssFilter,\n currentUser: state => state.users.currentUser\n })\n },\n components: {\n FavoriteButton,\n ReactButton,\n RetweetButton,\n ExtraButtons,\n PostStatusForm,\n UserCard,\n UserAvatar,\n AvatarList,\n Timeago,\n StatusPopover,\n EmojiReactions,\n StatusContent\n },\n methods: {\n visibilityIcon (visibility) {\n switch (visibility) {\n case 'private':\n return 'icon-lock'\n case 'unlisted':\n return 'icon-lock-open-alt'\n case 'direct':\n return 'icon-mail-alt'\n default:\n return 'icon-globe'\n }\n },\n showError (error) {\n this.error = error\n },\n clearError () {\n this.error = undefined\n },\n toggleReplying () {\n this.replying = !this.replying\n },\n gotoOriginal (id) {\n if (this.inConversation) {\n this.$emit('goto', id)\n }\n },\n toggleExpanded () {\n this.$emit('toggleExpanded')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (id, name) {\n return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n }\n },\n watch: {\n 'highlight': function (id) {\n if (this.status.id === id) {\n let rect = this.$el.getBoundingClientRect()\n if (rect.top < 100) {\n // Post is above screen, match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.height >= (window.innerHeight - 50)) {\n // Post we want to see is taller than screen so match its top to screen top\n window.scrollBy(0, rect.top - 100)\n } else if (rect.bottom > window.innerHeight - 50) {\n // Post is below screen, match its bottom to screen bottom\n window.scrollBy(0, rect.bottom - window.innerHeight + 50)\n }\n }\n },\n 'status.repeat_num': function (num) {\n // refetch repeats when repeat_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n this.$store.dispatch('fetchRepeats', this.status.id)\n }\n },\n 'status.fave_num': function (num) {\n // refetch favs when fave_num is changed in any way\n if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n this.$store.dispatch('fetchFavs', this.status.id)\n }\n }\n },\n filters: {\n capitalize: function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n }\n}\n\nexport default Status\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./status.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./status.js\"\nimport __vue_script__ from \"!!babel-loader!./status.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4476c442\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.hideStatus)?_c('div',{staticClass:\"status-el\",class:[{ 'status-el_focused': _vm.isFocused }, { 'status-conversation': _vm.inlineExpanded }]},[(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e(),_vm._v(\" \"),(_vm.muted && !_vm.isPreview)?[_c('div',{staticClass:\"media status container muted\"},[_c('small',{staticClass:\"username\"},[(_vm.muted && _vm.retweet)?_c('i',{staticClass:\"button-icon icon-retweet\"}):_vm._e(),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),(_vm.showReasonMutedThread)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showReasonMutedThread && _vm.muteWordHits.length > 0)?_c('small',{staticClass:\"mute-thread\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.thread_muted_and_words'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('small',{staticClass:\"mute-words\",attrs:{\"title\":_vm.muteWordHits.join(', ')}},[_vm._v(\"\\n \"+_vm._s(_vm.muteWordHits.join(', '))+\"\\n \")]),_vm._v(\" \"),_c('a',{staticClass:\"unmute\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})])])]:[(_vm.showPinned)?_c('div',{staticClass:\"status-pin\"},[_c('i',{staticClass:\"fa icon-pin faint\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.pinned')))])]):_vm._e(),_vm._v(\" \"),(_vm.retweet && !_vm.noHeading && !_vm.inConversation)?_c('div',{staticClass:\"media container retweet-info\",class:[_vm.repeaterClass, { highlighted: _vm.repeaterStyle }],style:([_vm.repeaterStyle])},[(_vm.retweet)?_c('UserAvatar',{staticClass:\"media-left\",attrs:{\"better-shadow\":_vm.betterShadow,\"user\":_vm.statusoid.user}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media-body faint\"},[_c('span',{staticClass:\"user-name\"},[(_vm.retweeterHtml)?_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink},domProps:{\"innerHTML\":_vm._s(_vm.retweeterHtml)}}):_c('router-link',{attrs:{\"to\":_vm.retweeterProfileLink}},[_vm._v(_vm._s(_vm.retweeter))])],1),_vm._v(\" \"),_c('i',{staticClass:\"fa icon-retweet retweeted\",attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.repeated'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media status\",class:[_vm.userClass, { highlighted: _vm.userStyle, 'is-retweet': _vm.retweet && !_vm.inConversation }],style:([ _vm.userStyle ]),attrs:{\"data-tags\":_vm.tags}},[(!_vm.noHeading)?_c('div',{staticClass:\"media-left\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink},nativeOn:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":_vm.compact,\"better-shadow\":_vm.betterShadow,\"user\":_vm.status.user}})],1)],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-body\"},[(_vm.userExpanded)?_c('UserCard',{staticClass:\"status-usercard\",attrs:{\"user-id\":_vm.status.user.id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading)?_c('div',{staticClass:\"media-heading\"},[_c('div',{staticClass:\"heading-name-row\"},[_c('div',{staticClass:\"name-and-account-name\"},[(_vm.status.user.name_html)?_c('h4',{staticClass:\"user-name\",domProps:{\"innerHTML\":_vm._s(_vm.status.user.name_html)}}):_c('h4',{staticClass:\"user-name\"},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.name)+\"\\n \")]),_vm._v(\" \"),_c('router-link',{staticClass:\"account-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"heading-right\"},[_c('router-link',{staticClass:\"timeago faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.status.created_at,\"auto-update\":60}})],1),_vm._v(\" \"),(_vm.status.visibility)?_c('div',{staticClass:\"button-icon visibility-icon\"},[_c('i',{class:_vm.visibilityIcon(_vm.status.visibility),attrs:{\"title\":_vm._f(\"capitalize\")(_vm.status.visibility)}})]):_vm._e(),_vm._v(\" \"),(!_vm.status.is_local && !_vm.isPreview)?_c('a',{staticClass:\"source_url\",attrs:{\"href\":_vm.status.external_url,\"target\":\"_blank\",\"title\":\"Source\"}},[_c('i',{staticClass:\"button-icon icon-link-ext-alt\"})]):_vm._e(),_vm._v(\" \"),(_vm.expandable && !_vm.isPreview)?[_c('a',{attrs:{\"href\":\"#\",\"title\":\"Expand\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_c('i',{staticClass:\"button-icon icon-plus-squared\"})])]:_vm._e(),_vm._v(\" \"),(_vm.unmuted)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"heading-reply-row\"},[(_vm.isReply)?_c('div',{staticClass:\"reply-to-and-accountname\"},[(!_vm.isPreview)?_c('StatusPopover',{staticClass:\"reply-to-popover\",staticStyle:{\"min-width\":\"0\"},attrs:{\"status-id\":_vm.status.parent_visible && _vm.status.in_reply_to_status_id}},[_c('a',{staticClass:\"reply-to\",attrs:{\"href\":\"#\",\"aria-label\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(_vm.status.in_reply_to_status_id)}}},[_c('i',{staticClass:\"button-icon icon-reply\"}),_vm._v(\" \"),_c('span',{staticClass:\"faint-link reply-to-text\",class:{ 'strikethrough': !_vm.status.parent_visible }},[_vm._v(\"\\n \"+_vm._s(_vm.$t('status.reply_to'))+\"\\n \")])])]):_c('span',{staticClass:\"reply-to\"},[_c('span',{staticClass:\"reply-to-text\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.replyProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.replyToName)+\"\\n \")]),_vm._v(\" \"),(_vm.replies && _vm.replies.length)?_c('span',{staticClass:\"faint replies-separator\"},[_vm._v(\"\\n -\\n \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.inConversation && !_vm.isPreview && _vm.replies && _vm.replies.length)?_c('div',{staticClass:\"replies\"},[_c('span',{staticClass:\"faint\"},[_vm._v(_vm._s(_vm.$t('status.replies_list')))]),_vm._v(\" \"),_vm._l((_vm.replies),function(reply){return _c('StatusPopover',{key:reply.id,attrs:{\"status-id\":reply.id}},[_c('a',{staticClass:\"reply-link\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.gotoOriginal(reply.id)}}},[_vm._v(_vm._s(reply.name))])])})],2):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('StatusContent',{attrs:{\"status\":_vm.status,\"no-heading\":_vm.noHeading,\"highlight\":_vm.highlight,\"focused\":_vm.isFocused}}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(!_vm.hidePostStats && _vm.isFocused && _vm.combinedFavsAndRepeatsUsers.length > 0)?_c('div',{staticClass:\"favs-repeated-users\"},[_c('div',{staticClass:\"stats\"},[(_vm.statusFromGlobalRepository.rebloggedBy && _vm.statusFromGlobalRepository.rebloggedBy.length > 0)?_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.repeats')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.rebloggedBy.length)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.statusFromGlobalRepository.favoritedBy && _vm.statusFromGlobalRepository.favoritedBy.length > 0)?_c('div',{staticClass:\"stat-count\"},[_c('a',{staticClass:\"stat-title\"},[_vm._v(_vm._s(_vm.$t('status.favorites')))]),_vm._v(\" \"),_c('div',{staticClass:\"stat-number\"},[_vm._v(\"\\n \"+_vm._s(_vm.statusFromGlobalRepository.favoritedBy.length)+\"\\n \")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"avatar-row\"},[_c('AvatarList',{attrs:{\"users\":_vm.combinedFavsAndRepeatsUsers}})],1)])]):_vm._e()]),_vm._v(\" \"),((_vm.mergedConfig.emojiReactionsOnTimeline || _vm.isFocused) && (!_vm.noHeading && !_vm.isPreview))?_c('EmojiReactions',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),(!_vm.noHeading && !_vm.isPreview)?_c('div',{staticClass:\"status-actions media-body\"},[_c('div',[(_vm.loggedIn)?_c('i',{staticClass:\"button-icon icon-reply\",class:{'button-icon-active': _vm.replying},attrs:{\"title\":_vm.$t('tool_tip.reply')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleReplying($event)}}}):_c('i',{staticClass:\"button-icon button-icon-disabled icon-reply\",attrs:{\"title\":_vm.$t('tool_tip.reply')}}),_vm._v(\" \"),(_vm.status.replies_count > 0)?_c('span',[_vm._v(_vm._s(_vm.status.replies_count))]):_vm._e()]),_vm._v(\" \"),_c('retweet-button',{attrs:{\"visibility\":_vm.status.visibility,\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),_c('favorite-button',{attrs:{\"logged-in\":_vm.loggedIn,\"status\":_vm.status}}),_vm._v(\" \"),(_vm.loggedIn)?_c('ReactButton',{attrs:{\"status\":_vm.status}}):_vm._e(),_vm._v(\" \"),_c('extra-buttons',{attrs:{\"status\":_vm.status},on:{\"onError\":_vm.showError,\"onSuccess\":_vm.clearError}})],1):_vm._e()],1)]),_vm._v(\" \"),(_vm.replying)?_c('div',{staticClass:\"container\"},[_c('PostStatusForm',{staticClass:\"reply-body\",attrs:{\"reply-to\":_vm.status.id,\"attentions\":_vm.status.attentions,\"replied-user\":_vm.status.user,\"copy-message-scope\":_vm.status.visibility,\"subject\":_vm.replySubject},on:{\"posted\":_vm.toggleReplying}})],1):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Popover = {\n name: 'Popover',\n props: {\n // Action to trigger popover: either 'hover' or 'click'\n trigger: String,\n // Either 'top' or 'bottom'\n placement: String,\n // Takes object with properties 'x' and 'y', values of these can be\n // 'container' for using offsetParent as boundaries for either axis\n // or 'viewport'\n boundTo: Object,\n // Takes a selector to use as a replacement for the parent container\n // for getting boundaries for x an y axis\n boundToSelector: String,\n // Takes a top/bottom/left/right object, how much space to leave\n // between boundary and popover element\n margin: Object,\n // Takes a x/y object and tells how many pixels to offset from\n // anchor point on either axis\n offset: Object,\n // Additional styles you may want for the popover container\n popoverClass: String\n },\n data () {\n return {\n hidden: true,\n styles: { opacity: 0 },\n oldSize: { width: 0, height: 0 }\n }\n },\n methods: {\n containerBoundingClientRect () {\n const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n return container.getBoundingClientRect()\n },\n updateStyles () {\n if (this.hidden) {\n this.styles = {\n opacity: 0\n }\n return\n }\n\n // Popover will be anchored around this element, trigger ref is the container, so\n // its children are what are inside the slot. Expect only one slot=\"trigger\".\n const anchorEl = (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n const screenBox = anchorEl.getBoundingClientRect()\n // Screen position of the origin point for popover\n const origin = { x: screenBox.left + screenBox.width * 0.5, y: screenBox.top }\n const content = this.$refs.content\n // Minor optimization, don't call a slow reflow call if we don't have to\n const parentBounds = this.boundTo &&\n (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n this.containerBoundingClientRect()\n\n const margin = this.margin || {}\n\n // What are the screen bounds for the popover? Viewport vs container\n // when using viewport, using default margin values to dodge the navbar\n const xBounds = this.boundTo && this.boundTo.x === 'container' ? {\n min: parentBounds.left + (margin.left || 0),\n max: parentBounds.right - (margin.right || 0)\n } : {\n min: 0 + (margin.left || 10),\n max: window.innerWidth - (margin.right || 10)\n }\n\n const yBounds = this.boundTo && this.boundTo.y === 'container' ? {\n min: parentBounds.top + (margin.top || 0),\n max: parentBounds.bottom - (margin.bottom || 0)\n } : {\n min: 0 + (margin.top || 50),\n max: window.innerHeight - (margin.bottom || 5)\n }\n\n let horizOffset = 0\n\n // If overflowing from left, move it so that it doesn't\n if ((origin.x - content.offsetWidth * 0.5) < xBounds.min) {\n horizOffset += -(origin.x - content.offsetWidth * 0.5) + xBounds.min\n }\n\n // If overflowing from right, move it so that it doesn't\n if ((origin.x + horizOffset + content.offsetWidth * 0.5) > xBounds.max) {\n horizOffset -= (origin.x + horizOffset + content.offsetWidth * 0.5) - xBounds.max\n }\n\n // Default to whatever user wished with placement prop\n let usingTop = this.placement !== 'bottom'\n\n // Handle special cases, first force to displaying on top if there's not space on bottom,\n // regardless of what placement value was. Then check if there's not space on top, and\n // force to bottom, again regardless of what placement value was.\n if (origin.y + content.offsetHeight > yBounds.max) usingTop = true\n if (origin.y - content.offsetHeight < yBounds.min) usingTop = false\n\n const yOffset = (this.offset && this.offset.y) || 0\n const translateY = usingTop\n ? -anchorEl.offsetHeight - yOffset - content.offsetHeight\n : yOffset\n\n const xOffset = (this.offset && this.offset.x) || 0\n const translateX = (anchorEl.offsetWidth * 0.5) - content.offsetWidth * 0.5 + horizOffset + xOffset\n\n // Note, separate translateX and translateY avoids blurry text on chromium,\n // single translate or translate3d resulted in blurry text.\n this.styles = {\n opacity: 1,\n transform: `translateX(${Math.floor(translateX)}px) translateY(${Math.floor(translateY)}px)`\n }\n },\n showPopover () {\n if (this.hidden) this.$emit('show')\n this.hidden = false\n this.$nextTick(this.updateStyles)\n },\n hidePopover () {\n if (!this.hidden) this.$emit('close')\n this.hidden = true\n this.styles = { opacity: 0 }\n },\n onMouseenter (e) {\n if (this.trigger === 'hover') this.showPopover()\n },\n onMouseleave (e) {\n if (this.trigger === 'hover') this.hidePopover()\n },\n onClick (e) {\n if (this.trigger === 'click') {\n if (this.hidden) {\n this.showPopover()\n } else {\n this.hidePopover()\n }\n }\n },\n onClickOutside (e) {\n if (this.hidden) return\n if (this.$el.contains(e.target)) return\n this.hidePopover()\n }\n },\n updated () {\n // Monitor changes to content size, update styles only when content sizes have changed,\n // that should be the only time we need to move the popover box if we don't care about scroll\n // or resize\n const content = this.$refs.content\n if (!content) return\n if (this.oldSize.width !== content.offsetWidth || this.oldSize.height !== content.offsetHeight) {\n this.updateStyles()\n this.oldSize = { width: content.offsetWidth, height: content.offsetHeight }\n }\n },\n created () {\n document.addEventListener('click', this.onClickOutside)\n },\n destroyed () {\n document.removeEventListener('click', this.onClickOutside)\n this.hidePopover()\n }\n}\n\nexport default Popover\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./popover.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./popover.js\"\nimport __vue_script__ from \"!!babel-loader!./popover.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-10f1984d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./popover.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{on:{\"mouseenter\":_vm.onMouseenter,\"mouseleave\":_vm.onMouseleave}},[_c('div',{ref:\"trigger\",on:{\"click\":_vm.onClick}},[_vm._t(\"trigger\")],2),_vm._v(\" \"),(!_vm.hidden)?_c('div',{ref:\"content\",staticClass:\"popover\",class:_vm.popoverClass,style:(_vm.styles)},[_vm._t(\"content\",null,{\"close\":_vm.hidePopover})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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 { 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 return output.sort((a, b) => {\n const depsA = getDeps(a, inheritance).length\n const depsB = getDeps(b, inheritance).length\n\n if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return 0\n if (depsA === 0 && depsB !== 0) return -1\n if (depsB === 0 && depsA !== 0) return 1\n })\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","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 <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-01a5cae8\\\",\\\"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 UserCard from '../user_card/user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n props: [\n 'user'\n ],\n data () {\n return {\n userExpanded: false\n }\n },\n components: {\n UserCard,\n UserAvatar\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default BasicUserCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./basic_user_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./basic_user_card.js\"\nimport __vue_script__ from \"!!babel-loader!./basic_user_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4d2bc0bb\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./basic_user_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"basic-user-card\"},[_c('router-link',{attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_c('UserAvatar',{staticClass:\"avatar\",attrs:{\"user\":_vm.user},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.toggleUserExpanded($event)}}})],1),_vm._v(\" \"),(_vm.userExpanded)?_c('div',{staticClass:\"basic-user-card-expanded-content\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"rounded\":true,\"bordered\":true}})],1):_c('div',{staticClass:\"basic-user-card-collapsed-content\"},[_c('div',{staticClass:\"basic-user-card-user-name\",attrs:{\"title\":_vm.user.name}},[(_vm.user.name_html)?_c('span',{staticClass:\"basic-user-card-user-name-value\",domProps:{\"innerHTML\":_vm._s(_vm.user.name_html)}}):_c('span',{staticClass:\"basic-user-card-user-name-value\"},[_vm._v(_vm._s(_vm.user.name))])]),_vm._v(\" \"),_c('div',[_c('router-link',{staticClass:\"basic-user-card-screen-name\",attrs:{\"to\":_vm.userProfileLink(_vm.user)}},[_vm._v(\"\\n @\"+_vm._s(_vm.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_vm._t(\"default\")],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n store,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n media = [],\n inReplyToStatusId = undefined,\n contentType = 'text/plain',\n preview = false\n}) => {\n const mediaIds = map(media, 'id')\n\n return apiService.postStatus({\n credentials: store.state.users.currentUser.credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n mediaIds,\n inReplyToStatusId,\n contentType,\n poll,\n preview\n })\n .then((data) => {\n if (!data.error && !preview) {\n store.dispatch('addNewStatuses', {\n statuses: [data],\n timeline: 'friends',\n showImmediately: true,\n noIdUpdate: true // To prevent missing notices on next pull.\n })\n }\n return data\n })\n .catch((err) => {\n return {\n error: err.message\n }\n })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n const credentials = store.state.users.currentUser.credentials\n return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia,\n setMediaDescription\n}\n\nexport default statusPosterService\n","import Timeago from '../timeago/timeago.vue'\nimport { forEach, map } from 'lodash'\n\nexport default {\n name: 'Poll',\n props: ['basePoll'],\n components: { Timeago },\n data () {\n return {\n loading: false,\n choices: []\n }\n },\n created () {\n if (!this.$store.state.polls.pollsObject[this.pollId]) {\n this.$store.dispatch('mergeOrAddPoll', this.basePoll)\n }\n this.$store.dispatch('trackPoll', this.pollId)\n },\n destroyed () {\n this.$store.dispatch('untrackPoll', this.pollId)\n },\n computed: {\n pollId () {\n return this.basePoll.id\n },\n poll () {\n const storePoll = this.$store.state.polls.pollsObject[this.pollId]\n return storePoll || {}\n },\n options () {\n return (this.poll && this.poll.options) || []\n },\n expiresAt () {\n return (this.poll && this.poll.expires_at) || 0\n },\n expired () {\n return (this.poll && this.poll.expired) || false\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n showResults () {\n return this.poll.voted || this.expired || !this.loggedIn\n },\n totalVotesCount () {\n return this.poll.votes_count\n },\n containerClass () {\n return {\n loading: this.loading\n }\n },\n choiceIndices () {\n // Convert array of booleans into an array of indices of the\n // items that were 'true', so [true, false, false, true] becomes\n // [0, 3].\n return this.choices\n .map((entry, index) => entry && index)\n .filter(value => typeof value === 'number')\n },\n isDisabled () {\n const noChoice = this.choiceIndices.length === 0\n return this.loading || noChoice\n }\n },\n methods: {\n percentageForOption (count) {\n return this.totalVotesCount === 0 ? 0 : Math.round(count / this.totalVotesCount * 100)\n },\n resultTitle (option) {\n return `${option.votes_count}/${this.totalVotesCount} ${this.$t('polls.votes')}`\n },\n fetchPoll () {\n this.$store.dispatch('refreshPoll', { id: this.statusId, pollId: this.poll.id })\n },\n activateOption (index) {\n // forgive me father: doing checking the radio/checkboxes\n // in code because of customized input elements need either\n // a) an extra element for the actual graphic, or b) use a\n // pseudo element for the label. We use b) which mandates\n // using \"for\" and \"id\" matching which isn't nice when the\n // same poll appears multiple times on the site (notifs and\n // timeline for example). With code we can make sure it just\n // works without altering the pseudo element implementation.\n const allElements = this.$el.querySelectorAll('input')\n const clickedElement = this.$el.querySelector(`input[value=\"${index}\"]`)\n if (this.poll.multiple) {\n // Checkboxes, toggle only the clicked one\n clickedElement.checked = !clickedElement.checked\n } else {\n // Radio button, uncheck everything and check the clicked one\n forEach(allElements, element => { element.checked = false })\n clickedElement.checked = true\n }\n this.choices = map(allElements, e => e.checked)\n },\n optionId (index) {\n return `poll${this.poll.id}-${index}`\n },\n vote () {\n if (this.choiceIndices.length === 0) return\n this.loading = true\n this.$store.dispatch(\n 'votePoll',\n { id: this.statusId, pollId: this.poll.id, choices: this.choiceIndices }\n ).then(poll => {\n this.loading = false\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll.js\"\nimport __vue_script__ from \"!!babel-loader!./poll.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2ad72fe8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"poll\",class:_vm.containerClass},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[(_vm.showResults)?_c('div',{staticClass:\"option-result\",attrs:{\"title\":_vm.resultTitle(option)}},[_c('div',{staticClass:\"option-result-label\"},[_c('span',{staticClass:\"result-percentage\"},[_vm._v(\"\\n \"+_vm._s(_vm.percentageForOption(option.votes_count))+\"%\\n \")]),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(option.title_html)}})]),_vm._v(\" \"),_c('div',{staticClass:\"result-fill\",style:({ 'width': ((_vm.percentageForOption(option.votes_count)) + \"%\") })})]):_c('div',{on:{\"click\":function($event){return _vm.activateOption(index)}}},[(_vm.poll.multiple)?_c('input',{attrs:{\"type\":\"checkbox\",\"disabled\":_vm.loading},domProps:{\"value\":index}}):_c('input',{attrs:{\"type\":\"radio\",\"disabled\":_vm.loading},domProps:{\"value\":index}}),_vm._v(\" \"),_c('label',{staticClass:\"option-vote\"},[_c('div',[_vm._v(_vm._s(option.title))])])])])}),_vm._v(\" \"),_c('div',{staticClass:\"footer faint\"},[(!_vm.showResults)?_c('button',{staticClass:\"btn btn-default poll-vote-button\",attrs:{\"type\":\"button\",\"disabled\":_vm.isDisabled},on:{\"click\":_vm.vote}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('polls.vote'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"total\"},[_vm._v(\"\\n \"+_vm._s(_vm.totalVotesCount)+\" \"+_vm._s(_vm.$t(\"polls.votes\"))+\" · \\n \")]),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":_vm.expired ? 'polls.expired' : 'polls.expires_in'}},[_c('Timeago',{attrs:{\"time\":_vm.expiresAt,\"auto-update\":60,\"now-threshold\":0}})],1)],1)],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport { chunk, last, dropRight, sumBy } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'nsfw',\n 'setMedia'\n ],\n data () {\n return {\n sizes: {}\n }\n },\n components: { Attachment },\n computed: {\n rows () {\n if (!this.attachments) {\n return []\n }\n const rows = chunk(this.attachments, 3)\n if (last(rows).length === 1 && rows.length > 1) {\n // if 1 attachment on last row -> add it to the previous row instead\n const lastAttachment = last(rows)[0]\n const allButLastRow = dropRight(rows)\n last(allButLastRow).push(lastAttachment)\n return allButLastRow\n }\n return rows\n },\n useContainFit () {\n return this.$store.getters.mergedConfig.useContainFit\n }\n },\n methods: {\n onNaturalSizeLoad (id, size) {\n this.$set(this.sizes, id, size)\n },\n rowStyle (itemsPerRow) {\n return { 'padding-bottom': `${(100 / (itemsPerRow + 0.6))}%` }\n },\n itemStyle (id, row) {\n const total = sumBy(row, item => this.getAspectRatio(item.id))\n return { flex: `${this.getAspectRatio(id) / total} 1 0%` }\n },\n getAspectRatio (id) {\n const size = this.sizes[id]\n return size ? size.width / size.height : 1\n }\n }\n}\n\nexport default Gallery\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./gallery.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./gallery.js\"\nimport __vue_script__ from \"!!babel-loader!./gallery.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3db94942\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./gallery.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"galleryContainer\",staticStyle:{\"width\":\"100%\"}},_vm._l((_vm.rows),function(row,index){return _c('div',{key:index,staticClass:\"gallery-row\",class:{ 'contain-fit': _vm.useContainFit, 'cover-fit': !_vm.useContainFit },style:(_vm.rowStyle(row.length))},[_c('div',{staticClass:\"gallery-row-inner\"},_vm._l((row),function(attachment){return _c('attachment',{key:attachment.id,style:(_vm.itemStyle(attachment.id, row)),attrs:{\"set-media\":_vm.setMedia,\"nsfw\":_vm.nsfw,\"attachment\":attachment,\"allow-play\":false,\"natural-size-load\":_vm.onNaturalSizeLoad.bind(null, attachment.id)}})}),1)])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const LinkPreview = {\n name: 'LinkPreview',\n props: [\n 'card',\n 'size',\n 'nsfw'\n ],\n data () {\n return {\n imageLoaded: false\n }\n },\n computed: {\n useImage () {\n // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n // as it makes sure to hide the image if somehow NSFW tagged preview can\n // exist.\n return this.card.image && !this.nsfw && this.size !== 'hide'\n },\n useDescription () {\n return this.card.description && /\\S/.test(this.card.description)\n }\n },\n created () {\n if (this.useImage) {\n const newImg = new Image()\n newImg.onload = () => {\n this.imageLoaded = true\n }\n newImg.src = this.card.image\n }\n }\n}\n\nexport default LinkPreview\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./link-preview.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./link-preview.js\"\nimport __vue_script__ from \"!!babel-loader!./link-preview.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7c8d99ac\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./link-preview.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"link-preview-card\",attrs:{\"href\":_vm.card.url,\"target\":\"_blank\",\"rel\":\"noopener\"}},[(_vm.useImage && _vm.imageLoaded)?_c('div',{staticClass:\"card-image\",class:{ 'small-image': _vm.size === 'small' }},[_c('img',{attrs:{\"src\":_vm.card.image}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[_c('span',{staticClass:\"card-host faint\"},[_vm._v(_vm._s(_vm.card.provider_name))]),_vm._v(\" \"),_c('h4',{staticClass:\"card-title\"},[_vm._v(_vm._s(_vm.card.title))]),_vm._v(\" \"),(_vm.useDescription)?_c('p',{staticClass:\"card-description\"},[_vm._v(_vm._s(_vm.card.description))]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport fileType from 'src/services/file_type/file_type.service'\nimport { processHtml } from 'src/services/tiny_post_html_processor/tiny_post_html_processor.service.js'\nimport { mentionMatchesUrl, extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\nimport { mapGetters, mapState } from 'vuex'\n\nconst StatusContent = {\n name: 'StatusContent',\n props: [\n 'status',\n 'focused',\n 'noHeading',\n 'fullContent'\n ],\n data () {\n return {\n showingTall: 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-6c075b5f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./status_content.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"status-body\"},[_vm._t(\"header\"),_vm._v(\" \"),(_vm.status.summary_html)?_c('div',{staticClass:\"summary-wrapper\",class:{ 'tall-subject': (_vm.longSubject && !_vm.showingLongSubject) }},[_c('div',{staticClass:\"media-body summary\",domProps:{\"innerHTML\":_vm._s(_vm.status.summary_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.longSubject && _vm.showingLongSubject)?_c('a',{staticClass:\"tall-subject-hider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(_vm._s(_vm.$t(\"status.hide_full_subject\")))]):(_vm.longSubject)?_c('a',{staticClass:\"tall-subject-hider\",class:{ 'tall-subject-hider_focused': _vm.focused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_full_subject\"))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-content-wrapper\",class:{'tall-status': _vm.hideTallStatus}},[(_vm.hideTallStatus)?_c('a',{staticClass:\"tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.focused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.postBodyHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):_vm._e(),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('a',{staticClass:\"cw-status-hider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"status.show_content\"))+\"\\n \"),(_vm.attachmentTypes.includes('image'))?_c('span',{staticClass:\"icon-picture\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('video'))?_c('span',{staticClass:\"icon-video\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('audio'))?_c('span',{staticClass:\"icon-music\"}):_vm._e(),_vm._v(\" \"),(_vm.attachmentTypes.includes('unknown'))?_c('span',{staticClass:\"icon-doc\"}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('span',{staticClass:\"icon-link\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.showingMore)?_c('a',{staticClass:\"status-unhider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.tallStatus ? _vm.$t(\"general.show_less\") : _vm.$t(\"status.hide_content\"))+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.status.poll && _vm.status.poll.options)?_c('div',[_c('poll',{attrs:{\"base-poll\":_vm.status.poll}})],1):_vm._e(),_vm._v(\" \"),(_vm.status.attachments.length !== 0 && (!_vm.hideSubjectStatus || _vm.showingLongSubject))?_c('div',{staticClass:\"attachments media-body\"},[_vm._l((_vm.nonGalleryAttachments),function(attachment){return _c('attachment',{key:attachment.id,staticClass:\"non-gallery\",attrs:{\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough,\"attachment\":attachment,\"allow-play\":true,\"set-media\":_vm.setMedia()}})}),_vm._v(\" \"),(_vm.galleryAttachments.length > 0)?_c('gallery',{attrs:{\"nsfw\":_vm.nsfwClickthrough,\"attachments\":_vm.galleryAttachments,\"set-media\":_vm.setMedia()}}):_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.status.card && !_vm.hideSubjectStatus && !_vm.noHeading)?_c('div',{staticClass:\"link-preview media-body\"},[_c('link-preview',{attrs:{\"card\":_vm.status.card,\"size\":_vm.attachmentSize,\"nsfw\":_vm.nsfwClickthrough}})],1):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst mediaUpload = {\n data () {\n return {\n uploadCount: 0,\n uploadReady: true\n }\n },\n computed: {\n uploading () {\n return this.uploadCount > 0\n }\n },\n methods: {\n uploadFile (file) {\n const self = this\n const store = this.$store\n if (file.size > store.state.instance.uploadlimit) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n const formData = new FormData()\n formData.append('file', file)\n\n self.$emit('uploading')\n self.uploadCount++\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.decreaseUploadCount()\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.decreaseUploadCount()\n })\n },\n decreaseUploadCount () {\n this.uploadCount--\n if (this.uploadCount === 0) {\n this.$emit('all-uploaded')\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n multiUpload (files) {\n for (const file of files) {\n this.uploadFile(file)\n }\n },\n change ({ target }) {\n this.multiUpload(target.files)\n }\n },\n props: [\n 'dropFiles'\n ],\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-f9516188\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_upload.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media-upload\"},[_c('label',{staticClass:\"label\",attrs:{\"title\":_vm.$t('tool_tip.media_upload')}},[(_vm.uploading)?_c('i',{staticClass:\"progress-icon icon-spin4 animate-spin\"}):_vm._e(),_vm._v(\" \"),(!_vm.uploading)?_c('i',{staticClass:\"new-icon icon-upload\"}):_vm._e(),_vm._v(\" \"),(_vm.uploadReady)?_c('input',{staticStyle:{\"position\":\"fixed\",\"top\":\"-100em\"},attrs:{\"type\":\"file\",\"multiple\":\"true\"},on:{\"change\":_vm.change}}):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\n\nexport default {\n name: 'PollForm',\n props: ['visible'],\n data: () => ({\n pollType: 'single',\n options: ['', ''],\n expiryAmount: 10,\n expiryUnit: 'minutes'\n }),\n computed: {\n pollLimits () {\n return this.$store.state.instance.pollLimits\n },\n maxOptions () {\n return this.pollLimits.max_options\n },\n maxLength () {\n return this.pollLimits.max_option_chars\n },\n expiryUnits () {\n const allUnits = ['minutes', 'hours', 'days']\n const expiry = this.convertExpiryFromUnit\n return allUnits.filter(\n unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n )\n },\n minExpirationInCurrentUnit () {\n return Math.ceil(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.min_expiration\n )\n )\n },\n maxExpirationInCurrentUnit () {\n return Math.floor(\n this.convertExpiryToUnit(\n this.expiryUnit,\n this.pollLimits.max_expiration\n )\n )\n }\n },\n methods: {\n clear () {\n this.pollType = 'single'\n this.options = ['', '']\n this.expiryAmount = 10\n this.expiryUnit = 'minutes'\n },\n nextOption (index) {\n const element = this.$el.querySelector(`#poll-${index + 1}`)\n if (element) {\n element.focus()\n } else {\n // Try adding an option and try focusing on it\n const addedOption = this.addOption()\n if (addedOption) {\n this.$nextTick(function () {\n this.nextOption(index)\n })\n }\n }\n },\n addOption () {\n if (this.options.length < this.maxOptions) {\n this.options.push('')\n return true\n }\n return false\n },\n deleteOption (index, event) {\n if (this.options.length > 2) {\n this.options.splice(index, 1)\n }\n },\n convertExpiryToUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n case 'hours': return (1000 * amount) / DateUtils.HOUR\n case 'days': return (1000 * amount) / DateUtils.DAY\n }\n },\n convertExpiryFromUnit (unit, amount) {\n // Note: we want seconds and not milliseconds\n switch (unit) {\n case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n case 'hours': return 0.001 * amount * DateUtils.HOUR\n case 'days': return 0.001 * amount * DateUtils.DAY\n }\n },\n expiryAmountChange () {\n this.expiryAmount =\n Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n this.expiryAmount =\n Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n this.updatePollToParent()\n },\n updatePollToParent () {\n const expiresIn = this.convertExpiryFromUnit(\n this.expiryUnit,\n this.expiryAmount\n )\n\n const options = uniq(this.options.filter(option => option !== ''))\n if (options.length < 2) {\n this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n return\n }\n this.$emit('update-poll', {\n options,\n multiple: this.pollType === 'multiple',\n expiresIn\n })\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./poll_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./poll_form.js\"\nimport __vue_script__ from \"!!babel-loader!./poll_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1f896331\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./poll_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:\"poll-form\"},[_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"poll-option\"},[_c('div',{staticClass:\"input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options[index]),expression:\"options[index]\"}],staticClass:\"poll-option-input\",attrs:{\"id\":(\"poll-\" + index),\"type\":\"text\",\"placeholder\":_vm.$t('polls.option'),\"maxlength\":_vm.maxLength},domProps:{\"value\":(_vm.options[index])},on:{\"change\":_vm.updatePollToParent,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.nextOption(index)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.options, index, $event.target.value)}}})]),_vm._v(\" \"),(_vm.options.length > 2)?_c('div',{staticClass:\"icon-container\"},[_c('i',{staticClass:\"icon-cancel\",on:{\"click\":function($event){return _vm.deleteOption(index)}}})]):_vm._e()])}),_vm._v(\" \"),(_vm.options.length < _vm.maxOptions)?_c('a',{staticClass:\"add-option faint\",on:{\"click\":_vm.addOption}},[_c('i',{staticClass:\"icon-plus\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t(\"polls.add_option\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"poll-type-expiry\"},[_c('div',{staticClass:\"poll-type\",attrs:{\"title\":_vm.$t('polls.type')}},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"poll-type-selector\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.pollType),expression:\"pollType\"}],staticClass:\"select\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.pollType=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePollToParent]}},[_c('option',{attrs:{\"value\":\"single\"}},[_vm._v(_vm._s(_vm.$t('polls.single_choice')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"multiple\"}},[_vm._v(_vm._s(_vm.$t('polls.multiple_choices')))])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"poll-expiry\",attrs:{\"title\":_vm.$t('polls.expiry')}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryAmount),expression:\"expiryAmount\"}],staticClass:\"expiry-amount hide-number-spinner\",attrs:{\"type\":\"number\",\"min\":_vm.minExpirationInCurrentUnit,\"max\":_vm.maxExpirationInCurrentUnit},domProps:{\"value\":(_vm.expiryAmount)},on:{\"change\":_vm.expiryAmountChange,\"input\":function($event){if($event.target.composing){ return; }_vm.expiryAmount=$event.target.value}}}),_vm._v(\" \"),_c('label',{staticClass:\"expiry-unit select\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.expiryUnit),expression:\"expiryUnit\"}],on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.expiryUnit=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.expiryAmountChange]}},_vm._l((_vm.expiryUnits),function(unit){return _c('option',{key:unit,domProps:{\"value\":unit}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"time.\" + unit + \"_short\"), ['']))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])])],2):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n let allAttentions = [...attentions]\n\n allAttentions.unshift(user)\n\n allAttentions = uniqBy(allAttentions, 'id')\n allAttentions = reject(allAttentions, { id: currentUser.id })\n\n let mentions = map(allAttentions, (attention) => {\n return `@${attention.screen_name}`\n })\n\n return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\nconst PostStatusForm = {\n props: [\n 'replyTo',\n 'repliedUser',\n 'attentions',\n 'copyMessageScope',\n 'subject'\n ],\n components: {\n MediaUpload,\n EmojiInput,\n PollForm,\n ScopeSelector,\n Checkbox,\n Attachment,\n StatusContent\n },\n mounted () {\n this.resize(this.$refs.textarea)\n const textLength = this.$refs.textarea.value.length\n this.$refs.textarea.setSelectionRange(textLength, textLength)\n\n if (this.replyTo) {\n this.$refs.textarea.focus()\n }\n },\n data () {\n const preset = this.$route.query.message\n let statusText = preset || ''\n\n const { scopeCopy } = this.$store.getters.mergedConfig\n\n if (this.replyTo) {\n const currentUser = this.$store.state.users.currentUser\n statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n }\n\n const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n ? this.copyMessageScope\n : this.$store.state.users.currentUser.default_scope\n\n const { postContentType: contentType } = this.$store.getters.mergedConfig\n\n return {\n dropFiles: [],\n submitDisabled: false,\n error: null,\n posting: false,\n highlighted: 0,\n newStatus: {\n spoilerText: this.subject || '',\n status: statusText,\n nsfw: false,\n files: [],\n poll: {},\n mediaDescriptions: {},\n visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: false,\n showDropIcon: 'hide',\n dropStopTimeout: null,\n preview: null,\n previewLoading: false\n }\n },\n computed: {\n users () {\n return this.$store.state.users.users\n },\n userDefaultScope () {\n return this.$store.state.users.currentUser.default_scope\n },\n showAllScopes () {\n return !this.mergedConfig.minimalScopesMode\n },\n emojiUserSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ],\n users: this.$store.state.users.users,\n updateUsersList: (query) => this.$store.dispatch('searchUsers', { query })\n })\n },\n emojiSuggestor () {\n return suggestor({\n emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ]\n })\n },\n emoji () {\n return this.$store.state.instance.emoji || []\n },\n customEmoji () {\n return this.$store.state.instance.customEmoji || []\n },\n statusLength () {\n return this.newStatus.status.length\n },\n spoilerTextLength () {\n return this.newStatus.spoilerText.length\n },\n statusLengthLimit () {\n return this.$store.state.instance.textlimit\n },\n hasStatusLengthLimit () {\n return this.statusLengthLimit > 0\n },\n charactersLeft () {\n return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n },\n isOverLengthLimit () {\n return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n alwaysShowSubject () {\n return this.mergedConfig.alwaysShowSubjectInput\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n safeDMEnabled () {\n return this.$store.state.instance.safeDM\n },\n pollsAvailable () {\n return this.$store.state.instance.pollsAvailable &&\n this.$store.state.instance.pollLimits.max_options >= 2\n },\n hideScopeNotice () {\n return 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.preview || this.previewLoading\n },\n emptyStatus () {\n return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n },\n ...mapGetters(['mergedConfig'])\n },\n watch: {\n 'newStatus.contentType': function () {\n this.autoPreview()\n },\n 'newStatus.spoilerText': function () {\n this.autoPreview()\n }\n },\n methods: {\n async postStatus (newStatus) {\n if (this.posting) { return }\n if (this.submitDisabled) { return }\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 data = await statusPoster.postStatus({\n status: newStatus.status,\n spoilerText: newStatus.spoilerText || null,\n visibility: newStatus.visibility,\n sensitive: newStatus.nsfw,\n media: newStatus.files,\n store: this.$store,\n inReplyToStatusId: this.replyTo,\n contentType: newStatus.contentType,\n poll\n })\n\n if (!data.error) {\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {},\n mediaDescriptions: {}\n }\n this.pollFormVisible = false\n this.$refs.mediaUpload.clearFile()\n this.clearPollForm()\n this.$emit('posted')\n let el = this.$el.querySelector('textarea')\n el.style.height = 'auto'\n el.style.height = undefined\n this.error = null\n if (this.preview) this.previewStatus()\n } else {\n this.error = data.error\n }\n\n this.posting = false\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 },\n removeMediaFile (fileInfo) {\n let index = this.newStatus.files.indexOf(fileInfo)\n this.newStatus.files.splice(index, 1)\n },\n uploadFailed (errString, templateArgs) {\n templateArgs = templateArgs || {}\n this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n },\n disableSubmit () {\n this.submitDisabled = true\n },\n enableSubmit () {\n this.submitDisabled = 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 = 'copy'\n if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n clearTimeout(this.dropStopTimeout)\n this.showDropIcon = 'show'\n }\n },\n onEmojiInputInput (e) {\n this.autoPreview()\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$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 = Number(bottomBottomPaddingStr.substring(0, bottomBottomPaddingStr.length - 2))\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 = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const bottomPadding = Number(bottomPaddingStr.substring(0, bottomPaddingStr.length - 2))\n const vertPadding = topPadding + bottomPadding\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 newHeight = target.scrollHeight - vertPadding\n target.style.height = `${newHeight}px`\n // END content size update\n\n // We check where the bottom border of form-bottom element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n // The intention is basically this;\n // Keep form-bottom always visible so that submit button is in view EXCEPT\n // if form element bigger than scroller and caret isn't at the end, so that\n // if you scroll up and edit middle of text you won't get scrolled back to bottom\n const shouldScrollToBottom = isBottomObstructed &&\n !(isFormBiggerThanScroller &&\n this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n const targetScroll = currentScroll + totalDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$refs['emoji-input'].resize()\n },\n showEmojiPicker () {\n this.$refs['textarea'].focus()\n this.$refs['emoji-input'].triggerShowPicker()\n },\n clearError () {\n this.error = null\n },\n changeVis (visibility) {\n this.newStatus.visibility = visibility\n },\n togglePollForm () {\n this.pollFormVisible = !this.pollFormVisible\n },\n setPoll (poll) {\n this.newStatus.poll = poll\n },\n clearPollForm () {\n if (this.$refs.pollForm) {\n this.$refs.pollForm.clear()\n }\n },\n dismissScopeNotice () {\n this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n },\n setMediaDescription (id) {\n const description = this.newStatus.mediaDescriptions[id]\n if (!description || description.trim() === '') return\n return statusPoster.setMediaDescription({ store: this.$store, id, description })\n },\n setAllMediaDescriptions () {\n const ids = this.newStatus.files.map(file => file.id)\n return Promise.all(ids.map(id => this.setMediaDescription(id)))\n }\n }\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-5e0592dd\\\",\\\"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();return _vm.postStatus(_vm.newStatus)},\"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 icon-upload\",style:({ animation: _vm.showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }),on:{\"dragleave\":_vm.fileDragStop,\"drop\":function($event){$event.stopPropagation();return _vm.fileDrop($event)}}}),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[(!_vm.$store.state.users.currentUser.locked && _vm.newStatus.visibility == 'private')?_c('i18n',{staticClass:\"visibility-notice\",attrs:{\"path\":\"post_status.account_not_locked_warning\",\"tag\":\"p\"}},[_c('router-link',{attrs:{\"to\":{ name: 'user-settings' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.account_not_locked_warning_link'))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'public')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.public')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'unlisted')?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.unlisted')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(!_vm.hideScopeNotice && _vm.newStatus.visibility === 'private' && _vm.$store.state.users.currentUser.locked)?_c('p',{staticClass:\"visibility-notice notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.$t('post_status.scope_notice.private')))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissScopeNotice()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):(_vm.newStatus.visibility === 'direct')?_c('p',{staticClass:\"visibility-notice\"},[(_vm.safeDMEnabled)?_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_first_only')))]):_c('span',[_vm._v(_vm._s(_vm.$t('post_status.direct_warning_to_all')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"preview-heading faint\"},[_c('a',{staticClass:\"preview-toggle faint\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePreview($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.preview'))+\"\\n \"),_c('i',{staticClass:\"icon-down-open\",style:({ transform: _vm.showPreview ? 'rotate(0deg)' : 'rotate(-90deg)' })})]),_vm._v(\" \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.previewLoading),expression:\"previewLoading\"}],staticClass:\"icon-spin3 animate-spin\"})]),_vm._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.newStatus.spoilerText || _vm.alwaysShowSubject)?_c('EmojiInput',{staticClass:\"form-control\",attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newStatus.spoilerText),callback:function ($$v) {_vm.$set(_vm.newStatus, \"spoilerText\", $$v)},expression:\"newStatus.spoilerText\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.spoilerText),expression:\"newStatus.spoilerText\"}],staticClass:\"form-post-subject\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.content_warning'),\"disabled\":_vm.posting},domProps:{\"value\":(_vm.newStatus.spoilerText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus, \"spoilerText\", $event.target.value)}}})]):_vm._e(),_vm._v(\" \"),_c('EmojiInput',{ref:\"emoji-input\",staticClass:\"form-control main-input\",attrs:{\"suggest\":_vm.emojiUserSuggestor,\"enable-emoji-picker\":\"\",\"hide-emoji-button\":\"\",\"enable-sticker-picker\":\"\"},on:{\"input\":_vm.onEmojiInputInput,\"sticker-uploaded\":_vm.addMediaFile,\"sticker-upload-failed\":_vm.uploadFailed},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\",attrs:{\"placeholder\":_vm.$t('post_status.default'),\"rows\":\"1\",\"disabled\":_vm.posting},domProps:{\"value\":(_vm.newStatus.status)},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.metaKey){ return null; }return _vm.postStatus(_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; }return _vm.postStatus(_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(\" \"),_c('div',{staticClass:\"visibility-tray\"},[_c('scope-selector',{attrs:{\"show-all\":_vm.showAllScopes,\"user-default\":_vm.userDefaultScope,\"original-scope\":_vm.copyMessageScope,\"initial-scope\":_vm.newStatus.visibility,\"on-scope-change\":_vm.changeVis}}),_vm._v(\" \"),(_vm.postFormats.length > 1)?_c('div',{staticClass:\"text-format\"},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"post-content-type\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.contentType),expression:\"newStatus.contentType\"}],staticClass:\"form-control\",attrs:{\"id\":\"post-content-type\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.newStatus, \"contentType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.postFormats),function(postFormat){return _c('option',{key:postFormat,domProps:{\"value\":postFormat}},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + postFormat + \"\\\"]\")))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]):_vm._e(),_vm._v(\" \"),(_vm.postFormats.length === 1 && _vm.postFormats[0] !== 'text/plain')?_c('div',{staticClass:\"text-format\"},[_c('span',{staticClass:\"only-format\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t((\"post_status.content_type[\\\"\" + (_vm.postFormats[0]) + \"\\\"]\")))+\"\\n \")])]):_vm._e()],1)],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},on:{\"uploading\":_vm.disableSubmit,\"uploaded\":_vm.addMediaFile,\"upload-failed\":_vm.uploadFailed,\"all-uploaded\":_vm.enableSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"emoji-icon\"},[_c('i',{staticClass:\"icon-smile btn btn-default\",attrs:{\"title\":_vm.$t('emoji.add_emoji')},on:{\"click\":_vm.showEmojiPicker}})]),_vm._v(\" \"),(_vm.pollsAvailable)?_c('div',{staticClass:\"poll-icon\",class:{ selected: _vm.pollFormVisible }},[_c('i',{staticClass:\"icon-chart-bar btn btn-default\",attrs:{\"title\":_vm.$t('polls.add_poll')},on:{\"click\":_vm.togglePollForm}})]):_vm._e()],1),_vm._v(\" \"),(_vm.posting)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.posting'))+\"\\n \")]):(_vm.isOverLengthLimit)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.submitDisabled,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"attachments\"},_vm._l((_vm.newStatus.files),function(file){return _c('div',{key:file.url,staticClass:\"media-upload-wrapper\"},[_c('i',{staticClass:\"fa button-icon icon-cancel\",on:{\"click\":function($event){return _vm.removeMediaFile(file)}}}),_vm._v(\" \"),_c('attachment',{attrs:{\"attachment\":file,\"set-media\":function () { return _vm.$store.dispatch('setMedia', _vm.newStatus.files); },\"size\":\"small\",\"allow-play\":\"false\"}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newStatus.mediaDescriptions[file.id]),expression:\"newStatus.mediaDescriptions[file.id]\"}],attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('post_status.media_description')},domProps:{\"value\":(_vm.newStatus.mediaDescriptions[file.id])},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newStatus.mediaDescriptions, file.id, $event.target.value)}}})],1)}),0),_vm._v(\" \"),(_vm.newStatus.files.length > 0)?_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 StillImage = {\n props: [\n 'src',\n 'referrerpolicy',\n 'mimetype',\n 'imageLoadError',\n 'imageLoadHandler',\n 'alt'\n ],\n data () {\n return {\n stopGifs: this.$store.getters.mergedConfig.stopGifs\n }\n },\n computed: {\n animated () {\n return this.stopGifs && (this.mimetype === 'image/gif' || this.src.endsWith('.gif'))\n }\n },\n methods: {\n onLoad () {\n this.imageLoadHandler && this.imageLoadHandler(this.$refs.src)\n const canvas = this.$refs.canvas\n if (!canvas) return\n const width = this.$refs.src.naturalWidth\n const height = this.$refs.src.naturalHeight\n canvas.width = width\n canvas.height = height\n canvas.getContext('2d').drawImage(this.$refs.src, 0, 0, width, height)\n },\n onError () {\n this.imageLoadError && this.imageLoadError()\n }\n }\n}\n\nexport default StillImage\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./still-image.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./still-image.js\"\nimport __vue_script__ from \"!!babel-loader!./still-image.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6a0d8118\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./still-image.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"still-image\",class:{ animated: _vm.animated }},[(_vm.animated)?_c('canvas',{ref:\"canvas\"}):_vm._e(),_vm._v(\" \"),_c('img',{key:_vm.src,ref:\"src\",attrs:{\"alt\":_vm.alt,\"title\":_vm.alt,\"src\":_vm.src,\"referrerpolicy\":_vm.referrerpolicy},on:{\"load\":_vm.onLoad,\"error\":_vm.onError}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <time\n :datetime=\"time\"\n :title=\"localeDateString\"\n >\n {{ $t(relativeTime.key, [relativeTime.num]) }}\n </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\n\nexport default {\n name: 'Timeago',\n props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold'],\n data () {\n return {\n relativeTime: { key: 'time.now', num: 0 },\n interval: null\n }\n },\n computed: {\n localeDateString () {\n return typeof this.time === 'string'\n ? new Date(Date.parse(this.time)).toLocaleString()\n : this.time.toLocaleString()\n }\n },\n created () {\n this.refreshRelativeTimeObject()\n },\n destroyed () {\n clearTimeout(this.interval)\n },\n methods: {\n refreshRelativeTimeObject () {\n const nowThreshold = typeof this.nowThreshold === 'number' ? this.nowThreshold : 1\n this.relativeTime = this.longFormat\n ? DateUtils.relativeTime(this.time, nowThreshold)\n : DateUtils.relativeTimeShort(this.time, nowThreshold)\n\n if (this.autoUpdate) {\n this.interval = setTimeout(\n this.refreshRelativeTimeObject,\n 1000 * this.autoUpdate\n )\n }\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./timeago.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ac499830\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeago.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('time',{attrs:{\"datetime\":_vm.time,\"title\":_vm.localeDateString}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(_vm.relativeTime.key, [_vm.relativeTime.num]))+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\n\nconst Attachment = {\n props: [\n 'attachment',\n 'nsfw',\n 'size',\n 'allowPlay',\n 'setMedia',\n 'naturalSizeLoad'\n ],\n data () {\n return {\n nsfwImage: this.$store.state.instance.nsfwCensorImage || nsfwImage,\n hideNsfwLocal: this.$store.getters.mergedConfig.hideNsfw,\n preloadImage: this.$store.getters.mergedConfig.preloadImage,\n loading: false,\n img: fileTypeService.fileType(this.attachment.mimetype) === 'image' && document.createElement('img'),\n modalOpen: false,\n showHidden: false\n }\n },\n components: {\n StillImage,\n VideoAttachment\n },\n computed: {\n usePlaceholder () {\n return this.size === 'hide' || this.type === 'unknown'\n },\n placeholderName () {\n if (this.attachment.description === '' || !this.attachment.description) {\n return this.type.toUpperCase()\n }\n return this.attachment.description\n },\n placeholderIconClass () {\n if (this.type === 'image') return 'icon-picture'\n if (this.type === 'video') return 'icon-video'\n if (this.type === 'audio') return 'icon-music'\n return 'icon-doc'\n },\n referrerpolicy () {\n return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n },\n type () {\n return fileTypeService.fileType(this.attachment.mimetype)\n },\n hidden () {\n return this.nsfw && this.hideNsfwLocal && !this.showHidden\n },\n isEmpty () {\n return (this.type === 'html' && !this.attachment.oembed) || this.type === 'unknown'\n },\n isSmall () {\n return this.size === 'small'\n },\n fullwidth () {\n if (this.size === 'hide') return false\n return this.type === 'html' || this.type === 'audio' || this.type === 'unknown'\n },\n useModal () {\n const modalTypes = this.size === 'hide' ? ['image', 'video', 'audio']\n : this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n return modalTypes.includes(this.type)\n },\n ...mapGetters(['mergedConfig'])\n },\n methods: {\n linkClicked ({ target }) {\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n },\n openModal (event) {\n if (this.useModal) {\n event.stopPropagation()\n event.preventDefault()\n this.setMedia()\n this.$store.dispatch('setCurrent', this.attachment)\n }\n },\n toggleHidden (event) {\n if (\n (this.mergedConfig.useOneClickNsfw && !this.showHidden) &&\n (this.type !== 'video' || this.mergedConfig.playVideosInModal)\n ) {\n this.openModal(event)\n return\n }\n if (this.img && !this.preloadImage) {\n if (this.img.onload) {\n this.img.onload()\n } else {\n this.loading = true\n this.img.src = this.attachment.url\n this.img.onload = () => {\n this.loading = false\n this.showHidden = !this.showHidden\n }\n }\n } else {\n this.showHidden = !this.showHidden\n }\n },\n onImageLoad (image) {\n const width = image.naturalWidth\n const height = image.naturalHeight\n this.naturalSizeLoad && this.naturalSizeLoad({ width, height })\n }\n }\n}\n\nexport default Attachment\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./attachment.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-07d0463d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {\nvar _obj;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.usePlaceholder)?_c('div',{class:{ 'fullwidth': _vm.fullwidth },on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description}},[_c('span',{class:_vm.placeholderIconClass}),_vm._v(\" \"),_c('b',[_vm._v(_vm._s(_vm.nsfw ? \"NSFW / \" : \"\"))]),_vm._v(_vm._s(_vm.placeholderName)+\"\\n \")]):_vm._e()]):_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isEmpty),expression:\"!isEmpty\"}],staticClass:\"attachment\",class:( _obj = {}, _obj[_vm.type] = true, _obj.loading = _vm.loading, _obj['fullwidth'] = _vm.fullwidth, _obj['nsfw-placeholder'] = _vm.hidden, _obj )},[(_vm.hidden)?_c('a',{staticClass:\"image-attachment\",attrs:{\"href\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_c('img',{key:_vm.nsfwImage,staticClass:\"nsfw\",class:{'small': _vm.isSmall},attrs:{\"src\":_vm.nsfwImage}}),_vm._v(\" \"),(_vm.type === 'video')?_c('i',{staticClass:\"play-icon icon-play-circled\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),(_vm.nsfw && _vm.hideNsfwLocal && !_vm.hidden)?_c('div',{staticClass:\"hider\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleHidden($event)}}},[_vm._v(\"Hide\")])]):_vm._e(),_vm._v(\" \"),(_vm.type === 'image' && (!_vm.hidden || _vm.preloadImage))?_c('a',{staticClass:\"image-attachment\",class:{'hidden': _vm.hidden && _vm.preloadImage },attrs:{\"href\":_vm.attachment.url,\"target\":\"_blank\"},on:{\"click\":_vm.openModal}},[_c('StillImage',{attrs:{\"referrerpolicy\":_vm.referrerpolicy,\"mimetype\":_vm.attachment.mimetype,\"src\":_vm.attachment.large_thumb_url || _vm.attachment.url,\"image-load-handler\":_vm.onImageLoad,\"alt\":_vm.attachment.description}})],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'video' && !_vm.hidden)?_c('a',{staticClass:\"video-container\",class:{'small': _vm.isSmall},attrs:{\"href\":_vm.allowPlay ? undefined : _vm.attachment.url},on:{\"click\":_vm.openModal}},[_c('VideoAttachment',{staticClass:\"video\",attrs:{\"attachment\":_vm.attachment,\"controls\":_vm.allowPlay}}),_vm._v(\" \"),(!_vm.allowPlay)?_c('i',{staticClass:\"play-icon icon-play-circled\"}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{attrs:{\"src\":_vm.attachment.url,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","// When contributing, please sort JSON before committing so it would be easier to see what's missing and what's being added compared to English and other languages. It's not obligatory, but just an advice.\n// To sort json use jq https://stedolan.github.io/jq and invoke it like `jq -S . xx.json > xx.sorted.json`, AFAIK, there's no inplace edit option like in sed\n// Also, when adding a new language to \"messages\" variable, please do it alphabetically by language code so that users can search or check their custom language easily.\n\n// For anyone contributing to old huge messages.js and in need to quickly convert it to JSON\n// sed command for converting currently formatted JS to JSON:\n// sed -i -e \"s/'//gm\" -e 's/\"/\\\\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\\{?)$/\\1\"\\2\": \"\\4\"/gm' -e 's/\\\"\\{\\\"/{/g' -e 's/,\"$/\",/g' file.json\n// There's only problem that apostrophe character ' gets replaced by \\\\ so you have to fix it manually, sorry.\n\nconst loaders = {\n ar: () => import('./ar.json'),\n ca: () => import('./ca.json'),\n cs: () => import('./cs.json'),\n de: () => import('./de.json'),\n eo: () => import('./eo.json'),\n es: () => import('./es.json'),\n et: () => import('./et.json'),\n eu: () => import('./eu.json'),\n fi: () => import('./fi.json'),\n fr: () => import('./fr.json'),\n ga: () => import('./ga.json'),\n he: () => import('./he.json'),\n hu: () => import('./hu.json'),\n it: () => import('./it.json'),\n ja: () => import('./ja_pedantic.json'),\n ja_easy: () => import('./ja_easy.json'),\n ko: () => import('./ko.json'),\n nb: () => import('./nb.json'),\n nl: () => import('./nl.json'),\n oc: () => import('./oc.json'),\n pl: () => import('./pl.json'),\n pt: () => import('./pt.json'),\n ro: () => import('./ro.json'),\n ru: () => import('./ru.json'),\n te: () => import('./te.json'),\n zh: () => import('./zh.json')\n}\n\nconst messages = {\n languages: ['en', ...Object.keys(loaders)],\n default: {\n en: require('./en.json')\n },\n setLanguage: async (i18n, language) => {\n if (loaders[language]) {\n let messages = await loaders[language]()\n i18n.setLocaleMessage(language, messages)\n }\n i18n.locale = language\n }\n}\n\nexport default messages\n","<template>\n <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 <button\n :disabled=\"progress || disabled\"\n @click=\"onClick\"\n >\n <template v-if=\"progress && $slots.progress\">\n <slot name=\"progress\" />\n </template>\n <template v-else>\n <slot />\n </template>\n </button>\n</template>\n\n<script>\nexport default {\n props: {\n disabled: {\n type: Boolean\n },\n click: { // click event handler. Must return a promise\n type: Function,\n default: () => Promise.resolve()\n }\n },\n data () {\n return {\n progress: false\n }\n },\n methods: {\n onClick () {\n this.progress = true\n this.click().then(() => { this.progress = false })\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./progress_button.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9f751ae6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./progress_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{attrs:{\"disabled\":_vm.progress || _vm.disabled},on:{\"click\":_vm.onClick}},[(_vm.progress && _vm.$slots.progress)?[_vm._t(\"progress\")]:[_vm._t(\"default\")]],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { set, delete as del } from 'vue'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior'\n]\n\nexport const defaultState = {\n colors: {},\n theme: undefined,\n customTheme: undefined,\n customThemeSource: undefined,\n hideISP: false,\n // bad name: actually hides posts of muted USERS\n hideMutedPosts: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n maxThumbnails: 16,\n hideNsfw: true,\n preloadImage: true,\n loopVideo: true,\n loopVideoSilentOnly: true,\n autoLoad: true,\n streaming: false,\n hoverPreview: true,\n emojiReactionsOnTimeline: true,\n autohideFloatingPostButton: false,\n pauseOnUnfocused: true,\n stopGifs: false,\n replyVisibility: 'all',\n notificationVisibility: {\n follows: true,\n mentions: true,\n likes: true,\n repeats: true,\n moves: true,\n emojiReactions: false,\n followRequest: true\n },\n webPushNotifications: false,\n muteWords: [],\n highlight: {},\n interfaceLanguage: browserLocale,\n hideScopeNotice: false,\n useStreamingApi: false,\n scopeCopy: undefined, // instance default\n subjectLineBehavior: undefined, // instance default\n alwaysShowSubjectInput: undefined, // instance default\n postContentType: undefined, // instance default\n minimalScopesMode: undefined, // instance default\n // This hides statuses filtered via a word filter\n hideFilteredStatuses: undefined, // instance default\n playVideosInModal: false,\n useOneClickNsfw: false,\n useContainFit: false,\n greentext: undefined, // instance default\n hidePostStats: undefined, // instance default\n hideUserStats: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n .filter(([key, value]) => value === undefined)\n .map(([key, value]) => key)\n\nconst config = {\n state: defaultState,\n getters: {\n mergedConfig (state, getters, rootState, rootGetters) {\n const { instance } = rootState\n return {\n ...state,\n ...instanceDefaultProperties\n .map(key => [key, state[key] === undefined\n ? instance[key]\n : state[key]\n ])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n }\n },\n mutations: {\n setOption (state, { name, value }) {\n set(state, name, value)\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n set(state.highlight, user, { color: color || data.color, type: type || data.type })\n } else {\n del(state.highlight, user)\n }\n }\n },\n actions: {\n setHighlight ({ commit, dispatch }, { user, color, type }) {\n commit('setHighlight', { user, color, type })\n },\n setOption ({ commit, dispatch }, { name, value }) {\n commit('setOption', { name, value })\n switch (name) {\n case 'theme':\n setPreset(value)\n break\n case 'customTheme':\n case 'customThemeSource':\n applyTheme(value)\n break\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n break\n }\n }\n }\n}\n\nexport default config\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n const statusText = status.text.toLowerCase()\n const statusSummary = status.summary.toLowerCase()\n const hits = filter(muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n}\n","export const findOffset = (child, parent, { top = 0, left = 0 } = {}, ignorePadding = true) => {\n const result = {\n top: top + child.offsetTop,\n left: left + child.offsetLeft\n }\n if (!ignorePadding && child !== window) {\n const { topPadding, leftPadding } = findPadding(child)\n result.top += ignorePadding ? 0 : topPadding\n result.left += ignorePadding ? 0 : leftPadding\n }\n\n if (child.offsetParent && (parent === window || parent.contains(child.offsetParent) || parent === child.offsetParent)) {\n return findOffset(child.offsetParent, parent, result, false)\n } else {\n if (parent !== window) {\n const { topPadding, leftPadding } = findPadding(parent)\n result.top += topPadding\n result.left += leftPadding\n }\n return result\n }\n}\n\nconst findPadding = (el) => {\n const topPaddingStr = window.getComputedStyle(el)['padding-top']\n const topPadding = Number(topPaddingStr.substring(0, topPaddingStr.length - 2))\n const leftPaddingStr = window.getComputedStyle(el)['padding-left']\n const leftPadding = Number(leftPaddingStr.substring(0, leftPaddingStr.length - 2))\n\n return { topPadding, leftPadding }\n}\n","const fetchRelationship = (attempt, userId, store) => new Promise((resolve, reject) => {\n setTimeout(() => {\n store.state.api.backendInteractor.fetchUserRelationship({ id: userId })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n return relationship\n })\n .then((relationship) => resolve([relationship.following, relationship.requested, relationship.locked, attempt]))\n .catch((e) => reject(e))\n }, 500)\n}).then(([following, sent, locked, attempt]) => {\n if (!following && !(locked && sent) && attempt <= 3) {\n // If we BE reports that we still not following that user - retry,\n // increment attempts by one\n fetchRelationship(++attempt, userId, store)\n }\n})\n\nexport const requestFollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.followUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n\n if (updated.following || (updated.locked && updated.requested)) {\n // If we get result immediately or the account is locked, just stop.\n resolve()\n return\n }\n\n // But usually we don't get result immediately, so we ask server\n // for updated user profile to confirm if we are following them\n // Sometimes it takes several tries. Sometimes we end up not following\n // user anyway, probably because they locked themselves and we\n // don't know that yet.\n // Recursive Promise, it will call itself up to 3 times.\n\n return fetchRelationship(1, updated, store)\n .then(() => {\n resolve()\n })\n })\n})\n\nexport const requestUnfollow = (userId, store) => new Promise((resolve, reject) => {\n store.state.api.backendInteractor.unfollowUser({ id: userId })\n .then((updated) => {\n store.commit('updateUserRelationship', [updated])\n resolve({\n updated\n })\n })\n})\n","import { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'labelFollowing', 'buttonClass'],\n data () {\n return {\n inProgress: false\n }\n },\n computed: {\n isPressed () {\n return this.inProgress || this.relationship.following\n },\n title () {\n if (this.inProgress || this.relationship.following) {\n return this.$t('user_card.follow_unfollow')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_again')\n } else {\n return this.$t('user_card.follow')\n }\n },\n label () {\n if (this.inProgress) {\n return this.$t('user_card.follow_progress')\n } else if (this.relationship.following) {\n return this.labelFollowing || this.$t('user_card.following')\n } else if (this.relationship.requested) {\n return this.$t('user_card.follow_sent')\n } else {\n return this.$t('user_card.follow')\n }\n }\n },\n methods: {\n onClick () {\n this.relationship.following ? this.unfollow() : this.follow()\n },\n follow () {\n this.inProgress = true\n requestFollow(this.relationship.id, this.$store).then(() => {\n this.inProgress = false\n })\n },\n unfollow () {\n const store = this.$store\n this.inProgress = true\n requestUnfollow(this.relationship.id, store).then(() => {\n this.inProgress = false\n store.commit('removeStatus', { timeline: 'friends', userId: this.relationship.id })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./follow_button.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fae84d0a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"btn btn-default follow-button\",class:{ toggled: _vm.isPressed },attrs:{\"disabled\":_vm.inProgress,\"title\":_vm.title},on:{\"click\":_vm.onClick}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst VideoAttachment = {\n props: ['attachment', 'controls'],\n data () {\n return {\n loopVideo: this.$store.getters.mergedConfig.loopVideo\n }\n },\n methods: {\n onVideoDataLoad (e) {\n const target = e.srcElement || e.target\n if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n // non-zero if video has audio track\n if (target.webkitAudioDecodedByteCount > 0) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n } else if (typeof target.mozHasAudio !== 'undefined') {\n // true if video has audio track\n if (target.mozHasAudio) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n } else if (typeof target.audioTracks !== 'undefined') {\n if (target.audioTracks.length > 0) {\n this.loopVideo = this.loopVideo && !this.$store.getters.mergedConfig.loopVideoSilentOnly\n }\n }\n }\n }\n}\n\nexport default VideoAttachment\n","/* script */\nexport * from \"!!babel-loader!./video_attachment.js\"\nimport __vue_script__ from \"!!babel-loader!./video_attachment.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-45029e08\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./video_attachment.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('video',{staticClass:\"video\",attrs:{\"src\":_vm.attachment.url,\"loop\":_vm.loopVideo,\"controls\":_vm.controls,\"alt\":_vm.attachment.description,\"title\":_vm.attachment.description,\"playsinline\":\"\"},on:{\"loadeddata\":_vm.onVideoDataLoad}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","export default {\n props: [ 'user' ],\n computed: {\n subscribeUrl () {\n // eslint-disable-next-line no-undef\n const serverUrl = new URL(this.user.statusnet_profile_url)\n return `${serverUrl.protocol}//${serverUrl.host}/main/ostatus`\n }\n }\n}\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e95e446e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"remote-follow\"},[_c('form',{attrs:{\"method\":\"POST\",\"action\":_vm.subscribeUrl}},[_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"nickname\"},domProps:{\"value\":_vm.user.screen_name}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"profile\",\"value\":\"\"}}),_vm._v(\" \"),_c('button',{staticClass:\"remote-button\",attrs:{\"click\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.remote_follow'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const fileSizeFormat = (num) => {\n var exponent\n var unit\n var units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n if (num < 1) {\n return num + ' ' + units[0]\n }\n\n exponent = Math.min(Math.floor(Math.log(num) / Math.log(1024)), units.length - 1)\n num = (num / Math.pow(1024, exponent)).toFixed(2) * 1\n unit = units[exponent]\n return { num: num, unit: unit }\n}\nconst fileSizeFormatService = {\n fileSizeFormat\n}\nexport default fileSizeFormatService\n","import { debounce } from 'lodash'\n/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (state.instance.emoji + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nconst debounceUserSearch = debounce((data, input) => {\n data.updateUsersList(input)\n}, 500)\n\nexport default data => input => {\n const firstChar = input[0]\n if (firstChar === ':' && data.emoji) {\n return suggestEmoji(data.emoji)(input)\n }\n if (firstChar === '@' && data.users) {\n return suggestUsers(data)(input)\n }\n return []\n}\n\nexport const suggestEmoji = emojis => input => {\n const noPrefix = input.toLowerCase().substr(1)\n return emojis\n .filter(({ displayText }) => displayText.toLowerCase().match(noPrefix))\n .sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // An exact match always wins\n aScore += a.displayText.toLowerCase() === noPrefix ? 200 : 0\n bScore += b.displayText.toLowerCase() === noPrefix ? 200 : 0\n\n // Prioritize custom emoji a lot\n aScore += a.imageUrl ? 100 : 0\n bScore += b.imageUrl ? 100 : 0\n\n // Prioritize prefix matches somewhat\n aScore += a.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n bScore += b.displayText.toLowerCase().startsWith(noPrefix) ? 10 : 0\n\n // Sort by length\n aScore -= a.displayText.length\n bScore -= b.displayText.length\n\n // Break ties alphabetically\n const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n return bScore - aScore + alphabetically\n })\n}\n\nexport const suggestUsers = data => input => {\n const noPrefix = input.toLowerCase().substr(1)\n const users = data.users\n\n const newUsers = users.filter(\n user =>\n user.screen_name.toLowerCase().startsWith(noPrefix) ||\n user.name.toLowerCase().startsWith(noPrefix)\n\n /* taking only 20 results so that sorting is a bit cheaper, we display\n * only 5 anyway. could be inaccurate, but we ideally we should query\n * backend anyway\n */\n ).slice(0, 20).sort((a, b) => {\n let aScore = 0\n let bScore = 0\n\n // Matches on screen name (i.e. user@instance) makes a priority\n aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n // Matches on name takes second priority\n aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n const diff = (bScore - aScore) * 10\n\n // Then sort alphabetically\n const nameAlphabetically = a.name > b.name ? 1 : -1\n const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n return diff + nameAlphabetically + screenNameAlphabetically\n /* eslint-disable camelcase */\n }).map(({ screen_name, name, profile_image_url_original }) => ({\n displayText: screen_name,\n detailText: name,\n imageUrl: profile_image_url_original,\n replacement: '@' + screen_name + ' '\n }))\n\n // BE search users to get more comprehensive results\n if (data.updateUsersList) {\n debounceUserSearch(data, noPrefix)\n }\n return newUsers\n /* eslint-enable camelcase */\n}\n","import Vue from 'vue'\n\nimport './tab_switcher.scss'\n\nexport default Vue.component('tab-switcher', {\n name: 'TabSwitcher',\n props: {\n renderOnlyFocused: {\n required: false,\n type: Boolean,\n default: false\n },\n onSwitch: {\n required: false,\n type: Function,\n default: undefined\n },\n activeTab: {\n required: false,\n type: String,\n default: undefined\n },\n scrollableTabs: {\n required: false,\n type: Boolean,\n default: false\n },\n sideTabBar: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n active: this.$slots.default.findIndex(_ => _.tag)\n }\n },\n computed: {\n activeIndex () {\n // In case of controlled component\n if (this.activeTab) {\n return this.$slots.default.findIndex(slot => this.activeTab === slot.key)\n } else {\n return this.active\n }\n }\n },\n beforeUpdate () {\n const currentSlot = this.$slots.default[this.active]\n if (!currentSlot.tag) {\n this.active = this.$slots.default.findIndex(_ => _.tag)\n }\n },\n methods: {\n activateTab (index) {\n return (e) => {\n e.preventDefault()\n if (typeof this.onSwitch === 'function') {\n this.onSwitch.call(null, this.$slots.default[index].key)\n }\n this.active = index\n if (this.scrollableTabs) {\n this.$refs.contents.scrollTop = 0\n }\n }\n }\n },\n render (h) {\n const tabs = this.$slots.default\n .map((slot, index) => {\n if (!slot.tag) return\n const classesTab = ['tab']\n const classesWrapper = ['tab-wrapper']\n if (this.activeIndex === index) {\n classesTab.push('active')\n classesWrapper.push('active')\n }\n if (slot.data.attrs.image) {\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.activateTab(index)}\n class={classesTab.join(' ')}>\n <img src={slot.data.attrs.image} title={slot.data.attrs['image-tooltip']}/>\n {slot.data.attrs.label ? '' : slot.data.attrs.label}\n </button>\n </div>\n )\n }\n return (\n <div class={classesWrapper.join(' ')}>\n <button\n disabled={slot.data.attrs.disabled}\n onClick={this.activateTab(index)}\n class={classesTab.join(' ')}\n type=\"button\"\n >\n {!slot.data.attrs.icon ? '' : (<i class={'tab-icon icon-' + slot.data.attrs.icon}/>)}\n <span class=\"text\">\n {slot.data.attrs.label}\n </span>\n </button>\n </div>\n )\n })\n\n const contents = this.$slots.default.map((slot, index) => {\n if (!slot.tag) return\n const active = this.activeIndex === index\n const classes = [ active ? 'active' : 'hidden' ]\n if (slot.data.attrs.fullHeight) {\n classes.push('full-height')\n }\n const renderSlot = (!this.renderOnlyFocused || active)\n ? slot\n : ''\n\n return (\n <div class={classes}>\n {\n this.sideTabBar\n ? <h1 class=\"mobile-label\">{slot.data.attrs.label}</h1>\n : ''\n }\n {renderSlot}\n </div>\n )\n })\n\n return (\n <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n <div class=\"tabs\">\n {tabs}\n </div>\n <div ref=\"contents\" class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}>\n {contents}\n </div>\n </div>\n )\n }\n})\n","import isFunction from 'lodash/isFunction'\n\nconst getComponentOptions = (Component) => (isFunction(Component)) ? Component.options : Component\n\nconst getComponentProps = (Component) => getComponentOptions(Component).props\n\nexport {\n getComponentOptions,\n getComponentProps\n}\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n const words = splitIntoWords(str)\n const wordsWithPosition = addPositionToWords(words)\n\n return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n return reduce(words, (result, word) => {\n const data = {\n word,\n start: 0,\n end: word.length\n }\n\n if (result.length > 0) {\n const previous = result.pop()\n\n data.start += previous.end\n data.end += previous.end\n\n result.push(previous)\n }\n\n result.push(data)\n\n return result\n }, [])\n}\n\nexport const splitIntoWords = (str) => {\n // Split at word boundaries\n const regex = /\\b/\n const triggers = /[@#:]+$/\n\n let split = str.split(regex)\n\n // Add trailing @ and # to the following word.\n const words = reduce(split, (result, word) => {\n if (result.length > 0) {\n let previous = result.pop()\n const matches = previous.match(triggers)\n if (matches) {\n previous = previous.replace(triggers, '')\n word = matches[0] + word\n }\n result.push(previous)\n }\n result.push(word)\n\n return result\n }, [])\n\n return words\n}\n\nconst completion = {\n wordAtPosition,\n addPositionToWords,\n splitIntoWords,\n replaceWord\n}\n\nexport default completion\n","import Checkbox from '../checkbox/checkbox.vue'\n\n// At widest, approximately 20 emoji are visible in a row,\n// loading 3 rows, could be overkill for narrow picker\nconst LOAD_EMOJI_BY = 60\n\n// When to start loading new batch emoji, in pixels\nconst LOAD_EMOJI_MARGIN = 64\n\nconst filterByKeyword = (list, keyword = '') => {\n return list.filter(x => x.displayText.includes(keyword))\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiBufferSlice: LOAD_EMOJI_BY,\n customEmojiTimeout: null,\n customEmojiLoadAllConfirmed: false\n }\n },\n components: {\n StickerPicker: () => import('../sticker_picker/sticker_picker.vue'),\n Checkbox\n },\n methods: {\n onStickerUploaded (e) {\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.$emit('sticker-upload-failed', e)\n },\n onEmoji (emoji) {\n const value = emoji.imageUrl ? `:${emoji.displayText}:` : emoji.replacement\n this.$emit('emoji', { insertion: value, keepOpen: this.keepOpen })\n },\n onScroll (e) {\n const target = (e && e.target) || this.$refs['emoji-groups']\n this.updateScrolledClass(target)\n this.scrolledGroup(target)\n this.triggerLoadMore(target)\n },\n highlight (key) {\n const ref = this.$refs['group-' + key]\n const top = ref[0].offsetTop\n this.setShowStickers(false)\n this.activeGroup = key\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = top + 1\n })\n },\n updateScrolledClass (target) {\n if (target.scrollTop <= 5) {\n this.groupsScrolledClass = 'scrolled-top'\n } else if (target.scrollTop >= target.scrollTopMax - 5) {\n this.groupsScrolledClass = 'scrolled-bottom'\n } else {\n this.groupsScrolledClass = 'scrolled-middle'\n }\n },\n triggerLoadMore (target) {\n const ref = this.$refs['group-end-custom'][0]\n if (!ref) return\n const bottom = ref.offsetTop + ref.offsetHeight\n\n const scrollerBottom = target.scrollTop + target.clientHeight\n const scrollerTop = target.scrollTop\n const scrollerMax = target.scrollHeight\n\n // Loads more emoji when they come into view\n const approachingBottom = bottom - scrollerBottom < LOAD_EMOJI_MARGIN\n // Always load when at the very top in case there's no scroll space yet\n const atTop = scrollerTop < 5\n // Don't load when looking at unicode category or at the very bottom\n const bottomAboveViewport = bottom < scrollerTop || scrollerBottom === scrollerMax\n if (!bottomAboveViewport && (approachingBottom || atTop)) {\n this.loadEmoji()\n }\n },\n scrolledGroup (target) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojisView.forEach(group => {\n const ref = this.$refs['group-' + group.id]\n if (ref[0].offsetTop <= top) {\n this.activeGroup = group.id\n }\n })\n })\n },\n loadEmoji () {\n const allLoaded = this.customEmojiBuffer.length === this.filteredEmoji.length\n\n if (allLoaded) {\n return\n }\n\n this.customEmojiBufferSlice += LOAD_EMOJI_BY\n },\n startEmojiLoad (forceUpdate = false) {\n if (!forceUpdate) {\n this.keyword = ''\n }\n this.$nextTick(() => {\n this.$refs['emoji-groups'].scrollTop = 0\n })\n const bufferSize = this.customEmojiBuffer.length\n const bufferPrefilledAll = bufferSize === this.filteredEmoji.length\n if (bufferPrefilledAll && !forceUpdate) {\n return\n }\n this.customEmojiBufferSlice = LOAD_EMOJI_BY\n },\n toggleStickers () {\n this.showingStickers = !this.showingStickers\n },\n setShowStickers (value) {\n this.showingStickers = value\n }\n },\n watch: {\n keyword () {\n this.customEmojiLoadAllConfirmed = false\n this.onScroll()\n this.startEmojiLoad(true)\n }\n },\n computed: {\n activeGroupView () {\n return this.showingStickers ? '' : this.activeGroup\n },\n stickersAvailable () {\n if (this.$store.state.instance.stickers) {\n return this.$store.state.instance.stickers.length > 0\n }\n return 0\n },\n filteredEmoji () {\n return filterByKeyword(\n this.$store.state.instance.customEmoji || [],\n this.keyword\n )\n },\n customEmojiBuffer () {\n return this.filteredEmoji.slice(0, this.customEmojiBufferSlice)\n },\n emojis () {\n const standardEmojis = this.$store.state.instance.emoji || []\n const customEmojis = this.customEmojiBuffer\n\n return [\n {\n id: 'custom',\n text: this.$t('emoji.custom'),\n icon: 'icon-smile',\n emojis: customEmojis\n },\n {\n id: 'standard',\n text: this.$t('emoji.unicode'),\n icon: 'icon-picture',\n emojis: filterByKeyword(standardEmojis, this.keyword)\n }\n ]\n },\n emojisView () {\n return this.emojis.filter(value => value.emojis.length > 0)\n },\n stickerPickerEnabled () {\n return (this.$store.state.instance.stickers || []).length !== 0\n }\n }\n}\n\nexport default EmojiPicker\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./emoji_picker.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./emoji_picker.js\"\nimport __vue_script__ from \"!!babel-loader!./emoji_picker.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-47d21b3b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_picker.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"emoji-picker panel panel-default panel-body\"},[_c('div',{staticClass:\"heading\"},[_c('span',{staticClass:\"emoji-tabs\"},_vm._l((_vm.emojis),function(group){return _c('span',{key:group.id,staticClass:\"emoji-tabs-item\",class:{\n active: _vm.activeGroupView === group.id,\n disabled: group.emojis.length === 0\n },attrs:{\"title\":group.text},on:{\"click\":function($event){$event.preventDefault();return _vm.highlight(group.id)}}},[_c('i',{class:group.icon})])}),0),_vm._v(\" \"),(_vm.stickerPickerEnabled)?_c('span',{staticClass:\"additional-tabs\"},[_c('span',{staticClass:\"stickers-tab-icon additional-tabs-item\",class:{active: _vm.showingStickers},attrs:{\"title\":_vm.$t('emoji.stickers')},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleStickers($event)}}},[_c('i',{staticClass:\"icon-star\"})])]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"emoji-content\",class:{hidden: _vm.showingStickers}},[_c('div',{staticClass:\"emoji-search\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.keyword),expression:\"keyword\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":_vm.$t('emoji.search_emoji')},domProps:{\"value\":(_vm.keyword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.keyword=$event.target.value}}})]),_vm._v(\" \"),_c('div',{ref:\"emoji-groups\",staticClass:\"emoji-groups\",class:_vm.groupsScrolledClass,on:{\"scroll\":_vm.onScroll}},_vm._l((_vm.emojisView),function(group){return _c('div',{key:group.id,staticClass:\"emoji-group\"},[_c('h6',{ref:'group-' + group.id,refInFor:true,staticClass:\"emoji-group-title\"},[_vm._v(\"\\n \"+_vm._s(group.text)+\"\\n \")]),_vm._v(\" \"),_vm._l((group.emojis),function(emoji){return _c('span',{key:group.id + emoji.displayText,staticClass:\"emoji-item\",attrs:{\"title\":emoji.displayText},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onEmoji(emoji)}}},[(!emoji.imageUrl)?_c('span',[_vm._v(_vm._s(emoji.replacement))]):_c('img',{attrs:{\"src\":emoji.imageUrl}})])}),_vm._v(\" \"),_c('span',{ref:'group-end-' + group.id,refInFor:true})],2)}),0),_vm._v(\" \"),_c('div',{staticClass:\"keep-open\"},[_c('Checkbox',{model:{value:(_vm.keepOpen),callback:function ($$v) {_vm.keepOpen=$$v},expression:\"keepOpen\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('emoji.keep_open'))+\"\\n \")])],1)]),_vm._v(\" \"),(_vm.showingStickers)?_c('div',{staticClass:\"stickers-content\"},[_c('sticker-picker',{on:{\"uploaded\":_vm.onStickerUploaded,\"upload-failed\":_vm.onStickerUploadFailed}})],1):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n * <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n props: {\n suggest: {\n /**\n * suggest: function (input: String) => Suggestion[]\n *\n * Function that takes input string which takes string (textAtCaret)\n * and returns an array of Suggestions\n *\n * Suggestion is an object containing following properties:\n * displayText: string. Main display text, what actual suggestion\n * represents (user's screen name/emoji shortcode)\n * replacement: string. Text that should replace the textAtCaret\n * detailText: string, optional. Subtitle text, providing additional info\n * if present (user's nickname)\n * imageUrl: string, optional. Image to display alongside with suggestion,\n * currently if no image is provided, replacement will be used (for\n * unicode emojis)\n *\n * TODO: make it asynchronous when adding proper server-provided user\n * suggestions\n *\n * For commonly used suggestors (emoji, users, both) use suggestor.js\n */\n required: true,\n type: Function\n },\n value: {\n /**\n * Used for v-model\n */\n required: true,\n type: String\n },\n enableEmojiPicker: {\n /**\n * Enables emoji picker support, this implies that custom emoji are supported\n */\n required: false,\n type: Boolean,\n default: false\n },\n hideEmojiButton: {\n /**\n * intended to use with external picker trigger, i.e. you have a button outside\n * input that will open up the picker, see triggerShowPicker()\n */\n required: false,\n type: Boolean,\n default: false\n },\n enableStickerPicker: {\n /**\n * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n */\n required: false,\n type: Boolean,\n default: false\n }\n },\n data () {\n return {\n input: undefined,\n highlighted: 0,\n caret: 0,\n focused: false,\n blurTimeout: null,\n showPicker: false,\n temporarilyHideSuggestions: false,\n keepOpen: false,\n disableClickOutside: false\n }\n },\n components: {\n EmojiPicker\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n suggestions () {\n const firstchar = this.textAtCaret.charAt(0)\n if (this.textAtCaret === firstchar) { return [] }\n const matchedSuggestions = this.suggest(this.textAtCaret)\n if (matchedSuggestions.length <= 0) {\n return []\n }\n return take(matchedSuggestions, 5)\n .map(({ imageUrl, ...rest }, index) => ({\n ...rest,\n // eslint-disable-next-line camelcase\n img: imageUrl || '',\n highlighted: index === this.highlighted\n }))\n },\n showSuggestions () {\n return this.focused &&\n this.suggestions &&\n this.suggestions.length > 0 &&\n !this.showPicker &&\n !this.temporarilyHideSuggestions\n },\n textAtCaret () {\n return (this.wordAtCaret || {}).word || ''\n },\n wordAtCaret () {\n if (this.value && this.caret) {\n const word = Completion.wordAtPosition(this.value, this.caret - 1) || {}\n return word\n }\n }\n },\n mounted () {\n const slots = this.$slots.default\n if (!slots || slots.length === 0) return\n const input = slots.find(slot => ['input', 'textarea'].includes(slot.tag))\n if (!input) return\n this.input = input\n this.resize()\n input.elm.addEventListener('blur', this.onBlur)\n input.elm.addEventListener('focus', this.onFocus)\n input.elm.addEventListener('paste', this.onPaste)\n input.elm.addEventListener('keyup', this.onKeyUp)\n input.elm.addEventListener('keydown', this.onKeyDown)\n input.elm.addEventListener('click', this.onClickInput)\n input.elm.addEventListener('transitionend', this.onTransition)\n input.elm.addEventListener('input', this.onInput)\n },\n unmounted () {\n const { input } = this\n if (input) {\n input.elm.removeEventListener('blur', this.onBlur)\n input.elm.removeEventListener('focus', this.onFocus)\n input.elm.removeEventListener('paste', this.onPaste)\n input.elm.removeEventListener('keyup', this.onKeyUp)\n input.elm.removeEventListener('keydown', this.onKeyDown)\n input.elm.removeEventListener('click', this.onClickInput)\n input.elm.removeEventListener('transitionend', this.onTransition)\n input.elm.removeEventListener('input', this.onInput)\n }\n },\n methods: {\n triggerShowPicker () {\n this.showPicker = true\n this.$refs.picker.startEmojiLoad()\n this.$nextTick(() => {\n this.scrollIntoView()\n })\n // This temporarily disables \"click outside\" handler\n // since external trigger also means click originates\n // from outside, thus preventing picker from opening\n this.disableClickOutside = true\n setTimeout(() => {\n this.disableClickOutside = false\n }, 0)\n },\n togglePicker () {\n this.input.elm.focus()\n this.showPicker = !this.showPicker\n if (this.showPicker) {\n this.scrollIntoView()\n this.$refs.picker.startEmojiLoad()\n }\n },\n replace (replacement) {\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.caret = 0\n },\n insert ({ insertion, keepOpen }) {\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 = !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0 ? ' ' : ''\n const spaceAfter = !isSpaceRegex.exec(after[0]) && this.padEmoji ? ' ' : ''\n\n const newValue = [\n before,\n spaceBefore,\n insertion,\n spaceAfter,\n after\n ].join('')\n this.keepOpen = keepOpen\n this.$emit('input', newValue)\n const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n if (!keepOpen) {\n this.input.elm.focus()\n }\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n // Set selection right after the replacement instead of the very end\n this.input.elm.setSelectionRange(position, position)\n this.caret = position\n })\n },\n replaceText (e, suggestion) {\n const len = this.suggestions.length || 0\n if (this.textAtCaret.length === 1) { return }\n if (len > 0 || suggestion) {\n const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n const replacement = chosenSuggestion.replacement\n const newValue = Completion.replaceWord(this.value, this.wordAtCaret, replacement)\n this.$emit('input', newValue)\n this.highlighted = 0\n const position = this.wordAtCaret.start + replacement.length\n\n this.$nextTick(function () {\n // Re-focus inputbox after clicking suggestion\n this.input.elm.focus()\n // Set selection right after the replacement instead of the very end\n this.input.elm.setSelectionRange(position, position)\n this.caret = position\n })\n e.preventDefault()\n }\n },\n cycleBackward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted -= 1\n if (this.highlighted < 0) {\n this.highlighted = this.suggestions.length - 1\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n if (len > 1) {\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = 0\n }\n e.preventDefault()\n } else {\n this.highlighted = 0\n }\n },\n scrollIntoView () {\n const rootRef = this.$refs['picker'].$el\n /* Scroller is either `window` (replies in TL), sidebar (main post form,\n * replies in notifs) or mobile post form. Note that getting and setting\n * scroll is different for `Window` and `Element`s\n */\n const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n this.$el.closest('.post-form-modal-view') ||\n window\n const currentScroll = scrollerRef === window\n ? scrollerRef.scrollY\n : scrollerRef.scrollTop\n const scrollerHeight = scrollerRef === window\n ? scrollerRef.innerHeight\n : scrollerRef.offsetHeight\n\n const scrollerBottomBorder = currentScroll + scrollerHeight\n // We check where the bottom border of root element is, this uses findOffset\n // to find offset relative to scrollable container (scroller)\n const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n // could also check top delta but there's no case for it\n const targetScroll = currentScroll + bottomDelta\n\n if (scrollerRef === window) {\n scrollerRef.scroll(0, targetScroll)\n } else {\n scrollerRef.scrollTop = targetScroll\n }\n\n this.$nextTick(() => {\n const { offsetHeight } = this.input.elm\n const { picker } = this.$refs\n const pickerBottom = picker.$el.getBoundingClientRect().bottom\n if (pickerBottom > window.innerHeight) {\n picker.$el.style.top = 'auto'\n picker.$el.style.bottom = offsetHeight + 'px'\n }\n })\n },\n onTransition (e) {\n this.resize()\n },\n onBlur (e) {\n // Clicking on any suggestion removes focus from autocomplete,\n // preventing click handler ever executing.\n this.blurTimeout = setTimeout(() => {\n this.focused = false\n this.setCaret(e)\n this.resize()\n }, 200)\n },\n onClick (e, suggestion) {\n this.replaceText(e, suggestion)\n },\n onFocus (e) {\n if (this.blurTimeout) {\n clearTimeout(this.blurTimeout)\n this.blurTimeout = null\n }\n\n if (!this.keepOpen) {\n this.showPicker = false\n }\n this.focused = true\n this.setCaret(e)\n this.resize()\n this.temporarilyHideSuggestions = false\n },\n onKeyUp (e) {\n const { key } = e\n this.setCaret(e)\n this.resize()\n\n // Setting hider in keyUp to prevent suggestions from blinking\n // when moving away from suggested spot\n if (key === 'Escape') {\n this.temporarilyHideSuggestions = true\n } else {\n this.temporarilyHideSuggestions = false\n }\n },\n onPaste (e) {\n this.setCaret(e)\n this.resize()\n },\n onKeyDown (e) {\n const { ctrlKey, shiftKey, key } = e\n // Disable suggestions hotkeys if suggestions are hidden\n if (!this.temporarilyHideSuggestions) {\n if (key === 'Tab') {\n if (shiftKey) {\n this.cycleBackward(e)\n } else {\n this.cycleForward(e)\n }\n }\n if (key === 'ArrowUp') {\n this.cycleBackward(e)\n } else if (key === 'ArrowDown') {\n this.cycleForward(e)\n }\n if (key === 'Enter') {\n if (!ctrlKey) {\n this.replaceText(e)\n }\n }\n }\n // Probably add optional keyboard controls for emoji picker?\n\n // Escape hides suggestions, if suggestions are hidden it\n // de-focuses the element (i.e. default browser behavior)\n if (key === 'Escape') {\n if (!this.temporarilyHideSuggestions) {\n this.input.elm.focus()\n }\n }\n\n this.showPicker = false\n this.resize()\n },\n onInput (e) {\n this.showPicker = false\n this.setCaret(e)\n this.resize()\n this.$emit('input', e.target.value)\n },\n onClickInput (e) {\n this.showPicker = false\n },\n onClickOutside (e) {\n if (this.disableClickOutside) return\n this.showPicker = false\n },\n onStickerUploaded (e) {\n this.showPicker = false\n this.$emit('sticker-uploaded', e)\n },\n onStickerUploadFailed (e) {\n this.showPicker = false\n this.$emit('sticker-upload-Failed', e)\n },\n setCaret ({ target: { selectionStart } }) {\n this.caret = selectionStart\n },\n resize () {\n const { panel, picker } = this.$refs\n if (!panel) return\n const { offsetHeight, offsetTop } = this.input.elm\n const offsetBottom = offsetTop + offsetHeight\n\n panel.style.top = offsetBottom + 'px'\n if (!picker) return\n picker.$el.style.top = offsetBottom + 'px'\n picker.$el.style.bottom = 'auto'\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-4184a282\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./emoji_input.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.onClickOutside),expression:\"onClickOutside\"}],staticClass:\"emoji-input\",class:{ 'with-picker': !_vm.hideEmojiButton }},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.enableEmojiPicker)?[(!_vm.hideEmojiButton)?_c('div',{staticClass:\"emoji-picker-icon\",on:{\"click\":function($event){$event.preventDefault();return _vm.togglePicker($event)}}},[_c('i',{staticClass:\"icon-smile\"})]):_vm._e(),_vm._v(\" \"),(_vm.enableEmojiPicker)?_c('EmojiPicker',{ref:\"picker\",staticClass:\"emoji-picker-panel\",class:{ hide: !_vm.showPicker },attrs:{\"enable-sticker-picker\":_vm.enableStickerPicker},on:{\"emoji\":_vm.insert,\"sticker-uploaded\":_vm.onStickerUploaded,\"sticker-upload-failed\":_vm.onStickerUploadFailed}}):_vm._e()]:_vm._e(),_vm._v(\" \"),_c('div',{ref:\"panel\",staticClass:\"autocomplete-panel\",class:{ hide: !_vm.showSuggestions }},[_c('div',{staticClass:\"autocomplete-panel-body\"},_vm._l((_vm.suggestions),function(suggestion,index){return _c('div',{key:index,staticClass:\"autocomplete-item\",class:{ highlighted: suggestion.highlighted },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.onClick($event, suggestion)}}},[_c('span',{staticClass:\"image\"},[(suggestion.img)?_c('img',{attrs:{\"src\":suggestion.img}}):_c('span',[_vm._v(_vm._s(suggestion.replacement))])]),_vm._v(\" \"),_c('div',{staticClass:\"label\"},[_c('span',{staticClass:\"displayText\"},[_vm._v(_vm._s(suggestion.displayText))]),_vm._v(\" \"),_c('span',{staticClass:\"detailText\"},[_vm._v(_vm._s(suggestion.detailText))])])])}),0)])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const ScopeSelector = {\n props: [\n 'showAll',\n 'userDefault',\n 'originalScope',\n 'initialScope',\n 'onScopeChange'\n ],\n data () {\n return {\n currentScope: this.initialScope\n }\n },\n computed: {\n showNothing () {\n return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n },\n showPublic () {\n return this.originalScope !== 'direct' && this.shouldShow('public')\n },\n showUnlisted () {\n return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n },\n showPrivate () {\n return this.originalScope !== 'direct' && this.shouldShow('private')\n },\n showDirect () {\n return this.shouldShow('direct')\n },\n css () {\n return {\n public: { selected: this.currentScope === 'public' },\n unlisted: { selected: this.currentScope === 'unlisted' },\n private: { selected: this.currentScope === 'private' },\n direct: { selected: this.currentScope === 'direct' }\n }\n }\n },\n methods: {\n shouldShow (scope) {\n return this.showAll ||\n this.currentScope === scope ||\n this.originalScope === scope ||\n this.userDefault === scope ||\n scope === 'direct'\n },\n changeVis (scope) {\n this.currentScope = scope\n this.onScopeChange && this.onScopeChange(scope)\n }\n }\n}\n\nexport default ScopeSelector\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./scope_selector.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./scope_selector.js\"\nimport __vue_script__ from \"!!babel-loader!./scope_selector.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-28e8cbf1\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./scope_selector.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.showNothing)?_c('div',{staticClass:\"scope-selector\"},[(_vm.showDirect)?_c('i',{staticClass:\"icon-mail-alt\",class:_vm.css.direct,attrs:{\"title\":_vm.$t('post_status.scope.direct')},on:{\"click\":function($event){return _vm.changeVis('direct')}}}):_vm._e(),_vm._v(\" \"),(_vm.showPrivate)?_c('i',{staticClass:\"icon-lock\",class:_vm.css.private,attrs:{\"title\":_vm.$t('post_status.scope.private')},on:{\"click\":function($event){return _vm.changeVis('private')}}}):_vm._e(),_vm._v(\" \"),(_vm.showUnlisted)?_c('i',{staticClass:\"icon-lock-open-alt\",class:_vm.css.unlisted,attrs:{\"title\":_vm.$t('post_status.scope.unlisted')},on:{\"click\":function($event){return _vm.changeVis('unlisted')}}}):_vm._e(),_vm._v(\" \"),(_vm.showPublic)?_c('i',{staticClass:\"icon-globe\",class:_vm.css.public,attrs:{\"title\":_vm.$t('post_status.scope.public')},on:{\"click\":function($event){return _vm.changeVis('public')}}}):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","module.exports = __webpack_public_path__ + \"static/img/nsfw.74818f9.png\";","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./timeline.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0084eb3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".timeline .loadmore-text{opacity:1}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce58e9e8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-body{-ms-flex:1;flex:1;min-width:0}.status-pin{padding:.75em .75em 0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end}.media-left{margin-right:.75em}.status-el{border-left-width:0;min-width:0;border-color:#222;border-color:var(--border,#222);border-left:4px red;border-left:4px var(--cRed,red)}.status-el_focused{background-color:#151e2a;background-color:var(--selectedPost,#151e2a);color:#b9b9ba;color:var(--selectedPostText,#b9b9ba);--lightText:var(--selectedPostLightText,$fallback--light);--faint:var(--selectedPostFaintText,$fallback--faint);--faintLink:var(--selectedPostFaintLink,$fallback--faint);--postLink:var(--selectedPostPostLink,$fallback--faint);--postFaintLink:var(--selectedPostFaintPostLink,$fallback--faint);--icon:var(--selectedPostIcon,$fallback--icon)}.timeline .status-el{border-bottom-width:1px;border-bottom-style:solid}.status-el .media-body{-ms-flex:1;flex:1;padding:0}.status-el .status-usercard{margin-bottom:.75em}.status-el .user-name{white-space:nowrap;font-size:14px;overflow:hidden;-ms-flex-negative:0;flex-shrink:0;max-width:85%;font-weight:700}.status-el .user-name img.emoji{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-el .media-heading{padding:0;vertical-align:bottom;-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:.5em}.status-el .media-heading small{font-weight:lighter}.status-el .media-heading .heading-name-row{padding:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;line-height:18px}.status-el .media-heading .heading-name-row a{display:inline-block;word-break:break-all}.status-el .media-heading .heading-name-row .name-and-account-name{display:-ms-flexbox;display:flex;min-width:0}.status-el .media-heading .heading-name-row .user-name{-ms-flex-negative:1;flex-shrink:1;margin-right:.4em;overflow:hidden;text-overflow:ellipsis}.status-el .media-heading .heading-name-row .account-name{min-width:1.6em;margin-right:.4em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-ms-flex:1 1 0px;flex:1 1 0}.status-el .media-heading .heading-right{display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.status-el .media-heading .timeago{margin-right:.2em}.status-el .media-heading .heading-reply-row{position:relative;-ms-flex-line-pack:baseline;align-content:baseline;font-size:12px;line-height:18px;max-width:100%;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch}.status-el .media-heading .heading-reply-row>.reply-to-and-accountname>a{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.status-el .media-heading .reply-to-and-accountname{display:-ms-flexbox;display:flex;height:18px;margin-right:.5em;max-width:100%}.status-el .media-heading .reply-to-and-accountname .icon-reply{transform:scaleX(-1)}.status-el .media-heading .reply-info{display:-ms-flexbox;display:flex}.status-el .media-heading .reply-to-popover{min-width:0}.status-el .media-heading .reply-to{display:-ms-flexbox;display:flex}.status-el .media-heading .reply-to-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 .4em 0 .2em}.status-el .media-heading .strikethrough{text-decoration:line-through}.status-el .media-heading .replies-separator{margin-left:.4em}.status-el .media-heading .replies{line-height:18px;font-size:12px;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-el .media-heading .replies>*{margin-right:.4em}.status-el .media-heading .reply-link{height:17px}.status-el .retweet-info{padding:.4em .75em;margin:0}.status-el .retweet-info .avatar.still-image{border-radius:10px;border-radius:var(--avatarAltRadius,10px);margin-left:28px;width:20px;height:20px}.status-el .retweet-info .media-body{font-size:1em;line-height:22px;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.status-el .retweet-info .media-body .user-name{font-weight:700;overflow:hidden;text-overflow:ellipsis}.status-el .retweet-info .media-body .user-name img{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-el .retweet-info .media-body i{padding:0 .2em}.status-el .retweet-info .media-body a{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-fadein{animation-duration:.4s;animation-name:fadein}@keyframes fadein{0%{opacity:0}to{opacity:1}}.status-conversation{border-left-style:solid}.status-actions{position:relative;width:100%;display:-ms-flexbox;display:flex;margin-top:.75em}.status-actions>*{max-width:4em;-ms-flex:1;flex:1}.button-icon.icon-reply.button-icon-active,.button-icon.icon-reply:not(.button-icon-disabled):hover{color:#0095ff;color:var(--cBlue,#0095ff)}.button-icon.icon-reply:not(.button-icon-disabled){cursor:pointer}.status:hover .animated.avatar canvas{display:none}.status:hover .animated.avatar img{visibility:visible}.status{display:-ms-flexbox;display:flex;padding:.75em}.status.is-retweet{padding-top:0}.status-conversation:last-child{border-bottom:none}.muted{padding:.25em .6em;height:1.2em;line-height:1.2em;text-overflow:ellipsis;overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.muted .mute-thread,.muted .mute-words,.muted .username{word-wrap:normal;word-break:normal;white-space:nowrap}.muted .mute-words,.muted .username{text-overflow:ellipsis;overflow:hidden}.muted .username{-ms-flex:0 1 auto;flex:0 1 auto;margin-right:.2em}.muted .mute-thread{-ms-flex:0 0 auto;flex:0 0 auto}.muted .mute-words{-ms-flex:1 0 5em;flex:1 0 5em;margin-left:.2em}.muted .mute-words:before{content:\\\" \\\"}.muted .unmute{-ms-flex:0 0 auto;flex:0 0 auto;display:block;margin-left:auto}.reply-body{-ms-flex:1;flex:1}.favs-repeated-users{margin-top:.75em}.favs-repeated-users .stats{width:100%;display:-ms-flexbox;display:flex;line-height:1em}.favs-repeated-users .stats .stat-count{margin-right:.75em}.favs-repeated-users .stats .stat-count .stat-title{color:var(--faint,hsla(240,1%,73%,.5));font-size:12px;text-transform:uppercase;position:relative}.favs-repeated-users .stats .stat-count .stat-number{font-weight:bolder;font-size:16px;line-height:1em}.favs-repeated-users .stats .avatar-row{-ms-flex:1;flex:1;overflow:hidden;position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.favs-repeated-users .stats .avatar-row:before{content:\\\"\\\";position:absolute;height:100%;width:1px;left:0;background-color:var(--faint,hsla(240,1%,73%,.5))}@media (max-width:800px){.status-el .retweet-info .avatar.still-image{margin-left:20px}.status{max-width:100%}.status .avatar.still-image{width:40px;height:40px}.status .avatar.still-image.avatar-compact{width:32px;height:32px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./favorite_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7d4fb47f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".fav-active{cursor:pointer;animation-duration:.6s}.fav-active:hover,.favorite-button.icon-star{color:orange;color:var(--cOrange,orange)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./react_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b98558e8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".reaction-picker-filter{padding:.5em;display:-ms-flexbox;display:flex}.reaction-picker-filter input{-ms-flex:1;flex:1}.reaction-picker-divider{height:1px;width:100%;margin:.5em;background-color:var(--border,#222)}.reaction-picker{width:10em;height:9em;font-size:1.5em;overflow-y:scroll;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.5em;text-align:center;-ms-flex-line-pack:start;align-content:flex-start;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.reaction-picker .emoji-button{cursor:pointer;-ms-flex-preferred-size:20%;flex-basis:20%;line-height:1.5em;-ms-flex-line-pack:center;align-content:center}.reaction-picker .emoji-button:hover{transform:scale(1.25)}.add-reaction-button{cursor:pointer}.add-reaction-button:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"92bf6e22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".popover{z-index:8;position:absolute;min-width:0;transition:opacity .3s;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);border-radius:4px;border-radius:var(--btnRadius,4px);background-color:#121a24;background-color:var(--popover,#121a24);color:#b9b9ba;color:var(--popoverText,#b9b9ba);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.dropdown-menu{display:block;padding:.5rem 0;font-size:1rem;text-align:left;list-style:none;max-width:100vw;z-index:10;white-space:nowrap}.dropdown-menu .dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #222;border-top:1px solid var(--border,#222)}.dropdown-menu .dropdown-item{line-height:21px;margin-right:5px;overflow:auto;display:block;padding:.25rem 1rem .25rem 1.5rem;clear:both;font-weight:400;text-align:inherit;white-space:nowrap;border:none;border-radius:0;background-color:transparent;box-shadow:none;width:100%;height:100%;--btnText:var(--popoverText,$fallback--text)}.dropdown-menu .dropdown-item-icon{padding-left:.5rem}.dropdown-menu .dropdown-item-icon i{margin-right:.25rem;color:var(--menuPopoverIcon,#666)}.dropdown-menu .dropdown-item:active,.dropdown-menu .dropdown-item:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#d8a070;color:var(--selectedMenuPopoverText,#d8a070);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.dropdown-menu .dropdown-item:active i,.dropdown-menu .dropdown-item:hover i{color:var(--selectedMenuPopoverIcon,#666)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./retweet_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c52cbcb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".rt-active{cursor:pointer;animation-duration:.6s}.icon-retweet.retweeted,.rt-active:hover{color:#0fa00f;color:var(--cGreen,#0fa00f)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./extra_buttons.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0d2c533c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".icon-ellipsis{cursor:pointer}.extra-button-popover.open .icon-ellipsis,.icon-ellipsis:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ce7966a8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tribute-container ul{padding:0}.tribute-container ul li{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.tribute-container img{padding:3px;width:16px;height:16px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.post-status-form .form-bottom{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding:.5em;height:32px}.post-status-form .form-bottom button{width:10em}.post-status-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.post-status-form .form-bottom-left{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;padding-right:7px;margin-right:7px;max-width:10em}.post-status-form .preview-heading{display:-ms-flexbox;display:flex;width:100%}.post-status-form .preview-heading .icon-spin3{margin-left:auto}.post-status-form .preview-toggle{display:-ms-flexbox;display:flex;cursor:pointer}.post-status-form .preview-toggle:hover{text-decoration:underline}.post-status-form .icon-down-open{transition:transform .1s}.post-status-form .preview-container{margin-bottom:1em}.post-status-form .preview-error{font-style:italic;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .preview-status{border:1px solid #222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);padding:.5em;margin:0;line-height:1.4em}.post-status-form .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;padding-top:5px}.post-status-form .emoji-icon,.post-status-form .media-upload-icon,.post-status-form .poll-icon{font-size:26px;-ms-flex:1;flex:1}.post-status-form .emoji-icon.selected i,.post-status-form .emoji-icon.selected label,.post-status-form .emoji-icon:hover i,.post-status-form .emoji-icon:hover label,.post-status-form .media-upload-icon.selected i,.post-status-form .media-upload-icon.selected label,.post-status-form .media-upload-icon:hover i,.post-status-form .media-upload-icon:hover label,.post-status-form .poll-icon.selected i,.post-status-form .poll-icon.selected label,.post-status-form .poll-icon:hover i,.post-status-form .poll-icon:hover label{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.post-status-form .media-upload-icon{-ms-flex-order:1;order:1;text-align:left}.post-status-form .emoji-icon{-ms-flex-order:2;order:2;text-align:center}.post-status-form .poll-icon{-ms-flex-order:3;order:3;text-align:right}.post-status-form .icon-chart-bar{cursor:pointer}.post-status-form .error{text-align:center}.post-status-form .media-upload-wrapper{margin-right:.2em;margin-bottom:.5em;width:18em}.post-status-form .media-upload-wrapper .icon-cancel{display:inline-block;position:static;margin:0;padding-bottom:0;margin-left:10px;margin-left:var(--attachmentRadius,10px);background-color:#182230;background-color:var(--btn,#182230);border-bottom-left-radius:0;border-bottom-right-radius:0}.post-status-form .media-upload-wrapper img,.post-status-form .media-upload-wrapper video{-o-object-fit:contain;object-fit:contain;max-height:10em}.post-status-form .media-upload-wrapper .video{max-height:10em}.post-status-form .media-upload-wrapper input{-ms-flex:1;flex:1;width:100%}.post-status-form .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .media-upload-wrapper .attachments{padding:0 .5em}.post-status-form .media-upload-wrapper .attachments .attachment{margin:0;padding:0;position:relative}.post-status-form .media-upload-wrapper .attachments i{position:absolute;margin:10px;padding:5px;background:hsla(0,0%,90%,.6);border-radius:10px;border-radius:var(--attachmentRadius,10px);font-weight:700}.post-status-form form{margin:.6em;position:relative}.post-status-form .form-group,.post-status-form form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.post-status-form .form-group{padding:.25em .5em .5em;line-height:24px}.post-status-form .form-post-body,.post-status-form form textarea.form-cw{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:1px}.post-status-form .form-post-body{height:16px;padding-bottom:1.75em;box-sizing:content-box}.post-status-form .main-input{position:relative}.post-status-form .character-counter{position:absolute;bottom:0;right:0;padding:0;margin:0 .5em}.post-status-form .character-counter.error{color:red;color:var(--cRed,red)}.post-status-form .btn{cursor:pointer}.post-status-form .btn[disabled]{cursor:not-allowed}.post-status-form .icon-cancel{cursor:pointer;z-index:4}@keyframes fade-in{0%{opacity:0}to{opacity:.6}}@keyframes fade-out{0%{opacity:.6}to{opacity:0}}.post-status-form .drop-indicator{position:absolute;z-index:1;width:100%;height:100%;font-size:5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;opacity:.6;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24);border-radius:5px;border-radius:var(--tooltipRadius,5px);border:2px dashed #b9b9ba;border:2px dashed var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_upload.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8585287c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".media-upload .label{display:inline-block}.media-upload .new-icon{cursor:pointer}.media-upload .progress-icon{display:inline-block;line-height:0}.media-upload .progress-icon:before{margin:0;line-height:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./scope_selector.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"770eecd8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".scope-selector i{font-size:1.2em;cursor:pointer}.scope-selector i.selected{color:#b9b9ba;color:var(--lightText,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_input.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"d6bd964a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-input{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:relative}.emoji-input.with-picker input{padding-right:30px}.emoji-input .emoji-picker-icon{position:absolute;top:0;right:0;margin:.2em .25em;font-size:16px;cursor:pointer;line-height:24px}.emoji-input .emoji-picker-icon:hover i{color:#b9b9ba;color:var(--text,#b9b9ba)}.emoji-input .emoji-picker-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .emoji-picker-panel.hide{display:none}.emoji-input .autocomplete-panel{position:absolute;z-index:20;margin-top:2px}.emoji-input .autocomplete-panel.hide{display:none}.emoji-input .autocomplete-panel-body{margin:0 .5em;border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:1px 2px 4px rgba(0,0,0,.5);box-shadow:var(--popupShadow);min-width:75%;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--postLink:var(--popoverPostLink,$fallback--link);--postFaintLink:var(--popoverPostFaintLink,$fallback--link);--icon:var(--popoverIcon,$fallback--icon)}.emoji-input .autocomplete-item{display:-ms-flexbox;display:flex;cursor:pointer;padding:.2em .4em;border-bottom:1px solid rgba(0,0,0,.4);height:32px}.emoji-input .autocomplete-item .image{width:32px;height:32px;line-height:32px;text-align:center;font-size:32px;margin-right:4px}.emoji-input .autocomplete-item .image img{width:32px;height:32px;-o-object-fit:contain;object-fit:contain}.emoji-input .autocomplete-item .label{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;margin:0 .1em 0 .2em}.emoji-input .autocomplete-item .label .displayText{line-height:1.5}.emoji-input .autocomplete-item .label .detailText{font-size:9px;line-height:9px}.emoji-input .autocomplete-item.highlighted{background-color:#182230;background-color:var(--selectedMenuPopover,#182230);color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}.emoji-input input,.emoji-input textarea{-ms-flex:1 0 auto;flex:1 0 auto}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./emoji_picker.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7bb72e68\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-picker{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;position:absolute;right:0;left:0;margin:0!important;z-index:1;background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--lightText:var(--popoverLightText,$fallback--faint);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.emoji-picker .keep-open,.emoji-picker .too-many-emoji{padding:7px;line-height:normal}.emoji-picker .too-many-emoji{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.emoji-picker .keep-open-label{padding:0 7px;display:-ms-flexbox;display:flex}.emoji-picker .heading{display:-ms-flexbox;display:flex;height:32px;padding:10px 7px 5px}.emoji-picker .content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-tabs{-ms-flex-positive:1;flex-grow:1}.emoji-picker .emoji-groups{min-height:200px}.emoji-picker .additional-tabs{border-left:1px solid;border-left-color:#666;border-left-color:var(--icon,#666);padding-left:7px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .additional-tabs,.emoji-picker .emoji-tabs{display:block;min-width:0;-ms-flex-preferred-size:auto;flex-basis:auto;-ms-flex-negative:1;flex-shrink:1}.emoji-picker .additional-tabs-item,.emoji-picker .emoji-tabs-item{padding:0 7px;cursor:pointer;font-size:24px}.emoji-picker .additional-tabs-item.disabled,.emoji-picker .emoji-tabs-item.disabled{opacity:.5;pointer-events:none}.emoji-picker .additional-tabs-item.active,.emoji-picker .emoji-tabs-item.active{border-bottom:4px solid}.emoji-picker .additional-tabs-item.active i,.emoji-picker .emoji-tabs-item.active i{color:#b9b9ba;color:var(--lightText,#b9b9ba)}.emoji-picker .sticker-picker{-ms-flex:1 1 auto;flex:1 1 auto}.emoji-picker .emoji-content,.emoji-picker .stickers-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 auto;flex:1 1 auto;min-height:0}.emoji-picker .emoji-content.hidden,.emoji-picker .stickers-content.hidden{opacity:0;pointer-events:none;position:absolute}.emoji-picker .emoji-search{padding:5px;-ms-flex:0 0 auto;flex:0 0 auto}.emoji-picker .emoji-search input{width:100%}.emoji-picker .emoji-groups{-ms-flex:1 1 1px;flex:1 1 1px;position:relative;overflow:auto;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff 0,transparent) bottom no-repeat,linear-gradient(180deg,#fff 0,transparent) top no-repeat,linear-gradient(0deg,#fff,#fff);transition:-webkit-mask-size .15s;transition:mask-size .15s;transition:mask-size .15s,-webkit-mask-size .15s;-webkit-mask-size:100% 20px,100% 20px,auto;mask-size:100% 20px,100% 20px,auto;-webkit-mask-composite:xor;mask-composite:exclude}.emoji-picker .emoji-groups.scrolled-top{-webkit-mask-size:100% 20px,100% 0,auto;mask-size:100% 20px,100% 0,auto}.emoji-picker .emoji-groups.scrolled-bottom{-webkit-mask-size:100% 0,100% 20px,auto;mask-size:100% 0,100% 20px,auto}.emoji-picker .emoji-group{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:5px;-ms-flex-pack:left;justify-content:left}.emoji-picker .emoji-group-title{font-size:12px;width:100%;margin:0}.emoji-picker .emoji-group-title.disabled{display:none}.emoji-picker .emoji-item{width:32px;height:32px;box-sizing:border-box;display:-ms-flexbox;display:flex;font-size:32px;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin:4px;cursor:pointer}.emoji-picker .emoji-item img{-o-object-fit:contain;object-fit:contain;max-width:100%;max-height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./checkbox.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"002629bb\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".checkbox{position:relative;display:inline-block;min-height:1.2em}.checkbox-indicator{position:relative;padding-left:1.2em}.checkbox-indicator:before{position:absolute;right:0;top:0;display:block;content:\\\"\\\\2714\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.checkbox.disabled .checkbox-indicator:before,.checkbox.disabled .label{opacity:.5}.checkbox.disabled .label{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.checkbox input[type=checkbox]{display:none}.checkbox input[type=checkbox]:checked+.checkbox-indicator:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox input[type=checkbox]:indeterminate+.checkbox-indicator:before{content:\\\"\\\\2013\\\";color:#b9b9ba;color:var(--inputText,#b9b9ba)}.checkbox>span{margin-left:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60db0262\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:0 .5em .5em}.poll-form .add-option{-ms-flex-item-align:start;align-self:flex-start;padding-top:.25em;cursor:pointer}.poll-form .poll-option{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.25em}.poll-form .input-container{width:100%}.poll-form .input-container input{padding-right:2.5em;width:100%}.poll-form .icon-container{width:2em;margin-left:-2em;z-index:1}.poll-form .poll-type-expiry{margin-top:.5em;display:-ms-flexbox;display:flex;width:100%}.poll-form .poll-type{margin-right:.75em;-ms-flex:1 1 60%;flex:1 1 60%}.poll-form .poll-type .select{border:none;box-shadow:none;background-color:transparent}.poll-form .poll-expiry{display:-ms-flexbox;display:flex}.poll-form .poll-expiry .expiry-amount{width:3em;text-align:right}.poll-form .poll-expiry .expiry-unit{border:none;box-shadow:none;background-color:transparent}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./attachment.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"60b296ca\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".attachments{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.attachments .non-gallery{max-width:100%}.attachments .placeholder{display:inline-block;padding:.3em 1em .3em 0;color:#d8a070;color:var(--postLink,#d8a070);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.attachments .nsfw-placeholder{cursor:pointer}.attachments .nsfw-placeholder.loading{cursor:progress}.attachments .attachment{position:relative;margin-top:.5em;-ms-flex-item-align:start;align-self:flex-start;line-height:0;border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222);overflow:hidden}.attachments .non-gallery.attachment.video{-ms-flex:1 0 40%;flex:1 0 40%}.attachments .non-gallery.attachment .nsfw{height:260px}.attachments .non-gallery.attachment .small{height:120px;-ms-flex-positive:0;flex-grow:0}.attachments .non-gallery.attachment .video{height:260px;display:-ms-flexbox;display:flex}.attachments .non-gallery.attachment video{max-height:100%;-o-object-fit:contain;object-fit:contain}.attachments .fullwidth{-ms-flex-preferred-size:100%;flex-basis:100%}.attachments.video{line-height:0}.attachments .video-container{display:-ms-flexbox;display:flex;max-height:100%}.attachments .video{width:100%;height:100%}.attachments .play-icon{position:absolute;font-size:64px;top:calc(50% - 32px);left:calc(50% - 32px);color:hsla(0,0%,100%,.75);text-shadow:0 0 2px rgba(0,0,0,.4)}.attachments .play-icon:before{margin:0}.attachments.html{-ms-flex-preferred-size:90%;flex-basis:90%;width:100%;display:-ms-flexbox;display:flex}.attachments .hider{position:absolute;right:0;white-space:nowrap;margin:10px;padding:5px;background:hsla(0,0%,90%,.6);font-weight:700;z-index:4;line-height:1;border-radius:5px;border-radius:var(--tooltipRadius,5px)}.attachments video{z-index:0}.attachments audio{width:100%}.attachments img.media-upload{line-height:0;max-height:200px;max-width:100%}.attachments .oembed{line-height:1.2em;-ms-flex:1 0 100%;flex:1 0 100%;width:100%;margin-right:15px;display:-ms-flexbox;display:flex}.attachments .oembed img{width:100%}.attachments .oembed .image{-ms-flex:1;flex:1}.attachments .oembed .image img{border:0;border-radius:5px;height:100%;-o-object-fit:cover;object-fit:cover}.attachments .oembed .text{-ms-flex:2;flex:2;margin:8px;word-break:break-all}.attachments .oembed .text h1{font-size:14px;margin:0}.attachments .image-attachment{width:100%;height:100%}.attachments .image-attachment.hidden{display:none}.attachments .image-attachment .nsfw{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.attachments .image-attachment img{image-orientation:from-image}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./still-image.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"24ab97e0\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".still-image{position:relative;line-height:0;overflow:hidden;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.still-image:hover canvas{display:none}.still-image img{width:100%;min-height:100%;-o-object-fit:contain;object-fit:contain}.still-image.animated:hover:before,.still-image.animated img{visibility:hidden}.still-image.animated:hover img{visibility:visible}.still-image.animated:before{content:\\\"gif\\\";position:absolute;line-height:10px;font-size:10px;top:5px;left:5px;background:hsla(0,0%,50%,.5);color:#fff;display:block;padding:2px 4px;border-radius:5px;border-radius:var(--tooltipRadius,5px);z-index:2}.still-image canvas{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_content.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"af4a4f5c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-body{-ms-flex:1;flex:1;min-width:0}.status-body .status-content-wrapper{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.status-body .tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.status-body .tall-status .status-content{min-height:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom/100% 70px no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude}.status-body .tall-status-hider{position:absolute;height:70px;margin-top:150px;line-height:110px;z-index:2}.status-body .cw-status-hider,.status-body .status-unhider,.status-body .tall-status-hider{display:inline-block;word-break:break-all;width:100%;text-align:center}.status-body img,.status-body video{max-width:100%;max-height:400px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.status-body img.emoji,.status-body video.emoji{width:32px;height:32px}.status-body .summary-wrapper{margin-bottom:.5em;border-style:solid;border-width:0 0 1px;border-color:var(--border,#222);-ms-flex-positive:0;flex-grow:0}.status-body .summary{font-style:italic;padding-bottom:.5em}.status-body .tall-subject{position:relative}.status-body .tall-subject .summary{max-height:2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.status-body .tall-subject-hider{display:inline-block;word-break:break-all;width:100%;text-align:center;padding-bottom:.5em}.status-body .status-content{font-family:var(--postFont,sans-serif);line-height:1.4em;white-space:pre-wrap;overflow-wrap:break-word;word-wrap:break-word;word-break:break-word}.status-body .status-content blockquote{margin:.2em 0 .2em 2em;font-style:italic}.status-body .status-content pre{overflow:auto}.status-body .status-content code,.status-body .status-content kbd,.status-body .status-content pre,.status-body .status-content samp,.status-body .status-content var{font-family:var(--postCodeFont,monospace)}.status-body .status-content p{margin:0 0 1em}.status-body .status-content p:last-child{margin:0}.status-body .status-content h1{font-size:1.1em;line-height:1.2em;margin:1.4em 0}.status-body .status-content h2{font-size:1.1em;margin:1em 0}.status-body .status-content h3{font-size:1em;margin:1.2em 0}.status-body .status-content h4{margin:1.1em 0}.greentext{color:#0fa00f;color:var(--postGreentext,#0fa00f)}.timeline :not(.panel-disabled)>.status-el:last-child{border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px);border-bottom:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./poll.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1a8b173f\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".poll .votes{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:0 0 .5em}.poll .poll-option{margin:.75em .5em}.poll .option-result{height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;position:relative;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.poll .option-result-label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.1em .25em;z-index:1}.poll .result-percentage{width:3.5em;-ms-flex-negative:0;flex-shrink:0}.poll .result-fill{height:100%;position:absolute;color:#b9b9ba;color:var(--pollText,#b9b9ba);background-color:#151e2a;background-color:var(--poll,#151e2a);border-radius:10px;border-radius:var(--panelRadius,10px);top:0;left:0;transition:width .5s}.poll .option-vote{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll input{width:3.5em}.poll .footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.poll.loading *{cursor:progress}.poll .poll-vote-button{padding:0 .5em;margin-right:.5em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./gallery.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c9d5cbc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".gallery-row{position:relative;height:0;width:100%;-ms-flex-positive:1;flex-grow:1;margin-top:.5em}.gallery-row .gallery-row-inner{position:absolute;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-line-pack:stretch;align-content:stretch}.gallery-row .gallery-row-inner .attachment{margin:0 .5em 0 0;-ms-flex-positive:1;flex-grow:1;height:100%;box-sizing:border-box;min-width:2em}.gallery-row .gallery-row-inner .attachment:last-child{margin:0}.gallery-row .image-attachment{width:100%;height:100%}.gallery-row .video-container{height:100%}.gallery-row.contain-fit canvas,.gallery-row.contain-fit img,.gallery-row.contain-fit video{-o-object-fit:contain;object-fit:contain;height:100%}.gallery-row.cover-fit canvas,.gallery-row.cover-fit img,.gallery-row.cover-fit video{-o-object-fit:cover;object-fit:cover}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./link-preview.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c13d6bee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".link-preview-card{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;cursor:pointer;overflow:hidden;margin-top:.5em;color:#b9b9ba;color:var(--text,#b9b9ba);border-radius:10px;border-radius:var(--attachmentRadius,10px);border-color:#222;border:1px solid var(--border,#222)}.link-preview-card .card-image{-ms-flex-negative:0;flex-shrink:0;width:120px;max-width:25%}.link-preview-card .card-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;border-radius:10px;border-radius:var(--attachmentRadius,10px)}.link-preview-card .small-image{width:80px}.link-preview-card .card-content{max-height:100%;margin:.5em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.link-preview-card .card-host{font-size:12px}.link-preview-card .card-description{margin:.5em 0 0;overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.2em;max-height:calc(1.2em * 3 - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0060b6a4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-card{position:relative}.user-card .panel-heading{padding:.5em 0;text-align:center;box-shadow:none;background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;position:relative}.user-card .panel-body{word-wrap:break-word;border-bottom-right-radius:inherit;border-bottom-left-radius:inherit;position:relative}.user-card .background-image{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);mask:linear-gradient(0deg,#fff,transparent) bottom no-repeat,linear-gradient(0deg,#fff,#fff);-webkit-mask-composite:xor;mask-composite:exclude;background-size:cover;-webkit-mask-size:100% 60%;mask-size:100% 60%;border-top-left-radius:calc(var(--panelRadius) - 1px);border-top-right-radius:calc(var(--panelRadius) - 1px);background-color:var(--profileBg)}.user-card .background-image.hide-bio{-webkit-mask-size:100% 40px;mask-size:100% 40px}.user-card p{margin-bottom:0}.user-card-bio{text-align:center}.user-card-bio a{color:#d8a070;color:var(--postLink,#d8a070)}.user-card-bio img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-card-bio img.emoji{width:32px;height:32px}.user-card-rounded-t{border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px);border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px)}.user-card-rounded{border-radius:10px;border-radius:var(--panelRadius,10px)}.user-card-bordered{border-color:#222;border:1px solid var(--border,#222)}.user-info{color:#b9b9ba;color:var(--lightText,#b9b9ba);padding:0 26px}.user-info .container{padding:16px 0 6px;display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;max-height:56px}.user-info .container .avatar{-ms-flex:1 0 100%;flex:1 0 100%;width:56px;height:56px;box-shadow:0 1px 8px rgba(0,0,0,.75);box-shadow:var(--avatarShadow);-o-object-fit:cover;object-fit:cover}.user-info:hover .animated.avatar canvas{display:none}.user-info:hover .animated.avatar img{visibility:visible}.user-info-avatar-link{position:relative;cursor:pointer}.user-info-avatar-link-overlay{position:absolute;left:0;top:0;right:0;bottom:0;background-color:rgba(0,0,0,.3);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;border-radius:4px;border-radius:var(--avatarRadius,4px);opacity:0;transition:opacity .2s ease}.user-info-avatar-link-overlay i{color:#fff}.user-info-avatar-link:hover .user-info-avatar-link-overlay{opacity:1}.user-info .usersettings{color:#b9b9ba;color:var(--lightText,#b9b9ba);opacity:.8}.user-info .user-summary{display:block;margin-left:.6em;text-align:left;text-overflow:ellipsis;white-space:nowrap;-ms-flex:1 1 0px;flex:1 1 0;z-index:1}.user-info .user-summary img{width:26px;height:26px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.user-info .user-summary .top-line{display:-ms-flexbox;display:flex}.user-info .user-name{text-overflow:ellipsis;overflow:hidden;-ms-flex:1 1 auto;flex:1 1 auto;margin-right:1em;font-size:15px}.user-info .user-name img{-o-object-fit:contain;object-fit:contain;height:16px;width:16px;vertical-align:middle}.user-info .bottom-line{display:-ms-flexbox;display:flex;font-weight:light;font-size:15px}.user-info .bottom-line .user-screen-name{min-width:1px;-ms-flex:0 1 auto;flex:0 1 auto;text-overflow:ellipsis;overflow:hidden;color:#b9b9ba;color:var(--lightText,#b9b9ba)}.user-info .bottom-line .dailyAvg{min-width:1px;-ms-flex:0 0 auto;flex:0 0 auto;margin-left:1em;font-size:.7em;color:#b9b9ba;color:var(--text,#b9b9ba)}.user-info .bottom-line .user-role{-ms-flex:none;flex:none;text-transform:capitalize;color:#b9b9ba;color:var(--alertNeutralText,#b9b9ba);background-color:#182230;background-color:var(--alertNeutral,#182230)}.user-info .user-meta{margin-bottom:.15em;display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;font-size:14px;line-height:22px;-ms-flex-wrap:wrap;flex-wrap:wrap}.user-info .user-meta .following{-ms-flex:1 0 auto;flex:1 0 auto;margin:0;margin-bottom:.25em;text-align:left}.user-info .user-meta .highlighter{-ms-flex:0 1 auto;flex:0 1 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-.5em;-ms-flex-item-align:start;align-self:start}.user-info .user-meta .highlighter .userHighlightCl{padding:2px 10px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightSel.select{padding-top:0;padding-bottom:0;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightSel.select i{line-height:22px}.user-info .user-meta .highlighter .userHighlightText{width:70px;-ms-flex:1 0 auto;flex:1 0 auto}.user-info .user-meta .highlighter .userHighlightCl,.user-info .user-meta .highlighter .userHighlightSel,.user-info .user-meta .highlighter .userHighlightSel.select,.user-info .user-meta .highlighter .userHighlightText{height:22px;vertical-align:top;margin-right:.5em;margin-bottom:.25em}.user-info .user-interactions{position:relative;display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-.75em}.user-info .user-interactions>*{margin:0 .75em .6em 0;white-space:nowrap;min-width:95px}.user-info .user-interactions button{margin:0}.user-counts{display:-ms-flexbox;display:flex;line-height:16px;padding:.5em 1.5em 0;text-align:center;-ms-flex-pack:justify;justify-content:space-between;color:#b9b9ba;color:var(--lightText,#b9b9ba);-ms-flex-wrap:wrap;flex-wrap:wrap}.user-count{-ms-flex:1 0 auto;flex:1 0 auto;padding:.5em 0;margin:0 .5em}.user-count h5{font-size:1em;font-weight:bolder;margin:0 0 .25em}.user-count a{text-decoration:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_avatar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6b6f3617\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatar.still-image{width:48px;height:48px;box-shadow:var(--avatarStatusShadow);border-radius:4px;border-radius:var(--avatarRadius,4px)}.avatar.still-image img{width:100%;height:100%}.avatar.still-image.better-shadow{box-shadow:var(--avatarStatusShadowInset);filter:var(--avatarStatusShadowFilter)}.avatar.still-image.animated:before{display:none}.avatar.still-image.avatar-compact{width:32px;height:32px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4852bbb4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".remote-follow{max-width:220px}.remote-follow .remote-button{width:100%;min-height:28px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./moderation_tools.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0672fc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".menu-checkbox{float:right;min-width:22px;max-width:22px;min-height:22px;max-height:22px;line-height:22px;text-align:center;border-radius:0;background-color:#182230;background-color:var(--input,#182230);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow)}.menu-checkbox.menu-checkbox-checked:after{content:\\\"\\\\2714\\\"}.moderation-tools-popover{height:100%}.moderation-tools-popover .trigger{display:-ms-flexbox!important;display:flex!important;height:100%}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./dialog_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"56d82e88\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".dark-overlay:before{bottom:0;content:\\\" \\\";left:0;right:0;background:rgba(27,31,35,.5);z-index:99}.dark-overlay:before,.dialog-modal.panel{display:block;cursor:default;position:fixed;top:0}.dialog-modal.panel{left:50%;max-height:80vh;max-width:90vw;margin:15vh auto;transform:translateX(-50%);z-index:999;background-color:#121a24;background-color:var(--bg,#121a24)}.dialog-modal.panel .dialog-modal-heading{padding:.5em;margin-right:auto;margin-bottom:0;white-space:nowrap;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230)}.dialog-modal.panel .dialog-modal-heading .title{margin-bottom:0;text-align:center}.dialog-modal.panel .dialog-modal-content{margin:0;padding:1rem;background-color:#121a24;background-color:var(--bg,#121a24);white-space:normal}.dialog-modal.panel .dialog-modal-footer{margin:0;padding:.5em;background-color:#121a24;background-color:var(--bg,#121a24);border-top:1px solid #222;border-top:1px solid var(--border,#222);display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end}.dialog-modal.panel .dialog-modal-footer button{width:auto;margin-left:.5rem}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./account_actions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8c9d5016\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".account-actions{margin:0 .8em}.account-actions button.dropdown-item{margin-left:0}.account-actions .trigger-button{color:#b9b9ba;color:var(--lightText,#b9b9ba);opacity:.8;cursor:pointer}.account-actions .trigger-button:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./avatar_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7096a06e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".avatars{display:-ms-flexbox;display:flex;margin:0;padding:0;-ms-flex-wrap:wrap;flex-wrap:wrap;height:24px}.avatars .avatars-item{margin:0 0 5px 5px}.avatars .avatars-item:first-child{padding-left:5px}.avatars .avatars-item .avatar-small{border-radius:10px;border-radius:var(--avatarAltRadius,10px);height:24px;width:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./status_popover.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"14cff5b4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".status-popover{font-size:1rem;min-width:15em;max-width:95%;border-color:#222;border:1px solid var(--border,#222);border-radius:5px;border-radius:var(--tooltipRadius,5px);box-shadow:2px 2px 3px rgba(0,0,0,.5);box-shadow:var(--popupShadow)}.status-popover .status-el.status-el{border:none}.status-popover .status-preview-no-content{padding:1em;text-align:center}.status-popover .status-preview-no-content i{font-size:2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./emoji_reactions.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cf35b50a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".emoji-reactions{display:-ms-flexbox;display:flex;margin-top:.25em;-ms-flex-wrap:wrap;flex-wrap:wrap}.reacted-users{padding:.5em}.reacted-user{padding:.25em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.reacted-user .reacted-user-names{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:.5em;min-width:5em}.reacted-user .reacted-user-names img{width:1em;height:1em}.reacted-user .reacted-user-screen-name{font-size:9px}.emoji-reaction{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;box-sizing:border-box}.emoji-reaction .reaction-emoji{width:1.25em;margin-right:.25em}.emoji-reaction:focus{outline:none}.emoji-reaction.not-clickable{cursor:default}.emoji-reaction.not-clickable:hover{box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow)}.emoji-reaction-expand{padding:0 .5em;margin-right:.5em;margin-top:.5em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.emoji-reaction-expand:hover{text-decoration:underline}.picked-reaction{border:1px solid var(--accent,#d8a070);margin-left:-1px;margin-right:calc(.5em - 1px)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./conversation.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"93498d0a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".timeline .panel-disabled .status-el{border-left:none;border-bottom-width:1px;border-bottom-style:solid;border-color:var(--border,#222);border-radius:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./notifications.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"87e1cf2e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".notifications:not(.minimal){padding-bottom:15em}.notifications .loadmore-error{color:#b9b9ba;color:var(--text,#b9b9ba)}.notifications .notification{position:relative}.notifications .notification .notification-overlay{position:absolute;top:0;right:0;left:0;bottom:0;pointer-events:none}.notifications .notification.unseen .notification-overlay{background-image:linear-gradient(135deg,var(--badgeNotification,red) 4px,transparent 10px)}.notification{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);word-wrap:break-word;word-break:break-word}.notification:hover .animated.avatar canvas{display:none}.notification:hover .animated.avatar img{visibility:visible}.notification .non-mention{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:.6em;min-width:0}.notification .non-mention .avatar-container{width:32px;height:32px}.notification .non-mention .status-body{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.notification .non-mention .status-body a{color:var(--faintLink)}.notification .non-mention .status-body .status-content a{color:var(--postFaintLink)}.notification .follow-request-accept{cursor:pointer}.notification .follow-request-accept:hover{color:#b9b9ba;color:var(--text,#b9b9ba)}.notification .follow-request-reject{cursor:pointer}.notification .follow-request-reject:hover{color:red;color:var(--cRed,red)}.notification .follow-text,.notification .move-text{padding:.5em 0;overflow-wrap:break-word;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.notification .follow-text .follow-name,.notification .move-text .follow-name{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification .status-el{-ms-flex:1;flex:1}.notification time{white-space:nowrap}.notification .notification-right{-ms-flex:1;flex:1;padding-left:.8em;min-width:0}.notification .emoji-reaction-emoji{font-size:16px}.notification .notification-details{min-width:0;word-wrap:break-word;line-height:18px;position:relative;overflow:hidden;width:100%;-ms-flex:1 1 0px;flex:1 1 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:justify;justify-content:space-between}.notification .notification-details .name-and-action{-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.notification .notification-details .username{font-weight:bolder;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.notification .notification-details .username img{width:14px;height:14px;vertical-align:middle;-o-object-fit:contain;object-fit:contain}.notification .notification-details .timeago{margin-right:.2em}.notification .notification-details .icon-retweet.lit{color:#0fa00f;color:var(--cGreen,#0fa00f)}.notification .notification-details .icon-reply.lit,.notification .notification-details .icon-user-plus.lit,.notification .notification-details .icon-user.lit{color:#0095ff;color:var(--cBlue,#0095ff)}.notification .notification-details .icon-star.lit{color:orange;color:var(--cOrange,orange)}.notification .notification-details .icon-arrow-curved.lit{color:#0095ff;color:var(--cBlue,#0095ff)}.notification .notification-details .status-content{margin:0;max-height:300px}.notification .notification-details h1{word-break:break-all;margin:0 0 .3em;padding:0;font-size:1em;line-height:20px}.notification .notification-details h1 small{font-weight:lighter}.notification .notification-details p{margin:0;margin-top:0;margin-bottom:.3em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_profile.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7563b46e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-profile{-ms-flex:2;flex:2;-ms-flex-preferred-size:500px;flex-basis:500px}.user-profile .user-profile-fields{margin:0 .5em}.user-profile .user-profile-fields img{-o-object-fit:contain;object-fit:contain;vertical-align:middle;max-width:100%;max-height:400px}.user-profile .user-profile-fields img.emoji{width:18px;height:18px}.user-profile .user-profile-fields .user-profile-field{display:-ms-flexbox;display:flex;margin:.25em auto;max-width:32em;border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name{-ms-flex:0 1 30%;flex:0 1 30%;font-weight:500;text-align:right;color:var(--lightText);min-width:120px;border-right:1px solid var(--border,#222)}.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{-ms-flex:1 1 70%;flex:1 1 70%;color:var(--text);margin:0 0 0 .25em}.user-profile .user-profile-fields .user-profile-field .user-profile-field-name,.user-profile .user-profile-fields .user-profile-field .user-profile-field-value{line-height:18px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:.5em 1.5em;box-sizing:border-box}.user-profile .userlist-placeholder{-ms-flex-align:middle;align-items:middle;padding:2em}.user-profile .timeline-heading,.user-profile .userlist-placeholder{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.user-profile .timeline-heading .alert,.user-profile .timeline-heading .loadmore-button{-ms-flex:1;flex:1}.user-profile .timeline-heading .loadmore-button{height:28px;margin:10px .6em}.user-profile .timeline-heading .loadmore-text,.user-profile .timeline-heading .title{display:none}.user-profile-placeholder .panel-body{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:middle;align-items:middle;padding:7em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ae955a70\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-card-content-container{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:1.5em}.follow-card-follow-button{margin-top:.5em;margin-left:auto;width:10em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./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!./search.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"354d66d6\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".search-result-heading{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));padding:.75rem;text-align:center}@media (max-width:800px){.search-nav-heading .tab-switcher .tabs .tab-wrapper{display:block;-ms-flex-pack:center;justify-content:center;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}}.search-result{box-sizing:border-box;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.search-result-footer{border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;background-color:#182230;background-color:var(--panel,#182230)}.search-input-container{padding:.8rem;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center}.search-input-container .search-input{width:100%;line-height:1.125rem;font-size:1rem;padding:.5rem;box-sizing:border-box}.search-input-container .search-button{margin-left:.5em}.loading-icon{padding:1em}.trend{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.trend .hashtag{-ms-flex:1 1 auto;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend .count,.trend .hashtag{color:#b9b9ba;color:var(--text,#b9b9ba)}.trend .count{-ms-flex:0 0 auto;flex:0 0 auto;width:2rem;font-size:1.5rem;line-height:2.25rem;font-weight:500;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./registration.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"16815f76\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".registration-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:.6em}.registration-form .container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.registration-form .terms-of-service{-ms-flex:0 1 50%;flex:0 1 50%;margin:.8em}.registration-form .text-fields{margin-top:.6em;-ms-flex:1 0;flex:1 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.registration-form textarea{min-height:100px;resize:vertical}.registration-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em 0;line-height:24px;margin-bottom:1em}.registration-form .form-group--error{animation-name:shakeError;animation-duration:.6s;animation-timing-function:ease-in-out}.registration-form .form-group--error .form--label{color:#f04124;color:var(--cRed,#f04124)}.registration-form .form-error{margin-top:-.7em;text-align:left}.registration-form .form-error span{font-size:12px}.registration-form .form-error ul{list-style:none;padding:0 0 0 5px;margin-top:0}.registration-form .form-error ul li:before{content:\\\"\\\\2022 \\\"}.registration-form form textarea{line-height:16px;resize:vertical}.registration-form .captcha{max-width:350px;margin-bottom:.4em}.registration-form .btn{margin-top:.6em;height:28px}.registration-form .error{text-align:center}@media (max-width:800px){.registration-form .container{-ms-flex-direction:column-reverse;flex-direction:column-reverse}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./password_reset.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1ef4fd93\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".password-reset-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;margin:.6em}.password-reset-form .container{display:-ms-flexbox;display:flex;-ms-flex:1 0;flex:1 0;-ms-flex-direction:column;flex-direction:column;margin-top:.6em;max-width:18rem}.password-reset-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-bottom:1em;padding:.3em 0;line-height:24px}.password-reset-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}.password-reset-form .alert{padding:.5em;margin:.3em 0 1em}.password-reset-form .password-reset-required{background-color:var(--alertError,rgba(211,16,20,.5));padding:10px 0}.password-reset-form .notice-dismissible{padding-right:2rem}.password-reset-form .icon-cancel{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./follow_request_card.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ad510f10\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".follow-request-card-content-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap}.follow-request-card-content-container button{margin-top:.5em;margin-right:.5em;-ms-flex:1 1;flex:1 1;max-width:12em;min-width:8em}.follow-request-card-content-container button:last-child{margin-right:0}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./login_form.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42704024\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".login-form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.6em}.login-form .btn{min-height:28px;width:10em}.login-form .register{-ms-flex:1 1;flex:1 1}.login-form .login-bottom{margin-top:1em;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.login-form .form-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:.3em .5em .6em;line-height:24px}.login-form .form-bottom{display:-ms-flexbox;display:flex;padding:.5em;height:32px}.login-form .form-bottom button{width:10em}.login-form .form-bottom p{margin:.35em;padding:.35em;display:-ms-flexbox;display:flex}.login-form .error{text-align:center;animation-name:shakeError;animation-duration:.4s;animation-timing-function:ease-in-out}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./chat_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2c0040e1\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".floating-chat{position:fixed;right:0;bottom:0;z-index:1000;max-width:25em}.chat-heading{cursor:pointer}.chat-heading .icon-comment-empty{color:#b9b9ba;color:var(--text,#b9b9ba)}.chat-window{overflow-y:auto;overflow-x:hidden;max-height:20em}.chat-window-container{height:100%}.chat-message{display:-ms-flexbox;display:flex;padding:.2em .5em}.chat-avatar img{height:24px;width:24px;border-radius:4px;border-radius:var(--avatarRadius,4px);margin-right:.5em;margin-top:.25em}.chat-input{display:-ms-flexbox;display:flex}.chat-input textarea{-ms-flex:1;flex:1;margin:.6em;min-height:3.5em;resize:none}.chat-panel .title{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"c74f4f44\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./about.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7dfaed97\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./features_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"55ca8508\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".features-panel li{line-height:24px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./terms_of_service_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"42aabc98\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".tos-content{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./staff_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5aa588af\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mrf_transparency_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72647543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mrf-section{margin:1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./remote_user_resolver.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"67a8aa3d\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../node_modules/css-loader/index.js?minimize!../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../node_modules/sass-loader/lib/loader.js!./App.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c806d03\", content, true, {});","exports = module.exports = require(\"../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#app{min-height:100vh;max-width:100%;overflow:hidden}.app-bg-wrapper{position:fixed;z-index:-1;height:100%;left:0;right:-20px;background-size:cover;background-repeat:no-repeat;background-position:0 50%}i[class^=icon-]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}h4{margin:0}#content{box-sizing:border-box;padding-top:60px;margin:auto;min-height:100vh;max-width:980px;-ms-flex-line-pack:start;align-content:flex-start}.underlay{background-color:rgba(0,0,0,.15);background-color:var(--underlay,rgba(0,0,0,.15))}.text-center{text-align:center}html{font-size:14px}body{font-family:sans-serif;font-family:var(--interfaceFont,sans-serif);margin:0;color:#b9b9ba;color:var(--text,#b9b9ba);max-width:100vw;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.hidden{display:none}a{text-decoration:none;color:#d8a070;color:var(--link,#d8a070)}button{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#182230;background-color:var(--btn,#182230);border:none;border-radius:4px;border-radius:var(--btnRadius,4px);cursor:pointer;box-shadow:0 0 2px 0 #000,inset 0 1px 0 0 hsla(0,0%,100%,.2),inset 0 -1px 0 0 rgba(0,0,0,.2);box-shadow:var(--buttonShadow);font-size:14px;font-family:sans-serif;font-family:var(--interfaceFont,sans-serif)}button,button i[class*=icon-]{color:#b9b9ba;color:var(--btnText,#b9b9ba)}button::-moz-focus-inner{border:none}button:hover{box-shadow:0 0 4px hsla(0,0%,100%,.3);box-shadow:var(--buttonHoverShadow)}button:active{box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow);background-color:#182230;background-color:var(--btnPressed,#182230)}button:active,button:active i{color:#b9b9ba;color:var(--btnPressedText,#b9b9ba)}button:disabled{cursor:not-allowed;background-color:#182230;background-color:var(--btnDisabled,#182230)}button:disabled,button:disabled i{color:#b9b9ba;color:var(--btnDisabledText,#b9b9ba)}button.toggled{background-color:#182230;background-color:var(--btnToggled,#182230);box-shadow:0 0 4px 0 hsla(0,0%,100%,.3),inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2);box-shadow:var(--buttonPressedShadow)}button.toggled,button.toggled i{color:#b9b9ba;color:var(--btnToggledText,#b9b9ba)}button.danger{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba);background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5))}.input,.select,input,textarea{border:none;border-radius:4px;border-radius:var(--inputRadius,4px);box-shadow:inset 0 1px 0 0 rgba(0,0,0,.2),inset 0 -1px 0 0 hsla(0,0%,100%,.2),inset 0 0 2px 0 #000;box-shadow:var(--inputShadow);background-color:#182230;background-color:var(--input,#182230);color:#b9b9ba;color:var(--inputText,#b9b9ba);font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;margin:0;box-sizing:border-box;display:inline-block;position:relative;height:28px;line-height:16px;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none;padding:8px .5em}.input.unstyled,.select.unstyled,input.unstyled,textarea.unstyled{border-radius:0;background:none;box-shadow:none;height:unset}.input.select,.select.select,input.select,textarea.select{padding:0}.input:disabled,.input[disabled=disabled],.select:disabled,.select[disabled=disabled],input:disabled,input[disabled=disabled],textarea:disabled,textarea[disabled=disabled]{cursor:not-allowed;opacity:.5}.input .icon-down-open,.select .icon-down-open,input .icon-down-open,textarea .icon-down-open{position:absolute;top:0;bottom:0;right:5px;height:100%;color:#b9b9ba;color:var(--inputText,#b9b9ba);line-height:28px;z-index:0;pointer-events:none}.input select,.select select,input select,textarea select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:#b9b9ba;color:var(--inputText,--text,#b9b9ba);margin:0;padding:0 2em 0 .2em;font-family:sans-serif;font-family:var(--inputFont,sans-serif);font-size:14px;width:100%;z-index:1;height:28px;line-height:16px}.input[type=range],.select[type=range],input[type=range],textarea[type=range]{background:none;border:none;margin:0;box-shadow:none;-ms-flex:1;flex:1}.input[type=radio],.select[type=radio],input[type=radio],textarea[type=radio]{display:none}.input[type=radio]:checked+label:before,.select[type=radio]:checked+label:before,input[type=radio]:checked+label:before,textarea[type=radio]:checked+label:before{box-shadow:inset 0 0 2px #000,inset 0 0 0 4px #182230;box-shadow:var(--inputShadow),0 0 0 4px var(--fg,#182230) inset;background-color:var(--accent,#d8a070)}.input[type=radio]:disabled,.input[type=radio]:disabled+label,.input[type=radio]:disabled+label:before,.select[type=radio]:disabled,.select[type=radio]:disabled+label,.select[type=radio]:disabled+label:before,input[type=radio]:disabled,input[type=radio]:disabled+label,input[type=radio]:disabled+label:before,textarea[type=radio]:disabled,textarea[type=radio]:disabled+label,textarea[type=radio]:disabled+label:before{opacity:.5}.input[type=radio]+label:before,.select[type=radio]+label:before,input[type=radio]+label:before,textarea[type=radio]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\";transition:box-shadow .2s;width:1.1em;height:1.1em;border-radius:100%;box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}.input[type=checkbox],.select[type=checkbox],input[type=checkbox],textarea[type=checkbox]{display:none}.input[type=checkbox]:checked+label:before,.select[type=checkbox]:checked+label:before,input[type=checkbox]:checked+label:before,textarea[type=checkbox]:checked+label:before{color:#b9b9ba;color:var(--inputText,#b9b9ba)}.input[type=checkbox]:disabled,.input[type=checkbox]:disabled+label,.input[type=checkbox]:disabled+label:before,.select[type=checkbox]:disabled,.select[type=checkbox]:disabled+label,.select[type=checkbox]:disabled+label:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled+label,input[type=checkbox]:disabled+label:before,textarea[type=checkbox]:disabled,textarea[type=checkbox]:disabled+label,textarea[type=checkbox]:disabled+label:before{opacity:.5}.input[type=checkbox]+label:before,.select[type=checkbox]+label:before,input[type=checkbox]+label:before,textarea[type=checkbox]+label:before{-ms-flex-negative:0;flex-shrink:0;display:inline-block;content:\\\"\\\\2714\\\";transition:color .2s;width:1.1em;height:1.1em;border-radius:2px;border-radius:var(--checkboxRadius,2px);box-shadow:inset 0 0 2px #000;box-shadow:var(--inputShadow);margin-right:.5em;background-color:#182230;background-color:var(--input,#182230);vertical-align:top;text-align:center;line-height:1.1em;font-size:1.1em;color:transparent;overflow:hidden;box-sizing:border-box}option{color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.hide-number-spinner{-moz-appearance:textfield}.hide-number-spinner[type=number]::-webkit-inner-spin-button,.hide-number-spinner[type=number]::-webkit-outer-spin-button{opacity:0;display:none}i[class*=icon-]{color:#666;color:var(--icon,#666)}.btn-block{display:block;width:100%}.btn-group{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group button{position:relative;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group button:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group button:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.container{-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0;padding:0 10px}.container,.item{display:-ms-flexbox;display:flex}.item{-ms-flex:1;flex:1;line-height:50px;height:50px;overflow:hidden;-ms-flex-wrap:wrap;flex-wrap:wrap}.item .nav-icon{margin-left:.4em}.item.right{-ms-flex-pack:end;justify-content:flex-end}.auto-size{-ms-flex:1;flex:1}.nav-bar{padding:0;width:100%;-ms-flex-align:center;align-items:center;position:fixed;height:50px;box-sizing:border-box}.nav-bar button,.nav-bar button i[class*=icon-]{color:#b9b9ba;color:var(--btnTopBarText,#b9b9ba)}.nav-bar button:active{background-color:#182230;background-color:var(--btnPressedTopBar,#182230);color:#b9b9ba;color:var(--btnPressedTopBarText,#b9b9ba)}.nav-bar button:disabled{color:#b9b9ba;color:var(--btnDisabledTopBarText,#b9b9ba)}.nav-bar button.toggled{color:#b9b9ba;color:var(--btnToggledTopBarText,#b9b9ba);background-color:#182230;background-color:var(--btnToggledTopBar,#182230)}.nav-bar .logo{display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;-ms-flex-pack:center;justify-content:center;-ms-flex:0 0 auto;flex:0 0 auto;z-index:-1;transition:opacity;transition-timing-function:ease-out;transition-duration:.1s}.nav-bar .logo,.nav-bar .logo .mask{position:absolute;top:0;bottom:0;left:0;right:0}.nav-bar .logo .mask{-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;background-color:#182230;background-color:var(--topBarText,#182230)}.nav-bar .logo img{height:100%;-o-object-fit:contain;object-fit:contain;display:block;-ms-flex:0;flex:0}.nav-bar .inner-nav{position:relative;margin:auto;box-sizing:border-box;padding-left:10px;padding-right:10px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-preferred-size:970px;flex-basis:970px;height:50px}.nav-bar .inner-nav a,.nav-bar .inner-nav a i{color:#d8a070;color:var(--topBarLink,#d8a070)}main-router{-ms-flex:1;flex:1}.status.compact{color:rgba(0,0,0,.42);font-weight:300}.status.compact p{margin:0;font-size:.8em}.panel{display:-ms-flexbox;display:flex;position:relative;-ms-flex-direction:column;flex-direction:column;margin:.5em;background-color:#121a24;background-color:var(--bg,#121a24)}.panel,.panel:after{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel:after{content:\\\"\\\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow)}.panel-body:empty:before{content:\\\"\\\\AF\\\\\\\\_(\\\\30C4)_/\\\\AF\\\";display:block;margin:1em;text-align:center}.panel-heading{display:-ms-flexbox;display:flex;-ms-flex:none;flex:none;border-radius:10px 10px 0 0;border-radius:var(--panelRadius,10px) var(--panelRadius,10px) 0 0;background-size:cover;padding:.6em;text-align:left;line-height:28px;color:var(--panelText);background-color:#182230;background-color:var(--panel,#182230);-ms-flex-align:baseline;align-items:baseline;box-shadow:var(--panelHeaderShadow)}.panel-heading .title{-ms-flex:1 0 auto;flex:1 0 auto;font-size:1.3em}.panel-heading .faint{background-color:transparent;color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-heading .faint-link{color:hsla(240,1%,73%,.5);color:var(--faintLink,hsla(240,1%,73%,.5))}.panel-heading .alert{white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.panel-heading button{-ms-flex-negative:0;flex-shrink:0}.panel-heading .alert,.panel-heading button{line-height:21px;min-height:0;box-sizing:border-box;margin:0;margin-left:.5em;min-width:1px;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.panel-heading button,.panel-heading button i[class*=icon-]{color:#b9b9ba;color:var(--btnPanelText,#b9b9ba)}.panel-heading button:active{background-color:#182230;background-color:var(--btnPressedPanel,#182230);color:#b9b9ba;color:var(--btnPressedPanelText,#b9b9ba)}.panel-heading button:disabled{color:#b9b9ba;color:var(--btnDisabledPanelText,#b9b9ba)}.panel-heading button.toggled{color:#b9b9ba;color:var(--btnToggledPanelText,#b9b9ba)}.panel-heading a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-heading.stub{border-radius:10px;border-radius:var(--panelRadius,10px)}.panel-footer{border-radius:0 0 10px 10px;border-radius:0 0 var(--panelRadius,10px) var(--panelRadius,10px)}.panel-footer .faint{color:hsla(240,1%,73%,.5);color:var(--panelFaint,hsla(240,1%,73%,.5))}.panel-footer a{color:#d8a070;color:var(--panelLink,#d8a070)}.panel-body>p{line-height:18px;padding:1em;margin:0}.container>*{min-width:0}.fa{color:grey}nav{z-index:1000;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5));box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter,.fade-leave-active{opacity:0}.main{-ms-flex-preferred-size:50%;flex-basis:50%;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.sidebar-bounds{-ms-flex:0;flex:0;-ms-flex-preferred-size:35%;flex-basis:35%}.sidebar-flexer{-ms-flex:1;flex:1;-ms-flex-preferred-size:345px;flex-basis:345px;width:365px}.mobile-shown{display:none}@media (min-width:800px){body{overflow-y:scroll}.sidebar-bounds{overflow:hidden;max-height:100vh;width:345px;position:fixed;margin-top:-10px}.sidebar-bounds .sidebar-scroller{height:96vh;width:365px;padding-top:10px;padding-right:50px;overflow-x:hidden;overflow-y:scroll}.sidebar-bounds .sidebar{width:345px}.sidebar-flexer{max-height:96vh;-ms-flex-negative:0;flex-shrink:0;-ms-flex-positive:0;flex-grow:0}}.badge{display:inline-block;border-radius:99px;min-width:22px;max-width:22px;min-height:22px;max-height:22px;font-size:15px;line-height:22px;text-align:center;vertical-align:middle;white-space:nowrap;padding:0}.badge.badge-notification{background-color:red;background-color:var(--badgeNotification,red);color:#fff;color:var(--badgeNotificationText,#fff)}.alert{margin:.35em;padding:.25em;border-radius:5px;border-radius:var(--tooltipRadius,5px);min-height:28px;line-height:28px}.alert.error{background-color:rgba(211,16,20,.5);background-color:var(--alertError,rgba(211,16,20,.5));color:#b9b9ba;color:var(--alertErrorText,#b9b9ba)}.panel-heading .alert.error{color:#b9b9ba;color:var(--alertErrorPanelText,#b9b9ba)}.alert.warning{background-color:rgba(111,111,20,.5);background-color:var(--alertWarning,rgba(111,111,20,.5));color:#b9b9ba;color:var(--alertWarningText,#b9b9ba)}.panel-heading .alert.warning{color:#b9b9ba;color:var(--alertWarningPanelText,#b9b9ba)}.faint,.faint-link{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.faint-link:hover{text-decoration:underline}@media (min-width:800px){.logo{opacity:1!important}}.item.right{text-align:right}.visibility-notice{padding:.5em;border:1px solid hsla(240,1%,73%,.5);border:1px solid var(--faint,hsla(240,1%,73%,.5));border-radius:4px;border-radius:var(--inputRadius,4px)}.notice-dismissible{padding-right:4rem;position:relative}.notice-dismissible .dismiss{position:absolute;top:0;right:0;padding:.5em;color:inherit}.button-icon{font-size:1.2em}@keyframes shakeError{0%{transform:translateX(0)}15%{transform:translateX(.375rem)}30%{transform:translateX(-.375rem)}45%{transform:translateX(.375rem)}60%{transform:translateX(-.375rem)}75%{transform:translateX(.375rem)}90%{transform:translateX(-.375rem)}to{transform:translateX(0)}}@media (max-width:800px){.mobile-hidden{display:none}.panel-switcher{display:-ms-flexbox;display:flex}.container{padding:0}.panel{margin:.5em 0}.menu-button{display:block;margin-right:.8em}.main{margin-bottom:7em}}.select-multiple{display:-ms-flexbox;display:flex}.select-multiple .option-list{margin:0;padding-left:.5em}.option-list,.setting-list{list-style-type:none;padding-left:2em}.option-list li,.setting-list li{margin-bottom:.5em}.option-list .suboptions,.setting-list .suboptions{margin-top:.3em}.login-hint{text-align:center}@media (min-width:801px){.login-hint{display:none}}.login-hint a{display:inline-block;padding:1em 0;width:100%}.btn.btn-default{min-height:28px}.animate-spin{animation:spin 2s infinite linear;display:inline-block}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}.new-status-notification{position:relative;margin-top:-1px;font-size:1.1em;border-width:1px 0 0;border-style:solid;border-color:var(--border,#222);padding:10px;z-index:1;background-color:#182230;background-color:var(--panel,#182230)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"04d46dee\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-panel .signed-in{overflow:visible}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./nav_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"b030addc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".nav-panel .panel{overflow:hidden;box-shadow:var(--panelShadow)}.nav-panel ul{list-style:none;margin:0;padding:0}.follow-request-count{margin:-6px 10px;background-color:#121a24;background-color:var(--input,hsla(240,1%,73%,.5))}.nav-panel li{border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);padding:0}.nav-panel li:first-child a{border-top-right-radius:10px;border-top-right-radius:var(--panelRadius,10px);border-top-left-radius:10px;border-top-left-radius:var(--panelRadius,10px)}.nav-panel li:last-child a{border-bottom-right-radius:10px;border-bottom-right-radius:var(--panelRadius,10px);border-bottom-left-radius:10px;border-bottom-left-radius:var(--panelRadius,10px)}.nav-panel li:last-child{border:none}.nav-panel a{display:block;padding:.8em .85em}.nav-panel a:hover{color:#d8a070;color:var(--selectedMenuText,#d8a070)}.nav-panel a.router-link-active,.nav-panel a:hover{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.nav-panel a.router-link-active{font-weight:bolder;color:#b9b9ba;color:var(--selectedMenuText,#b9b9ba)}.nav-panel a.router-link-active:hover{text-decoration:underline}.nav-panel .button-icon:before{width:1.1em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./search_bar.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"0ea9aafc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".search-bar-container{max-width:100%;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;vertical-align:baseline;-ms-flex-pack:end;justify-content:flex-end}.search-bar-container .search-bar-input,.search-bar-container .search-button{height:29px}.search-bar-container .search-bar-input{max-width:calc(100% - 30px - 30px - 20px)}.search-bar-container .search-button{margin-left:.5em;margin-right:.5em}.search-bar-container .icon-cancel{cursor:pointer}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./who_to_follow_panel.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2f18dd03\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".who-to-follow *{vertical-align:middle}.who-to-follow img{width:32px;height:32px}.who-to-follow{padding:0 1em;margin:0}.who-to-follow-items{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0;margin:1em 0}.who-to-follow-more{padding:0;margin:1em 0;text-align:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!./settings_modal.scss\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7272e6fe\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".settings-modal{overflow:hidden}.settings-modal.peek .settings-modal-panel{transform:translateY(calc(((100vh - 100%) / 2 + 100%) - 50px))}.settings-modal .settings-modal-panel{overflow:hidden;transition:transform;transition-timing-function:ease-in-out;transition-duration:.3s;width:1000px;max-width:90vw;height:90vh}@media (max-width:800px){.settings-modal .settings-modal-panel{max-width:100vw;height:100vh}}.settings-modal .settings-modal-panel>.panel-body{height:100%;overflow-y:hidden}.settings-modal .settings-modal-panel>.panel-body .btn{min-height:28px;min-width:10em;padding:0 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"f7395e92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view{z-index:1000;position:fixed;top:0;left:0;right:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;overflow:auto;pointer-events:none;animation-duration:.2s;animation-name:modal-background-fadein;opacity:0}.modal-view>*{pointer-events:auto}.modal-view.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5)}.modal-view.open{opacity:1}@keyframes modal-background-fadein{0%{background-color:transparent}to{background-color:rgba(0,0,0,.5)}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./panel_loading.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1c82888b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".panel-loading{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;font-size:2em;color:#b9b9ba;color:var(--text,#b9b9ba)}.panel-loading .loading-text i{font-size:3em;line-height:0;vertical-align:middle;color:#b9b9ba;color:var(--text,#b9b9ba)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./async_component_error.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2970b266\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".async-component-error{display:-ms-flexbox;display:flex;height:100%;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.async-component-error .btn{margin:.5em;padding:.5em 2em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./media_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"23b00cfc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.media-modal-view{z-index:1001}.modal-view.media-modal-view .modal-view-button-arrow{opacity:.75}.modal-view.media-modal-view .modal-view-button-arrow:focus,.modal-view.media-modal-view .modal-view-button-arrow:hover{outline:none;box-shadow:none}.modal-view.media-modal-view .modal-view-button-arrow:hover{opacity:1}.modal-image{max-width:90%;max-height:90%;box-shadow:0 5px 15px 0 rgba(0,0,0,.5);image-orientation:from-image}.modal-view-button-arrow{position:absolute;display:block;top:50%;margin-top:-50px;width:70px;height:100px;border:0;padding:0;opacity:0;box-shadow:none;background:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;overflow:visible;cursor:pointer;transition:opacity 333ms cubic-bezier(.4,0,.22,1)}.modal-view-button-arrow .arrow-icon{position:absolute;top:35px;height:30px;width:32px;font-size:14px;line-height:30px;color:#fff;text-align:center;background-color:rgba(0,0,0,.3)}.modal-view-button-arrow--prev{left:0}.modal-view-button-arrow--prev .arrow-icon{left:6px}.modal-view-button-arrow--next{right:0}.modal-view-button-arrow--next .arrow-icon{right:6px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side_drawer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34992fba\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".side-drawer-container{position:fixed;z-index:1000;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-align:stretch;align-items:stretch;transition-duration:0s;transition-property:transform}.side-drawer-container-open{transform:translate(0)}.side-drawer-container-closed{transition-delay:.35s;transform:translate(-100%)}.side-drawer-darken{top:0;left:0;width:100vw;height:100vh;position:fixed;z-index:-1;transition:.35s;transition-property:background-color;background-color:rgba(0,0,0,.5)}.side-drawer-darken-closed{background-color:transparent}.side-drawer-click-outside{-ms-flex:1 1 100%;flex:1 1 100%}.side-drawer{overflow-x:hidden;transition-timing-function:cubic-bezier(0,1,.5,1);transition:.35s;transition-property:transform;margin:0 0 0 -100px;padding:0 0 1em 100px;width:80%;max-width:20em;-ms-flex:0 0 80%;flex:0 0 80%;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);background-color:#121a24;background-color:var(--popover,#121a24);color:#d8a070;color:var(--popoverText,#d8a070);--faint:var(--popoverFaintText,$fallback--faint);--faintLink:var(--popoverFaintLink,$fallback--faint);--lightText:var(--popoverLightText,$fallback--lightText);--icon:var(--popoverIcon,$fallback--icon)}.side-drawer .button-icon:before{width:1.1em}.side-drawer-logo-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.85em}.side-drawer-logo-wrapper img{-ms-flex:none;flex:none;height:50px;margin-right:.85em}.side-drawer-logo-wrapper span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-drawer-click-outside-closed{-ms-flex:0 0 0px;flex:0 0 0}.side-drawer-closed{transform:translate(-100%)}.side-drawer-heading{background:transparent;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;padding:0;margin:0}.side-drawer ul{list-style:none;margin:0;padding:0;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222);margin:.2em 0}.side-drawer ul:last-child{border:0}.side-drawer li{padding:0}.side-drawer li a{display:block;padding:.5em .85em}.side-drawer li a:hover{background-color:#151e2a;background-color:var(--selectedMenuPopover,#151e2a);color:#b9b9ba;color:var(--selectedMenuPopoverText,#b9b9ba);--faint:var(--selectedMenuPopoverFaintText,$fallback--faint);--faintLink:var(--selectedMenuPopoverFaintLink,$fallback--faint);--lightText:var(--selectedMenuPopoverLightText,$fallback--lightText);--icon:var(--selectedMenuPopoverIcon,$fallback--icon)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_post_status_button.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7f8eca07\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".new-status-button{width:5em;height:5em;border-radius:100%;position:fixed;bottom:1.5em;right:1.5em;background-color:#182230;background-color:var(--btn,#182230);display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;box-shadow:0 2px 2px rgba(0,0,0,.3),0 4px 6px rgba(0,0,0,.3);z-index:10;transition:transform .35s;transition-timing-function:cubic-bezier(0,1,.5,1)}.new-status-button.hidden{transform:translateY(150%)}.new-status-button i{font-size:1.5em;color:#b9b9ba;color:var(--text,#b9b9ba)}@media (min-width:801px){.new-status-button{display:none}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mobile_nav.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1e0fbcf8\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mobile-inner-nav{width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.mobile-nav-button{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;width:50px;position:relative;cursor:pointer}.alert-dot{border-radius:100%;height:8px;width:8px;position:absolute;left:calc(50% - 4px);top:calc(50% - 4px);margin-left:6px;margin-top:-6px;background-color:red;background-color:var(--badgeNotification,red)}.mobile-notifications-drawer{width:100%;height:100vh;overflow-x:hidden;position:fixed;top:0;left:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);transition-property:transform;transition-duration:.25s;transform:translateX(0);z-index:1001;-webkit-overflow-scrolling:touch}.mobile-notifications-drawer.closed{transform:translateX(100%)}.mobile-notifications-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;z-index:1;width:100%;height:50px;line-height:50px;position:absolute;color:var(--topBarText);background-color:#182230;background-color:var(--topBar,#182230);box-shadow:0 0 4px rgba(0,0,0,.6);box-shadow:var(--topBarShadow)}.mobile-notifications-header .title{font-size:1.3em;margin-left:.6em}.mobile-notifications{margin-top:50px;width:100vw;height:calc(100vh - 50px);overflow-x:hidden;overflow-y:scroll;color:#b9b9ba;color:var(--text,#b9b9ba);background-color:#121a24;background-color:var(--bg,#121a24)}.mobile-notifications .notifications{padding:0;border-radius:0;box-shadow:none}.mobile-notifications .notifications .panel{border-radius:0;margin:0;box-shadow:none}.mobile-notifications .notifications .panel:after{border-radius:0}.mobile-notifications .notifications .panel .panel-heading{border-radius:0;box-shadow:none}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_reporting_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"10c04f96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".user-reporting-panel{width:90vw;max-width:700px;min-height:20vh;max-height:80vh}.user-reporting-panel .panel-heading .title{text-align:center;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-reporting-panel .panel-body{display:-ms-flexbox;display:flex;-ms-flex-direction:column-reverse;flex-direction:column-reverse;border-top:1px solid;border-color:#222;border-color:var(--border,#222);overflow:hidden}.user-reporting-panel-left{padding:1.1em .7em .7em;line-height:1.4em;box-sizing:border-box}.user-reporting-panel-left>div{margin-bottom:1em}.user-reporting-panel-left>div:last-child{margin-bottom:0}.user-reporting-panel-left p{margin-top:0}.user-reporting-panel-left textarea.form-control{line-height:16px;resize:none;overflow:hidden;transition:min-height .2s .1s;min-height:44px;width:100%}.user-reporting-panel-left .btn{min-width:10em;padding:0 2em}.user-reporting-panel-left .alert{margin:1em 0 0;line-height:1.3em}.user-reporting-panel-right{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto}.user-reporting-panel-sitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.user-reporting-panel-sitem>.status-el{-ms-flex:1;flex:1}.user-reporting-panel-sitem>.checkbox{margin:.75em}@media (min-width:801px){.user-reporting-panel .panel-body{-ms-flex-direction:row;flex-direction:row}.user-reporting-panel-left{width:50%;max-width:320px;border-right:1px solid;border-color:#222;border-color:var(--border,#222);padding:1.1em}.user-reporting-panel-left>div{margin-bottom:2em}.user-reporting-panel-right{width:50%;-ms-flex:1 1 auto;flex:1 1 auto;margin-bottom:12px}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./post_status_modal.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"7628c2ae\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".modal-view.post-form-modal-view{-ms-flex-align:start;align-items:flex-start}.post-form-modal-panel{-ms-flex-negative:0;flex-shrink:0;margin-top:25%;margin-bottom:2em;width:100%;max-width:700px}@media (orientation:landscape){.post-form-modal-panel{margin-top:8%}}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/lib/loader.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./global_notice_list.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"cdffaf96\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".global-notice-list{position:fixed;top:50px;width:100%;pointer-events:none;z-index:1001;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center}.global-notice-list .global-notice{pointer-events:auto;text-align:center;width:40em;max-width:calc(100% - 3em);display:-ms-flexbox;display:flex;padding-left:1.5em;line-height:2em}.global-notice-list .global-notice .notice-message{-ms-flex:1 1 100%;flex:1 1 100%}.global-notice-list .global-notice i{-ms-flex:0 0;flex:0 0;width:1.5em;cursor:pointer}.global-notice-list .global-error{background-color:var(--alertPopupError,red)}.global-notice-list .global-error,.global-notice-list .global-error i{color:var(--alertPopupErrorText,#b9b9ba)}.global-notice-list .global-warning{background-color:var(--alertPopupWarning,orange)}.global-notice-list .global-warning,.global-notice-list .global-warning i{color:var(--alertPopupWarningText,#b9b9ba)}.global-notice-list .global-info{background-color:var(--alertPopupNeutral,#182230)}.global-notice-list .global-info,.global-notice-list .global-info i{color:var(--alertPopupNeutralText,#b9b9ba)}\", \"\"]);\n\n// exports\n","import EventTargetPolyfill from '@ungap/event-target'\n\ntry {\n /* eslint-disable no-new */\n new EventTarget()\n /* eslint-enable no-new */\n} catch (e) {\n window.EventTarget = EventTargetPolyfill\n}\n","import { set, delete as del } from 'vue'\n\nconst defaultState = {\n settingsModalState: 'hidden',\n settingsModalLoaded: false,\n settings: {\n currentSaveStateNotice: null,\n noticeClearTimeout: null,\n notificationPermission: null\n },\n browserSupport: {\n cssFilter: window.CSS && window.CSS.supports && (\n window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n )\n },\n mobileLayout: false,\n globalNotices: []\n}\n\nconst interfaceMod = {\n state: defaultState,\n mutations: {\n settingsSaved (state, { success, error }) {\n if (success) {\n if (state.noticeClearTimeout) {\n clearTimeout(state.noticeClearTimeout)\n }\n set(state.settings, 'currentSaveStateNotice', { error: false, data: success })\n set(state.settings, 'noticeClearTimeout',\n setTimeout(() => del(state.settings, 'currentSaveStateNotice'), 2000))\n } else {\n set(state.settings, 'currentSaveStateNotice', { error: true, errorData: error })\n }\n },\n setNotificationPermission (state, permission) {\n state.notificationPermission = permission\n },\n setMobileLayout (state, value) {\n state.mobileLayout = value\n },\n closeSettingsModal (state) {\n state.settingsModalState = 'hidden'\n },\n togglePeekSettingsModal (state) {\n switch (state.settingsModalState) {\n case 'minimized':\n state.settingsModalState = 'visible'\n return\n case 'visible':\n state.settingsModalState = 'minimized'\n return\n default:\n throw new Error('Illegal minimization state of settings modal')\n }\n },\n openSettingsModal (state) {\n state.settingsModalState = 'visible'\n if (!state.settingsModalLoaded) {\n state.settingsModalLoaded = true\n }\n },\n pushGlobalNotice (state, notice) {\n state.globalNotices.push(notice)\n },\n removeGlobalNotice (state, notice) {\n state.globalNotices = state.globalNotices.filter(n => n !== notice)\n }\n },\n actions: {\n setPageTitle ({ rootState }, option = '') {\n document.title = `${option} ${rootState.instance.name}`\n },\n settingsSaved ({ commit, dispatch }, { success, error }) {\n commit('settingsSaved', { success, error })\n },\n setNotificationPermission ({ commit }, permission) {\n commit('setNotificationPermission', permission)\n },\n setMobileLayout ({ commit }, value) {\n commit('setMobileLayout', value)\n },\n closeSettingsModal ({ commit }) {\n commit('closeSettingsModal')\n },\n openSettingsModal ({ commit }) {\n commit('openSettingsModal')\n },\n togglePeekSettingsModal ({ commit }) {\n commit('togglePeekSettingsModal')\n },\n pushGlobalNotice (\n { commit, dispatch },\n {\n messageKey,\n messageArgs = {},\n level = 'error',\n timeout = 0\n }) {\n const notice = {\n messageKey,\n messageArgs,\n level\n }\n if (timeout) {\n setTimeout(() => dispatch('removeGlobalNotice', notice), timeout)\n }\n commit('pushGlobalNotice', notice)\n return notice\n },\n removeGlobalNotice ({ commit }, notice) {\n commit('removeGlobalNotice', notice)\n }\n }\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 background: '/static/aurora_borealis.jpg',\n collapseMessageWithSubject: false,\n disableChat: false,\n greentext: false,\n hideFilteredStatuses: false,\n hideMutedPosts: false,\n hidePostStats: false,\n hideSitename: false,\n hideUserStats: false,\n loginMethod: 'password',\n logo: '/static/logo.png',\n logoMargin: '.2em',\n logoMask: true,\n minimalScopesMode: false,\n nsfwCensorImage: undefined,\n postContentType: 'text/plain',\n redirectRootLogin: '/main/friends',\n redirectRootNoLogin: '/main/all',\n scopeCopy: true,\n showFeaturesPanel: true,\n showInstanceSpecificPanel: false,\n sidebarRight: false,\n subjectLineBehavior: 'email',\n theme: 'pleroma-dark',\n\n // Nasty stuff\n customEmoji: [],\n customEmojiFetched: false,\n emoji: [],\n emojiFetched: false,\n pleromaBackend: true,\n postFormats: [],\n restrictedNicknames: [],\n safeDM: true,\n knownDomains: [],\n\n // Feature-set, apparently, not everything here is reported...\n chatAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n\n // Html stuff\n instanceSpecificPanelContent: '',\n tos: '',\n\n // Version Information\n backendVersion: '',\n frontendVersion: '',\n\n pollsAvailable: false,\n pollLimits: {\n max_options: 4,\n max_option_chars: 255,\n min_expiration: 60,\n max_expiration: 60 * 60 * 24\n }\n}\n\nconst instance = {\n state: defaultState,\n mutations: {\n setInstanceOption (state, { name, value }) {\n if (typeof value !== 'undefined') {\n set(state, name, value)\n }\n },\n setKnownDomains (state, domains) {\n state.knownDomains = domains\n }\n },\n getters: {\n instanceDefaultConfig (state) {\n return instanceDefaultProperties\n .map(key => [key, state[key]])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {})\n }\n },\n actions: {\n setInstanceOption ({ commit, dispatch }, { name, value }) {\n commit('setInstanceOption', { name, value })\n switch (name) {\n case 'name':\n dispatch('setPageTitle')\n break\n case 'chatAvailable':\n if (value) {\n dispatch('initializeSocket')\n }\n break\n case 'theme':\n dispatch('setTheme', value)\n break\n }\n },\n async getStaticEmoji ({ commit }) {\n try {\n const res = await window.fetch('/static/emoji.json')\n if (res.ok) {\n const values = await res.json()\n const emoji = Object.keys(values).map((key) => {\n return {\n displayText: key,\n imageUrl: false,\n replacement: values[key]\n }\n }).sort((a, b) => a.displayText - b.displayText)\n commit('setInstanceOption', { name: 'emoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load static emoji\")\n console.warn(e)\n }\n },\n\n async getCustomEmoji ({ commit, state }) {\n try {\n const res = await window.fetch('/api/pleroma/emoji.json')\n if (res.ok) {\n const result = await res.json()\n const values = Array.isArray(result) ? Object.assign({}, ...result) : result\n const emoji = Object.entries(values).map(([key, value]) => {\n const imageUrl = value.image_url\n return {\n displayText: key,\n imageUrl: imageUrl ? state.server + imageUrl : value,\n tags: imageUrl ? value.tags.sort((a, b) => a > b ? 1 : 0) : ['utf'],\n replacement: `:${key}: `\n }\n // Technically could use tags but those are kinda useless right now,\n // should have been \"pack\" field, that would be more useful\n }).sort((a, b) => a.displayText.toLowerCase() > b.displayText.toLowerCase() ? 1 : 0)\n commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load custom emojis\")\n console.warn(e)\n }\n },\n\n setTheme ({ commit, rootState }, themeName) {\n commit('setInstanceOption', { name: 'theme', value: themeName })\n getPreset(themeName)\n .then(themeData => {\n commit('setInstanceOption', { name: 'themeData', value: themeData })\n // No need to apply theme if there's user theme already\n const { customTheme } = rootState.config\n if (customTheme) return\n\n // New theme presets don't have 'theme' property, they use 'source'\n const themeSource = themeData.source\n if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n applyTheme(themeSource)\n } else {\n applyTheme(themeData.theme)\n }\n })\n },\n fetchEmoji ({ dispatch, state }) {\n if (!state.customEmojiFetched) {\n state.customEmojiFetched = true\n dispatch('getCustomEmoji')\n }\n if (!state.emojiFetched) {\n state.emojiFetched = true\n dispatch('getStaticEmoji')\n }\n },\n\n async getKnownDomains ({ commit, rootState }) {\n try {\n const result = await apiService.fetchKnownDomains({\n credentials: rootState.users.currentUser.credentials\n })\n commit('setKnownDomains', result)\n } catch (e) {\n console.warn(\"Can't load known domains\")\n console.warn(e)\n }\n }\n }\n}\n\nexport default instance\n","import {\n remove,\n slice,\n each,\n findIndex,\n find,\n maxBy,\n minBy,\n merge,\n first,\n last,\n isArray,\n omitBy\n} from 'lodash'\nimport { set } from 'vue'\nimport { isStatusNotification, prepareNotificationObject } from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\nimport { muteWordHits } from '../services/status_parser/status_parser.js'\n\nconst emptyTl = (userId = 0) => ({\n statuses: [],\n statusesObject: {},\n faves: [],\n visibleStatuses: [],\n visibleStatusesObject: {},\n newStatusCount: 0,\n maxId: 0,\n minId: 0,\n minVisibleId: 0,\n loading: false,\n followers: [],\n friends: [],\n userId,\n flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n desktopNotificationSilence: true,\n maxId: 0,\n minId: Number.POSITIVE_INFINITY,\n data: [],\n idStore: {},\n loading: false,\n error: false\n})\n\nexport const defaultState = () => ({\n allStatuses: [],\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\n notifications: emptyNotifications(),\n favorites: new Set(),\n error: false,\n errorData: null,\n timelines: {\n mentions: emptyTl(),\n public: emptyTl(),\n user: emptyTl(),\n favorites: emptyTl(),\n media: emptyTl(),\n publicAndExternal: emptyTl(),\n friends: emptyTl(),\n tag: emptyTl(),\n dms: emptyTl(),\n bookmarks: emptyTl()\n }\n})\n\nexport const prepareStatus = (status) => {\n // Set deleted flag\n status.deleted = false\n\n // To make the array reactive\n status.attachments = status.attachments || []\n\n return status\n}\n\nconst visibleNotificationTypes = (rootState) => {\n return [\n rootState.config.notificationVisibility.likes && 'like',\n rootState.config.notificationVisibility.mentions && 'mention',\n rootState.config.notificationVisibility.repeats && 'repeat',\n rootState.config.notificationVisibility.follows && 'follow',\n rootState.config.notificationVisibility.moves && 'move',\n rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reactions'\n ].filter(_ => _)\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n const oldItem = obj[item.id]\n\n if (oldItem) {\n // We already have this, so only merge the new info.\n // We ignore null values to avoid overwriting existing properties with missing data\n // we also skip 'user' because that is handled by users module\n merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n // Reactivity fix.\n oldItem.attachments.splice(oldItem.attachments.length)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n prepareStatus(item)\n arr.push(item)\n set(obj, item.id, item)\n return { item, new: true }\n }\n}\n\nconst sortById = (a, b) => {\n const seqA = Number(a.id)\n const seqB = Number(b.id)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA > seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return 1\n } else if (!isSeqA && isSeqB) {\n return -1\n } else {\n return a.id > b.id ? -1 : 1\n }\n}\n\nconst sortTimeline = (timeline) => {\n timeline.visibleStatuses = timeline.visibleStatuses.sort(sortById)\n timeline.statuses = timeline.statuses.sort(sortById)\n timeline.minVisibleId = (last(timeline.visibleStatuses) || {}).id\n return timeline\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n const result = mergeOrAdd(state.allStatuses, state.allStatusesObject, data)\n if (result.new) {\n // Add to conversation\n const status = result.item\n const conversationsObject = state.conversationsObject\n const conversationId = status.statusnet_conversation_id\n if (conversationsObject[conversationId]) {\n conversationsObject[conversationId].push(status)\n } else {\n set(conversationsObject, conversationId, [status])\n }\n }\n return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n remove(state.allStatuses, { id: status.id })\n\n // TODO: Need to remove from allStatusesObject?\n\n // Remove possible notification\n remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n // Remove from conversation\n const conversationId = status.statusnet_conversation_id\n if (state.conversationsObject[conversationId]) {\n remove(state.conversationsObject[conversationId], { id: status.id })\n }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n // Sanity check\n if (!isArray(statuses)) {\n return false\n }\n\n const allStatuses = state.allStatuses\n const timelineObject = state.timelines[timeline]\n\n // Mismatch between API pagination and our internal minId/maxId tracking systems:\n // pagination.maxId is the oldest of the returned statuses when fetching older,\n // and pagination.minId is the newest when fetching newer. The names come directly\n // from the arguments they're supposed to be passed as for the next fetch.\n const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n if (!noIdUpdate && newer) {\n timelineObject.maxId = maxNew\n }\n if (!noIdUpdate && older) {\n timelineObject.minId = minNew\n }\n\n // This makes sure that user timeline won't get data meant for other\n // user. I.e. opening different user profiles makes request which could\n // return data late after user already viewing different user profile\n if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n return\n }\n\n const addStatus = (data, showImmediately, addToTimeline = true) => {\n const result = addStatusToGlobalStorage(state, data)\n const status = result.item\n\n if (result.new) {\n // We are mentioned in a post\n if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n const mentions = state.timelines.mentions\n\n // Add the mention to the mentions timeline\n if (timelineObject !== mentions) {\n mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n mentions.newStatusCount += 1\n\n sortTimeline(mentions)\n }\n }\n if (status.visibility === 'direct') {\n const dms = state.timelines.dms\n\n mergeOrAdd(dms.statuses, dms.statusesObject, status)\n dms.newStatusCount += 1\n\n sortTimeline(dms)\n }\n }\n\n // Decide if we should treat the status as new for this timeline.\n let resultForCurrentTimeline\n // Some statuses should only be added to the global status repository.\n if (timeline && addToTimeline) {\n resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n }\n\n if (timeline && showImmediately) {\n // Add it directly to the visibleStatuses, don't change\n // newStatusCount\n mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n // Just change newStatuscount\n timelineObject.newStatusCount += 1\n }\n\n return status\n }\n\n const favoriteStatus = (favorite, counter) => {\n const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n if (status) {\n // This is our favorite, so the relevant bit.\n if (favorite.user.id === user.id) {\n status.favorited = true\n } else {\n status.fave_num += 1\n }\n }\n return status\n }\n\n const processors = {\n 'status': (status) => {\n addStatus(status, showImmediately)\n },\n 'retweet': (status) => {\n // RetweetedStatuses are never shown immediately\n const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n let retweet\n // If the retweeted status is already there, don't add the retweet\n // to the timeline.\n if (timeline && find(timelineObject.statuses, (s) => {\n if (s.retweeted_status) {\n return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n } else {\n return s.id === retweetedStatus.id\n }\n })) {\n // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n retweet = addStatus(status, false, false)\n } else {\n retweet = addStatus(status, showImmediately)\n }\n\n retweet.retweeted_status = retweetedStatus\n },\n 'favorite': (favorite) => {\n // Only update if this is a new favorite.\n // Ignore our own favorites because we get info about likes as response to like request\n if (!state.favorites.has(favorite.id)) {\n state.favorites.add(favorite.id)\n favoriteStatus(favorite)\n }\n },\n 'deletion': (deletion) => {\n const uri = deletion.uri\n const status = find(allStatuses, { uri })\n if (!status) {\n return\n }\n\n removeStatusFromGlobalStorage(state, status)\n\n if (timeline) {\n remove(timelineObject.statuses, { uri })\n remove(timelineObject.visibleStatuses, { uri })\n }\n },\n 'follow': (follow) => {\n // NOOP, it is known status but we don't do anything about it for now\n },\n 'default': (unknown) => {\n console.log('unknown status type')\n console.log(unknown)\n }\n }\n\n each(statuses, (status) => {\n const type = status.type\n const processor = processors[type] || processors['default']\n processor(status)\n })\n\n // Keep the visible statuses sorted\n if (timeline && !(timeline === 'bookmarks')) {\n sortTimeline(timelineObject)\n }\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters }) => {\n each(notifications, (notification) => {\n if (isStatusNotification(notification.type)) {\n notification.action = addStatusToGlobalStorage(state, notification.action).item\n notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n }\n\n if (notification.type === 'pleroma:emoji_reaction') {\n dispatch('fetchEmojiReactionsBy', notification.status.id)\n }\n\n // Only add a new notification if we don't have one for the same action\n if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n state.notifications.maxId = notification.id > state.notifications.maxId\n ? notification.id\n : state.notifications.maxId\n state.notifications.minId = notification.id < state.notifications.minId\n ? notification.id\n : state.notifications.minId\n\n state.notifications.data.push(notification)\n state.notifications.idStore[notification.id] = notification\n\n if ('Notification' in window && window.Notification.permission === 'granted') {\n const notifObj = prepareNotificationObject(notification, rootGetters.i18n)\n\n const reasonsToMuteNotif = (\n notification.seen ||\n state.notifications.desktopNotificationSilence ||\n !visibleNotificationTypes.includes(notification.type) ||\n (\n notification.type === 'mention' && status && (\n status.muted ||\n muteWordHits(status, rootGetters.mergedConfig.muteWords).length === 0\n )\n )\n )\n if (!reasonsToMuteNotif) {\n let desktopNotification = new window.Notification(notifObj.title, notifObj)\n // Chrome is known for not closing notifications automatically\n // according to MDN, anyway.\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n }\n }\n } else if (notification.seen) {\n state.notifications.idStore[notification.id].seen = true\n }\n })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n const timelineObject = state.timelines[timeline]\n if (userId) {\n remove(timelineObject.statuses, { user: { id: userId } })\n remove(timelineObject.visibleStatuses, { user: { id: userId } })\n timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n }\n}\n\nexport const mutations = {\n addNewStatuses,\n addNewNotifications,\n removeStatus,\n showNewStatuses (state, { timeline }) {\n const oldTimeline = (state.timelines[timeline])\n\n oldTimeline.newStatusCount = 0\n oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n oldTimeline.minId = oldTimeline.minVisibleId\n oldTimeline.visibleStatusesObject = {}\n each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n },\n resetStatuses (state) {\n const emptyState = defaultState()\n Object.entries(emptyState).forEach(([key, value]) => {\n state[key] = value\n })\n },\n clearTimeline (state, { timeline, excludeUserId = false }) {\n const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n state.timelines[timeline] = emptyTl(userId)\n },\n clearNotifications (state) {\n state.notifications = emptyNotifications()\n },\n setFavorited (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.favorited !== value) {\n if (value) {\n newStatus.fave_num++\n } else {\n newStatus.fave_num--\n }\n }\n\n newStatus.favorited = value\n },\n setFavoritedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.favorited = status.favorited\n newStatus.fave_num = status.fave_num\n const index = findIndex(newStatus.favoritedBy, { id: user.id })\n if (index !== -1 && !newStatus.favorited) {\n newStatus.favoritedBy.splice(index, 1)\n } else if (index === -1 && newStatus.favorited) {\n newStatus.favoritedBy.push(user)\n }\n },\n setMutedStatus (state, status) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.thread_muted = status.thread_muted\n\n if (newStatus.thread_muted !== undefined) {\n state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n }\n },\n setRetweeted (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n\n if (newStatus.repeated !== value) {\n if (value) {\n newStatus.repeat_num++\n } else {\n newStatus.repeat_num--\n }\n }\n\n newStatus.repeated = value\n },\n setRetweetedConfirm (state, { status, user }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.repeated = status.repeated\n newStatus.repeat_num = status.repeat_num\n const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n if (index !== -1 && !newStatus.repeated) {\n newStatus.rebloggedBy.splice(index, 1)\n } else if (index === -1 && newStatus.repeated) {\n newStatus.rebloggedBy.push(user)\n }\n },\n setBookmarked (state, { status, value }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = value\n },\n setBookmarkedConfirm (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.bookmarked = status.bookmarked\n },\n setDeleted (state, { status }) {\n const newStatus = state.allStatusesObject[status.id]\n newStatus.deleted = true\n },\n setManyDeleted (state, condition) {\n Object.values(state.allStatusesObject).forEach(status => {\n if (condition(status)) {\n status.deleted = true\n }\n })\n },\n setLoading (state, { timeline, value }) {\n state.timelines[timeline].loading = value\n },\n setNsfw (state, { id, nsfw }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.nsfw = nsfw\n },\n setError (state, { value }) {\n state.error = value\n },\n setErrorData (state, { value }) {\n state.errorData = value\n },\n setNotificationsLoading (state, { value }) {\n state.notifications.loading = value\n },\n setNotificationsError (state, { value }) {\n state.notifications.error = value\n },\n setNotificationsSilence (state, { value }) {\n state.notifications.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n each(state.notifications.data, (notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = find(state.notifications.data, n => n.id === id)\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n },\n updateNotification (state, { id, updater }) {\n const notification = find(state.notifications.data, n => n.id === id)\n notification && updater(notification)\n },\n queueFlush (state, { timeline, id }) {\n state.timelines[timeline].flushMarker = id\n },\n queueFlushAll (state) {\n Object.keys(state.timelines).forEach((timeline) => {\n state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n })\n },\n addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.repeat_num = newStatus.rebloggedBy.length\n newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n },\n addFavs (state, { id, favoritedByUsers, currentUser }) {\n const newStatus = state.allStatusesObject[id]\n newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n newStatus.fave_num = newStatus.favoritedBy.length\n newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n },\n addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n const status = state.allStatusesObject[id]\n set(status, 'emoji_reactions', emojiReactions)\n },\n addOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n const reaction = status.emoji_reactions[reactionIndex] || { name: emoji, count: 0, accounts: [] }\n\n const newReaction = {\n ...reaction,\n count: reaction.count + 1,\n me: true,\n accounts: [\n ...reaction.accounts,\n currentUser\n ]\n }\n\n // Update count of existing reaction if it exists, otherwise append at the end\n if (reactionIndex >= 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', [...status.emoji_reactions, newReaction])\n }\n },\n removeOwnReaction (state, { id, emoji, currentUser }) {\n const status = state.allStatusesObject[id]\n const reactionIndex = findIndex(status.emoji_reactions, { name: emoji })\n if (reactionIndex < 0) return\n\n const reaction = status.emoji_reactions[reactionIndex]\n const accounts = reaction.accounts || []\n\n const newReaction = {\n ...reaction,\n count: reaction.count - 1,\n me: false,\n accounts: accounts.filter(acc => acc.id !== currentUser.id)\n }\n\n if (newReaction.count > 0) {\n set(status.emoji_reactions, reactionIndex, newReaction)\n } else {\n set(status, 'emoji_reactions', status.emoji_reactions.filter(r => r.name !== emoji))\n }\n },\n updateStatusWithPoll (state, { id, poll }) {\n const status = state.allStatusesObject[id]\n status.poll = poll\n }\n}\n\nconst statuses = {\n state: defaultState(),\n actions: {\n addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n },\n addNewNotifications ({ rootState, commit, dispatch, rootGetters }, { notifications, older }) {\n commit('addNewNotifications', { visibleNotificationTypes: visibleNotificationTypes(rootState), dispatch, notifications, older, rootGetters })\n },\n setError ({ rootState, commit }, { value }) {\n commit('setError', { value })\n },\n setErrorData ({ rootState, commit }, { value }) {\n commit('setErrorData', { value })\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsError ({ rootState, commit }, { value }) {\n commit('setNotificationsError', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n fetchStatus ({ rootState, dispatch }, id) {\n return rootState.api.backendInteractor.fetchStatus({ id })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n deleteStatus ({ rootState, commit }, status) {\n commit('setDeleted', { status })\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n },\n markStatusesAsDeleted ({ commit }, condition) {\n commit('setManyDeleted', condition)\n },\n favorite ({ rootState, commit }, status) {\n // Optimistic favoriting...\n commit('setFavorited', { status, value: true })\n rootState.api.backendInteractor.favorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n unfavorite ({ rootState, commit }, status) {\n // Optimistic unfavoriting...\n commit('setFavorited', { status, value: false })\n rootState.api.backendInteractor.unfavorite({ id: status.id })\n .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n },\n fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n },\n pinStatus ({ rootState, dispatch }, statusId) {\n return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n unpinStatus ({ rootState, dispatch }, statusId) {\n rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n },\n muteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.muteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n unmuteConversation ({ rootState, commit }, statusId) {\n return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n .then((status) => commit('setMutedStatus', status))\n },\n retweet ({ rootState, commit }, status) {\n // Optimistic retweeting...\n commit('setRetweeted', { status, value: true })\n rootState.api.backendInteractor.retweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n },\n unretweet ({ rootState, commit }, status) {\n // Optimistic unretweeting...\n commit('setRetweeted', { status, value: false })\n rootState.api.backendInteractor.unretweet({ id: status.id })\n .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n },\n bookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: true })\n rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n unbookmark ({ rootState, commit }, status) {\n commit('setBookmarked', { status, value: false })\n rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n .then(status => {\n commit('setBookmarkedConfirm', { status })\n })\n },\n queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\n },\n queueFlushAll ({ rootState, commit }) {\n commit('queueFlushAll')\n },\n markNotificationsAsSeen ({ rootState, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: rootState.statuses.notifications.maxId,\n credentials: rootState.users.currentUser.credentials\n })\n },\n markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n commit('markSingleNotificationAsSeen', { id })\n apiService.markNotificationsAsSeen({\n single: true,\n id,\n credentials: rootState.users.currentUser.credentials\n })\n },\n dismissNotificationLocal ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n },\n dismissNotification ({ rootState, commit }, { id }) {\n commit('dismissNotification', { id })\n rootState.api.backendInteractor.dismissNotification({ id })\n },\n updateNotification ({ rootState, commit }, { id, updater }) {\n commit('updateNotification', { id, updater })\n },\n fetchFavsAndRepeats ({ rootState, commit }, id) {\n Promise.all([\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n })\n },\n reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('addOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n const currentUser = rootState.users.currentUser\n if (!currentUser) return\n\n commit('removeOwnReaction', { id, emoji, currentUser })\n rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n ok => {\n dispatch('fetchEmojiReactionsBy', id)\n }\n )\n },\n fetchEmojiReactionsBy ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n emojiReactions => {\n commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n }\n )\n },\n fetchFavs ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n },\n fetchRepeats ({ rootState, commit }, id) {\n rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n },\n search (store, { q, resolve, limit, offset, following }) {\n return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following })\n .then((data) => {\n store.commit('addNewUsers', data.accounts)\n store.commit('addNewStatuses', { statuses: data.statuses })\n return data\n })\n }\n },\n mutations\n}\n\nexport default statuses\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, pagination }) => {\n const ccTimeline = camelCase(timeline)\n\n store.dispatch('setError', { value: false })\n store.dispatch('setErrorData', { value: null })\n\n store.dispatch('addNewStatuses', {\n timeline: ccTimeline,\n userId,\n statuses,\n showImmediately,\n pagination\n })\n}\n\nconst fetchAndUpdate = ({\n store,\n credentials,\n timeline = 'friends',\n older = false,\n showImmediately = false,\n userId = false,\n tag = false,\n until\n}) => {\n const args = { timeline, credentials }\n const rootState = store.rootState || store.state\n const { getters } = store\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n const loggedIn = !!rootState.users.currentUser\n\n if (older) {\n args['until'] = until || timelineData.minId\n } else {\n args['since'] = timelineData.maxId\n }\n\n args['userId'] = userId\n args['tag'] = tag\n args['withMuted'] = !hideMutedPosts\n if (loggedIn) args['replyVisibility'] = replyVisibility\n\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then(response => {\n if (response.error) {\n store.dispatch('setErrorData', { value: response })\n return\n }\n\n const { data: statuses, pagination } = response\n if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n store.dispatch('queueFlush', { timeline: timeline, id: timelineData.maxId })\n }\n update({ store, statuses, timeline, showImmediately, userId, pagination })\n return { statuses, pagination }\n }, () => store.dispatch('setError', { value: true }))\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, tag = false }) => {\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n const showImmediately = timelineData.visibleStatuses.length === 0\n timelineData.userId = userId\n fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, tag })\n const boundFetchAndUpdate = () => fetchAndUpdate({ timeline, credentials, store, userId, tag })\n return setInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\n\nconst update = ({ store, notifications, older }) => {\n store.dispatch('setNotificationsError', { value: false })\n store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false }) => {\n const args = { credentials }\n const { getters } = store\n const rootState = store.rootState || store.state\n const timelineData = rootState.statuses.notifications\n const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n args['withMuted'] = !hideMutedPosts\n\n args['timeline'] = 'notifications'\n if (older) {\n if (timelineData.minId !== Number.POSITIVE_INFINITY) {\n args['until'] = timelineData.minId\n }\n return fetchNotifications({ store, args, older })\n } else {\n // fetch new notifications\n if (timelineData.maxId !== Number.POSITIVE_INFINITY) {\n args['since'] = timelineData.maxId\n }\n const result = fetchNotifications({ store, args, older })\n\n // If there's any unread notifications, try fetch notifications since\n // the newest read notification to check if any of the unread notifs\n // have changed their 'seen' state (marked as read in another session), so\n // we can update the state in this session to mark them as read as well.\n // The normal maxId-check does not tell if older notifications have changed\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n const numUnseenNotifs = notifications.length - readNotifsIds.length\n if (numUnseenNotifs > 0) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then(({ data: notifications }) => {\n update({ store, notifications, older })\n return notifications\n }, () => store.dispatch('setNotificationsError', { value: true }))\n .catch(() => store.dispatch('setNotificationsError', { value: true }))\n}\n\nconst startFetching = ({ credentials, store }) => {\n fetchAndUpdate({ credentials, store })\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n // Initially there's set flag to silence all desktop notifications so\n // that there won't spam of them when user just opened up the FE we\n // reset that flag after a while to show new notifications once again.\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n return setInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n fetchAndUpdate,\n startFetching\n}\n\nexport default notificationsFetcher\n","import apiService from '../api/api.service.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n return apiService.fetchFollowRequests({ credentials })\n .then((requests) => {\n store.commit('setFollowRequests', requests)\n store.commit('addNewUsers', requests)\n }, () => {})\n .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n fetchAndUpdate({ credentials, store })\n const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n return setInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n startFetching\n}\n\nexport default followRequestFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcherService from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\n\nconst backendInteractorService = credentials => ({\n startFetchingTimeline ({ timeline, store, userId = false, tag }) {\n return timelineFetcherService.startFetching({ timeline, store, credentials, userId, tag })\n },\n\n startFetchingNotifications ({ store }) {\n return notificationsFetcher.startFetching({ store, credentials })\n },\n\n startFetchingFollowRequests ({ store }) {\n return followRequestFetcher.startFetching({ store, credentials })\n },\n\n startUserSocket ({ store }) {\n const serv = store.rootState.instance.server.replace('http', 'ws')\n const url = serv + getMastodonSocketURI({ credentials, stream: 'user' })\n return ProcessedWS({ url, id: 'User' })\n },\n\n ...Object.entries(apiService).reduce((acc, [key, func]) => {\n return {\n ...acc,\n [key]: (args) => func({ credentials, ...args })\n }\n }, {}),\n\n verifyCredentials: apiService.verifyCredentials\n})\n\nexport default backendInteractorService\n","import { reduce } from 'lodash'\n\nconst REDIRECT_URI = `${window.location.origin}/oauth-callback`\n\nexport const getOrCreateApp = ({ clientId, clientSecret, instance, commit }) => {\n if (clientId && clientSecret) {\n return Promise.resolve({ clientId, clientSecret })\n }\n\n const url = `${instance}/api/v1/apps`\n const form = new window.FormData()\n\n form.append('client_name', `PleromaFE_${window.___pleromafe_commit_hash}_${(new Date()).toISOString()}`)\n form.append('redirect_uris', REDIRECT_URI)\n form.append('scopes', 'read write follow push admin')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n .then((app) => ({ clientId: app.client_id, clientSecret: app.client_secret }))\n .then((app) => commit('setClientData', app) || app)\n}\n\nconst login = ({ instance, clientId }) => {\n const data = {\n response_type: 'code',\n client_id: clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'read write follow push admin'\n }\n\n const dataString = reduce(data, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n if (!acc) {\n return encoded\n } else {\n return `${acc}&${encoded}`\n }\n }, false)\n\n // Do the redirect...\n const url = `${instance}/oauth/authorize?${dataString}`\n\n window.location.href = url\n}\n\nconst getTokenWithCredentials = ({ clientId, clientSecret, instance, username, password }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'password')\n form.append('username', username)\n form.append('password', password)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst getToken = ({ clientId, clientSecret, instance, code }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'authorization_code')\n form.append('code', code)\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n })\n .then((data) => data.json())\n}\n\nexport const getClientToken = ({ clientId, clientSecret, instance }) => {\n const url = `${instance}/oauth/token`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('grant_type', 'client_credentials')\n form.append('redirect_uri', `${window.location.origin}/oauth-callback`)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\nconst verifyOTPCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ app, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', app.client_id)\n form.append('client_secret', app.client_secret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst revokeToken = ({ app, instance, token }) => {\n const url = `${instance}/oauth/revoke`\n const form = new window.FormData()\n\n form.append('client_id', app.clientId)\n form.append('client_secret', app.clientSecret)\n form.append('token', token)\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst oauth = {\n login,\n getToken,\n getTokenWithCredentials,\n getOrCreateApp,\n verifyOTPCode,\n verifyRecoveryCode,\n revokeToken\n}\n\nexport default oauth\n","import runtime from 'serviceworker-webpack-plugin/lib/runtime'\n\nfunction urlBase64ToUint8Array (base64String) {\n const padding = '='.repeat((4 - base64String.length % 4) % 4)\n const base64 = (base64String + padding)\n .replace(/-/g, '+')\n .replace(/_/g, '/')\n\n const rawData = window.atob(base64)\n return Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n}\n\nfunction isPushSupported () {\n return 'serviceWorker' in navigator && 'PushManager' in window\n}\n\nfunction getOrCreateServiceWorker () {\n return runtime.register()\n .catch((err) => console.error('Unable to get or create a service worker.', err))\n}\n\nfunction subscribePush (registration, isEnabled, vapidPublicKey) {\n if (!isEnabled) return Promise.reject(new Error('Web Push is disabled in config'))\n if (!vapidPublicKey) return Promise.reject(new Error('VAPID public key is not found'))\n\n const subscribeOptions = {\n userVisibleOnly: true,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscribtion) => {\n if (subscribtion === null) { return }\n return subscribtion.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n }\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response\n })\n}\n\nfunction sendSubscriptionToBackEnd (subscription, token, notificationVisibility) {\n return window.fetch('/api/v1/push/subscription/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${token}`\n },\n body: JSON.stringify({\n subscription,\n data: {\n alerts: {\n follow: notificationVisibility.follows,\n favourite: notificationVisibility.likes,\n mention: notificationVisibility.mentions,\n reblog: notificationVisibility.repeats,\n move: notificationVisibility.moves\n }\n }\n })\n }).then((response) => {\n if (!response.ok) throw new Error('Bad status code from server.')\n return response.json()\n }).then((responseData) => {\n if (!responseData.id) throw new Error('Bad response from server.')\n return responseData\n })\n}\n\nexport function registerPushNotifications (isEnabled, vapidPublicKey, token, notificationVisibility) {\n if (isPushSupported()) {\n getOrCreateServiceWorker()\n .then((registration) => subscribePush(registration, isEnabled, vapidPublicKey))\n .then((subscription) => sendSubscriptionToBackEnd(subscription, token, notificationVisibility))\n .catch((e) => console.warn(`Failed to setup Web Push Notifications: ${e.message}`))\n }\n}\n\nexport function unregisterPushNotifications (token) {\n if (isPushSupported()) {\n Promise.all([\n deleteSubscriptionFromBackEnd(token),\n getOrCreateServiceWorker()\n .then((registration) => {\n return unsubscribePush(registration).then((result) => [registration, result])\n })\n .then(([registration, unsubResult]) => {\n if (!unsubResult) {\n console.warn('Push subscription cancellation wasn\\'t successful, killing SW anyway...')\n }\n return registration.unregister().then((result) => {\n if (!result) {\n console.warn('Failed to kill SW')\n }\n })\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { set } from 'vue'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n if (!item) { return false }\n const oldItem = obj[item.id]\n if (oldItem) {\n // We already have this, so only merge the new info.\n mergeWith(oldItem, item, mergeArrayLength)\n return { item: oldItem, new: false }\n } else {\n // This is a new item, prepare it\n arr.push(item)\n set(obj, item.id, item)\n if (item.screen_name && !item.screen_name.includes('@')) {\n set(obj, item.screen_name.toLowerCase(), item)\n }\n return { item, new: true }\n }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n if (isArray(oldValue) && isArray(newValue)) {\n oldValue.length = newValue.length\n return mergeWith(oldValue, newValue, mergeArrayLength)\n }\n}\n\nconst getNotificationPermission = () => {\n const Notification = window.Notification\n\n if (!Notification) return Promise.resolve(null)\n if (Notification.permission === 'default') return Notification.requestPermission()\n return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n return store.rootState.api.backendInteractor.blockUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addBlockId', id)\n store.commit('removeStatus', { timeline: 'friends', userId: id })\n store.commit('removeStatus', { timeline: 'public', userId: id })\n store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n })\n}\n\nconst unblockUser = (store, id) => {\n return store.rootState.api.backendInteractor.unblockUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = true\n store.commit('updateUserRelationship', [predictedRelationship])\n store.commit('addMuteId', id)\n\n return store.rootState.api.backendInteractor.muteUser({ id })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n store.commit('addMuteId', id)\n })\n}\n\nconst unmuteUser = (store, id) => {\n const predictedRelationship = store.state.relationships[id] || { id }\n predictedRelationship.muting = false\n store.commit('updateUserRelationship', [predictedRelationship])\n\n return store.rootState.api.backendInteractor.unmuteUser({ id })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst hideReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: false })\n .then((relationship) => {\n store.commit('updateUserRelationship', [relationship])\n })\n}\n\nconst showReblogs = (store, userId) => {\n return store.rootState.api.backendInteractor.followUser({ id: userId, reblogs: true })\n .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst muteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.muteDomain({ domain })\n .then(() => store.commit('addDomainMute', domain))\n}\n\nconst unmuteDomain = (store, domain) => {\n return store.rootState.api.backendInteractor.unmuteDomain({ domain })\n .then(() => store.commit('removeDomainMute', domain))\n}\n\nexport const mutations = {\n tagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.concat([tag])\n set(user, 'tags', newTags)\n },\n untagUser (state, { user: { id }, tag }) {\n const user = state.usersObject[id]\n const tags = user.tags || []\n const newTags = tags.filter(t => t !== tag)\n set(user, 'tags', newTags)\n },\n updateRight (state, { user: { id }, right, value }) {\n const user = state.usersObject[id]\n let newRights = user.rights\n newRights[right] = value\n set(user, 'rights', newRights)\n },\n updateActivationStatus (state, { user: { id }, deactivated }) {\n const user = state.usersObject[id]\n set(user, 'deactivated', deactivated)\n },\n setCurrentUser (state, user) {\n state.lastLoginName = user.screen_name\n state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n },\n clearCurrentUser (state) {\n state.currentUser = false\n state.lastLoginName = false\n },\n beginLogin (state) {\n state.loggingIn = true\n },\n endLogin (state) {\n state.loggingIn = false\n },\n saveFriendIds (state, { id, friendIds }) {\n const user = state.usersObject[id]\n user.friendIds = uniq(concat(user.friendIds, friendIds))\n },\n saveFollowerIds (state, { id, followerIds }) {\n const user = state.usersObject[id]\n user.followerIds = uniq(concat(user.followerIds, followerIds))\n },\n // Because frontend doesn't have a reason to keep these stuff in memory\n // outside of viewing someones user profile.\n clearFriends (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'friendIds', [])\n }\n },\n clearFollowers (state, userId) {\n const user = state.usersObject[userId]\n if (user) {\n set(user, 'followerIds', [])\n }\n },\n addNewUsers (state, users) {\n each(users, (user) => {\n if (user.relationship) {\n set(state.relationships, user.relationship.id, user.relationship)\n }\n mergeOrAdd(state.users, state.usersObject, user)\n })\n },\n updateUserRelationship (state, relationships) {\n relationships.forEach((relationship) => {\n set(state.relationships, relationship.id, relationship)\n })\n },\n saveBlockIds (state, blockIds) {\n state.currentUser.blockIds = blockIds\n },\n addBlockId (state, blockId) {\n if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n state.currentUser.blockIds.push(blockId)\n }\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n addMuteId (state, muteId) {\n if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n state.currentUser.muteIds.push(muteId)\n }\n },\n saveDomainMutes (state, domainMutes) {\n state.currentUser.domainMutes = domainMutes\n },\n addDomainMute (state, domain) {\n if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n state.currentUser.domainMutes.push(domain)\n }\n },\n removeDomainMute (state, domain) {\n const index = state.currentUser.domainMutes.indexOf(domain)\n if (index !== -1) {\n state.currentUser.domainMutes.splice(index, 1)\n }\n },\n setPinnedToUser (state, status) {\n const user = state.usersObject[status.user.id]\n const index = user.pinnedStatusIds.indexOf(status.id)\n if (status.pinned && index === -1) {\n user.pinnedStatusIds.push(status.id)\n } else if (!status.pinned && index !== -1) {\n user.pinnedStatusIds.splice(index, 1)\n }\n },\n setUserForStatus (state, status) {\n status.user = state.usersObject[status.user.id]\n },\n setUserForNotification (state, notification) {\n if (notification.type !== 'follow') {\n notification.action.user = state.usersObject[notification.action.user.id]\n }\n notification.from_profile = state.usersObject[notification.from_profile.id]\n },\n setColor (state, { user: { id }, highlighted }) {\n const user = state.usersObject[id]\n set(user, 'highlight', highlighted)\n },\n signUpPending (state) {\n state.signUpPending = true\n state.signUpErrors = []\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n }\n}\n\nexport const getters = {\n findUser: state => query => {\n const result = state.usersObject[query]\n // In case it's a screen_name, we can try searching case-insensitive\n if (!result && typeof query === 'string') {\n return state.usersObject[query.toLowerCase()]\n }\n return result\n },\n relationship: state => id => {\n const rel = id && state.relationships[id]\n return rel || { id, loading: true }\n }\n}\n\nexport const defaultState = {\n loggingIn: false,\n lastLoginName: false,\n currentUser: false,\n users: [],\n usersObject: {},\n signUpPending: false,\n signUpErrors: [],\n relationships: {}\n}\n\nconst users = {\n state: defaultState,\n mutations,\n getters,\n actions: {\n fetchUserIfMissing (store, id) {\n if (!store.getters.findUser(id)) {\n store.dispatch('fetchUser', id)\n }\n },\n fetchUser (store, id) {\n return store.rootState.api.backendInteractor.fetchUser({ id })\n .then((user) => {\n store.commit('addNewUsers', [user])\n return user\n })\n },\n fetchUserRelationship (store, id) {\n if (store.state.currentUser) {\n store.rootState.api.backendInteractor.fetchUserRelationship({ id })\n .then((relationships) => store.commit('updateUserRelationship', relationships))\n }\n },\n fetchBlocks (store) {\n return store.rootState.api.backendInteractor.fetchBlocks()\n .then((blocks) => {\n store.commit('saveBlockIds', map(blocks, 'id'))\n store.commit('addNewUsers', blocks)\n return blocks\n })\n },\n blockUser (store, id) {\n return blockUser(store, id)\n },\n unblockUser (store, id) {\n return unblockUser(store, id)\n },\n blockUsers (store, ids = []) {\n return Promise.all(ids.map(id => blockUser(store, id)))\n },\n unblockUsers (store, ids = []) {\n return Promise.all(ids.map(id => unblockUser(store, id)))\n },\n fetchMutes (store) {\n return store.rootState.api.backendInteractor.fetchMutes()\n .then((mutes) => {\n store.commit('saveMuteIds', map(mutes, 'id'))\n store.commit('addNewUsers', mutes)\n return mutes\n })\n },\n muteUser (store, id) {\n return muteUser(store, id)\n },\n unmuteUser (store, id) {\n return unmuteUser(store, id)\n },\n hideReblogs (store, id) {\n return hideReblogs(store, id)\n },\n showReblogs (store, id) {\n return showReblogs(store, id)\n },\n muteUsers (store, ids = []) {\n return Promise.all(ids.map(id => muteUser(store, id)))\n },\n unmuteUsers (store, ids = []) {\n return Promise.all(ids.map(id => unmuteUser(store, id)))\n },\n fetchDomainMutes (store) {\n return store.rootState.api.backendInteractor.fetchDomainMutes()\n .then((domainMutes) => {\n store.commit('saveDomainMutes', domainMutes)\n return domainMutes\n })\n },\n muteDomain (store, domain) {\n return muteDomain(store, domain)\n },\n unmuteDomain (store, domain) {\n return unmuteDomain(store, domain)\n },\n muteDomains (store, domains = []) {\n return Promise.all(domains.map(domain => muteDomain(store, domain)))\n },\n unmuteDomains (store, domain = []) {\n return Promise.all(domain.map(domain => unmuteDomain(store, domain)))\n },\n fetchFriends ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.friendIds)\n return rootState.api.backendInteractor.fetchFriends({ id, maxId })\n .then((friends) => {\n commit('addNewUsers', friends)\n commit('saveFriendIds', { id, friendIds: map(friends, 'id') })\n return friends\n })\n },\n fetchFollowers ({ rootState, commit }, id) {\n const user = rootState.users.usersObject[id]\n const maxId = last(user.followerIds)\n return rootState.api.backendInteractor.fetchFollowers({ id, maxId })\n .then((followers) => {\n commit('addNewUsers', followers)\n commit('saveFollowerIds', { id, followerIds: map(followers, 'id') })\n return followers\n })\n },\n clearFriends ({ commit }, userId) {\n commit('clearFriends', userId)\n },\n clearFollowers ({ commit }, userId) {\n commit('clearFollowers', userId)\n },\n subscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.subscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n unsubscribeUser ({ rootState, commit }, id) {\n return rootState.api.backendInteractor.unsubscribeUser({ id })\n .then((relationship) => commit('updateUserRelationship', [relationship]))\n },\n toggleActivationStatus ({ rootState, commit }, { user }) {\n const api = user.deactivated ? rootState.api.backendInteractor.activateUser : rootState.api.backendInteractor.deactivateUser\n api({ user })\n .then(({ deactivated }) => commit('updateActivationStatus', { user, deactivated }))\n },\n registerPushNotifications (store) {\n const token = store.state.currentUser.credentials\n const vapidPublicKey = store.rootState.instance.vapidPublicKey\n const isEnabled = store.rootState.config.webPushNotifications\n const notificationVisibility = store.rootState.config.notificationVisibility\n\n registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n },\n unregisterPushNotifications (store) {\n const token = store.state.currentUser.credentials\n\n unregisterPushNotifications(token)\n },\n addNewUsers ({ commit }, users) {\n commit('addNewUsers', users)\n },\n addNewStatuses (store, { statuses }) {\n const users = map(statuses, 'user')\n const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', retweetedUsers)\n\n each(statuses, (status) => {\n // Reconnect users to statuses\n store.commit('setUserForStatus', status)\n // Set pinned statuses to user\n store.commit('setPinnedToUser', status)\n })\n each(compact(map(statuses, 'retweeted_status')), (status) => {\n // Reconnect users to retweets\n store.commit('setUserForStatus', status)\n // Set pinned retweets to user\n store.commit('setPinnedToUser', status)\n })\n },\n addNewNotifications (store, { notifications }) {\n const users = map(notifications, 'from_profile')\n const targetUsers = map(notifications, 'target').filter(_ => _)\n const notificationIds = notifications.map(_ => _.id)\n store.commit('addNewUsers', users)\n store.commit('addNewUsers', targetUsers)\n\n const notificationsObject = store.rootState.statuses.notifications.idStore\n const relevantNotifications = Object.entries(notificationsObject)\n .filter(([k, val]) => notificationIds.includes(k))\n .map(([k, val]) => val)\n\n // Reconnect users to notifications\n each(relevantNotifications, (notification) => {\n store.commit('setUserForNotification', notification)\n })\n },\n searchUsers ({ rootState, commit }, { query }) {\n return rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n commit('addNewUsers', users)\n return users\n })\n },\n async signUp (store, userInfo) {\n store.commit('signUpPending')\n\n let rootState = store.rootState\n\n try {\n let data = await rootState.api.backendInteractor.register(\n { params: { ...userInfo } }\n )\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n } catch (e) {\n let errors = e.message\n store.commit('signUpFailure', errors)\n throw e\n }\n },\n async getCaptcha (store) {\n return store.rootState.api.backendInteractor.getCaptcha()\n },\n\n logout (store) {\n const { oauth, instance } = store.rootState\n\n const data = {\n ...oauth,\n commit: store.commit,\n instance: instance.server\n }\n\n return oauthApi.getOrCreateApp(data)\n .then((app) => {\n const params = {\n app,\n instance: data.instance,\n token: oauth.userToken\n }\n\n return oauthApi.revokeToken(params)\n })\n .then(() => {\n store.commit('clearCurrentUser')\n store.dispatch('disconnectFromSocket')\n store.commit('clearToken')\n store.dispatch('stopFetchingTimeline', 'friends')\n store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n store.dispatch('stopFetchingNotifications')\n store.dispatch('stopFetchingFollowRequests')\n store.commit('clearNotifications')\n store.commit('resetStatuses')\n })\n },\n loginUser (store, accessToken) {\n return new Promise((resolve, reject) => {\n const commit = store.commit\n commit('beginLogin')\n store.rootState.api.backendInteractor.verifyCredentials(accessToken)\n .then((data) => {\n if (!data.error) {\n const user = data\n // user.credentials = userCredentials\n user.credentials = accessToken\n user.blockIds = []\n user.muteIds = []\n user.domainMutes = []\n commit('setCurrentUser', user)\n commit('addNewUsers', [user])\n\n store.dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n\n if (user.token) {\n store.dispatch('setWsToken', user.token)\n\n // Initialize the chat socket.\n store.dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n store.dispatch('startFetchingNotifications')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n store.dispatch('enableMastoSockets').catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n startPolling()\n }).then(() => {\n setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n store.dispatch('fetchMutes')\n\n // Fetch our friends\n store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n .then((friends) => commit('addNewUsers', friends))\n } else {\n const response = data.error\n // Authentication failed\n commit('endLogin')\n if (response.status === 401) {\n reject(new Error('Wrong username or password'))\n } else {\n reject(new Error('An error occurred, please try again'))\n }\n }\n commit('endLogin')\n resolve()\n })\n .catch((error) => {\n console.log(error)\n commit('endLogin')\n reject(new Error('Failed to connect to server, try again'))\n })\n })\n }\n }\n}\n\nexport default users\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { Socket } from 'phoenix'\n\nconst api = {\n state: {\n backendInteractor: backendInteractorService(),\n fetchers: {},\n socket: null,\n mastoUserSocket: null,\n followRequests: []\n },\n mutations: {\n setBackendInteractor (state, backendInteractor) {\n state.backendInteractor = backendInteractor\n },\n addFetcher (state, { fetcherName, fetcher }) {\n state.fetchers[fetcherName] = fetcher\n },\n removeFetcher (state, { fetcherName, fetcher }) {\n window.clearInterval(fetcher)\n delete state.fetchers[fetcherName]\n },\n setWsToken (state, token) {\n state.wsToken = token\n },\n setSocket (state, socket) {\n state.socket = socket\n },\n setFollowRequests (state, value) {\n state.followRequests = value\n }\n },\n actions: {\n // Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n enableMastoSockets (store) {\n const { state, dispatch } = store\n if (state.mastoUserSocket) return\n return dispatch('startMastoUserSocket')\n },\n disableMastoSockets (store) {\n const { state, dispatch } = store\n if (!state.mastoUserSocket) return\n return dispatch('stopMastoUserSocket')\n },\n\n // MastoAPI 'User' sockets\n startMastoUserSocket (store) {\n return new Promise((resolve, reject) => {\n try {\n const { state, 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 }\n }\n )\n state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n console.error('Error in MastoAPI websocket:', error)\n })\n state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n const ignoreCodes = new Set([\n 1000, // Normal (intended) closure\n 1001 // Going away\n ])\n const { code } = closeEvent\n if (ignoreCodes.has(code)) {\n console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n } else {\n console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n dispatch('restartMastoUserSocket')\n }\n })\n resolve()\n } catch (e) {\n reject(e)\n }\n })\n },\n restartMastoUserSocket ({ dispatch }) {\n // This basically starts MastoAPI user socket and stops conventional\n // fetchers when connection reestablished\n return dispatch('startMastoUserSocket').then(() => {\n dispatch('stopFetchingTimeline', { timeline: 'friends' })\n dispatch('stopFetchingNotifications')\n })\n },\n stopMastoUserSocket ({ state, dispatch }) {\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n dispatch('startFetchingNotifications')\n console.log(state.mastoUserSocket)\n state.mastoUserSocket.close()\n },\n\n // Timelines\n startFetchingTimeline (store, {\n timeline = 'friends',\n tag = false,\n userId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, tag\n })\n store.commit('addFetcher', { fetcherName: timeline, fetcher })\n },\n stopFetchingTimeline (store, timeline) {\n const fetcher = store.state.fetchers[timeline]\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n },\n\n // Notifications\n startFetchingNotifications (store) {\n if (store.state.fetchers.notifications) return\n const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n },\n stopFetchingNotifications (store) {\n const fetcher = store.state.fetchers.notifications\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n },\n\n // Follow requests\n startFetchingFollowRequests (store) {\n if (store.state.fetchers['followRequests']) return\n const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n },\n stopFetchingFollowRequests (store) {\n const fetcher = store.state.fetchers.followRequests\n if (!fetcher) return\n store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n },\n removeFollowRequest (store, request) {\n let requests = store.state.followRequests.filter((it) => it !== request)\n store.commit('setFollowRequests', requests)\n },\n\n // Pleroma websocket\n setWsToken (store, token) {\n store.commit('setWsToken', token)\n },\n initializeSocket ({ dispatch, commit, state, rootState }) {\n // Set up websocket connection\n const token = state.wsToken\n if (rootState.instance.chatAvailable && typeof token !== 'undefined' && state.socket === null) {\n const socket = new Socket('/socket', { params: { token } })\n socket.connect()\n\n commit('setSocket', socket)\n dispatch('initializeChat', socket)\n }\n },\n disconnectFromSocket ({ commit, state }) {\n state.socket && state.socket.disconnect()\n commit('setSocket', null)\n }\n }\n}\n\nexport default api\n","const chat = {\n state: {\n messages: [],\n channel: { state: '' }\n },\n mutations: {\n setChannel (state, channel) {\n state.channel = channel\n },\n addMessage (state, message) {\n state.messages.push(message)\n state.messages = state.messages.slice(-19, 20)\n },\n setMessages (state, messages) {\n state.messages = messages.slice(-19, 20)\n }\n },\n actions: {\n initializeChat (store, socket) {\n const channel = socket.channel('chat:public')\n channel.on('new_msg', (msg) => {\n store.commit('addMessage', msg)\n })\n channel.on('messages', ({ messages }) => {\n store.commit('setMessages', messages)\n })\n channel.join()\n store.commit('setChannel', channel)\n }\n }\n}\n\nexport default chat\n","import { delete as del } from 'vue'\n\nconst oauth = {\n state: {\n clientId: false,\n clientSecret: false,\n /* App token is authentication for app without any user, used mostly for\n * MastoAPI's registration of new users, stored so that we can fall back to\n * it on logout\n */\n appToken: false,\n /* User token is authentication for app with user, this is for every calls\n * that need authorized user to be successful (i.e. posting, liking etc)\n */\n userToken: false\n },\n mutations: {\n setClientData (state, { clientId, clientSecret }) {\n state.clientId = clientId\n state.clientSecret = clientSecret\n },\n setAppToken (state, token) {\n state.appToken = token\n },\n setToken (state, token) {\n state.userToken = token\n },\n clearToken (state) {\n state.userToken = false\n // state.token is userToken with older name, coming from persistent state\n // let's clear it as well, since it is being used as a fallback of state.userToken\n del(state, 'token')\n }\n },\n getters: {\n getToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token || state.appToken\n },\n getUserToken: state => () => {\n // state.token is userToken with older name, coming from persistent state\n // added here for smoother transition, otherwise user will be logged out\n return state.userToken || state.token\n }\n }\n}\n\nexport default oauth\n","const PASSWORD_STRATEGY = 'password'\nconst TOKEN_STRATEGY = 'token'\n\n// MFA strategies\nconst TOTP_STRATEGY = 'totp'\nconst RECOVERY_STRATEGY = 'recovery'\n\n// initial state\nconst state = {\n settings: {},\n strategy: PASSWORD_STRATEGY,\n initStrategy: PASSWORD_STRATEGY // default strategy from config\n}\n\nconst resetState = (state) => {\n state.strategy = state.initStrategy\n state.settings = {}\n}\n\n// getters\nconst getters = {\n settings: (state, getters) => {\n return state.settings\n },\n requiredPassword: (state, getters, rootState) => {\n return state.strategy === PASSWORD_STRATEGY\n },\n requiredToken: (state, getters, rootState) => {\n return state.strategy === TOKEN_STRATEGY\n },\n requiredTOTP: (state, getters, rootState) => {\n return state.strategy === TOTP_STRATEGY\n },\n requiredRecovery: (state, getters, rootState) => {\n return state.strategy === RECOVERY_STRATEGY\n }\n}\n\n// mutations\nconst mutations = {\n setInitialStrategy (state, strategy) {\n if (strategy) {\n state.initStrategy = strategy\n state.strategy = strategy\n }\n },\n requirePassword (state) {\n state.strategy = PASSWORD_STRATEGY\n },\n requireToken (state) {\n state.strategy = TOKEN_STRATEGY\n },\n requireMFA (state, { settings }) {\n state.settings = settings\n state.strategy = TOTP_STRATEGY // default strategy of MFA\n },\n requireRecovery (state) {\n state.strategy = RECOVERY_STRATEGY\n },\n requireTOTP (state) {\n state.strategy = TOTP_STRATEGY\n },\n abortMFA (state) {\n resetState(state)\n }\n}\n\n// actions\nconst actions = {\n // eslint-disable-next-line camelcase\n async login ({ state, dispatch, commit }, { access_token }) {\n commit('setToken', access_token, { root: true })\n await dispatch('loginUser', access_token, { root: true })\n resetState(state)\n }\n}\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n}\n","import fileTypeService from '../services/file_type/file_type.service.js'\n\nconst mediaViewer = {\n state: {\n media: [],\n currentIndex: 0,\n activated: false\n },\n mutations: {\n setMedia (state, media) {\n state.media = media\n },\n setCurrent (state, index) {\n state.activated = true\n state.currentIndex = index\n },\n close (state) {\n state.activated = false\n }\n },\n actions: {\n setMedia ({ commit }, attachments) {\n const media = attachments.filter(attachment => {\n const type = fileTypeService.fileType(attachment.mimetype)\n return type === 'image' || type === 'video' || type === 'audio'\n })\n commit('setMedia', media)\n },\n setCurrent ({ commit, state }, current) {\n const index = state.media.indexOf(current)\n commit('setCurrent', index || 0)\n },\n closeMediaViewer ({ commit }) {\n commit('close')\n }\n }\n}\n\nexport default mediaViewer\n","const oauthTokens = {\n state: {\n tokens: []\n },\n actions: {\n fetchTokens ({ rootState, commit }) {\n rootState.api.backendInteractor.fetchOAuthTokens().then((tokens) => {\n commit('swapTokens', tokens)\n })\n },\n revokeToken ({ rootState, commit, state }, id) {\n rootState.api.backendInteractor.revokeOAuthToken({ id }).then((response) => {\n if (response.status === 201) {\n commit('swapTokens', state.tokens.filter(token => token.id !== id))\n }\n })\n }\n },\n mutations: {\n swapTokens (state, tokens) {\n state.tokens = tokens\n }\n }\n}\n\nexport default oauthTokens\n","import filter from 'lodash/filter'\n\nconst reports = {\n state: {\n userId: null,\n statuses: [],\n modalActivated: false\n },\n mutations: {\n openUserReportingModal (state, { userId, statuses }) {\n state.userId = userId\n state.statuses = statuses\n state.modalActivated = true\n },\n closeUserReportingModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openUserReportingModal ({ rootState, commit }, userId) {\n const statuses = filter(rootState.statuses.allStatuses, status => status.user.id === userId)\n commit('openUserReportingModal', { userId, statuses })\n },\n closeUserReportingModal ({ commit }) {\n commit('closeUserReportingModal')\n }\n }\n}\n\nexport default reports\n","import { merge } from 'lodash'\nimport { set } from 'vue'\n\nconst polls = {\n state: {\n // Contains key = id, value = number of trackers for this poll\n trackedPolls: {},\n pollsObject: {}\n },\n mutations: {\n mergeOrAddPoll (state, poll) {\n const existingPoll = state.pollsObject[poll.id]\n // Make expired-state change trigger re-renders properly\n poll.expired = Date.now() > Date.parse(poll.expires_at)\n if (existingPoll) {\n set(state.pollsObject, poll.id, merge(existingPoll, poll))\n } else {\n set(state.pollsObject, poll.id, poll)\n }\n },\n trackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue + 1)\n } else {\n set(state.trackedPolls, pollId, 1)\n }\n },\n untrackPoll (state, pollId) {\n const currentValue = state.trackedPolls[pollId]\n if (currentValue) {\n set(state.trackedPolls, pollId, currentValue - 1)\n } else {\n set(state.trackedPolls, pollId, 0)\n }\n }\n },\n actions: {\n mergeOrAddPoll ({ commit }, poll) {\n commit('mergeOrAddPoll', poll)\n },\n updateTrackedPoll ({ rootState, dispatch, commit }, pollId) {\n rootState.api.backendInteractor.fetchPoll({ pollId }).then(poll => {\n setTimeout(() => {\n if (rootState.polls.trackedPolls[pollId]) {\n dispatch('updateTrackedPoll', pollId)\n }\n }, 30 * 1000)\n commit('mergeOrAddPoll', poll)\n })\n },\n trackPoll ({ rootState, commit, dispatch }, pollId) {\n if (!rootState.polls.trackedPolls[pollId]) {\n setTimeout(() => dispatch('updateTrackedPoll', pollId), 30 * 1000)\n }\n commit('trackPoll', pollId)\n },\n untrackPoll ({ commit }, pollId) {\n commit('untrackPoll', pollId)\n },\n votePoll ({ rootState, commit }, { id, pollId, choices }) {\n return rootState.api.backendInteractor.vote({ pollId, choices }).then(poll => {\n commit('mergeOrAddPoll', poll)\n return poll\n })\n }\n }\n}\n\nexport default polls\n","const postStatus = {\n state: {\n params: null,\n modalActivated: false\n },\n mutations: {\n openPostStatusModal (state, params) {\n state.params = params\n state.modalActivated = true\n },\n closePostStatusModal (state) {\n state.modalActivated = false\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n }\n }\n}\n\nexport default postStatus\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0 ? state : paths.reduce((substate, path) => {\n set(substate, path, get(state, path))\n return substate\n }, {})\n)\n\nconst saveImmedeatelyActions = [\n 'markNotificationsAsSeen',\n 'clearCurrentUser',\n 'setCurrentUser',\n 'setHighlight',\n 'setOption',\n 'setClientData',\n 'setToken',\n 'clearToken'\n]\n\nconst defaultStorage = (() => {\n return localforage\n})()\n\nexport default function createPersistedState ({\n key = 'vuex-lz',\n paths = [],\n getState = (key, storage) => {\n let value = storage.getItem(key)\n return value\n },\n setState = (key, state, storage) => {\n if (!loaded) {\n console.log('waiting for old state to be loaded...')\n return Promise.resolve()\n } else {\n return storage.setItem(key, state)\n }\n },\n reducer = defaultReducer,\n storage = defaultStorage,\n subscriber = store => handler => store.subscribe(handler)\n} = {}) {\n return getState(key, storage).then((savedState) => {\n return store => {\n try {\n if (savedState !== null && typeof savedState === 'object') {\n // build user cache\n const usersState = savedState.users || {}\n usersState.usersObject = {}\n const users = usersState.users || []\n each(users, (user) => { usersState.usersObject[user.id] = user })\n savedState.users = usersState\n\n store.replaceState(\n merge({}, store.state, savedState)\n )\n }\n loaded = true\n } catch (e) {\n console.log(\"Couldn't load state\")\n console.error(e)\n loaded = true\n }\n subscriber(store)((mutation, state) => {\n try {\n if (saveImmedeatelyActions.includes(mutation.type)) {\n setState(key, reducer(state, paths), storage)\n .then(success => {\n if (typeof success !== 'undefined') {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { success })\n }\n }\n }, error => {\n if (mutation.type === 'setOption' || mutation.type === 'setCurrentUser') {\n store.dispatch('settingsSaved', { error })\n }\n })\n }\n } catch (e) {\n console.log(\"Couldn't persist state:\")\n console.log(e)\n }\n })\n }\n })\n}\n","export default (store) => {\n store.subscribe((mutation, state) => {\n const vapidPublicKey = state.instance.vapidPublicKey\n const webPushNotification = state.config.webPushNotifications\n const permission = state.interface.notificationPermission === 'granted'\n const user = state.users.currentUser\n\n const isUserMutation = mutation.type === 'setCurrentUser'\n const isVapidMutation = mutation.type === 'setInstanceOption' && mutation.payload.name === 'vapidPublicKey'\n const isPermMutation = mutation.type === 'setNotificationPermission' && mutation.payload === 'granted'\n const isUserConfigMutation = mutation.type === 'setOption' && mutation.payload.name === 'webPushNotifications'\n const isVisibilityMutation = mutation.type === 'setOption' && mutation.payload.name === 'notificationVisibility'\n\n if (isUserMutation || isVapidMutation || isPermMutation || isUserConfigMutation || isVisibilityMutation) {\n if (user && vapidPublicKey && permission && webPushNotification) {\n return store.dispatch('registerPushNotifications')\n } else if (isUserConfigMutation && !webPushNotification) {\n return store.dispatch('unregisterPushNotifications')\n }\n }\n })\n}\n","import * as bodyScrollLock from 'body-scroll-lock'\n\nlet previousNavPaddingRight\nlet previousAppBgWrapperRight\nconst lockerEls = new Set([])\n\nconst disableBodyScroll = (el) => {\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth\n bodyScrollLock.disableBodyScroll(el, {\n reserveScrollBarGap: true\n })\n lockerEls.add(el)\n setTimeout(() => {\n if (lockerEls.size <= 1) {\n // If previousNavPaddingRight is already set, don't set it again.\n if (previousNavPaddingRight === undefined) {\n const navEl = document.getElementById('nav')\n previousNavPaddingRight = window.getComputedStyle(navEl).getPropertyValue('padding-right')\n navEl.style.paddingRight = previousNavPaddingRight ? `calc(${previousNavPaddingRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n // If previousAppBgWrapeprRight is already set, don't set it again.\n if (previousAppBgWrapperRight === undefined) {\n const appBgWrapperEl = document.getElementById('app_bg_wrapper')\n previousAppBgWrapperRight = window.getComputedStyle(appBgWrapperEl).getPropertyValue('right')\n appBgWrapperEl.style.right = previousAppBgWrapperRight ? `calc(${previousAppBgWrapperRight} + ${scrollBarGap}px)` : `${scrollBarGap}px`\n }\n document.body.classList.add('scroll-locked')\n }\n })\n}\n\nconst enableBodyScroll = (el) => {\n lockerEls.delete(el)\n setTimeout(() => {\n if (lockerEls.size === 0) {\n if (previousNavPaddingRight !== undefined) {\n document.getElementById('nav').style.paddingRight = previousNavPaddingRight\n // Restore previousNavPaddingRight to undefined so disableBodyScroll knows it can be set again.\n previousNavPaddingRight = undefined\n }\n if (previousAppBgWrapperRight !== undefined) {\n document.getElementById('app_bg_wrapper').style.right = previousAppBgWrapperRight\n // Restore previousAppBgWrapperRight to undefined so disableBodyScroll knows it can be set again.\n previousAppBgWrapperRight = undefined\n }\n document.body.classList.remove('scroll-locked')\n }\n })\n bodyScrollLock.enableBodyScroll(el)\n}\n\nconst directive = {\n inserted: (el, binding) => {\n if (binding.value) {\n disableBodyScroll(el)\n }\n },\n componentUpdated: (el, binding) => {\n if (binding.oldValue === binding.value) {\n return\n }\n\n if (binding.value) {\n disableBodyScroll(el)\n } else {\n enableBodyScroll(el)\n }\n },\n unbind: (el) => {\n enableBodyScroll(el)\n }\n}\n\nexport default (Vue) => {\n Vue.directive('body-scroll-lock', directive)\n}\n","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\n\nconst sortById = (a, b) => {\n const idA = a.type === 'retweet' ? a.retweeted_status.id : a.id\n const idB = b.type === 'retweet' ? b.retweeted_status.id : b.id\n const seqA = Number(idA)\n const seqB = Number(idB)\n const isSeqA = !Number.isNaN(seqA)\n const isSeqB = !Number.isNaN(seqB)\n if (isSeqA && isSeqB) {\n return seqA < seqB ? -1 : 1\n } else if (isSeqA && !isSeqB) {\n return -1\n } else if (!isSeqA && isSeqB) {\n return 1\n } else {\n return idA < idB ? -1 : 1\n }\n}\n\nconst sortAndFilterConversation = (conversation, statusoid) => {\n if (statusoid.type === 'retweet') {\n conversation = filter(\n conversation,\n (status) => (status.type === 'retweet' || status.id !== statusoid.retweeted_status.id)\n )\n } else {\n conversation = filter(conversation, (status) => status.type !== 'retweet')\n }\n return conversation.filter(_ => _).sort(sortById)\n}\n\nconst conversation = {\n data () {\n return {\n highlight: null,\n expanded: false\n }\n },\n props: [\n 'statusId',\n 'collapsable',\n 'isPage',\n 'pinnedStatusIdsObject',\n 'inProfile',\n 'profileUserId'\n ],\n created () {\n if (this.isPage) {\n this.fetchConversation()\n }\n },\n computed: {\n status () {\n return this.$store.state.statuses.allStatusesObject[this.statusId]\n },\n originalStatusId () {\n if (this.status.retweeted_status) {\n return this.status.retweeted_status.id\n } else {\n return this.statusId\n }\n },\n conversationId () {\n return this.getConversationId(this.statusId)\n },\n conversation () {\n if (!this.status) {\n return []\n }\n\n if (!this.isExpanded) {\n return [this.status]\n }\n\n const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n if (statusIndex !== -1) {\n conversation[statusIndex] = this.status\n }\n\n return sortAndFilterConversation(conversation, this.status)\n },\n replies () {\n let i = 1\n // eslint-disable-next-line camelcase\n return reduce(this.conversation, (result, { id, in_reply_to_status_id }) => {\n /* eslint-disable camelcase */\n const irid = in_reply_to_status_id\n /* eslint-enable camelcase */\n if (irid) {\n result[irid] = result[irid] || []\n result[irid].push({\n name: `#${i}`,\n id: id\n })\n }\n i++\n return result\n }, {})\n },\n isExpanded () {\n return this.expanded || this.isPage\n }\n },\n components: {\n Status\n },\n watch: {\n statusId (newVal, oldVal) {\n const newConversationId = this.getConversationId(newVal)\n const oldConversationId = this.getConversationId(oldVal)\n if (newConversationId && oldConversationId && newConversationId === oldConversationId) {\n this.setHighlight(this.originalStatusId)\n } else {\n this.fetchConversation()\n }\n },\n expanded (value) {\n if (value) {\n this.fetchConversation()\n }\n }\n },\n methods: {\n fetchConversation () {\n if (this.status) {\n this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n .then(({ ancestors, descendants }) => {\n this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n this.$store.dispatch('addNewStatuses', { statuses: descendants })\n this.setHighlight(this.originalStatusId)\n })\n } else {\n this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n .then((status) => {\n this.$store.dispatch('addNewStatuses', { statuses: [status] })\n this.fetchConversation()\n })\n }\n },\n getReplies (id) {\n return this.replies[id] || []\n },\n focused (id) {\n return (this.isExpanded) && id === this.statusId\n },\n setHighlight (id) {\n if (!id) return\n this.highlight = id\n this.$store.dispatch('fetchFavsAndRepeats', id)\n this.$store.dispatch('fetchEmojiReactionsBy', id)\n },\n getHighlight () {\n return this.isExpanded ? this.highlight : null\n },\n toggleExpanded () {\n this.expanded = !this.expanded\n },\n getConversationId (statusId) {\n const status = this.$store.state.statuses.allStatusesObject[statusId]\n return get(status, 'retweeted_status.statusnet_conversation_id', get(status, 'statusnet_conversation_id'))\n }\n }\n}\n\nexport default conversation\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./conversation.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./conversation.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ea37054e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"timeline panel-default\",class:[_vm.isExpanded ? 'panel' : 'panel-disabled']},[(_vm.isExpanded)?_c('div',{staticClass:\"panel-heading conversation-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(_vm.$t('timeline.conversation'))+\" \")]),_vm._v(\" \"),(_vm.collapsable)?_c('span',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleExpanded($event)}}},[_vm._v(_vm._s(_vm.$t('timeline.collapse')))])]):_vm._e()]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.conversation),function(status){return _c('status',{key:status.id,staticClass:\"status-fadein panel-body\",attrs:{\"inline-expanded\":_vm.collapsable && _vm.isExpanded,\"statusoid\":status,\"expandable\":!_vm.isExpanded,\"show-pinned\":_vm.pinnedStatusIdsObject && _vm.pinnedStatusIdsObject[status.id],\"focused\":_vm.focused(status.id),\"in-conversation\":_vm.isExpanded,\"highlight\":_vm.getHighlight(),\"replies\":_vm.getReplies(status.id),\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.profileUserId},on:{\"goto\":_vm.setHighlight,\"toggleExpanded\":_vm.toggleExpanded}})})],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Status from '../status/status.vue'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport { throttle, keyBy } from 'lodash'\n\nexport const getExcludedStatusIdsByPinning = (statuses, pinnedStatusIds) => {\n const ids = []\n if (pinnedStatusIds && pinnedStatusIds.length > 0) {\n for (let status of statuses) {\n if (!pinnedStatusIds.includes(status.id)) {\n break\n }\n ids.push(status.id)\n }\n }\n return ids\n}\n\nconst Timeline = {\n props: [\n 'timeline',\n 'timelineName',\n 'title',\n 'userId',\n 'tag',\n 'embedded',\n 'count',\n 'pinnedStatusIds',\n 'inProfile'\n ],\n data () {\n return {\n paused: false,\n unfocused: false,\n bottomedOut: false\n }\n },\n computed: {\n timelineError () {\n return this.$store.state.statuses.error\n },\n errorData () {\n return this.$store.state.statuses.errorData\n },\n newStatusCount () {\n return this.timeline.newStatusCount\n },\n showLoadButton () {\n if (this.timelineError || this.errorData) return false\n return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n },\n loadButtonString () {\n if (this.timeline.flushMarker !== 0) {\n return this.$t('timeline.reload')\n } else {\n return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n }\n },\n classes () {\n return {\n root: ['timeline'].concat(!this.embedded ? ['panel', 'panel-default'] : []),\n header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading'] : []),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : []),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : [])\n }\n },\n // id map of statuses which need to be hidden in the main list due to pinning logic\n excludedStatusIdsObject () {\n const ids = getExcludedStatusIdsByPinning(this.timeline.visibleStatuses, this.pinnedStatusIds)\n // Convert id array to object\n return keyBy(ids)\n },\n pinnedStatusIdsObject () {\n return keyBy(this.pinnedStatusIds)\n }\n },\n components: {\n Status,\n Conversation\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n const showImmediately = this.timeline.visibleStatuses.length === 0\n\n window.addEventListener('scroll', this.scrollLoad)\n\n if (store.state.api.fetchers[this.timelineName]) { return false }\n\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n showImmediately,\n userId: this.userId,\n tag: this.tag\n })\n },\n mounted () {\n if (typeof document.hidden !== 'undefined') {\n document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.unfocused = document.hidden\n }\n window.addEventListener('keydown', this.handleShortKey)\n },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\n window.removeEventListener('keydown', this.handleShortKey)\n if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n },\n methods: {\n handleShortKey (e) {\n // Ignore when input fields are focused\n if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n if (e.key === '.') this.showNewStatuses()\n },\n showNewStatuses () {\n if (this.timeline.flushMarker !== 0) {\n this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n this.fetchOlderStatuses()\n } else {\n this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n this.paused = false\n }\n },\n fetchOlderStatuses: throttle(function () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setLoading', { timeline: this.timelineName, value: true })\n timelineFetcher.fetchAndUpdate({\n store,\n credentials,\n timeline: this.timelineName,\n older: true,\n showImmediately: true,\n userId: this.userId,\n tag: this.tag\n }).then(({ statuses }) => {\n store.commit('setLoading', { timeline: this.timelineName, value: false })\n if (statuses && statuses.length === 0) {\n this.bottomedOut = true\n }\n })\n }, 1000, this),\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.timeline.loading === false &&\n this.$store.getters.mergedConfig.autoLoad &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n this.fetchOlderStatuses()\n }\n },\n handleVisibilityChange () {\n this.unfocused = document.hidden\n }\n },\n watch: {\n newStatusCount (count) {\n if (!this.$store.getters.mergedConfig.streaming) {\n return\n }\n if (count > 0) {\n // only 'stream' them when you're scrolled to the top\n const doc = document.documentElement\n const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n if (top < 15 &&\n !this.paused &&\n !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n ) {\n this.showNewStatuses()\n } else {\n this.paused = true\n }\n }\n }\n }\n}\n\nexport default Timeline\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./timeline.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-03ce71ea\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes.root},[_c('div',{class:_vm.classes.header},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.title)+\"\\n \")]),_vm._v(\" \"),(_vm.timelineError)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.error_fetching'))+\"\\n \")]):(_vm.errorData)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.errorData.statusText)+\"\\n \")]):(_vm.showLoadButton)?_c('button',{staticClass:\"loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.loadButtonString)+\"\\n \")]):_c('div',{staticClass:\"loadmore-text faint\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.up_to_date'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{class:_vm.classes.body},[_c('div',{staticClass:\"timeline\"},[_vm._l((_vm.pinnedStatusIds),function(statusId){return [(_vm.timeline.statusesObject[statusId])?_c('conversation',{key:statusId + '-pinned',staticClass:\"status-fadein\",attrs:{\"status-id\":statusId,\"collapsable\":true,\"pinned-status-ids-object\":_vm.pinnedStatusIdsObject,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]}),_vm._v(\" \"),_vm._l((_vm.timeline.visibleStatuses),function(status){return [(!_vm.excludedStatusIdsObject[status.id])?_c('conversation',{key:status.id,staticClass:\"status-fadein\",attrs:{\"status-id\":status.id,\"collapsable\":true,\"in-profile\":_vm.inProfile,\"profile-user-id\":_vm.userId}}):_vm._e()]})],2)]),_vm._v(\" \"),_c('div',{class:_vm.classes.footer},[(_vm.count===0)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_statuses'))+\"\\n \")]):(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.no_more_statuses'))+\"\\n \")]):(!_vm.timeline.loading && !_vm.errorData)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderStatuses()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(_vm._s(_vm.$t('timeline.load_older')))])]):(_vm.errorData)?_c('a',{attrs:{\"href\":\"#\"}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(_vm._s(_vm.errorData.error))])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.public }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'public' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'public')\n }\n\n}\n\nexport default PublicTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5f2a502e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.public_tl'),\"timeline\":_vm.timeline,\"timeline-name\":'public'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst PublicAndExternalTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.publicAndExternal }\n },\n created () {\n this.$store.dispatch('startFetchingTimeline', { timeline: 'publicAndExternal' })\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n }\n}\n\nexport default PublicAndExternalTimeline\n","/* script */\nexport * from \"!!babel-loader!./public_and_external_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./public_and_external_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f6923484\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./public_and_external_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.twkn'),\"timeline\":_vm.timeline,\"timeline-name\":'publicAndExternal'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\nconst FriendsTimeline = {\n components: {\n Timeline\n },\n computed: {\n timeline () { return this.$store.state.statuses.timelines.friends }\n }\n}\n\nexport default FriendsTimeline\n","/* script */\nexport * from \"!!babel-loader!./friends_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./friends_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-22490669\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./friends_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.timeline'),\"timeline\":_vm.timeline,\"timeline-name\":'friends'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst TagTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n },\n components: {\n Timeline\n },\n computed: {\n tag () { return this.$route.params.tag },\n timeline () { return this.$store.state.statuses.timelines.tag }\n },\n watch: {\n tag () {\n this.$store.commit('clearTimeline', { timeline: 'tag' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'tag', tag: this.tag })\n }\n },\n destroyed () {\n this.$store.dispatch('stopFetchingTimeline', 'tag')\n }\n}\n\nexport default TagTimeline\n","/* script */\nexport * from \"!!babel-loader!./tag_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./tag_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-047310d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./tag_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.tag,\"timeline\":_vm.timeline,\"timeline-name\":'tag',\"tag\":_vm.tag}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.bookmarks\n }\n },\n components: {\n Timeline\n },\n destroyed () {\n this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n }\n}\n\nexport default Bookmarks\n","/* script */\nexport * from \"!!babel-loader!./bookmark_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./bookmark_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b9c8ba0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./bookmark_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.bookmarks'),\"timeline\":_vm.timeline,\"timeline-name\":'bookmarks'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Conversation from '../conversation/conversation.vue'\n\nconst conversationPage = {\n components: {\n Conversation\n },\n computed: {\n statusId () {\n return this.$route.params.id\n }\n }\n}\n\nexport default conversationPage\n","/* script */\nexport * from \"!!babel-loader!./conversation-page.js\"\nimport __vue_script__ from \"!!babel-loader!./conversation-page.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-46654d24\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./conversation-page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('conversation',{attrs:{\"collapsable\":false,\"is-page\":\"true\",\"status-id\":_vm.statusId}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import StatusContent from '../status_content/status_content.vue'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst Notification = {\n data () {\n return {\n userExpanded: false,\n betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n unmuted: false\n }\n },\n props: [ 'notification' ],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status\n },\n methods: {\n toggleUserExpanded () {\n this.userExpanded = !this.userExpanded\n },\n generateUserProfileLink (user) {\n return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n },\n getUser (notification) {\n return this.$store.state.users.usersObject[notification.from_profile.id]\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n this.$store.dispatch('updateNotification', {\n id: this.notification.id,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n },\n computed: {\n userClass () {\n return highlightClass(this.notification.from_profile)\n },\n userStyle () {\n const highlight = this.$store.getters.mergedConfig.highlight\n const user = this.notification.from_profile\n return highlightStyle(highlight[user.screen_name])\n },\n user () {\n return this.$store.getters.findUser(this.notification.from_profile.id)\n },\n userProfileLink () {\n return this.generateUserProfileLink(this.user)\n },\n targetUser () {\n return this.$store.getters.findUser(this.notification.target.id)\n },\n targetUserProfileLink () {\n return this.generateUserProfileLink(this.targetUser)\n },\n needMute () {\n return this.$store.getters.relationship(this.user.id).muting\n },\n isStatusNotification () {\n return isStatusNotification(this.notification.type)\n }\n }\n}\n\nexport default Notification\n","/* script */\nexport * from \"!!babel-loader!./notification.js\"\nimport __vue_script__ from \"!!babel-loader!./notification.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-385052d3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notification.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.notification.type === 'mention')?_c('status',{attrs:{\"compact\":true,\"statusoid\":_vm.notification.status}}):_c('div',[(_vm.needMute && !_vm.unmuted)?_c('div',{staticClass:\"container muted\"},[_c('small',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.notification.from_profile.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('a',{staticClass:\"unmute\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})])]):_c('div',{staticClass:\"non-mention\",class:[_vm.userClass, { highlighted: _vm.userStyle }],style:([ _vm.userStyle ])},[_c('a',{staticClass:\"avatar-container\",attrs:{\"href\":_vm.notification.from_profile.statusnet_profile_url},on:{\"!click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleUserExpanded($event)}}},[_c('UserAvatar',{attrs:{\"compact\":true,\"better-shadow\":_vm.betterShadow,\"user\":_vm.notification.from_profile}})],1),_vm._v(\" \"),_c('div',{staticClass:\"notification-right\"},[(_vm.userExpanded)?_c('UserCard',{attrs:{\"user-id\":_vm.getUser(_vm.notification).id,\"rounded\":true,\"bordered\":true}}):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"notification-details\"},[_c('div',{staticClass:\"name-and-action\"},[(!!_vm.notification.from_profile.name_html)?_c('bdi',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name},domProps:{\"innerHTML\":_vm._s(_vm.notification.from_profile.name_html)}}):_c('span',{staticClass:\"username\",attrs:{\"title\":'@'+_vm.notification.from_profile.screen_name}},[_vm._v(_vm._s(_vm.notification.from_profile.name))]),_vm._v(\" \"),(_vm.notification.type === 'like')?_c('span',[_c('i',{staticClass:\"fa icon-star lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.favorited_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'repeat')?_c('span',[_c('i',{staticClass:\"fa icon-retweet lit\",attrs:{\"title\":_vm.$t('tool_tip.repeat')}}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.repeated_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow')?_c('span',[_c('i',{staticClass:\"fa icon-user-plus lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.followed_you')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('span',[_c('i',{staticClass:\"fa icon-user lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.follow_request')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'move')?_c('span',[_c('i',{staticClass:\"fa icon-arrow-curved lit\"}),_vm._v(\" \"),_c('small',[_vm._v(_vm._s(_vm.$t('notifications.migrated_to')))])]):_vm._e(),_vm._v(\" \"),(_vm.notification.type === 'pleroma:emoji_reaction')?_c('span',[_c('small',[_c('i18n',{attrs:{\"path\":\"notifications.reacted_with\"}},[_c('span',{staticClass:\"emoji-reaction-emoji\"},[_vm._v(_vm._s(_vm.notification.emoji))])])],1)]):_vm._e()]),_vm._v(\" \"),(_vm.isStatusNotification)?_c('div',{staticClass:\"timeago\"},[(_vm.notification.status)?_c('router-link',{staticClass:\"faint-link\",attrs:{\"to\":{ name: 'conversation', params: { id: _vm.notification.status.id } }}},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1):_vm._e()],1):_c('div',{staticClass:\"timeago\"},[_c('span',{staticClass:\"faint\"},[_c('Timeago',{attrs:{\"time\":_vm.notification.created_at,\"auto-update\":240}})],1)]),_vm._v(\" \"),(_vm.needMute)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleMute($event)}}},[_c('i',{staticClass:\"button-icon icon-eye-off\"})]):_vm._e()]),_vm._v(\" \"),(_vm.notification.type === 'follow' || _vm.notification.type === 'follow_request')?_c('div',{staticClass:\"follow-text\"},[_c('router-link',{staticClass:\"follow-name\",attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.from_profile.screen_name)+\"\\n \")]),_vm._v(\" \"),(_vm.notification.type === 'follow_request')?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('i',{staticClass:\"icon-ok button-icon follow-request-accept\",attrs:{\"title\":_vm.$t('tool_tip.accept_follow_request')},on:{\"click\":function($event){return _vm.approveUser()}}}),_vm._v(\" \"),_c('i',{staticClass:\"icon-cancel button-icon follow-request-reject\",attrs:{\"title\":_vm.$t('tool_tip.reject_follow_request')},on:{\"click\":function($event){return _vm.denyUser()}}})]):_vm._e()],1):(_vm.notification.type === 'move')?_c('div',{staticClass:\"move-text\"},[_c('router-link',{attrs:{\"to\":_vm.targetUserProfileLink}},[_vm._v(\"\\n @\"+_vm._s(_vm.notification.target.screen_name)+\"\\n \")])],1):[_c('status-content',{staticClass:\"faint\",attrs:{\"status\":_vm.notification.action}})]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notification from '../notification/notification.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n notificationsFromStore,\n filteredNotificationsFromStore,\n unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n props: {\n // Disables display of panel header\n noHeading: Boolean,\n // Disables panel styles, unread mark, potentially other notification-related actions\n // meant for \"Interactions\" timeline\n minimalMode: Boolean,\n // Custom filter mode, an array of strings, possible values 'mention', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array\n },\n data () {\n return {\n bottomedOut: false,\n // How many seen notifications to display in the list. The more there are,\n // the heavier the page becomes. This count is increased when loading\n // older notifications, and cut back to default whenever hitting \"Read!\".\n seenToDisplayCount: DEFAULT_SEEN_TO_DISPLAY_COUNT\n }\n },\n created () {\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n notificationsFetcher.fetchAndUpdate({ store, credentials })\n },\n computed: {\n mainClass () {\n return this.minimalMode ? '' : 'panel panel-default'\n },\n notifications () {\n return notificationsFromStore(this.$store)\n },\n error () {\n return this.$store.state.statuses.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n loading () {\n return this.$store.state.statuses.notifications.loading\n },\n notificationsToDisplay () {\n return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n }\n },\n components: {\n Notification\n },\n watch: {\n unseenCount (count) {\n if (count > 0) {\n this.$store.dispatch('setPageTitle', `(${count})`)\n } else {\n this.$store.dispatch('setPageTitle', '')\n }\n }\n },\n methods: {\n markAsSeen () {\n this.$store.dispatch('markNotificationsAsSeen')\n this.seenToDisplayCount = DEFAULT_SEEN_TO_DISPLAY_COUNT\n },\n fetchOlderNotifications () {\n if (this.loading) {\n return\n }\n\n const seenCount = this.filteredNotifications.length - this.unseenCount\n if (this.seenToDisplayCount < seenCount) {\n this.seenToDisplayCount = Math.min(this.seenToDisplayCount + 20, seenCount)\n return\n } else if (this.seenToDisplayCount > seenCount) {\n this.seenToDisplayCount = seenCount\n }\n\n const store = this.$store\n const credentials = store.state.users.currentUser.credentials\n store.commit('setNotificationsLoading', { value: true })\n notificationsFetcher.fetchAndUpdate({\n store,\n credentials,\n older: true\n }).then(notifs => {\n store.commit('setNotificationsLoading', { value: false })\n if (notifs.length === 0) {\n this.bottomedOut = true\n }\n this.seenToDisplayCount += notifs.length\n })\n }\n }\n}\n\nexport default Notifications\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./notifications.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./notifications.js\"\nimport __vue_script__ from \"!!babel-loader!./notifications.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4be57e6f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"notifications\",class:{ minimal: _vm.minimalMode }},[_c('div',{class:_vm.mainClass},[(!_vm.noHeading)?_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.notifications'))+\"\\n \"),(_vm.unseenCount)?_c('span',{staticClass:\"badge badge-notification unseen-count\"},[_vm._v(_vm._s(_vm.unseenCount))]):_vm._e()]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"loadmore-error alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.error_fetching'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.unseenCount)?_c('button',{staticClass:\"read-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.markAsSeen($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.read'))+\"\\n \")]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.notificationsToDisplay),function(notification){return _c('div',{key:notification.id,staticClass:\"notification\",class:{\"unseen\": !_vm.minimalMode && !notification.seen}},[_c('div',{staticClass:\"notification-overlay\"}),_vm._v(\" \"),_c('notification',{attrs:{\"notification\":notification}})],1)}),0),_vm._v(\" \"),_c('div',{staticClass:\"panel-footer\"},[(_vm.bottomedOut)?_c('div',{staticClass:\"new-status-notification text-center panel-footer faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('notifications.no_more_notifications'))+\"\\n \")]):(!_vm.loading)?_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.fetchOlderNotifications()}}},[_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_vm._v(\"\\n \"+_vm._s(_vm.minimalMode ? _vm.$t('interactions.load_older') : _vm.$t('notifications.load_older'))+\"\\n \")])]):_c('div',{staticClass:\"new-status-notification text-center panel-footer\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Notifications from '../notifications/notifications.vue'\n\nconst tabModeDict = {\n mentions: ['mention'],\n 'likes+repeats': ['repeat', 'like'],\n follows: ['follow'],\n moves: ['move']\n}\n\nconst Interactions = {\n data () {\n return {\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n filterMode: tabModeDict['mentions']\n }\n },\n methods: {\n onModeSwitch (key) {\n this.filterMode = tabModeDict[key]\n }\n },\n components: {\n Notifications\n }\n}\n\nexport default Interactions\n","/* script */\nexport * from \"!!babel-loader!./interactions.js\"\nimport __vue_script__ from \"!!babel-loader!./interactions.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-109005c8\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interactions.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])]),_vm._v(\" \"),_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onModeSwitch}},[_c('span',{key:\"mentions\",attrs:{\"label\":_vm.$t('nav.mentions')}}),_vm._v(\" \"),_c('span',{key:\"likes+repeats\",attrs:{\"label\":_vm.$t('interactions.favs_repeats')}}),_vm._v(\" \"),_c('span',{key:\"follows\",attrs:{\"label\":_vm.$t('interactions.follows')}}),_vm._v(\" \"),(!_vm.allowFollowingMove)?_c('span',{key:\"moves\",attrs:{\"label\":_vm.$t('interactions.moves')}}):_vm._e()]),_vm._v(\" \"),_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true,\"minimal-mode\":true,\"filter-mode\":_vm.filterMode}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Timeline from '../timeline/timeline.vue'\n\nconst DMs = {\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.dms\n }\n },\n components: {\n Timeline\n }\n}\n\nexport default DMs\n","/* script */\nexport * from \"!!babel-loader!./dm_timeline.js\"\nimport __vue_script__ from \"!!babel-loader!./dm_timeline.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-294f8b6d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./dm_timeline.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Timeline',{attrs:{\"title\":_vm.$t('nav.dms'),\"timeline\":_vm.timeline,\"timeline-name\":'dms'}})}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport RemoteFollow from '../remote_follow/remote_follow.vue'\nimport FollowButton from '../follow_button/follow_button.vue'\n\nconst FollowCard = {\n props: [\n 'user',\n 'noFollowsYou'\n ],\n components: {\n BasicUserCard,\n RemoteFollow,\n FollowButton\n },\n computed: {\n isMe () {\n return this.$store.state.users.currentUser.id === this.user.id\n },\n loggedIn () {\n return this.$store.state.users.currentUser\n },\n relationship () {\n return this.$store.getters.relationship(this.user.id)\n }\n }\n}\n\nexport default FollowCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-064803a0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-card-content-container\"},[(_vm.isMe || (!_vm.noFollowsYou && _vm.relationship.followed_by))?_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.isMe ? _vm.$t('user_card.its_you') : _vm.$t('user_card.follows_you'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.loggedIn)?[(!_vm.relationship.following)?_c('div',{staticClass:\"follow-card-follow-button\"},[_c('RemoteFollow',{attrs:{\"user\":_vm.user}})],1):_vm._e()]:(!_vm.isMe)?[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]:_vm._e()],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nconst withLoadMore = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n destroy, // function called at \"destroyed\" lifecycle\n childPropName = 'entries', // name of the prop to be passed into the wrapped component\n additionalPropNames = [] // additional prop name list of the wrapper component\n}) => (WrappedComponent) => {\n const originalProps = Object.keys(getComponentProps(WrappedComponent))\n const props = originalProps.filter(v => v !== childPropName).concat(additionalPropNames)\n\n return Vue.component('withLoadMore', {\n props,\n data () {\n return {\n loading: false,\n bottomedOut: false,\n error: false\n }\n },\n computed: {\n entries () {\n return select(this.$props, this.$store) || []\n }\n },\n created () {\n window.addEventListener('scroll', this.scrollLoad)\n if (this.entries.length === 0) {\n this.fetchEntries()\n }\n },\n destroyed () {\n window.removeEventListener('scroll', this.scrollLoad)\n destroy && destroy(this.$props, this.$store)\n },\n methods: {\n fetchEntries () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then((newEntries) => {\n this.loading = false\n this.bottomedOut = isEmpty(newEntries)\n })\n .catch(() => {\n this.loading = false\n this.error = true\n })\n }\n },\n scrollLoad (e) {\n const bodyBRect = document.body.getBoundingClientRect()\n const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n if (this.loading === false &&\n this.bottomedOut === false &&\n this.$el.offsetHeight > 0 &&\n (window.innerHeight + window.pageYOffset) >= (height - 750)\n ) {\n this.fetchEntries()\n }\n }\n },\n render (h) {\n const props = {\n props: {\n ...this.$props,\n [childPropName]: this.entries\n },\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }\n const children = Object.entries(this.$slots).map(([key, value]) => h('template', { slot: key }, value))\n return (\n <div class=\"with-load-more\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n <div class=\"with-load-more-footer\">\n {this.error && <a onClick={this.fetchEntries} class=\"alert error\">{this.$t('general.generic_error')}</a>}\n {!this.error && this.loading && <i class=\"icon-spin3 animate-spin\"/>}\n {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n })\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.js'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\n\nconst FollowerList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n childPropName: 'items',\n additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n data () {\n return {\n error: false,\n userId: null,\n tab: defaultTabKey\n }\n },\n created () {\n const routeParams = this.$route.params\n this.load(routeParams.name || routeParams.id)\n this.tab = get(this.$route, 'query.tab', defaultTabKey)\n },\n destroyed () {\n this.stopFetching()\n },\n computed: {\n timeline () {\n return this.$store.state.statuses.timelines.user\n },\n favorites () {\n return this.$store.state.statuses.timelines.favorites\n },\n media () {\n return this.$store.state.statuses.timelines.media\n },\n isUs () {\n return this.userId && this.$store.state.users.currentUser.id &&\n this.userId === this.$store.state.users.currentUser.id\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n isExternal () {\n return this.$route.name === 'external-user-profile'\n },\n followsTabVisible () {\n return this.isUs || !this.user.hide_follows\n },\n followersTabVisible () {\n return this.isUs || !this.user.hide_followers\n }\n },\n methods: {\n load (userNameOrId) {\n const startFetchingTimeline = (timeline, userId) => {\n // Clear timeline only if load another user's profile\n if (userId !== this.$store.state.statuses.timelines[timeline].userId) {\n this.$store.commit('clearTimeline', { timeline })\n }\n this.$store.dispatch('startFetchingTimeline', { timeline, userId })\n }\n\n const loadById = (userId) => {\n this.userId = userId\n startFetchingTimeline('user', userId)\n startFetchingTimeline('media', userId)\n if (this.isUs) {\n startFetchingTimeline('favorites', userId)\n }\n // Fetch all pinned statuses immediately\n this.$store.dispatch('fetchPinnedStatuses', userId)\n }\n\n // Reset view\n this.userId = null\n this.error = false\n\n // Check if user data is already loaded in store\n const user = this.$store.getters.findUser(userNameOrId)\n if (user) {\n loadById(user.id)\n } else {\n this.$store.dispatch('fetchUser', userNameOrId)\n .then(({ id }) => loadById(id))\n .catch((reason) => {\n const errorMessage = get(reason, 'error.error')\n if (errorMessage === 'No user with such user_id') { // Known error\n this.error = this.$t('user_profile.profile_does_not_exist')\n } else if (errorMessage) {\n this.error = errorMessage\n } else {\n this.error = this.$t('user_profile.profile_loading_error')\n }\n })\n }\n },\n stopFetching () {\n this.$store.dispatch('stopFetchingTimeline', 'user')\n this.$store.dispatch('stopFetchingTimeline', 'favorites')\n this.$store.dispatch('stopFetchingTimeline', 'media')\n },\n switchUser (userNameOrId) {\n this.stopFetching()\n this.load(userNameOrId)\n },\n onTabSwitch (tab) {\n this.tab = tab\n this.$router.replace({ query: { tab } })\n },\n linkClicked ({ target }) {\n if (target.tagName === 'SPAN') {\n target = target.parentNode\n }\n if (target.tagName === 'A') {\n window.open(target.href, '_blank')\n }\n }\n },\n watch: {\n '$route.params.id': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.params.name': function (newVal) {\n if (newVal) {\n this.switchUser(newVal)\n }\n },\n '$route.query': function (newVal) {\n this.tab = newVal.tab || defaultTabKey\n }\n },\n components: {\n UserCard,\n Timeline,\n FollowerList,\n FriendList,\n FollowCard,\n TabSwitcher,\n Conversation\n }\n}\n\nexport default UserProfile\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_profile.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_profile.js\"\nimport __vue_script__ from \"!!babel-loader!./user_profile.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-64293be2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_profile.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.user)?_c('div',{staticClass:\"user-profile panel panel-default\"},[_c('UserCard',{attrs:{\"user-id\":_vm.userId,\"switcher\":true,\"selected\":_vm.timeline.viewing,\"allow-zooming-avatar\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),(_vm.user.fields_html && _vm.user.fields_html.length > 0)?_c('div',{staticClass:\"user-profile-fields\"},_vm._l((_vm.user.fields_html),function(field,index){return _c('dl',{key:index,staticClass:\"user-profile-field\"},[_c('dt',{staticClass:\"user-profile-field-name\",attrs:{\"title\":_vm.user.fields_text[index].name},domProps:{\"innerHTML\":_vm._s(field.name)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),_c('dd',{staticClass:\"user-profile-field-value\",attrs:{\"title\":_vm.user.fields_text[index].value},domProps:{\"innerHTML\":_vm._s(field.value)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}})])}),0):_vm._e(),_vm._v(\" \"),_c('tab-switcher',{attrs:{\"active-tab\":_vm.tab,\"render-only-focused\":true,\"on-switch\":_vm.onTabSwitch}},[_c('Timeline',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses'),\"count\":_vm.user.statuses_count,\"embedded\":true,\"title\":_vm.$t('user_profile.timeline_title'),\"timeline\":_vm.timeline,\"timeline-name\":\"user\",\"user-id\":_vm.userId,\"pinned-status-ids\":_vm.user.pinnedStatusIds,\"in-profile\":true}}),_vm._v(\" \"),(_vm.followsTabVisible)?_c('div',{key:\"followees\",attrs:{\"label\":_vm.$t('user_card.followees'),\"disabled\":!_vm.user.friends_count}},[_c('FriendList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item}})]}}],null,false,676117295)})],1):_vm._e(),_vm._v(\" \"),(_vm.followersTabVisible)?_c('div',{key:\"followers\",attrs:{\"label\":_vm.$t('user_card.followers'),\"disabled\":!_vm.user.followers_count}},[_c('FollowerList',{attrs:{\"user-id\":_vm.userId},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('FollowCard',{attrs:{\"user\":item,\"no-follows-you\":_vm.isUs}})]}}],null,false,3839341157)})],1):_vm._e(),_vm._v(\" \"),_c('Timeline',{key:\"media\",attrs:{\"label\":_vm.$t('user_card.media'),\"disabled\":!_vm.media.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.media'),\"timeline-name\":\"media\",\"timeline\":_vm.media,\"user-id\":_vm.userId,\"in-profile\":true}}),_vm._v(\" \"),(_vm.isUs)?_c('Timeline',{key:\"favorites\",attrs:{\"label\":_vm.$t('user_card.favorites'),\"disabled\":!_vm.favorites.visibleStatuses.length,\"embedded\":true,\"title\":_vm.$t('user_card.favorites'),\"timeline-name\":\"favorites\",\"timeline\":_vm.favorites,\"in-profile\":true}}):_vm._e()],1)],1):_c('div',{staticClass:\"panel user-profile-placeholder\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.profile_tab'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.error)?_c('span',[_vm._v(_vm._s(_vm.error))]):_c('i',{staticClass:\"icon-spin3 animate-spin\"})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport map from 'lodash/map'\n\nconst Search = {\n components: {\n FollowCard,\n Conversation,\n Status\n },\n props: [\n 'query'\n ],\n data () {\n return {\n loaded: false,\n loading: false,\n searchTerm: this.query || '',\n userIds: [],\n statuses: [],\n hashtags: [],\n currenResultTab: 'statuses'\n }\n },\n computed: {\n users () {\n return this.userIds.map(userId => this.$store.getters.findUser(userId))\n },\n visibleStatuses () {\n const allStatusesObject = this.$store.state.statuses.allStatusesObject\n\n return this.statuses.filter(status =>\n allStatusesObject[status.id] && !allStatusesObject[status.id].deleted\n )\n }\n },\n mounted () {\n this.search(this.query)\n },\n watch: {\n query (newValue) {\n this.searchTerm = newValue\n this.search(newValue)\n }\n },\n methods: {\n newQuery (query) {\n this.$router.push({ name: 'search', query: { query } })\n this.$refs.searchInput.focus()\n },\n search (query) {\n if (!query) {\n this.loading = false\n return\n }\n\n this.loading = true\n this.userIds = []\n this.statuses = []\n this.hashtags = []\n this.$refs.searchInput.blur()\n\n this.$store.dispatch('search', { q: query, resolve: true })\n .then(data => {\n this.loading = false\n this.userIds = map(data.accounts, 'id')\n this.statuses = data.statuses\n this.hashtags = data.hashtags\n this.currenResultTab = this.getActiveTab()\n this.loaded = true\n })\n },\n resultCount (tabName) {\n const length = this[tabName].length\n return length === 0 ? '' : ` (${length})`\n },\n onResultTabSwitch (key) {\n this.currenResultTab = key\n },\n getActiveTab () {\n if (this.visibleStatuses.length > 0) {\n return 'statuses'\n } else if (this.users.length > 0) {\n return 'people'\n } else if (this.hashtags.length > 0) {\n return 'hashtags'\n }\n\n return 'statuses'\n },\n lastHistoryRecord (hashtag) {\n return hashtag.history && hashtag.history[0]\n }\n }\n}\n\nexport default Search\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search.js\"\nimport __vue_script__ from \"!!babel-loader!./search.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3962ec42\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.search'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"search-input-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-input\",attrs:{\"placeholder\":_vm.$t('nav.search')},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.newQuery(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn search-button\",on:{\"click\":function($event){return _vm.newQuery(_vm.searchTerm)}}},[_c('i',{staticClass:\"icon-search\"})])]),_vm._v(\" \"),(_vm.loading)?_c('div',{staticClass:\"text-center loading-icon\"},[_c('i',{staticClass:\"icon-spin3 animate-spin\"})]):(_vm.loaded)?_c('div',[_c('div',{staticClass:\"search-nav-heading\"},[_c('tab-switcher',{ref:\"tabSwitcher\",attrs:{\"on-switch\":_vm.onResultTabSwitch,\"active-tab\":_vm.currenResultTab}},[_c('span',{key:\"statuses\",attrs:{\"label\":_vm.$t('user_card.statuses') + _vm.resultCount('visibleStatuses')}}),_vm._v(\" \"),_c('span',{key:\"people\",attrs:{\"label\":_vm.$t('search.people') + _vm.resultCount('users')}}),_vm._v(\" \"),_c('span',{key:\"hashtags\",attrs:{\"label\":_vm.$t('search.hashtags') + _vm.resultCount('hashtags')}})])],1)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.currenResultTab === 'statuses')?_c('div',[(_vm.visibleStatuses.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.visibleStatuses),function(status){return _c('Status',{key:status.id,staticClass:\"search-result\",attrs:{\"collapsable\":false,\"expandable\":false,\"compact\":false,\"statusoid\":status,\"no-heading\":false}})})],2):(_vm.currenResultTab === 'people')?_c('div',[(_vm.users.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item search-result\",attrs:{\"user\":user}})})],2):(_vm.currenResultTab === 'hashtags')?_c('div',[(_vm.hashtags.length === 0 && !_vm.loading && _vm.loaded)?_c('div',{staticClass:\"search-result-heading\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('search.no_results')))])]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.hashtags),function(hashtag){return _c('div',{key:hashtag.url,staticClass:\"status trend search-result\"},[_c('div',{staticClass:\"hashtag\"},[_c('router-link',{attrs:{\"to\":{ name: 'tag-timeline', params: { tag: hashtag.name } }}},[_vm._v(\"\\n #\"+_vm._s(hashtag.name)+\"\\n \")]),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',[(_vm.lastHistoryRecord(hashtag).accounts == 1)?_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.person_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")]):_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.$t('search.people_talking', { count: _vm.lastHistoryRecord(hashtag).accounts }))+\"\\n \")])]):_vm._e()],1),_vm._v(\" \"),(_vm.lastHistoryRecord(hashtag))?_c('div',{staticClass:\"count\"},[_vm._v(\"\\n \"+_vm._s(_vm.lastHistoryRecord(hashtag).uses)+\"\\n \")]):_vm._e()])})],2):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"search-result-footer text-center panel-footer faint\"})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { validationMixin } from 'vuelidate'\nimport { required, requiredIf, sameAs } from 'vuelidate/lib/validators'\nimport { mapActions, mapState } from 'vuex'\n\nconst registration = {\n mixins: [validationMixin],\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: ''\n },\n captcha: {}\n }),\n validations () {\n return {\n user: {\n email: { required: requiredIf(() => this.accountActivationRequired) },\n username: { required },\n fullname: { required },\n password: { required },\n confirm: {\n required,\n sameAsPassword: sameAs('password')\n }\n }\n }\n },\n created () {\n if ((!this.registrationOpen && !this.token) || this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n\n this.setCaptcha()\n },\n computed: {\n token () { return this.$route.params.token },\n bioPlaceholder () {\n return this.$t('registration.bio_placeholder').replace(/\\s*\\n\\s*/g, ' \\n')\n },\n ...mapState({\n registrationOpen: (state) => state.instance.registrationOpen,\n signedIn: (state) => !!state.users.currentUser,\n isPending: (state) => state.users.signUpPending,\n serverValidationErrors: (state) => state.users.signUpErrors,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired\n })\n },\n methods: {\n ...mapActions(['signUp', 'getCaptcha']),\n async submit () {\n this.user.nickname = this.user.username\n this.user.token = this.token\n\n this.user.captcha_solution = this.captcha.solution\n this.user.captcha_token = this.captcha.token\n this.user.captcha_answer_data = this.captcha.answer_data\n\n this.$v.$touch()\n\n if (!this.$v.$invalid) {\n try {\n await this.signUp(this.user)\n this.$router.push({ name: 'friends' })\n } catch (error) {\n console.warn('Registration failed: ', error)\n this.setCaptcha()\n }\n }\n },\n setCaptcha () {\n this.getCaptcha().then(cpt => { this.captcha = cpt })\n }\n }\n}\n\nexport default registration\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./registration.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./registration.js\"\nimport __vue_script__ from \"!!babel-loader!./registration.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-456dfbf7\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./registration.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('registration.registration'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"registration-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit(_vm.user)}}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"text-fields\"},[_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.username.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.username.$model),expression:\"$v.user.username.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-username\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.username_placeholder')},domProps:{\"value\":(_vm.$v.user.username.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.username, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.username.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.username.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.username_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.fullname.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-fullname\"}},[_vm._v(_vm._s(_vm.$t('registration.fullname')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.$v.user.fullname.$model),expression:\"$v.user.fullname.$model\",modifiers:{\"trim\":true}}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-fullname\",\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('registration.fullname_placeholder')},domProps:{\"value\":(_vm.$v.user.fullname.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.fullname, \"$model\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),(_vm.$v.user.fullname.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.fullname.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.fullname_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.email.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"email\"}},[_vm._v(_vm._s(_vm.$t('registration.email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.$v.user.email.$model),expression:\"$v.user.email.$model\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"disabled\":_vm.isPending,\"type\":\"email\"},domProps:{\"value\":(_vm.$v.user.email.$model)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.$v.user.email, \"$model\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.email.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.email.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.email_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"bio\"}},[_vm._v(_vm._s(_vm.$t('registration.bio'))+\" (\"+_vm._s(_vm.$t('general.optional'))+\")\")]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.bio),expression:\"user.bio\"}],staticClass:\"form-control\",attrs:{\"id\":\"bio\",\"disabled\":_vm.isPending,\"placeholder\":_vm.bioPlaceholder},domProps:{\"value\":(_vm.user.bio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"bio\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.password.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.password.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.password.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_required')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\",class:{ 'form-group--error': _vm.$v.user.confirm.$error }},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"sign-up-password-confirmation\"}},[_vm._v(_vm._s(_vm.$t('registration.password_confirm')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.confirm),expression:\"user.confirm\"}],staticClass:\"form-control\",attrs:{\"id\":\"sign-up-password-confirmation\",\"disabled\":_vm.isPending,\"type\":\"password\"},domProps:{\"value\":(_vm.user.confirm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"confirm\", $event.target.value)}}})]),_vm._v(\" \"),(_vm.$v.user.confirm.$dirty)?_c('div',{staticClass:\"form-error\"},[_c('ul',[(!_vm.$v.user.confirm.required)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_required')))])]):_vm._e(),_vm._v(\" \"),(!_vm.$v.user.confirm.sameAsPassword)?_c('li',[_c('span',[_vm._v(_vm._s(_vm.$t('registration.validations.password_confirmation_match')))])]):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.captcha.type != 'none')?_c('div',{staticClass:\"form-group\",attrs:{\"id\":\"captcha-group\"}},[_c('label',{staticClass:\"form--label\",attrs:{\"for\":\"captcha-label\"}},[_vm._v(_vm._s(_vm.$t('registration.captcha')))]),_vm._v(\" \"),(['kocaptcha', 'native'].includes(_vm.captcha.type))?[_c('img',{attrs:{\"src\":_vm.captcha.url},on:{\"click\":_vm.setCaptcha}}),_vm._v(\" \"),_c('sub',[_vm._v(_vm._s(_vm.$t('registration.new_captcha')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.captcha.solution),expression:\"captcha.solution\"}],staticClass:\"form-control\",attrs:{\"id\":\"captcha-answer\",\"disabled\":_vm.isPending,\"type\":\"text\",\"autocomplete\":\"off\",\"autocorrect\":\"off\",\"autocapitalize\":\"off\",\"spellcheck\":\"false\"},domProps:{\"value\":(_vm.captcha.solution)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.captcha, \"solution\", $event.target.value)}}})]:_vm._e()],2):_vm._e(),_vm._v(\" \"),(_vm.token)?_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"token\"}},[_vm._v(_vm._s(_vm.$t('registration.token')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.token),expression:\"token\"}],staticClass:\"form-control\",attrs:{\"id\":\"token\",\"disabled\":\"true\",\"type\":\"text\"},domProps:{\"value\":(_vm.token)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.token=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])])]),_vm._v(\" \"),_c('div',{staticClass:\"terms-of-service\",domProps:{\"innerHTML\":_vm._s(_vm.termsOfService)}})]),_vm._v(\" \"),(_vm.serverValidationErrors.length)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},_vm._l((_vm.serverValidationErrors),function(error){return _c('span',{key:error},[_vm._v(_vm._s(error))])}),0)]):_vm._e()])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { reduce } from 'lodash'\n\nconst MASTODON_PASSWORD_RESET_URL = `/auth/password`\n\nconst resetPassword = ({ instance, email }) => {\n const params = { email }\n const query = reduce(params, (acc, v, k) => {\n const encoded = `${k}=${encodeURIComponent(v)}`\n return `${acc}&${encoded}`\n }, '')\n const url = `${instance}${MASTODON_PASSWORD_RESET_URL}?${query}`\n\n return window.fetch(url, {\n method: 'POST'\n })\n}\n\nexport default resetPassword\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\n\nconst passwordReset = {\n data: () => ({\n user: {\n email: ''\n },\n isPending: false,\n success: false,\n throttled: false,\n error: null\n }),\n computed: {\n ...mapState({\n signedIn: (state) => !!state.users.currentUser,\n instance: state => state.instance\n }),\n mailerEnabled () {\n return this.instance.mailerEnabled\n }\n },\n created () {\n if (this.signedIn) {\n this.$router.push({ name: 'root' })\n }\n },\n props: {\n passwordResetRequested: {\n default: false,\n type: Boolean\n }\n },\n methods: {\n dismissError () {\n this.error = null\n },\n submit () {\n this.isPending = true\n const email = this.user.email\n const instance = this.instance.server\n\n passwordResetApi({ instance, email }).then(({ status }) => {\n this.isPending = false\n this.user.email = ''\n\n if (status === 204) {\n this.success = true\n this.error = null\n } else if (status === 404 || status === 400) {\n this.error = this.$t('password_reset.not_found')\n this.$nextTick(() => {\n this.$refs.email.focus()\n })\n } else if (status === 429) {\n this.throttled = true\n this.error = this.$t('password_reset.too_many_requests')\n }\n }).catch(() => {\n this.isPending = false\n this.user.email = ''\n this.error = this.$t('general.generic_error')\n })\n }\n }\n}\n\nexport default passwordReset\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./password_reset.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./password_reset.js\"\nimport __vue_script__ from \"!!babel-loader!./password_reset.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-750c6ec4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./password_reset.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"password-reset-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"container\"},[(!_vm.mailerEnabled)?_c('div',[(_vm.passwordResetRequested)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required_but_mailer_is_disabled'))+\"\\n \")]):_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_disabled'))+\"\\n \")])]):(_vm.success || _vm.throttled)?_c('div',[(_vm.success)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.check_email'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group text-center\"},[_c('router-link',{attrs:{\"to\":{name: 'root'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.return_home'))+\"\\n \")])],1)]):_c('div',[(_vm.passwordResetRequested)?_c('p',{staticClass:\"password-reset-required error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.password_reset_required'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.instruction'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.email),expression:\"user.email\"}],ref:\"email\",staticClass:\"form-control\",attrs:{\"disabled\":_vm.isPending,\"placeholder\":_vm.$t('password_reset.placeholder'),\"type\":\"input\"},domProps:{\"value\":(_vm.user.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"email\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('button',{staticClass:\"btn btn-default btn-block\",attrs:{\"disabled\":_vm.isPending,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])])]),_vm._v(\" \"),(_vm.error)?_c('p',{staticClass:\"alert error notice-dismissible\"},[_c('span',[_vm._v(_vm._s(_vm.error))]),_vm._v(\" \"),_c('a',{staticClass:\"button-icon dismiss\",on:{\"click\":function($event){$event.preventDefault();return _vm.dismissError()}}},[_c('i',{staticClass:\"icon-cancel\"})])]):_vm._e()])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard\n },\n methods: {\n findFollowRequestNotificationId () {\n const notif = notificationsFromStore(this.$store).find(\n (notif) => notif.from_profile.id === this.user.id && notif.type === 'follow_request'\n )\n return notif && notif.id\n },\n approveUser () {\n this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n this.$store.dispatch('removeFollowRequest', this.user)\n\n const notifId = this.findFollowRequestNotificationId()\n this.$store.dispatch('markSingleNotificationAsSeen', { id: notifId })\n this.$store.dispatch('updateNotification', {\n id: notifId,\n updater: notification => {\n notification.type = 'follow'\n }\n })\n },\n denyUser () {\n const notifId = this.findFollowRequestNotificationId()\n this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n .then(() => {\n this.$store.dispatch('dismissNotificationLocal', { id: notifId })\n this.$store.dispatch('removeFollowRequest', this.user)\n })\n }\n }\n}\n\nexport default FollowRequestCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./follow_request_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./follow_request_card.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_request_card.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1edf2e22\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_request_card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import FollowRequestCard from '../follow_request_card/follow_request_card.vue'\n\nconst FollowRequests = {\n components: {\n FollowRequestCard\n },\n computed: {\n requests () {\n return this.$store.state.api.followRequests\n }\n }\n}\n\nexport default FollowRequests\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('basic-user-card',{attrs:{\"user\":_vm.user}},[_c('div',{staticClass:\"follow-request-card-content-container\"},[_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.approveUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.approve'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.denyUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.deny'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!./follow_requests.js\"\nimport __vue_script__ from \"!!babel-loader!./follow_requests.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9c427644\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./follow_requests.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('nav.friend_requests'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.requests),function(request){return _c('FollowRequestCard',{key:request.id,staticClass:\"list-item\",attrs:{\"user\":request}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import oauth from '../../services/new_api/oauth.js'\n\nconst oac = {\n props: ['code'],\n mounted () {\n if (this.code) {\n const { clientId, clientSecret } = this.$store.state.oauth\n\n oauth.getToken({\n clientId,\n clientSecret,\n instance: this.$store.state.instance.server,\n code: this.code\n }).then((result) => {\n this.$store.commit('setToken', result.access_token)\n this.$store.dispatch('loginUser', result.access_token)\n this.$router.push({ name: 'friends' })\n })\n }\n }\n}\n\nexport default oac\n","/* script */\nexport * from \"!!babel-loader!./oauth_callback.js\"\nimport __vue_script__ from \"!!babel-loader!./oauth_callback.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f514124c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./oauth_callback.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"...\")])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\n\nconst LoginForm = {\n data: () => ({\n user: {},\n error: false\n }),\n computed: {\n isPasswordAuth () { return this.requiredPassword },\n isTokenAuth () { return this.requiredToken },\n ...mapState({\n registrationOpen: state => state.instance.registrationOpen,\n instance: state => state.instance,\n loggingIn: state => state.users.loggingIn,\n oauth: state => state.oauth\n }),\n ...mapGetters(\n 'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n )\n },\n methods: {\n ...mapMutations('authFlow', ['requireMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n submit () {\n this.isTokenAuth ? this.submitToken() : this.submitPassword()\n },\n submitToken () {\n const { clientId, clientSecret } = this.oauth\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n\n oauthApi.getOrCreateApp(data)\n .then((app) => { oauthApi.login({ ...app, ...data }) })\n },\n submitPassword () {\n const { clientId } = this.oauth\n const data = {\n clientId,\n oauth: this.oauth,\n instance: this.instance.server,\n commit: this.$store.commit\n }\n this.error = false\n\n oauthApi.getOrCreateApp(data).then((app) => {\n oauthApi.getTokenWithCredentials(\n {\n ...app,\n instance: data.instance,\n username: this.user.username,\n password: this.user.password\n }\n ).then((result) => {\n if (result.error) {\n if (result.error === 'mfa_required') {\n this.requireMFA({ settings: result })\n } else if (result.identifier === 'password_reset_required') {\n this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n } else {\n this.error = result.error\n this.focusOnPasswordInput()\n }\n return\n }\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n })\n },\n clearError () { this.error = false },\n focusOnPasswordInput () {\n let passwordInput = this.$refs.passwordInput\n passwordInput.focus()\n passwordInput.setSelectionRange(0, passwordInput.value.length)\n }\n }\n}\n\nexport default LoginForm\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./login_form.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./login_form.js\"\nimport __vue_script__ from \"!!babel-loader!./login_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-38aaa196\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./login_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[(_vm.isPasswordAuth)?[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"username\"}},[_vm._v(_vm._s(_vm.$t('login.username')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.username),expression:\"user.username\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"disabled\":_vm.loggingIn,\"placeholder\":_vm.$t('login.placeholder')},domProps:{\"value\":(_vm.user.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"username\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user.password),expression:\"user.password\"}],ref:\"passwordInput\",staticClass:\"form-control\",attrs:{\"id\":\"password\",\"disabled\":_vm.loggingIn,\"type\":\"password\"},domProps:{\"value\":(_vm.user.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.user, \"password\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('router-link',{attrs:{\"to\":{name: 'password-reset'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('password_reset.forgot_password'))+\"\\n \")])],1)]:_vm._e(),_vm._v(\" \"),(_vm.isTokenAuth)?_c('div',{staticClass:\"form-group\"},[_c('p',[_vm._v(_vm._s(_vm.$t('login.description')))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[(_vm.registrationOpen)?_c('router-link',{staticClass:\"register\",attrs:{\"to\":{name: 'registration'}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.register'))+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.loggingIn,\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.login'))+\"\\n \")])])])],2)]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'totp')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n const url = `${instance}/oauth/mfa/challenge`\n const form = new window.FormData()\n\n form.append('client_id', clientId)\n form.append('client_secret', clientSecret)\n form.append('mfa_token', mfaToken)\n form.append('code', code)\n form.append('challenge_type', 'recovery')\n\n return window.fetch(url, {\n method: 'POST',\n body: form\n }).then((data) => data.json())\n}\n\nconst mfa = {\n verifyOTPCode,\n verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\n\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyRecoveryCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./recovery_form.js\"\nimport __vue_script__ from \"!!babel-loader!./recovery_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-129661d4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./recovery_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.recovery'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(_vm._s(_vm.$t('login.recovery_code')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireTOTP($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_two_factor_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nexport default {\n data: () => ({\n code: null,\n error: false\n }),\n computed: {\n ...mapGetters({\n authSettings: 'authFlow/settings'\n }),\n ...mapState({\n instance: 'instance',\n oauth: 'oauth'\n })\n },\n methods: {\n ...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),\n ...mapActions({ login: 'authFlow/login' }),\n clearError () { this.error = false },\n submit () {\n const { clientId, clientSecret } = this.oauth\n\n const data = {\n clientId,\n clientSecret,\n instance: this.instance.server,\n mfaToken: this.authSettings.mfa_token,\n code: this.code\n }\n\n mfaApi.verifyOTPCode(data).then((result) => {\n if (result.error) {\n this.error = result.error\n this.code = null\n return\n }\n\n this.login(result).then(() => {\n this.$router.push({ name: 'friends' })\n })\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./totp_form.js\"\nimport __vue_script__ from \"!!babel-loader!./totp_form.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4428228\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./totp_form.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"login panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.heading.totp'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('form',{staticClass:\"login-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"code\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.authentication_code'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.code),expression:\"code\"}],staticClass:\"form-control\",attrs:{\"id\":\"code\"},domProps:{\"value\":(_vm.code)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.code=$event.target.value}}})]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"login-bottom\"},[_c('div',[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.requireRecovery($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('login.enter_recovery_code'))+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.abortMFA($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"type\":\"submit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.verify'))+\"\\n \")])])])])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import LoginForm from '../login_form/login_form.vue'\nimport MFARecoveryForm from '../mfa_form/recovery_form.vue'\nimport MFATOTPForm from '../mfa_form/totp_form.vue'\nimport { mapGetters } from 'vuex'\n\nconst AuthForm = {\n name: 'AuthForm',\n render (createElement) {\n return createElement('component', { is: this.authForm })\n },\n computed: {\n authForm () {\n if (this.requiredTOTP) { return 'MFATOTPForm' }\n if (this.requiredRecovery) { return 'MFARecoveryForm' }\n return 'LoginForm'\n },\n ...mapGetters('authFlow', ['requiredTOTP', 'requiredRecovery'])\n },\n components: {\n MFARecoveryForm,\n MFATOTPForm,\n LoginForm\n }\n}\n\nexport default AuthForm\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst chatPanel = {\n props: [ 'floating' ],\n data () {\n return {\n currentMessage: '',\n channel: null,\n collapsed: true\n }\n },\n computed: {\n messages () {\n return this.$store.state.chat.messages\n }\n },\n methods: {\n submit (message) {\n this.$store.state.chat.channel.push('new_msg', { text: message }, 10000)\n this.currentMessage = ''\n },\n togglePanel () {\n this.collapsed = !this.collapsed\n },\n userProfileLink (user) {\n return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n }\n }\n}\n\nexport default chatPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./chat_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./chat_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./chat_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7ea51572\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./chat_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.collapsed || !_vm.floating)?_c('div',{staticClass:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading timeline-heading\",class:{ 'chat-heading': _vm.floating },on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('span',[_vm._v(_vm._s(_vm.$t('chat.title')))]),_vm._v(\" \"),(_vm.floating)?_c('i',{staticClass:\"icon-cancel\"}):_vm._e()])]),_vm._v(\" \"),_c('div',{directives:[{name:\"chat-scroll\",rawName:\"v-chat-scroll\"}],staticClass:\"chat-window\"},_vm._l((_vm.messages),function(message){return _c('div',{key:message.id,staticClass:\"chat-message\"},[_c('span',{staticClass:\"chat-avatar\"},[_c('img',{attrs:{\"src\":message.author.avatar}})]),_vm._v(\" \"),_c('div',{staticClass:\"chat-content\"},[_c('router-link',{staticClass:\"chat-name\",attrs:{\"to\":_vm.userProfileLink(message.author)}},[_vm._v(\"\\n \"+_vm._s(message.author.username)+\"\\n \")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"chat-text\"},[_vm._v(\"\\n \"+_vm._s(message.text)+\"\\n \")])],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"chat-input\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentMessage),expression:\"currentMessage\"}],staticClass:\"chat-input-textarea\",attrs:{\"rows\":\"1\"},domProps:{\"value\":(_vm.currentMessage)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit(_vm.currentMessage)},\"input\":function($event){if($event.target.composing){ return; }_vm.currentMessage=$event.target.value}}})])])]):_c('div',{staticClass:\"chat-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading stub timeline-heading chat-heading\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.togglePanel($event)}}},[_c('div',{staticClass:\"title\"},[_c('i',{staticClass:\"icon-comment-empty\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('chat.title'))+\"\\n \")])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport FollowCard from '../follow_card/follow_card.vue'\n\nconst WhoToFollow = {\n components: {\n FollowCard\n },\n data () {\n return {\n users: []\n }\n },\n mounted () {\n this.getWhoToFollow()\n },\n methods: {\n showWhoToFollow (reply) {\n reply.forEach((i, index) => {\n this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })\n .then((externalUser) => {\n if (!externalUser.error) {\n this.$store.commit('addNewUsers', [externalUser])\n this.users.push(externalUser)\n }\n })\n })\n },\n getWhoToFollow () {\n const credentials = this.$store.state.users.currentUser.credentials\n if (credentials) {\n apiService.suggestions({ credentials: credentials })\n .then((reply) => {\n this.showWhoToFollow(reply)\n })\n }\n }\n }\n}\n\nexport default WhoToFollow\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4f8c3288\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.users),function(user){return _c('FollowCard',{key:user.id,staticClass:\"list-item\",attrs:{\"user\":user}})}),1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const InstanceSpecificPanel = {\n computed: {\n instanceSpecificPanelContent () {\n return this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default InstanceSpecificPanel\n","/* script */\nexport * from \"!!babel-loader!./instance_specific_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./instance_specific_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5b01187b\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./instance_specific_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"instance-specific-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.instanceSpecificPanelContent)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const FeaturesPanel = {\n computed: {\n chat: function () { return this.$store.state.instance.chatAvailable },\n gopher: function () { return this.$store.state.instance.gopherAvailable },\n whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n textlimit: function () { return this.$store.state.instance.textlimit }\n }\n}\n\nexport default FeaturesPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./features_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./features_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./features_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3443e05c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./features_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"features-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.title'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body features-panel\"},[_c('ul',[(_vm.chat)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.chat'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.gopher)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.gopher'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.whoToFollow)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.who_to_follow'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.mediaProxy)?_c('li',[_vm._v(\"\\n \"+_vm._s(_vm.$t('features_panel.media_proxy'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.scope_options')))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.$t('features_panel.text_limit'))+\" = \"+_vm._s(_vm.textlimit))])])])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const TermsOfServicePanel = {\n computed: {\n content () {\n return this.$store.state.instance.tos\n }\n }\n}\n\nexport default TermsOfServicePanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./terms_of_service_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./terms_of_service_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./terms_of_service_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-687e38f6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./terms_of_service_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"tos-content\",domProps:{\"innerHTML\":_vm._s(_vm.content)}})])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import map from 'lodash/map'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n created () {\n const nicknames = this.$store.state.instance.staffAccounts\n nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n },\n components: {\n BasicUserCard\n },\n computed: {\n staffAccounts () {\n return map(this.$store.state.instance.staffAccounts, nickname => this.$store.getters.findUser(nickname)).filter(_ => _)\n }\n }\n}\n\nexport default StaffPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./staff_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./staff_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./staff_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a6a2c3a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./staff_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"staff-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.staff\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},_vm._l((_vm.staffAccounts),function(user){return _c('basic-user-card',{key:user.screen_name,attrs:{\"user\":user}})}),1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\nconst MRFTransparencyPanel = {\n computed: {\n ...mapState({\n federationPolicy: state => get(state, 'instance.federationPolicy'),\n mrfPolicies: state => get(state, 'instance.federationPolicy.mrf_policies', []),\n quarantineInstances: state => get(state, 'instance.federationPolicy.quarantined_instances', []),\n acceptInstances: state => get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n rejectInstances: state => get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n ftlRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n mediaNsfwInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n mediaRemovalInstances: state => get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n keywordsFtlRemoval: state => get(state, 'instance.federationPolicy.mrf_keyword.federated_timeline_removal', []),\n keywordsReject: state => get(state, 'instance.federationPolicy.mrf_keyword.reject', []),\n keywordsReplace: state => get(state, 'instance.federationPolicy.mrf_keyword.replace', [])\n }),\n hasInstanceSpecificPolicies () {\n return this.quarantineInstances.length ||\n this.acceptInstances.length ||\n this.rejectInstances.length ||\n this.ftlRemovalInstances.length ||\n this.mediaNsfwInstances.length ||\n this.mediaRemovalInstances.length\n },\n hasKeywordPolicies () {\n return this.keywordsFtlRemoval.length ||\n this.keywordsReject.length ||\n this.keywordsReplace.length\n }\n }\n}\n\nexport default MRFTransparencyPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mrf_transparency_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mrf_transparency_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./mrf_transparency_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3de10442\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mrf_transparency_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import InstanceSpecificPanel from '../instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from '../features_panel/features_panel.vue'\nimport TermsOfServicePanel from '../terms_of_service_panel/terms_of_service_panel.vue'\nimport StaffPanel from '../staff_panel/staff_panel.vue'\nimport MRFTransparencyPanel from '../mrf_transparency_panel/mrf_transparency_panel.vue'\n\nconst About = {\n components: {\n InstanceSpecificPanel,\n FeaturesPanel,\n TermsOfServicePanel,\n StaffPanel,\n MRFTransparencyPanel\n },\n computed: {\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n }\n }\n}\n\nexport default About\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.federationPolicy)?_c('div',{staticClass:\"mrf-transparency-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.federation\"))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"mrf-section\"},[_c('h2',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.mrf_policies_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mrfPolicies),function(policy){return _c('li',{key:policy,domProps:{\"textContent\":_vm._s(policy)}})}),0),_vm._v(\" \"),(_vm.hasInstanceSpecificPolicies)?_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.simple.simple_policies\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.acceptInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.accept_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.acceptInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.rejectInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.reject_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.rejectInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.quarantineInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.quarantine_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.quarantineInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.ftlRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.ftl_removal_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.ftlRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.mediaNsfwInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_nsfw_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mediaNsfwInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.mediaRemovalInstances.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal\")))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t(\"about.mrf.simple.media_removal_desc\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.mediaRemovalInstances),function(instance){return _c('li',{key:instance,domProps:{\"textContent\":_vm._s(instance)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.hasKeywordPolicies)?_c('h2',[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"about.mrf.keyword.keyword_policies\"))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.keywordsFtlRemoval.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.ftl_removal\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsFtlRemoval),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReject.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.reject\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReject),function(keyword){return _c('li',{key:keyword,domProps:{\"textContent\":_vm._s(keyword)}})}),0)]):_vm._e(),_vm._v(\" \"),(_vm.keywordsReplace.length)?_c('div',[_c('h4',[_vm._v(_vm._s(_vm.$t(\"about.mrf.keyword.replace\")))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.keywordsReplace),function(keyword){return _c('li',{key:keyword},[_vm._v(\"\\n \"+_vm._s(keyword.pattern)+\"\\n \"+_vm._s(_vm.$t(\"about.mrf.keyword.is_replaced_by\"))+\"\\n \"+_vm._s(keyword.replacement)+\"\\n \")])}),0)]):_vm._e()])])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./about.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./about.js\"\nimport __vue_script__ from \"!!babel-loader!./about.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-acd3d67e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./about.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar\"},[(_vm.showInstanceSpecificPanel)?_c('instance-specific-panel'):_vm._e(),_vm._v(\" \"),_c('staff-panel'),_vm._v(\" \"),_c('terms-of-service-panel'),_vm._v(\" \"),_c('MRFTransparencyPanel'),_vm._v(\" \"),(_vm.showFeaturesPanel)?_c('features-panel'):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const RemoteUserResolver = {\n data: () => ({\n error: false\n }),\n mounted () {\n this.redirect()\n },\n methods: {\n redirect () {\n const acct = this.$route.params.username + '@' + this.$route.params.hostname\n this.$store.state.api.backendInteractor.fetchUser({ id: acct })\n .then((externalUser) => {\n if (externalUser.error) {\n this.error = true\n } else {\n this.$store.commit('addNewUsers', [externalUser])\n const id = externalUser.id\n this.$router.replace({\n name: 'external-user-profile',\n params: { id }\n })\n }\n })\n .catch(() => {\n this.error = true\n })\n }\n }\n}\n\nexport default RemoteUserResolver\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./remote_user_resolver.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./remote_user_resolver.js\"\nimport __vue_script__ from \"!!babel-loader!./remote_user_resolver.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-198402c4\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./remote_user_resolver.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.remote_user_resolver'))+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.searching_for'))+\" @\"+_vm._s(_vm.$route.params.username)+\"@\"+_vm._s(_vm.$route.params.hostname)+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('remote_user_resolver.error'))+\"\\n \")]):_vm._e()])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ChatPanel from 'components/chat_panel/chat_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\n\nexport default (store) => {\n const validateAuthenticatedRoute = (to, from, next) => {\n if (store.state.users.currentUser) {\n next()\n } else {\n next(store.state.instance.redirectRootNoLogin || '/main/all')\n }\n }\n\n return [\n { name: 'root',\n path: '/',\n redirect: _to => {\n return (store.state.users.currentUser\n ? store.state.instance.redirectRootLogin\n : store.state.instance.redirectRootNoLogin) || '/main/all'\n }\n },\n { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n { name: 'remote-user-profile-acct',\n path: '/remote-users/(@?):username([^/@]+)@:hostname([^/@]+)',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'remote-user-profile',\n path: '/remote-users/:hostname/:username',\n component: RemoteUserResolver,\n beforeEnter: validateAuthenticatedRoute\n },\n { name: 'external-user-profile', path: '/users/:id', component: UserProfile },\n { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n { name: 'registration', path: '/registration', component: Registration },\n { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n { name: 'registration-token', path: '/registration/:token', component: Registration },\n { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n { name: 'notifications', path: '/:username/notifications', component: Notifications, beforeEnter: validateAuthenticatedRoute },\n { name: 'login', path: '/login', component: AuthForm },\n { name: 'chat', path: '/chat', component: ChatPanel, props: () => ({ floating: false }) },\n { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n { name: 'about', path: '/about', component: About },\n { name: 'user-profile', path: '/(users/)?:name', component: UserProfile }\n ]\n}\n","import AuthForm from '../auth_form/auth_form.js'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport { mapState } from 'vuex'\n\nconst UserPanel = {\n computed: {\n signedIn () { return this.user },\n ...mapState({ user: state => state.users.currentUser })\n },\n components: {\n AuthForm,\n PostStatusForm,\n UserCard\n }\n}\n\nexport default UserPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./user_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d2d72c5e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"user-panel\"},[(_vm.signedIn)?_c('div',{key:\"user-panel\",staticClass:\"panel panel-default signed-in\"},[_c('UserCard',{attrs:{\"user-id\":_vm.user.id,\"hide-bio\":true,\"rounded\":\"top\"}}),_vm._v(\" \"),_c('PostStatusForm')],1):_c('auth-form',{key:\"user-panel\"})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { mapState } from 'vuex'\n\nconst NavPanel = {\n created () {\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n computed: mapState({\n currentUser: state => state.users.currentUser,\n chat: state => state.chat.channel,\n followRequestCount: state => state.api.followRequests.length,\n privateMode: state => state.instance.private,\n federating: state => state.instance.federating\n })\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-eb8eba66\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./nav_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"nav-panel\"},[_c('div',{staticClass:\"panel panel-default\"},[_c('ul',[(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friends' }}},[_c('i',{staticClass:\"button-icon icon-home-2\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timeline\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-mail-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'bookmarks'}}},[_c('i',{staticClass:\"button-icon icon-bookmark\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'friend-requests' }}},[_c('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge follow-request-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-timeline' }}},[_c('i',{staticClass:\"button-icon icon-users\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'public-external-timeline' }}},[_c('i',{staticClass:\"button-icon icon-globe\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('router-link',{attrs:{\"to\":{ name: 'about' }}},[_c('i',{staticClass:\"button-icon icon-info-circled\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")])],1)])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const SearchBar = {\n data: () => ({\n searchTerm: undefined,\n hidden: true,\n error: false,\n loading: false\n }),\n watch: {\n '$route': function (route) {\n if (route.name === 'search') {\n this.searchTerm = route.query.query\n }\n }\n },\n methods: {\n find (searchTerm) {\n this.$router.push({ name: 'search', query: { query: searchTerm } })\n this.$refs.searchInput.focus()\n },\n toggleHidden () {\n this.hidden = !this.hidden\n this.$emit('toggled', this.hidden)\n this.$nextTick(() => {\n if (!this.hidden) {\n this.$refs.searchInput.focus()\n }\n })\n }\n }\n}\n\nexport default SearchBar\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./search_bar.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./search_bar.js\"\nimport __vue_script__ from \"!!babel-loader!./search_bar.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-723d6cec\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./search_bar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"search-bar-container\"},[(_vm.loading)?_c('i',{staticClass:\"icon-spin4 finder-icon animate-spin-slow\"}):_vm._e(),_vm._v(\" \"),(_vm.hidden)?_c('a',{attrs:{\"href\":\"#\",\"title\":_vm.$t('nav.search')}},[_c('i',{staticClass:\"button-icon icon-search\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}})]):[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],ref:\"searchInput\",staticClass:\"search-bar-input\",attrs:{\"id\":\"search-bar-input\",\"placeholder\":_vm.$t('nav.search'),\"type\":\"text\"},domProps:{\"value\":(_vm.searchTerm)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.find(_vm.searchTerm)},\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn search-button\",on:{\"click\":function($event){return _vm.find(_vm.searchTerm)}}},[_c('i',{staticClass:\"icon-search\"})]),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.toggleHidden($event)}}})]],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import apiService from '../../services/api/api.service.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { shuffle } from 'lodash'\n\nfunction showWhoToFollow (panel, reply) {\n const shuffled = shuffle(reply)\n\n panel.usersToFollow.forEach((toFollow, index) => {\n let user = shuffled[index]\n let img = user.avatar || '/images/avi.png'\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: new Array(3).fill().map(x => (\n {\n img: '/images/avi.png',\n name: '',\n id: 0\n }\n ))\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 if (this.suggestionsEnabled) {\n getWhoToFollow(this)\n }\n }\n}\n\nexport default WhoToFollowPanel\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./who_to_follow_panel.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./who_to_follow_panel.js\"\nimport __vue_script__ from \"!!babel-loader!./who_to_follow_panel.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b4d31272\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./who_to_follow_panel.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"who-to-follow-panel\"},[_c('div',{staticClass:\"panel panel-default base01-background\"},[_c('div',{staticClass:\"panel-heading timeline-heading base02-background base04\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.who_to_follow'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"who-to-follow\"},[_vm._l((_vm.usersToFollow),function(user){return _c('p',{key:user.id,staticClass:\"who-to-follow-items\"},[_c('img',{attrs:{\"src\":user.img}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":_vm.userProfileLink(user.id, user.name)}},[_vm._v(\"\\n \"+_vm._s(user.name)+\"\\n \")]),_c('br')],1)}),_vm._v(\" \"),_c('p',{staticClass:\"who-to-follow-more\"},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('who_to_follow.more'))+\"\\n \")])],1)],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div\n v-show=\"isOpen\"\n v-body-scroll-lock=\"isOpen && !noBackground\"\n class=\"modal-view\"\n :class=\"classes\"\n @click.self=\"$emit('backdropClicked')\"\n >\n <slot />\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n isOpen: {\n type: Boolean,\n default: true\n },\n noBackground: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes () {\n return {\n 'modal-background': !this.noBackground,\n 'open': this.isOpen\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n pointer-events: none;\n animation-duration: 0.2s;\n animation-name: modal-background-fadein;\n opacity: 0;\n\n > * {\n pointer-events: initial;\n }\n\n &.modal-background {\n pointer-events: initial;\n background-color: rgba(0, 0, 0, 0.5);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgba(0, 0, 0, 0);\n }\n to {\n background-color: rgba(0, 0, 0, 0.5);\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./modal.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9413504\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isOpen),expression:\"isOpen\"},{name:\"body-scroll-lock\",rawName:\"v-body-scroll-lock\",value:(_vm.isOpen && !_vm.noBackground),expression:\"isOpen && !noBackground\"}],staticClass:\"modal-view\",class:_vm.classes,on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./panel_loading.vue\")\n}\n/* script */\nvar __vue_script__ = null\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-30e5dfc0\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./panel_loading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./async_component_error.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./async_component_error.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-147f6d2c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./async_component_error.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","import Vue from 'vue'\n\n/* By default async components don't have any way to recover, if component is\n * failed, it is failed forever. This helper tries to remedy that by recreating\n * async component when retry is requested (by user). You need to emit the\n * `resetAsyncComponent` event from child to reset the component. Generally,\n * this should be done from error component but could be done from loading or\n * actual target component itself if needs to be.\n */\nfunction getResettableAsyncComponent (asyncComponent, options) {\n const asyncComponentFactory = () => () => ({\n component: asyncComponent(),\n ...options\n })\n\n const observe = Vue.observable({ c: asyncComponentFactory() })\n\n return {\n functional: true,\n render (createElement, { data, children }) {\n // emit event resetAsyncComponent to reloading\n data.on = {}\n data.on.resetAsyncComponent = () => {\n observe.c = asyncComponentFactory()\n // parent.$forceUpdate()\n }\n return createElement(observe.c, data, children)\n }\n }\n}\n\nexport default getResettableAsyncComponent\n","import Modal from 'src/components/modal/modal.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport AsyncComponentError from 'src/components/async_component_error/async_component_error.vue'\nimport getResettableAsyncComponent from 'src/services/resettable_async_component.js'\n\nconst SettingsModal = {\n components: {\n Modal,\n SettingsModalContent: getResettableAsyncComponent(\n () => import('./settings_modal_content.vue'),\n {\n loading: PanelLoading,\n error: AsyncComponentError,\n delay: 0\n }\n )\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closeSettingsModal')\n },\n peekModal () {\n this.$store.dispatch('togglePeekSettingsModal')\n }\n },\n computed: {\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n modalActivated () {\n return this.$store.state.interface.settingsModalState !== 'hidden'\n },\n modalOpenedOnce () {\n return this.$store.state.interface.settingsModalLoaded\n },\n modalPeeked () {\n return this.$store.state.interface.settingsModalState === 'minimized'\n }\n }\n}\n\nexport default SettingsModal\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"panel-loading\"},[_c('span',{staticClass:\"loading-text\"},[_c('i',{staticClass:\"icon-spin4 animate-spin\"}),_vm._v(\"\\n \"+_vm._s(_vm.$t('general.loading'))+\"\\n \")])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"async-component-error\">\n <div>\n <h4>\n {{ $t('general.generic_error') }}\n </h4>\n <p>\n {{ $t('general.error_retry') }}\n </p>\n <button\n class=\"btn\"\n @click=\"retry\"\n >\n {{ $t('general.retry') }}\n </button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n methods: {\n retry () {\n this.$emit('resetAsyncComponent')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.async-component-error {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n .btn {\n margin: .5em;\n padding: .5em 2em;\n }\n}\n</style>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"async-component-error\"},[_c('div',[_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.generic_error'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.error_retry'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.retry}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.retry'))+\"\\n \")])])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!./settings_modal.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./settings_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./settings_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-720c870a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{staticClass:\"settings-modal\",class:{ peek: _vm.modalPeeked },attrs:{\"is-open\":_vm.modalActivated,\"no-background\":_vm.modalPeeked}},[_c('div',{staticClass:\"settings-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('span',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.settings'))+\"\\n \")]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.currentSaveStateNotice)?[(_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert error\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_err'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.currentSaveStateNotice.error)?_c('div',{staticClass:\"alert transparent\",on:{\"click\":function($event){$event.preventDefault();}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.saving_ok'))+\"\\n \")]):_vm._e()]:_vm._e()],2),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.peekModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.peek'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.closeModal}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.close'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[(_vm.modalOpenedOnce)?_c('SettingsModalContent'):_vm._e()],1)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchEventCoord = e => ([e.touches[0].screenX, e.touches[0].screenY])\n\nconst vectorLength = v => Math.sqrt(v[0] * v[0] + v[1] * v[1])\n\nconst perpendicular = v => [v[1], -v[0]]\n\nconst dotProduct = (v1, v2) => v1[0] * v2[0] + v1[1] * v2[1]\n\nconst project = (v1, v2) => {\n const scalar = (dotProduct(v1, v2) / dotProduct(v2, v2))\n return [scalar * v2[0], scalar * v2[1]]\n}\n\n// direction: either use the constants above or an arbitrary 2d vector.\n// threshold: how many Px to move from touch origin before checking if the\n// callback should be called.\n// divergentTolerance: a scalar for much of divergent direction we tolerate when\n// above threshold. for example, with 1.0 we only call the callback if\n// divergent component of delta is < 1.0 * direction component of delta.\nconst swipeGesture = (direction, onSwipe, threshold = 30, perpendicularTolerance = 1.0) => {\n return {\n direction,\n onSwipe,\n threshold,\n perpendicularTolerance,\n _startPos: [0, 0],\n _swiping: false\n }\n}\n\nconst beginSwipe = (event, gesture) => {\n gesture._startPos = touchEventCoord(event)\n gesture._swiping = true\n}\n\nconst updateSwipe = (event, gesture) => {\n if (!gesture._swiping) return\n // movement too small\n const delta = deltaCoord(gesture._startPos, touchEventCoord(event))\n if (vectorLength(delta) < gesture.threshold) return\n // movement is opposite from direction\n if (dotProduct(delta, gesture.direction) < 0) return\n // movement perpendicular to direction is too much\n const towardsDir = project(delta, gesture.direction)\n const perpendicularDir = perpendicular(gesture.direction)\n const towardsPerpendicular = project(delta, perpendicularDir)\n if (\n vectorLength(towardsDir) * gesture.perpendicularTolerance <\n vectorLength(towardsPerpendicular)\n ) return\n\n gesture.onSwipe()\n gesture._swiping = false\n}\n\nconst GestureService = {\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n DIRECTION_UP,\n DIRECTION_DOWN,\n swipeGesture,\n beginSwipe,\n updateSwipe\n}\n\nexport default GestureService\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport GestureService from '../../services/gesture_service/gesture_service'\n\nconst MediaModal = {\n components: {\n StillImage,\n VideoAttachment,\n Modal\n },\n computed: {\n showing () {\n return this.$store.state.mediaViewer.activated\n },\n media () {\n return this.$store.state.mediaViewer.media\n },\n currentIndex () {\n return this.$store.state.mediaViewer.currentIndex\n },\n currentMedia () {\n return this.media[this.currentIndex]\n },\n canNavigate () {\n return this.media.length > 1\n },\n type () {\n return this.currentMedia ? fileTypeService.fileType(this.currentMedia.mimetype) : null\n }\n },\n created () {\n this.mediaSwipeGestureRight = GestureService.swipeGesture(\n GestureService.DIRECTION_RIGHT,\n this.goPrev,\n 50\n )\n this.mediaSwipeGestureLeft = GestureService.swipeGesture(\n GestureService.DIRECTION_LEFT,\n this.goNext,\n 50\n )\n },\n methods: {\n mediaTouchStart (e) {\n GestureService.beginSwipe(e, this.mediaSwipeGestureRight)\n GestureService.beginSwipe(e, this.mediaSwipeGestureLeft)\n },\n mediaTouchMove (e) {\n GestureService.updateSwipe(e, this.mediaSwipeGestureRight)\n GestureService.updateSwipe(e, this.mediaSwipeGestureLeft)\n },\n hide () {\n this.$store.dispatch('closeMediaViewer')\n },\n goPrev () {\n if (this.canNavigate) {\n const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n this.$store.dispatch('setCurrent', this.media[prevIndex])\n }\n },\n goNext () {\n if (this.canNavigate) {\n const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n this.$store.dispatch('setCurrent', this.media[nextIndex])\n }\n },\n handleKeyupEvent (e) {\n if (this.showing && e.keyCode === 27) { // escape\n this.hide()\n }\n },\n handleKeydownEvent (e) {\n if (!this.showing) {\n return\n }\n\n if (e.keyCode === 39) { // arrow right\n this.goNext()\n } else if (e.keyCode === 37) { // arrow left\n this.goPrev()\n }\n }\n },\n mounted () {\n window.addEventListener('popstate', this.hide)\n document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n destroyed () {\n window.removeEventListener('popstate', this.hide)\n document.removeEventListener('keyup', this.handleKeyupEvent)\n document.removeEventListener('keydown', this.handleKeydownEvent)\n }\n}\n\nexport default MediaModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./media_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./media_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./media_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3fecfdc9\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./media_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showing)?_c('Modal',{staticClass:\"media-modal-view\",on:{\"backdropClicked\":_vm.hide}},[(_vm.type === 'image')?_c('img',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description},on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.mediaTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.mediaTouchMove($event)},\"click\":_vm.hide}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'video')?_c('VideoAttachment',{staticClass:\"modal-image\",attrs:{\"attachment\":_vm.currentMedia,\"controls\":true}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'audio')?_c('audio',{staticClass:\"modal-image\",attrs:{\"src\":_vm.currentMedia.url,\"alt\":_vm.currentMedia.description,\"title\":_vm.currentMedia.description,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--prev\",attrs:{\"title\":_vm.$t('media_modal.previous')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goPrev($event)}}},[_c('i',{staticClass:\"icon-left-open arrow-icon\"})]):_vm._e(),_vm._v(\" \"),(_vm.canNavigate)?_c('button',{staticClass:\"modal-view-button-arrow modal-view-button-arrow--next\",attrs:{\"title\":_vm.$t('media_modal.next')},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.goNext($event)}}},[_c('i',{staticClass:\"icon-right-open arrow-icon\"})]):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\n\nconst SideDrawer = {\n props: [ 'logout' ],\n data: () => ({\n closed: true,\n closeGesture: undefined\n }),\n created () {\n this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n if (this.currentUser && this.currentUser.locked) {\n this.$store.dispatch('startFetchingFollowRequests')\n }\n },\n components: { UserCard },\n computed: {\n currentUser () {\n return this.$store.state.users.currentUser\n },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n unseenNotificationsCount () {\n return this.unseenNotifications.length\n },\n suggestionsEnabled () {\n return this.$store.state.instance.suggestionsEnabled\n },\n logo () {\n return this.$store.state.instance.logo\n },\n hideSitename () {\n return this.$store.state.instance.hideSitename\n },\n sitename () {\n return this.$store.state.instance.name\n },\n followRequestCount () {\n return this.$store.state.api.followRequests.length\n },\n privateMode () {\n return this.$store.state.instance.private\n },\n federating () {\n return this.$store.state.instance.federating\n }\n },\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-bf77e414\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./side_drawer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"side-drawer-container\",class:{ 'side-drawer-container-closed': _vm.closed, 'side-drawer-container-open': !_vm.closed }},[_c('div',{staticClass:\"side-drawer-darken\",class:{ 'side-drawer-darken-closed': _vm.closed}}),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer\",class:{'side-drawer-closed': _vm.closed},on:{\"touchstart\":_vm.touchStart,\"touchmove\":_vm.touchMove}},[_c('div',{staticClass:\"side-drawer-heading\",on:{\"click\":_vm.toggleDrawer}},[(_vm.currentUser)?_c('UserCard',{attrs:{\"user-id\":_vm.currentUser.id,\"hide-bio\":true}}):_c('div',{staticClass:\"side-drawer-logo-wrapper\"},[_c('img',{attrs:{\"src\":_vm.logo}}),_vm._v(\" \"),(!_vm.hideSitename)?_c('span',[_vm._v(_vm._s(_vm.sitename))]):_vm._e()])],1),_vm._v(\" \"),_c('ul',[(!_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'login' }}},[_c('i',{staticClass:\"button-icon icon-login\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.login\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'dms', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-mail-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.dms\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'interactions', params: { username: _vm.currentUser.screen_name } }}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.interactions\"))+\"\\n \")])],1):_vm._e()]),_vm._v(\" \"),_c('ul',[(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'friends' }}},[_c('i',{staticClass:\"button-icon icon-home-2\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.timeline\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'bookmarks'}}},[_c('i',{staticClass:\"button-icon icon-bookmark\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.bookmarks\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.locked)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/friend-requests\"}},[_c('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.friend_requests\"))+\"\\n \"),(_vm.followRequestCount > 0)?_c('span',{staticClass:\"badge follow-request-count\"},[_vm._v(\"\\n \"+_vm._s(_vm.followRequestCount)+\"\\n \")]):_vm._e()])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/main/public\"}},[_c('i',{staticClass:\"button-icon icon-users\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.public_tl\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.federating && (_vm.currentUser || !_vm.privateMode))?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":\"/main/all\"}},[_c('i',{staticClass:\"button-icon icon-globe\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.twkn\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.chat)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'chat' }}},[_c('i',{staticClass:\"button-icon icon-chat\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.chat\"))+\"\\n \")])],1):_vm._e()]),_vm._v(\" \"),_c('ul',[(_vm.currentUser || !_vm.privateMode)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'search' }}},[_c('i',{staticClass:\"button-icon icon-search\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.search\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),(_vm.currentUser && _vm.suggestionsEnabled)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'who-to-follow' }}},[_c('i',{staticClass:\"button-icon icon-user-plus\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.who_to_follow\"))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.openSettingsModal}},[_c('i',{staticClass:\"button-icon icon-cog\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n \")])]),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('i',{staticClass:\"button-icon icon-info-circled\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.about\"))+\"\\n \")])],1),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"button-icon icon-gauge\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"nav.administration\"))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.doLogout}},[_c('i',{staticClass:\"button-icon icon-logout\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"login.logout\"))+\"\\n \")])]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"side-drawer-click-outside\",class:{'side-drawer-click-outside-closed': _vm.closed},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleDrawer($event)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { debounce } from 'lodash'\n\nconst 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 return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n },\n autohideFloatingPostButton () {\n return !!this.$store.getters.mergedConfig.autohideFloatingPostButton\n }\n },\n watch: {\n autohideFloatingPostButton: function (isEnabled) {\n if (isEnabled) {\n this.activateFloatingPostButtonAutohide()\n } else {\n this.deactivateFloatingPostButtonAutohide()\n }\n }\n },\n methods: {\n activateFloatingPostButtonAutohide () {\n window.addEventListener('scroll', this.handleScrollStart)\n window.addEventListener('scroll', this.handleScrollEnd)\n },\n deactivateFloatingPostButtonAutohide () {\n window.removeEventListener('scroll', this.handleScrollStart)\n window.removeEventListener('scroll', this.handleScrollEnd)\n },\n openPostForm () {\n this.$store.dispatch('openPostStatusModal')\n },\n handleOSK () {\n // This is a big hack: we're guessing from changed window sizes if the\n // on-screen keyboard is active or not. This is only really important\n // for phones in portrait mode and it's more important to show the button\n // in normal scenarios on all phones, than it is to hide it when the\n // keyboard is active.\n // Guesswork based on https://www.mydevice.io/#compare-devices\n\n // for example, iphone 4 and android phones from the same time period\n const smallPhone = window.innerWidth < 350\n const smallPhoneKbOpen = smallPhone && window.innerHeight < 345\n\n const biggerPhone = !smallPhone && window.innerWidth < 450\n const biggerPhoneKbOpen = biggerPhone && window.innerHeight < 560\n if (smallPhoneKbOpen || biggerPhoneKbOpen) {\n this.inputActive = true\n } else {\n this.inputActive = false\n }\n },\n handleScrollStart: debounce(function () {\n if (window.scrollY > this.oldScrollPos) {\n this.hidden = true\n } else {\n this.hidden = false\n }\n this.oldScrollPos = window.scrollY\n }, 100, { leading: true, trailing: false }),\n\n handleScrollEnd: debounce(function () {\n this.hidden = false\n this.oldScrollPos = window.scrollY\n }, 100, { leading: false, trailing: true })\n }\n}\n\nexport default MobilePostStatusButton\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mobile_post_status_button.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mobile_post_status_button.js\"\nimport __vue_script__ from \"!!babel-loader!./mobile_post_status_button.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-336b066e\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_post_status_button.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn)?_c('div',[_c('button',{staticClass:\"new-status-button\",class:{ 'hidden': _vm.isHidden },on:{\"click\":_vm.openPostForm}},[_c('i',{staticClass:\"icon-edit\"})])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\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 },\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 (this.$store.getters.mergedConfig.autoLoad && 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-3bf546b2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mobile_nav.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('nav',{staticClass:\"nav-bar container\",attrs:{\"id\":\"nav\"}},[_c('div',{staticClass:\"mobile-inner-nav\",on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"item\"},[_c('a',{staticClass:\"mobile-nav-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.toggleMobileSidebar()}}},[_c('i',{staticClass:\"button-icon icon-menu\"})]),_vm._v(\" \"),(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"item right\"},[(_vm.currentUser)?_c('a',{staticClass:\"mobile-nav-button\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openMobileNotifications()}}},[_c('i',{staticClass:\"button-icon icon-bell-alt\"}),_vm._v(\" \"),(_vm.unseenNotificationsCount)?_c('div',{staticClass:\"alert-dot\"}):_vm._e()]):_vm._e()])])]),_vm._v(\" \"),(_vm.currentUser)?_c('div',{staticClass:\"mobile-notifications-drawer\",class:{ 'closed': !_vm.notificationsOpen },on:{\"touchstart\":function($event){$event.stopPropagation();return _vm.notificationsTouchStart($event)},\"touchmove\":function($event){$event.stopPropagation();return _vm.notificationsTouchMove($event)}}},[_c('div',{staticClass:\"mobile-notifications-header\"},[_c('span',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.$t('notifications.notifications')))]),_vm._v(\" \"),_c('a',{staticClass:\"mobile-nav-button\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.closeMobileNotifications()}}},[_c('i',{staticClass:\"button-icon icon-cancel\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"mobile-notifications\",on:{\"scroll\":_vm.onScroll}},[_c('Notifications',{ref:\"notifications\",attrs:{\"no-heading\":true}})],1)]):_vm._e(),_vm._v(\" \"),_c('SideDrawer',{ref:\"sideDrawer\",attrs:{\"logout\":_vm.logout}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nimport Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\n\nconst UserReportingModal = {\n components: {\n Status,\n List,\n Checkbox,\n Modal\n },\n data () {\n return {\n comment: '',\n forward: false,\n statusIdsToReport: [],\n processing: false,\n error: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n isOpen () {\n return this.isLoggedIn && this.$store.state.reports.modalActivated\n },\n userId () {\n return this.$store.state.reports.userId\n },\n user () {\n return this.$store.getters.findUser(this.userId)\n },\n remoteInstance () {\n return !this.user.is_local && this.user.screen_name.substr(this.user.screen_name.indexOf('@') + 1)\n },\n statuses () {\n return this.$store.state.reports.statuses\n }\n },\n watch: {\n userId: 'resetState'\n },\n methods: {\n resetState () {\n // Reset state\n this.comment = ''\n this.forward = false\n this.statusIdsToReport = []\n this.processing = false\n this.error = false\n },\n closeModal () {\n this.$store.dispatch('closeUserReportingModal')\n },\n reportUser () {\n this.processing = true\n this.error = false\n const params = {\n userId: this.userId,\n comment: this.comment,\n forward: this.forward,\n statusIds: this.statusIdsToReport\n }\n this.$store.state.api.backendInteractor.reportUser({ ...params })\n .then(() => {\n this.processing = false\n this.resetState()\n this.closeModal()\n })\n .catch(() => {\n this.processing = false\n this.error = true\n })\n },\n clearError () {\n this.error = false\n },\n isChecked (statusId) {\n return this.statusIdsToReport.indexOf(statusId) !== -1\n },\n toggleStatus (checked, statusId) {\n if (checked === this.isChecked(statusId)) {\n return\n }\n\n if (checked) {\n this.statusIdsToReport.push(statusId)\n } else {\n this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n }\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n // Auto is needed to make textbox shrink when removing lines\n target.style.height = 'auto'\n target.style.height = `${target.scrollHeight}px`\n if (target.value === '') {\n target.style.height = null\n }\n }\n }\n}\n\nexport default UserReportingModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./user_reporting_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_reporting_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./user_reporting_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21174d5d\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_reporting_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isOpen)?_c('Modal',{on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"user-reporting-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.title', [_vm.user.screen_name]))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('div',{staticClass:\"user-reporting-panel-left\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.add_comment_description')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.comment),expression:\"comment\"}],staticClass:\"form-control\",attrs:{\"placeholder\":_vm.$t('user_reporting.additional_comments'),\"rows\":\"1\"},domProps:{\"value\":(_vm.comment)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.comment=$event.target.value},_vm.resize]}})]),_vm._v(\" \"),(!_vm.user.is_local)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('user_reporting.forward_description')))]),_vm._v(\" \"),_c('Checkbox',{model:{value:(_vm.forward),callback:function ($$v) {_vm.forward=$$v},expression:\"forward\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.forward_to', [_vm.remoteInstance]))+\"\\n \")])],1):_vm._e(),_vm._v(\" \"),_c('div',[_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.processing},on:{\"click\":_vm.reportUser}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_reporting.generic_error'))+\"\\n \")]):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"user-reporting-panel-right\"},[_c('List',{attrs:{\"items\":_vm.statuses},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"status-fadein user-reporting-panel-sitem\"},[_c('Status',{attrs:{\"in-conversation\":false,\"focused\":false,\"statusoid\":item}}),_vm._v(\" \"),_c('Checkbox',{attrs:{\"checked\":_vm.isChecked(item.id)},on:{\"change\":function (checked) { return _vm.toggleStatus(checked, item.id); }}})],1)]}}],null,false,2514683306)})],1)])])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport get from 'lodash/get'\n\nconst PostStatusModal = {\n components: {\n PostStatusForm,\n Modal\n },\n data () {\n return {\n resettingForm: false\n }\n },\n computed: {\n isLoggedIn () {\n return !!this.$store.state.users.currentUser\n },\n modalActivated () {\n return this.$store.state.postStatus.modalActivated\n },\n isFormVisible () {\n return this.isLoggedIn && !this.resettingForm && this.modalActivated\n },\n params () {\n return this.$store.state.postStatus.params || {}\n }\n },\n watch: {\n params (newVal, oldVal) {\n if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {\n this.resettingForm = true\n this.$nextTick(() => {\n this.resettingForm = false\n })\n }\n },\n isFormVisible (val) {\n if (val) {\n this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())\n }\n }\n },\n methods: {\n closeModal () {\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./post_status_modal.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./post_status_modal.js\"\nimport __vue_script__ from \"!!babel-loader!./post_status_modal.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b6b8d3a2\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./post_status_modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isLoggedIn && !_vm.resettingForm)?_c('Modal',{staticClass:\"post-form-modal-view\",attrs:{\"is-open\":_vm.modalActivated},on:{\"backdropClicked\":_vm.closeModal}},[_c('div',{staticClass:\"post-form-modal-panel panel\"},[_c('div',{staticClass:\"panel-heading\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('post_status.new_status'))+\"\\n \")]),_vm._v(\" \"),_c('PostStatusForm',_vm._b({staticClass:\"panel-body\",on:{\"posted\":_vm.closeModal}},'PostStatusForm',_vm.params,false))],1)]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nconst GlobalNoticeList = {\n computed: {\n notices () {\n return this.$store.state.interface.globalNotices\n }\n },\n methods: {\n closeNotice (notice) {\n this.$store.dispatch('removeGlobalNotice', notice)\n }\n }\n}\n\nexport default GlobalNoticeList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./global_notice_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./global_notice_list.js\"\nimport __vue_script__ from \"!!babel-loader!./global_notice_list.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3e1bec88\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./global_notice_list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"global-notice-list\"},_vm._l((_vm.notices),function(notice,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"alert global-notice\",class:( _obj = {}, _obj['global-' + notice.level] = true, _obj )},[_c('div',{staticClass:\"notice-message\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t(notice.messageKey, notice.messageArgs))+\"\\n \")]),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){return _vm.closeNotice(notice)}}})])}),0)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","\nexport const windowWidth = () =>\n window.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth\n","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport Notifications from './components/notifications/notifications.vue'\nimport SearchBar from './components/search_bar/search_bar.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ChatPanel from './components/chat_panel/chat_panel.vue'\nimport SettingsModal from './components/settings_modal/settings_modal.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth } from './services/window_utils/window_utils'\n\nexport default {\n name: 'app',\n components: {\n UserPanel,\n NavPanel,\n Notifications,\n SearchBar,\n InstanceSpecificPanel,\n FeaturesPanel,\n WhoToFollowPanel,\n ChatPanel,\n MediaModal,\n SideDrawer,\n MobilePostStatusButton,\n MobileNav,\n SettingsModal,\n UserReportingModal,\n PostStatusModal,\n GlobalNoticeList\n },\n data: () => ({\n mobileActivePanel: 'timeline',\n searchBarHidden: true,\n supportsMask: window.CSS && window.CSS.supports && (\n window.CSS.supports('mask-size', 'contain') ||\n window.CSS.supports('-webkit-mask-size', 'contain') ||\n window.CSS.supports('-moz-mask-size', 'contain') ||\n window.CSS.supports('-ms-mask-size', 'contain') ||\n window.CSS.supports('-o-mask-size', 'contain')\n )\n }),\n created () {\n // Load the locale from the storage\n const val = this.$store.getters.mergedConfig.interfaceLanguage\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n window.addEventListener('resize', this.updateMobileState)\n },\n destroyed () {\n window.removeEventListener('resize', this.updateMobileState)\n },\n computed: {\n currentUser () { return this.$store.state.users.currentUser },\n background () {\n return this.currentUser.background_image || this.$store.state.instance.background\n },\n enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n logoStyle () {\n return {\n 'visibility': this.enableMask ? 'hidden' : 'visible'\n }\n },\n logoMaskStyle () {\n return this.enableMask ? {\n 'mask-image': `url(${this.$store.state.instance.logo})`\n } : {\n 'background-color': this.enableMask ? '' : 'transparent'\n }\n },\n logoBgStyle () {\n return Object.assign({\n 'margin': `${this.$store.state.instance.logoMargin} 0`,\n opacity: this.searchBarHidden ? 1 : 0\n }, this.enableMask ? {} : {\n 'background-color': this.enableMask ? '' : 'transparent'\n })\n },\n logo () { return this.$store.state.instance.logo },\n bgStyle () {\n return {\n 'background-image': `url(${this.background})`\n }\n },\n bgAppStyle () {\n return {\n '--body-background-image': `url(${this.background})`\n }\n },\n sitename () { return this.$store.state.instance.name },\n chat () { return this.$store.state.chat.channel.state === 'joined' },\n hideSitename () { return this.$store.state.instance.hideSitename },\n suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n showInstanceSpecificPanel () {\n return this.$store.state.instance.showInstanceSpecificPanel &&\n !this.$store.getters.mergedConfig.hideISP &&\n this.$store.state.instance.instanceSpecificPanelContent\n },\n showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n isMobileLayout () { return this.$store.state.interface.mobileLayout },\n privateMode () { return this.$store.state.instance.private },\n sidebarAlign () {\n return {\n 'order': this.$store.state.instance.sidebarRight ? 99 : 0\n }\n }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n logout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal')\n },\n updateMobileState () {\n const mobileLayout = windowWidth() <= 800\n const changed = mobileLayout !== this.isMobileLayout\n if (changed) {\n this.$store.dispatch('setMobileLayout', mobileLayout)\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!./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-238bb160\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.bgAppStyle),attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"app-bg-wrapper\",style:(_vm.bgStyle),attrs:{\"id\":\"app_bg_wrapper\"}}),_vm._v(\" \"),(_vm.isMobileLayout)?_c('MobileNav'):_c('nav',{staticClass:\"nav-bar container\",attrs:{\"id\":\"nav\"},on:{\"click\":function($event){return _vm.scrollToTop()}}},[_c('div',{staticClass:\"inner-nav\"},[_c('div',{staticClass:\"logo\",style:(_vm.logoBgStyle)},[_c('div',{staticClass:\"mask\",style:(_vm.logoMaskStyle)}),_vm._v(\" \"),_c('img',{style:(_vm.logoStyle),attrs:{\"src\":_vm.logo}})]),_vm._v(\" \"),_c('div',{staticClass:\"item\"},[(!_vm.hideSitename)?_c('router-link',{staticClass:\"site-name\",attrs:{\"to\":{ name: 'root' },\"active-class\":\"home\"}},[_vm._v(\"\\n \"+_vm._s(_vm.sitename)+\"\\n \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"item right\"},[(_vm.currentUser || !_vm.privateMode)?_c('search-bar',{staticClass:\"nav-icon mobile-hidden\",on:{\"toggled\":_vm.onSearchBarToggled},nativeOn:{\"click\":function($event){$event.stopPropagation();}}}):_vm._e(),_vm._v(\" \"),_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.openSettingsModal($event)}}},[_c('i',{staticClass:\"button-icon icon-cog nav-icon\",attrs:{\"title\":_vm.$t('nav.preferences')}})]),_vm._v(\" \"),(_vm.currentUser && _vm.currentUser.role === 'admin')?_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"/pleroma/admin/#/login-pleroma\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"button-icon icon-gauge nav-icon\",attrs:{\"title\":_vm.$t('nav.administration')}})]):_vm._e(),_vm._v(\" \"),(_vm.currentUser)?_c('a',{staticClass:\"mobile-hidden\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.logout($event)}}},[_c('i',{staticClass:\"button-icon icon-logout nav-icon\",attrs:{\"title\":_vm.$t('login.logout')}})]):_vm._e()],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"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('transition',{attrs:{\"name\":\"fade\"}},[_c('router-view')],1)],1),_vm._v(\" \"),_c('media-modal')],1),_vm._v(\" \"),(_vm.currentUser && _vm.chat)?_c('chat-panel',{staticClass:\"floating-chat mobile-hidden\",attrs:{\"floating\":true}}):_vm._e(),_vm._v(\" \"),_c('MobilePostStatusButton'),_vm._v(\" \"),_c('UserReportingModal'),_vm._v(\" \"),_c('PostStatusModal'),_vm._v(\" \"),_c('SettingsModal'),_vm._v(\" \"),_c('portal-target',{attrs:{\"name\":\"modal\"}}),_vm._v(\" \"),_c('GlobalNoticeList')],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport routes from './routes'\nimport App from '../App.vue'\nimport { windowWidth } from '../services/window_utils/window_utils'\nimport { getOrCreateApp, getClientToken } from '../services/new_api/oauth.js'\nimport backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport { applyTheme } from '../services/style_setter/style_setter.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n if (!document.getElementById('initial-results')) {\n return null\n }\n if (!staticInitialResults) {\n staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n }\n return staticInitialResults\n}\n\nconst preloadFetch = async (request) => {\n const data = parsedInitialResults()\n if (!data || !data[request]) {\n return window.fetch(request)\n }\n const requestData = JSON.parse(atob(data[request]))\n return {\n ok: true,\n json: () => requestData,\n text: () => requestData\n }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n try {\n const res = await preloadFetch('/api/v1/instance')\n if (res.ok) {\n const data = await res.json()\n const textlimit = data.max_toot_chars\n const vapidPublicKey = data.pleroma.vapid_public_key\n\n store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load instance config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/pleroma/frontend_configurations')\n if (res.ok) {\n const data = await res.json()\n return data.pleroma_fe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load backend-provided frontend config, potentially fatal')\n console.error(error)\n }\n}\n\nconst getStaticConfig = async () => {\n try {\n const res = await window.fetch('/static/config.json')\n if (res.ok) {\n return res.json()\n } else {\n throw (res)\n }\n } catch (error) {\n console.warn('Failed to load static/config.json, continuing without it.')\n console.warn(error)\n return {}\n }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n const overrides = window.___pleromafe_dev_overrides || {}\n const env = window.___pleromafe_mode.NODE_ENV\n\n // This takes static config and overrides properties that are present in apiConfig\n let config = {}\n if (overrides.staticConfigPreference && env === 'development') {\n console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n config = Object.assign({}, apiConfig, staticConfig)\n } else {\n config = Object.assign({}, staticConfig, apiConfig)\n }\n\n const copyInstanceOption = (name) => {\n store.dispatch('setInstanceOption', { name, value: config[name] })\n }\n\n copyInstanceOption('nsfwCensorImage')\n copyInstanceOption('background')\n copyInstanceOption('hidePostStats')\n copyInstanceOption('hideUserStats')\n copyInstanceOption('hideFilteredStatuses')\n copyInstanceOption('logo')\n\n store.dispatch('setInstanceOption', {\n name: 'logoMask',\n value: typeof config.logoMask === 'undefined'\n ? true\n : config.logoMask\n })\n\n store.dispatch('setInstanceOption', {\n name: 'logoMargin',\n value: typeof config.logoMargin === 'undefined'\n ? 0\n : config.logoMargin\n })\n store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n copyInstanceOption('redirectRootNoLogin')\n copyInstanceOption('redirectRootLogin')\n copyInstanceOption('showInstanceSpecificPanel')\n copyInstanceOption('minimalScopesMode')\n copyInstanceOption('hideMutedPosts')\n copyInstanceOption('collapseMessageWithSubject')\n copyInstanceOption('scopeCopy')\n copyInstanceOption('subjectLineBehavior')\n copyInstanceOption('postContentType')\n copyInstanceOption('alwaysShowSubjectInput')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\n copyInstanceOption('sidebarRight')\n\n return store.dispatch('setTheme', config['theme'])\n}\n\nconst getTOS = async ({ store }) => {\n try {\n const res = await window.fetch('/static/terms-of-service.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'tos', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load TOS\")\n console.warn(e)\n }\n}\n\nconst getInstancePanel = async ({ store }) => {\n try {\n const res = await preloadFetch('/instance/panel.html')\n if (res.ok) {\n const html = await res.text()\n store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load instance panel\")\n console.warn(e)\n }\n}\n\nconst getStickers = async ({ store }) => {\n try {\n const res = await window.fetch('/static/stickers.json')\n if (res.ok) {\n const values = await res.json()\n const stickers = (await Promise.all(\n Object.entries(values).map(async ([name, path]) => {\n const resPack = await window.fetch(path + 'pack.json')\n var meta = {}\n if (resPack.ok) {\n meta = await resPack.json()\n }\n return {\n pack: name,\n path,\n meta\n }\n })\n )).sort((a, b) => {\n return a.meta.title.localeCompare(b.meta.title)\n })\n store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn(\"Can't load stickers\")\n console.warn(e)\n }\n}\n\nconst getAppSecret = async ({ store }) => {\n const { state, commit } = store\n const { oauth, instance } = state\n return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n .then((app) => getClientToken({ ...app, instance: instance.server }))\n .then((token) => {\n commit('setAppToken', token.access_token)\n commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n const nicknames = accounts.map(uri => uri.split('/').pop())\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await preloadFetch('/nodeinfo/2.0.json')\n if (res.ok) {\n const data = await res.json()\n const metadata = data.metadata\n const features = metadata.features\n store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n store.dispatch('setInstanceOption', { name: 'chatAvailable', value: features.includes('chat') })\n store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n const uploadLimits = metadata.uploadLimits\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n const suggestions = metadata.suggestions\n store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n const software = data.software\n store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n const priv = metadata.private\n store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n const frontendVersion = window.___pleromafe_commit_hash\n store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n const federation = metadata.federation\n\n store.dispatch('setInstanceOption', {\n name: 'tagPolicyAvailable',\n value: typeof federation.mrf_policies === 'undefined'\n ? false\n : metadata.federation.mrf_policies.includes('TagPolicy')\n })\n\n store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n store.dispatch('setInstanceOption', {\n name: 'federating',\n value: typeof federation.enabled === 'undefined'\n ? true\n : federation.enabled\n })\n\n const accountActivationRequired = metadata.accountActivationRequired\n store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n const accounts = metadata.staffAccounts\n resolveStaffAccounts({ store, accounts })\n } else {\n throw (res)\n }\n } catch (e) {\n console.warn('Could not load nodeinfo')\n console.warn(e)\n }\n}\n\nconst setConfig = async ({ store }) => {\n // apiConfig, staticConfig\n const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n const apiConfig = configInfos[0]\n const staticConfig = configInfos[1]\n\n await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n return new Promise(async (resolve, reject) => {\n if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n resolve()\n })\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n const width = windowWidth()\n store.dispatch('setMobileLayout', width <= 800)\n\n const overrides = window.___pleromafe_dev_overrides || {}\n const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n await setConfig({ store })\n\n const { customTheme, customThemeSource } = store.state.config\n const { theme } = store.state.instance\n const customThemePresent = customThemeSource || customTheme\n\n if (customThemePresent) {\n if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n applyTheme(customThemeSource)\n } else {\n applyTheme(customTheme)\n }\n } else if (theme) {\n // do nothing, it will load asynchronously\n } else {\n console.error('Failed to load any theme!')\n }\n\n // Now we can try getting the server settings and logging in\n // Most of these are preloaded into the index.html so blocking is minimized\n await Promise.all([\n checkOAuthToken({ store }),\n getInstancePanel({ store }),\n getNodeInfo({ store }),\n getInstanceConfig({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\n getTOS({ store })\n getStickers({ store })\n\n const router = new VueRouter({\n mode: 'history',\n routes: routes(store),\n scrollBehavior: (to, _from, savedPosition) => {\n if (to.matched.some(m => m.meta.dontScroll)) {\n return false\n }\n return savedPosition || { x: 0, y: 0 }\n }\n })\n\n /* eslint-disable no-new */\n return new Vue({\n router,\n store,\n i18n,\n el: '#app',\n render: h => h(App)\n })\n}\n\nexport default afterStoreSetup\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport Vuex from 'vuex'\n\nimport 'custom-event-polyfill'\nimport './lib/event_target_polyfill.js'\n\nimport interfaceModule from './modules/interface.js'\nimport instanceModule from './modules/instance.js'\nimport statusesModule from './modules/statuses.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport chatModule from './modules/chat.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\n\nimport VueI18n from 'vue-i18n'\n\nimport createPersistedState from './lib/persisted_state.js'\nimport pushNotifications from './lib/push_notifications_plugin.js'\n\nimport messages from './i18n/messages.js'\n\nimport VueChatScroll from 'vue-chat-scroll'\nimport VueClickOutside from 'v-click-outside'\nimport PortalVue from 'portal-vue'\nimport VBodyScrollLock from './directives/body_scroll_lock'\n\nimport afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nVue.use(Vuex)\nVue.use(VueRouter)\nVue.use(VueI18n)\nVue.use(VueChatScroll)\nVue.use(VueClickOutside)\nVue.use(PortalVue)\nVue.use(VBodyScrollLock)\n\nconst i18n = new VueI18n({\n // By default, use the browser locale, we will update it if neccessary\n locale: 'en',\n fallbackLocale: 'en',\n messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n paths: [\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n let storageError = false\n const plugins = [pushNotifications]\n try {\n const persistedState = await createPersistedState(persistedStateOptions)\n plugins.push(persistedState)\n } catch (e) {\n console.error(e)\n storageError = true\n }\n const store = new Vuex.Store({\n modules: {\n i18n: {\n getters: {\n i18n: () => i18n\n }\n },\n interface: interfaceModule,\n instance: instanceModule,\n statuses: statusesModule,\n users: usersModule,\n api: apiModule,\n config: configModule,\n chat: chatModule,\n oauth: oauthModule,\n authFlow: authFlowModule,\n mediaViewer: mediaViewerModule,\n oauthTokens: oauthTokensModule,\n reports: reportsModule,\n polls: pollsModule,\n postStatus: postStatusModule\n },\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":""}