akkoma/priv/static/static/js/app.996428ccaaaa7f28cb8d.js...

1 line
1.6 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/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue","webpack:///./src/components/checkbox/checkbox.vue?d842","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?772b","webpack:///./src/components/user_card/user_card.js","webpack:///./src/components/user_card/user_card.vue","webpack:///./src/components/user_card/user_card.vue?b2e3","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/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?221f","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/attachment/attachment.js","webpack:///./src/components/attachment/attachment.vue","webpack:///./src/components/attachment/attachment.vue?d008","webpack:///./src/components/poll/poll.js","webpack:///./src/components/poll/poll.vue","webpack:///./src/components/poll/poll.vue?8a30","webpack:///./src/components/gallery/gallery.js","webpack:///./src/components/gallery/gallery.vue","webpack:///./src/components/gallery/gallery.vue?7739","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?9a7e","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?57a7","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/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue","webpack:///./src/components/progress_button/progress_button.vue?6be4","webpack:///./src/services/user_highlighter/user_highlighter.js","webpack:///./src/components/tab_switcher/tab_switcher.js","webpack:///./src/components/media_upload/media_upload.js","webpack:///./src/components/media_upload/media_upload.vue","webpack:///./src/components/media_upload/media_upload.vue?fd49","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?29d8","webpack:///./src/components/still-image/still-image.js","webpack:///./src/components/still-image/still-image.vue","webpack:///./src/components/still-image/still-image.vue?cd25","webpack:///src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue","webpack:///./src/components/timeago/timeago.vue?d70d","webpack:///./src/services/file_size_format/file_size_format.js","webpack:///./src/components/emoji_input/suggestor.js","webpack:///./src/services/status_poster/status_poster.service.js","webpack:///./src/services/offset_finder/offset_finder.service.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/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/scope_selector/scope_selector.js","webpack:///./src/components/scope_selector/scope_selector.vue","webpack:///./src/components/scope_selector/scope_selector.vue?4ef5","webpack:///./src/components/video_attachment/video_attachment.js","webpack:///./src/components/video_attachment/video_attachment.vue","webpack:///./src/components/video_attachment/video_attachment.vue?695e","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/assets/nsfw.png","webpack:///./src/components/timeline/timeline.vue?6b2a","webpack:///./src/components/timeline/timeline.vue?649d","webpack:///./src/components/status/status.vue?3573","webpack:///./src/components/status/status.vue?231a","webpack:///./src/components/favorite_button/favorite_button.vue?104f","webpack:///./src/components/favorite_button/favorite_button.vue?01c6","webpack:///./src/components/react_button/react_button.vue?8e62","webpack:///./src/components/react_button/react_button.vue?9d40","webpack:///./src/components/popover/popover.vue?d6c6","webpack:///./src/components/popover/popover.vue?899d","webpack:///./src/components/retweet_button/retweet_button.vue?4d28","webpack:///./src/components/retweet_button/retweet_button.vue?7e50","webpack:///./src/components/extra_buttons/extra_buttons.vue?da48","webpack:///./src/components/extra_buttons/extra_buttons.vue?f9c2","webpack:///./src/components/post_status_form/post_status_form.vue?31d2","webpack:///./src/components/post_status_form/post_status_form.vue?3f10","webpack:///./src/components/media_upload/media_upload.vue?8fbd","webpack:///./src/components/media_upload/media_upload.vue?f9a9","webpack:///./src/components/scope_selector/scope_selector.vue?2b19","webpack:///./src/components/scope_selector/scope_selector.vue?5a89","webpack:///./src/components/emoji_input/emoji_input.vue?8348","webpack:///./src/components/emoji_input/emoji_input.vue?0b17","webpack:///./src/components/emoji_picker/emoji_picker.scss?b617","webpack:///./src/components/emoji_picker/emoji_picker.scss","webpack:///./src/components/checkbox/checkbox.vue?939f","webpack:///./src/components/checkbox/checkbox.vue?bf51","webpack:///./src/components/poll/poll_form.vue?5af4","webpack:///./src/components/poll/poll_form.vue?a909","webpack:///./src/components/user_card/user_card.vue?ef5a","webpack:///./src/components/user_card/user_card.vue?3d8b","webpack:///./src/components/user_avatar/user_avatar.vue?fcc3","webpack:///./src/components/user_avatar/user_avatar.vue?b7f8","webpack:///./src/components/still-image/still-image.vue?3a0a","webpack:///./src/components/still-image/still-image.vue?8794","webpack:///./src/components/remote_follow/remote_follow.vue?c01b","webpack:///./src/components/remote_follow/remote_follow.vue?89fc","webpack:///./src/components/moderation_tools/moderation_tools.vue?e635","webpack:///./src/components/moderation_tools/moderation_tools.vue?1a7f","webpack:///./src/components/dialog_modal/dialog_modal.vue?cdb4","webpack:///./src/components/dialog_modal/dialog_modal.vue?ec71","webpack:///./src/components/account_actions/account_actions.vue?d756","webpack:///./src/components/account_actions/account_actions.vue?69c2","webpack:///./src/components/avatar_list/avatar_list.vue?1a06","webpack:///./src/components/avatar_list/avatar_list.vue?90fa","webpack:///./src/components/status_content/status_content.vue?3052","webpack:///./src/components/status_content/status_content.vue?0c62","webpack:///./src/components/attachment/attachment.vue?57c7","webpack:///./src/components/attachment/attachment.vue?82b4","webpack:///./src/components/poll/poll.vue?22ff","webpack:///./src/components/poll/poll.vue?ddc7","webpack:///./src/components/gallery/gallery.vue?05c9","webpack:///./src/components/gallery/gallery.vue?943c","webpack:///./src/components/link-preview/link-preview.vue?d8b4","webpack:///./src/components/link-preview/link-preview.vue?1f45","webpack:///./src/components/status_popover/status_popover.vue?01dc","webpack:///./src/components/status_popover/status_popover.vue?01ff","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?2e3c","webpack:///./src/components/emoji_reactions/emoji_reactions.vue?9a17","webpack:///./src/components/conversation/conversation.vue?ea5c","webpack:///./src/components/conversation/conversation.vue?93bf","webpack:///./src/components/notifications/notifications.scss?034c","webpack:///./src/components/notifications/notifications.scss","webpack:///./src/components/user_profile/user_profile.vue?d40a","webpack:///./src/components/user_profile/user_profile.vue?af19","webpack:///./src/components/follow_card/follow_card.vue?75f5","webpack:///./src/components/follow_card/follow_card.vue?2ad1","webpack:///./src/components/basic_user_card/basic_user_card.vue?a345","webpack:///./src/components/basic_user_card/basic_user_card.vue?65be","webpack:///./src/components/list/list.vue?39ac","webpack:///./src/components/list/list.vue?b5cb","webpack:///./src/components/search/search.vue?972e","webpack:///./src/components/search/search.vue?bd49","webpack:///./src/components/style_switcher/style_switcher.scss?71d3","webpack:///./src/components/style_switcher/style_switcher.scss","webpack:///./src/components/color_input/color_input.scss?1c4b","webpack:///./src/components/color_input/color_input.scss","webpack:///./src/components/color_input/color_input.vue?9db0","webpack:///./src/components/color_input/color_input.vue?5aab","webpack:///./src/components/shadow_control/shadow_control.vue?49ef","webpack:///./src/components/shadow_control/shadow_control.vue?bbc2","webpack:///./src/components/font_control/font_control.vue?afa1","webpack:///./src/components/font_control/font_control.vue?8b21","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?502b","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?d5d5","webpack:///./src/components/style_switcher/preview.vue?83ef","webpack:///./src/components/style_switcher/preview.vue?9e57","webpack:///./src/components/export_import/export_import.vue?16e2","webpack:///./src/components/export_import/export_import.vue?3858","webpack:///./src/components/registration/registration.vue?bf51","webpack:///./src/components/registration/registration.vue?8875","webpack:///./src/components/password_reset/password_reset.vue?b52b","webpack:///./src/components/password_reset/password_reset.vue?af31","webpack:///./src/components/user_settings/user_settings.vue?6039","webpack:///./src/components/user_settings/user_settings.vue?5ae3","webpack:///./src/components/image_cropper/image_cropper.vue?5212","webpack:///./src/components/image_cropper/image_cropper.vue?f2c7","webpack:///./src/components/block_card/block_card.vue?769e","webpack:///./src/components/block_card/block_card.vue?1c67","webpack:///./src/components/mute_card/mute_card.vue?4a3f","webpack:///./src/components/mute_card/mute_card.vue?ea22","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?acde","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?7129","webpack:///./src/components/selectable_list/selectable_list.vue?ac9e","webpack:///./src/components/selectable_list/selectable_list.vue?e4a9","webpack:///./src/components/autosuggest/autosuggest.vue?d19a","webpack:///./src/components/autosuggest/autosuggest.vue?b02b","webpack:///./src/components/importer/importer.vue?a481","webpack:///./src/components/importer/importer.vue?f15e","webpack:///./src/components/exporter/exporter.vue?427e","webpack:///./src/components/exporter/exporter.vue?50fa","webpack:///./src/components/user_settings/mfa.vue?71b3","webpack:///./src/components/user_settings/mfa.vue?1440","webpack:///./src/components/user_settings/mfa_backup_codes.vue?3aa8","webpack:///./src/components/user_settings/mfa_backup_codes.vue?bbf9","webpack:///./src/components/follow_request_card/follow_request_card.vue?1d80","webpack:///./src/components/follow_request_card/follow_request_card.vue?8e68","webpack:///./src/components/login_form/login_form.vue?0f12","webpack:///./src/components/login_form/login_form.vue?95af","webpack:///./src/components/chat_panel/chat_panel.vue?b672","webpack:///./src/components/chat_panel/chat_panel.vue?c9fd","webpack:///./src/components/who_to_follow/who_to_follow.vue?32b6","webpack:///./src/components/who_to_follow/who_to_follow.vue?7ef6","webpack:///./src/components/about/about.vue?2ade","webpack:///./src/components/about/about.vue?ca53","webpack:///./src/components/features_panel/features_panel.vue?4f7c","webpack:///./src/components/features_panel/features_panel.vue?9d14","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?985c","webpack:///./src/components/terms_of_service_panel/terms_of_service_panel.vue?83bd","webpack:///./src/components/staff_panel/staff_panel.vue?8454","webpack:///./src/components/staff_panel/staff_panel.vue?d040","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?bf98","webpack:///./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?43cf","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?c6a2","webpack:///./src/components/remote_user_resolver/remote_user_resolver.vue?8a3c","webpack:///./src/App.scss?b68d","webpack:///./src/App.scss","webpack:///./src/components/user_panel/user_panel.vue?b031","webpack:///./src/components/user_panel/user_panel.vue?1ba3","webpack:///./src/components/nav_panel/nav_panel.vue?df04","webpack:///./src/components/nav_panel/nav_panel.vue?49d3","webpack:///./src/components/search_bar/search_bar.vue?eaa2","webpack:///./src/components/search_bar/search_bar.vue?af7a","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?0539","webpack:///./src/components/who_to_follow_panel/who_to_follow_panel.vue?2efd","webpack:///./src/components/media_modal/media_modal.vue?f89e","webpack:///./src/components/media_modal/media_modal.vue?0866","webpack:///./src/components/modal/modal.vue?a3d3","webpack:///./src/components/modal/modal.vue?86d8","webpack:///./src/components/side_drawer/side_drawer.vue?b5bb","webpack:///./src/components/side_drawer/side_drawer.vue?9cc2","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?9898","webpack:///./src/components/mobile_post_status_button/mobile_post_status_button.vue?629f","webpack:///./src/components/mobile_nav/mobile_nav.vue?64b9","webpack:///./src/components/mobile_nav/mobile_nav.vue?518b","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?c8f5","webpack:///./src/components/user_reporting_modal/user_reporting_modal.vue?23c6","webpack:///./src/components/post_status_modal/post_status_modal.vue?dedd","webpack:///./src/components/post_status_modal/post_status_modal.vue?2691","webpack:///./src/lib/event_target_polyfill.js","webpack:///./src/modules/interface.js","webpack:///./src/services/theme_data/pleromafe.js","webpack:///./src/services/theme_data/theme_data.service.js","webpack:///./src/services/style_setter/style_setter.js","webpack:///./src/modules/config.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/i18n/messages.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?c4eb","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/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?8920","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/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/components/follow_card/follow_card.js","webpack:///./src/components/follow_card/follow_card.vue","webpack:///./src/components/follow_card/follow_card.vue?49f0","webpack:///src/components/list/list.vue","webpack:///./src/components/list/list.vue","webpack:///./src/components/list/list.vue?c7b8","webpack:///./src/services/component_utils/component_utils.js","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?38c6","webpack:///./src/components/search/search.js","webpack:///./src/components/search/search.vue","webpack:///./src/components/search/search.vue?ec9a","webpack:///src/components/color_input/color_input.vue","webpack:///./src/components/color_input/color_input.vue","webpack:///./src/components/color_input/color_input.vue?3d5b","webpack:///./src/components/range_input/range_input.vue","webpack:///src/components/range_input/range_input.vue","webpack:///./src/components/range_input/range_input.vue?202a","webpack:///src/components/opacity_input/opacity_input.vue","webpack:///./src/components/opacity_input/opacity_input.vue","webpack:///./src/components/opacity_input/opacity_input.vue?0078","webpack:///./src/components/shadow_control/shadow_control.js","webpack:///./src/components/shadow_control/shadow_control.vue","webpack:///./src/components/shadow_control/shadow_control.vue?c9d6","webpack:///./src/components/font_control/font_control.js","webpack:///./src/components/font_control/font_control.vue","webpack:///./src/components/font_control/font_control.vue?184b","webpack:///src/components/contrast_ratio/contrast_ratio.vue","webpack:///./src/components/contrast_ratio/contrast_ratio.vue","webpack:///./src/components/contrast_ratio/contrast_ratio.vue?73bf","webpack:///./src/components/style_switcher/preview.vue","webpack:///./src/components/style_switcher/preview.vue?99be","webpack:///src/components/export_import/export_import.vue","webpack:///./src/components/export_import/export_import.vue","webpack:///./src/components/export_import/export_import.vue?9130","webpack:///./src/components/style_switcher/style_switcher.js","webpack:///./src/components/style_switcher/style_switcher.vue","webpack:///./src/components/style_switcher/style_switcher.vue?d586","webpack:///src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue","webpack:///./src/components/interface_language_switcher/interface_language_switcher.vue?da5c","webpack:///./src/components/settings/settings.js","webpack:///./src/services/version/version.service.js","webpack:///./src/components/settings/settings.vue","webpack:///./src/components/settings/settings.vue?d83a","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/image_cropper/image_cropper.js","webpack:///./src/components/image_cropper/image_cropper.vue","webpack:///./src/components/image_cropper/image_cropper.vue?017e","webpack:///./src/components/block_card/block_card.js","webpack:///./src/components/block_card/block_card.vue","webpack:///./src/components/block_card/block_card.vue?7b44","webpack:///./src/components/mute_card/mute_card.js","webpack:///./src/components/mute_card/mute_card.vue","webpack:///./src/components/mute_card/mute_card.vue?6bc9","webpack:///./src/components/domain_mute_card/domain_mute_card.js","webpack:///./src/components/domain_mute_card/domain_mute_card.vue","webpack:///./src/components/domain_mute_card/domain_mute_card.vue?25b9","webpack:///./src/components/selectable_list/selectable_list.js","webpack:///./src/components/selectable_list/selectable_list.vue","webpack:///./src/components/selectable_list/selectable_list.vue?5686","webpack:///./src/components/autosuggest/autosuggest.js","webpack:///./src/components/autosuggest/autosuggest.vue","webpack:///./src/components/autosuggest/autosuggest.vue?b400","webpack:///./src/components/importer/importer.js","webpack:///./src/components/importer/importer.vue","webpack:///./src/components/importer/importer.vue?320c","webpack:///./src/components/exporter/exporter.js","webpack:///./src/components/exporter/exporter.vue","webpack:///./src/components/exporter/exporter.vue?7e42","webpack:///./src/hocs/with_subscription/with_subscription.js","webpack:///./src/components/user_settings/mfa_backup_codes.js","webpack:///./src/components/user_settings/mfa_backup_codes.vue","webpack:///./src/components/user_settings/mfa_backup_codes.vue?c289","webpack:///./src/components/user_settings/confirm.js","webpack:///./src/components/user_settings/confirm.vue","webpack:///./src/components/user_settings/confirm.vue?7c4c","webpack:///./src/components/user_settings/mfa_totp.js","webpack:///./src/components/user_settings/mfa_totp.vue","webpack:///./src/components/user_settings/mfa_totp.vue?d10c","webpack:///./src/components/user_settings/mfa.js","webpack:///./src/components/user_settings/mfa.vue","webpack:///./src/components/user_settings/mfa.vue?5102","webpack:///./src/components/user_settings/user_settings.js","webpack:///./src/components/user_settings/user_settings.vue","webpack:///./src/components/user_settings/user_settings.vue?ccbc","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?ecb6","webpack:///./src/components/nav_panel/nav_panel.js","webpack:///./src/components/nav_panel/nav_panel.vue","webpack:///./src/components/nav_panel/nav_panel.vue?48ee","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?b865","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?edc8","webpack:///./src/components/side_drawer/side_drawer.js","webpack:///./src/components/side_drawer/side_drawer.vue","webpack:///./src/components/side_drawer/side_drawer.vue?05c8","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/services/window_utils/window_utils.js","webpack:///./src/App.js","webpack:///./src/App.vue","webpack:///./src/App.vue?72b7","webpack:///./src/boot/after_store.js","webpack:///./src/main.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","0","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","rgb2hex","g","b","map","val","Math","ceil","toString","srgbToLinear","srgb","split","reduce","acc","bit","pow","c2linear","relativeLuminance","getContrastRatio","a","la","lb","getContrastRatioLayers","text","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","color","opacity","hex2rgb","hex","exec","parseInt","mixrgb","k","rgba2css","rgba","floor","getTextColor","preserve","base","assign","invertLightness","rgb","contrastRatio","getCssColor","input","startsWith","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","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","replace","RegExp","parseStatus","status","favorited","favourited","fave_num","favourites_count","repeated","reblogged","repeat_num","reblogs_count","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","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","pinned","is_post_verb","uri","match","qvitter_delete_notice","activity_type","isNsfw","visibility","card","user","account","attentions","mentions","attachments","media_attachments","retweetedStatus","favoritedBy","rebloggedBy","parseNotification","seen","is_seen","isStatusNotification","action","from_profile","parsedNotice","notice","ntype","Boolean","favorited_status","StatusCodeError","statusCode","body","options","response","this","JSON","stringify","captureStackTrace","constructor","RegistrationError","errors","parse","errorContents","ap_id","username","entries","errs","join","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","tag","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","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","headers","encodeURIComponent","authHeaders","then","json","ok","accessToken","fetchFriends","maxId","sinceId","limit","MASTODON_FOLLOWING_URL","args","filter","_","getMastodonSocketURI","stream","access_token","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","Set","ProcessedWS","preprocessor","handleMastoWS","eventTarget","EventTarget","socket","WebSocket","proxy","original","eventName","processor","addEventListener","eventData","dispatchEvent","CustomEvent","detail","wsEvent","debug","code","close","parsedEvent","has","warn","notification","apiService","verifyCredentials","fetchTimeline","timeline","since","until","userId","withMuted","isNotifications","public","friends","dms","notifications","media","favorites","queryString","param","statusText","fetchPinnedStatuses","fetchConversation","urlContext","MASTODON_STATUS_CONTEXT_URL","ancestors","descendants","fetchStatus","MASTODON_STATUS_URL","exportFriends","more","users","fetchFollowers","MASTODON_FOLLOWERS_URL","followUser","MASTODON_FOLLOW_URL","form","reblogs","unfollowUser","MASTODON_UNFOLLOW_URL","pinOwnStatus","unpinOwnStatus","muteConversation","unmuteConversation","blockUser","MASTODON_BLOCK_USER_URL","unblockUser","MASTODON_UNBLOCK_USER_URL","fetchUser","fetchUserRelationship","favorite","unfavorite","retweet","unretweet","postStatus","spoilerText","mediaIds","inReplyToStatusId","contentType","FormData","pollOptions","append","forEach","some","option","normalizedPoll","expires_in","expiresIn","multiple","keys","deleteStatus","MASTODON_DELETE_URL","uploadMedia","formData","fetchMutes","muteUser","unmuteUser","subscribeUser","unsubscribeUser","fetchBlocks","fetchOAuthTokens","revokeOAuthToken","tagUser","nicknames","untagUser","deleteUser","addRight","deleteRight","activateUser","nickname","deactivateUser","register","rest","locale","agreement","getCaptcha","resp","updateAvatar","updateBg","background","updateProfile","updateBanner","banner","importBlocks","file","importFollows","deleteAccount","password","changeEmail","email","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","fetchFollowRequests","approveUser","MASTODON_APPROVE_USER_URL","denyUser","MASTODON_DENY_USER_URL","suggestions","markNotificationsAsSeen","single","dismissNotification","vote","pollId","choices","fetchPoll","fetchFavoritedByUsers","fetchRebloggedByUsers","fetchEmojiReactions","reactions","accounts","reactWithEmoji","unreactWithEmoji","reportUser","statusIds","comment","forward","updateNotificationSettings","settings","search2","q","offset","u","statuses","searchUsers","query","fetchDomainMutes","muteDomain","domain","unmuteDomain","__vue_styles__","context","Component","model","prop","props","_vm","_h","$createElement","_c","_self","staticClass","class","disabled","indeterminate","attrs","domProps","checked","on","$event","$emit","_v","$slots","default","_t","_e","notificationsFromStore","store","state","statusNotifications","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","filteredNotificationsFromStore","types","sortedNotifications","sort","config","notificationVisibility","likes","repeats","follows","followRequest","moves","emojiReactions","visibleTypes","unseenNotificationsFromStore","isExternal","generateProfileLink","restrictedNicknames","complicated","fileType","fileTypeService","fileMatchesSomeType","DialogModal","darkOverlay","onCancel","Function","currentTarget","stopPropagation","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","toggleActivationStatus","dispatch","deleteUserDialog","show","isProfile","$route","isTargetUser","history","back","setToggled","y","slot","_s","$t","AccountActions","ProgressButton","showRepeats","hideRepeats","showing_reblogs","followRequestInProgress","betterShadow","browserSupport","cssFilter","created","getters","findUser","classes","rounded","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","parentNode","open","href","userProfileLink","zoomAvatar","attachment","mentionUser","replyTo","repliedUser","hideBio","_m","hideUserStats","directives","rawName","expression","composing","$$selectedVal","Array","selected","_value","subscribing","preventDefault","showPlaceholder","StillImage","imgSrc","imageLoadError","watch","compact","FavoriteButton","animated","hidePostStats","ReactButton","filterWord","addReaction","existingReaction","find","me","commonEmojis","displayText","scopedSlots","_u","fn","ref","_l","replacement","RetweetButton","ExtraButtons","confirm","pinStatus","unpinStatus","copyLink","navigator","clipboard","writeText","statusLink","canDelete","ownStatus","canPin","canMute","server","$router","AvatarList","slicedUsers","Attachment","nsfwImage","nsfwCensorImage","hideNsfwLocal","hideNsfw","preloadImage","loading","img","modalOpen","showHidden","VideoAttachment","usePlaceHolder","size","referrerpolicy","mediaProxyAvailable","hidden","isEmpty","oembed","isSmall","fullwidth","openModal","modalTypes","playVideosInModal","setMedia","toggleHidden","useOneClickNsfw","onImageLoad","image","width","naturalWidth","height","naturalHeight","naturalSizeLoad","_obj","toUpperCase","large_thumb_url","allowPlay","thumb_url","title","oembedHTML","Timeago","polls","pollsObject","basePoll","destroyed","expiresAt","expires_at","expired","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","entry","index","isDisabled","noChoice","percentageForOption","count","resultTitle","statusId","activateOption","allElements","$el","querySelectorAll","clickedElement","querySelector","element","optionId","Gallery","sizes","rows","lastAttachment","allButLastRow","useContainFit","onNaturalSizeLoad","$set","rowStyle","itemsPerRow","itemStyle","row","total","item","getAspectRatio","flex","staticStyle","LinkPreview","imageLoaded","useImage","useDescription","test","newImg","Image","provider_name","StatusContent","showingTall","inConversation","focused","showingLongSubject","expandingSubject","collapseMessageWithSubject","localCollapseSubjectDefault","hideAttachments","hideAttachmentsInConv","tallStatus","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","nsfwClickthrough","attachmentSize","maxThumbnails","galleryTypes","galleryAttachments","nonGalleryAttachments","hasImageAttachments","hasVideoAttachments","postBodyHtml","html","greentext","handledTags","openCloseTags","buffer","level","textBuffer","tagBuffer","flush","trim","handleBr","handleOpen","handleClose","pop","char","tagFull","processHtml","contentHtml","mapState","Poll","closest","className","attn","attention","namepart","instancepart","matchstring","mentionMatchesUrl","link","generateUserProfileLink","rel","generateTagLink","toggleShowMore","noHeading","StatusPopover","allStatuses","Status","enter","x","EmojiReactions","showAll","tooManyReactions","showMoreString","accountsForEmoji","reaction","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","replying","unmuted","userExpanded","muteWords","repeaterClass","statusoid","highlightClass","userClass","deleted","repeaterStyle","highlightStyle","userStyle","replyProfileLink","isReply","replyToName","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","allStatusesObject","muteWordHits","toLowerCase","statusSummary","muteWord","inProfile","profileUserId","hideFilteredStatuses","hideStatus","hideReply","isFocused","replyVisibility","checkFollowing","relationships","replySubject","decodedSummary","behavior","subjectLineBehavior","startsWithRe","concat","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","PostStatusForm","UserCard","visibilityIcon","showError","clearError","toggleReplying","gotoOriginal","toggleExpanded","toggleMute","toggleUserExpanded","rect","getBoundingClientRect","top","innerHeight","scrollBy","bottom","num","filters","capitalize","str","charAt","inlineExpanded","isPreview","highlighted","nativeOn","_f","expandable","replies","reply","emojiReactionsOnTimeline","trigger","placement","boundTo","margin","popoverClass","styles","oldSize","updateStyles","anchorEl","$refs","children","screenBox","origin","left","parentBounds","offsetParent","xBounds","min","max","innerWidth","yBounds","horizOffset","offsetWidth","usingTop","offsetHeight","yOffset","translateY","xOffset","translateX","transform","showPopover","$nextTick","hidePopover","onMouseenter","onMouseleave","onClick","onClickOutside","contains","updated","removeEventListener","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","date","nowThreshold","now","abs","relativeTimeShort","click","progress","prefs","solidColor","tintColor","tintColor2","backgroundPosition","backgroundColor","Vue","component","renderOnlyFocused","required","onSwitch","activeTab","scrollableTabs","active","findIndex","activeIndex","beforeUpdate","activateTab","render","h","tabs","classesTab","classesWrapper","label","contents","mediaUpload","uploading","uploadReady","uploadFile","self","uploadlimit","filesize","fileSizeFormatService","fileSizeFormat","allowedsize","filesizeunit","unit","allowedsizeunit","statusPosterService","fileData","fileDrop","dataTransfer","files","fileDrag","dropEffect","clearFile","change","fileInfos","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","indexOf","_k","keyCode","MediaUpload","EmojiInput","PollForm","ScopeSelector","Checkbox","mounted","resize","textarea","textLength","setSelectionRange","scopeCopy","allAttentions","unshift","buildMentionsString","scope","copyMessageScope","postContentType","dropFiles","submitDisabled","posting","newStatus","subject","caret","pollFormVisible","userDefaultScope","showAllScopes","minimalScopesMode","emojiUserSuggestor","suggestor","customEmoji","updateUsersList","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","textlimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","alwaysShowSubjectInput","postFormats","safeDMEnabled","safeDM","pollsAvailable","hideScopeNotice","pollContentError","statusPoster","clearPollForm","el","addMediaFile","fileInfo","enableSubmit","removeMediaFile","uploadFailed","errString","templateArgs","disableSubmit","paste","clipboardData","onEmojiInputInput","Element","formRef","bottomRef","bottomBottomPaddingStr","getComputedStyle","bottomBottomPadding","substring","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","callback","$$v","metaKey","ctrlKey","postFormat","stopGifs","endsWith","onLoad","imageLoadHandler","canvas","getContext","drawImage","onError","interval","localeDateString","time","refreshRelativeTimeObject","longFormat","autoUpdate","exponent","units","log","toFixed","debounceUserSearch","leading","trailing","firstChar","suggestEmoji","suggestUsers","noPrefix","substr","aScore","bScore","imageUrl","newUsers","detailText","showImmediately","noIdUpdate","child","parent","ignorePadding","offsetTop","offsetLeft","findPadding","topPadding","leftPadding","leftPaddingStr","addPositionToWords","words","word","start","end","previous","splitIntoWords","triggers","matches","completion","wordAtPosition","pos","wordsWithPosition","replaceWord","toReplace","filterByKeyword","list","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","bufferSize","bufferPrefilledAll","toggleStickers","activeGroupView","stickersAvailable","stickers","standardEmojis","customEmojis","icon","stickerPickerEnabled","refInFor","suggest","enableEmojiPicker","hideEmojiButton","blurTimeout","showPicker","temporarilyHideSuggestions","disableClickOutside","padEmoji","firstchar","textAtCaret","matchedSuggestions","showSuggestions","wordAtCaret","Completion","slots","elm","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","onInput","unmounted","picker","scrollIntoView","togglePicker","newValue","insert","before","after","isSpaceRegex","spaceBefore","spaceAfter","position","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","rootBottomBorder","setCaret","shiftKey","panel","offsetBottom","hide","requestFollow","requested","fetchRelationship","attempt","sent","inProgress","isPressed","labelFollowing","unfollow","follow","requestUnfollow","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","userDefault","onScopeChange","loopVideo","onVideoDataLoad","srcElement","webkitAudioDecodedByteCount","loopVideoSilentOnly","mozHasAudio","audioTracks","controls","locals","add","EventTargetPolyfill","interfaceMod","currentSaveStateNotice","noticeClearTimeout","notificationPermission","CSS","supports","mobileLayout","mutations","settingsSaved","success","del","errorData","setNotificationPermission","permission","setMobileLayout","actions","setPageTitle","rootState","LAYERS","undelay","topBar","badge","profileTint","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","DEFAULT_OPACITY","faint","underlay","SLOT_INHERITANCE","depends","priority","layer","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","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","badgeNotification","badgeNotificationText","getLayersArray","array","getLayers","opacitySlot","colors","currentLayer","getDependencies","inheritance","layerDeps","isArray","expandSlotValue","getOpacitySlot","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","computeDynamicColor","sourceColor","getColor","targetColor","variable","modifier","parseFloat","applyTheme","rules","generatePreset","classList","styleEl","styleSheet","sheet","insertRule","radii","shadows","fonts","remove","getCssShadow","usesDropShadow","inset","shad","blur","spread","alpha","getCssShadowFilter","generateColors","themeData","sourceColors","sourceOpacity","deps","isTextColor","convert","outputColor","variableSlot","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","getColors","themeEngineVersion","colors2to3","htmlColors","solid","complete","theme","generateRadii","inputRadii","btnRadius","checkbox","avatarAlt","tooltip","generateFonts","interface","family","post","postCode","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","button","buttonHover","buttonPressed","generateShadows","hackContextDict","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","newShadow","shadowAcc","def","composePreset","getThemes","cache","themes","statePositionAcc","getPreset","isV1","defaultState","customTheme","customThemeSource","hideISP","hideMutedPosts","autoLoad","streaming","hoverPreview","autohideFloatingPostButton","pauseOnUnfocused","webPushNotifications","interfaceLanguage","language","useStreamingApi","instanceDefaultProperties","rootGetters","setOption","setHighlight","registrationOpen","logo","logoMask","logoMargin","redirectRootNoLogin","redirectRootLogin","showInstanceSpecificPanel","disableChat","hideSitename","vapidPublicKey","noAttachmentLinks","showFeaturesPanel","pleromaBackend","emojiFetched","customEmojiFetched","chatAvailable","gopherAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","setInstanceOption","instanceDefaultConfig","getStaticEmoji","res","values","getCustomEmoji","image_url","setTheme","themeName","themeSource","fetchEmoji","emptyTl","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","minId","minVisibleId","followers","flushMarker","emptyNotifications","desktopNotificationSilence","POSITIVE_INFINITY","idStore","conversationsObject","timelines","publicAndExternal","visibleNotificationTypes","mergeOrAdd","arr","obj","oldItem","new","sortTimeline","addStatusToGlobalStorage","conversationId","addNewStatuses","timelineObject","maxNew","minNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","processors","counter","favoriteStatus","deletion","removeStatusFromGlobalStorage","unknown","addNewNotifications","Notification","i18nString","notifObj","i18n","desktopNotification","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","setFavoritedConfirm","setMutedStatus","setRetweeted","setRetweetedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","setError","setErrorData","setNotificationsLoading","setNotificationsError","setNotificationsSilence","markSingleNotificationAsSeen","updateNotification","updater","queueFlush","addRepeats","rebloggedByUsers","addFavs","favoritedByUsers","addEmojiReactionsBy","addOwnReaction","reactionIndex","newReaction","removeOwnReaction","updateStatusWithPoll","markStatusesAsDeleted","dismissNotificationLocal","fetchFavsAndRepeats","fetchEmojiReactionsBy","fetchFavs","fetchRepeats","search","fetchAndUpdate","timelineData","numStatusesBeforeFetch","ccTimeline","update","timelineFetcher","startFetching","setInterval","fetchNotifications","readNotifsIds","notificationsFetcher","requests","followRequestFetcher","backendInteractorService","startFetchingTimeline","timelineFetcherService","startFetchingNotifications","fetchAndUpdateNotifications","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","favourite","mention","move","responseData","sendSubscriptionToBackEnd","predictedRelationship","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","blocks","blockUsers","ids","unblockUsers","mutes","hideReblogs","showReblogs","muteUsers","unmuteUsers","muteDomains","domains","unmuteDomains","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","signUp","userInfo","logout","oauthApi","userToken","loginUser","requestPermission","getNotificationPermission","startPolling","fetchers","mastoUserSocket","followRequests","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","clearInterval","setWsToken","wsToken","setSocket","setFollowRequests","enableMastoSockets","disableMastoSockets","startMastoUserSocket","closeEvent","ignoreCodes","restartMastoUserSocket","stopMastoUserSocket","stopFetchingTimeline","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","it","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","chat","messages","channel","setChannel","addMessage","setMessages","initializeChat","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","resetState","strategy","initStrategy","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","path","objectPath","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getState","storage","getItem","setState","setItem","reducer","subscriber","handler","savedState","usersState","replaceState","merge","mutation","previousNavPaddingRight","previousAppBgWrapperRight","webPushNotification","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","ar","require","ca","cs","de","en","eo","es","et","eu","fi","fr","ga","he","hu","ja","ja_easy","ko","nb","nl","oc","pl","pt","ro","ru","te","zh","lockerEls","disableBodyScroll","scrollBarGap","documentElement","clientWidth","bodyScrollLock","reserveScrollBarGap","navEl","getElementById","getPropertyValue","paddingRight","appBgWrapperEl","enableBodyScroll","directive","inserted","binding","componentUpdated","oldValue","unbind","idA","idB","conversation","expanded","isPage","originalStatusId","getConversationId","isExpanded","statusIndex","sortAndFilterConversation","irid","newVal","oldVal","newConversationId","oldConversationId","getReplies","getHighlight","collapsable","pinnedStatusIdsObject","Timeline","paused","unfocused","bottomedOut","timelineError","newStatusCountStr","embedded","footer","excludedStatusIdsObject","getExcludedStatusIdsByPinning","Conversation","scrollLoad","timelineName","handleVisibilityChange","handleShortKey","fetchOlderStatuses","bodyBRect","pageYOffset","doc","clientTop","PublicTimeline","PublicAndExternalTimeline","FriendsTimeline","TagTimeline","conversationPage","getUser","targetUser","targetUserProfileLink","needMute","Notifications","minimalMode","filterMode","seenToDisplayCount","mainClass","unseenNotifications","filteredNotifications","unseenCount","notificationsToDisplay","markAsSeen","fetchOlderNotifications","seenCount","notifs","minimal","tabModeDict","Interactions","allowFollowingMove","onModeSwitch","DMs","BasicUserCard","FollowCard","isMe","noFollowsYou","items","getKey","empty","getComponentProps","isFunction","getComponentOptions","withLoadMore","select","destroy","childPropName","additionalPropNames","WrappedComponent","$props","fetchEntries","newEntries","$listeners","$scopedSlots","FollowerList","List","FriendList","UserProfile","routeParams","load","stopFetching","isUs","followsTabVisible","followersTabVisible","userNameOrId","loadById","reason","errorMessage","switchUser","onTabSwitch","viewing","Search","searchTerm","userIds","hashtags","currenResultTab","newQuery","searchInput","getActiveTab","resultCount","tabName","onResultTabSwitch","lastHistoryRecord","hashtag","uses","fallback","showOptionalTickbox","present","validColor","transparentColor","computedColor","hardMax","hardMin","toModel","selectedId","cValue","ColorInput","OpacityInput","moveUp","movable","moveDn","anyShadows","anyShadowsFallback","ready","currentFallback","moveUpValid","moveDnValid","usingFallback","boxShadow","_i","$$a","$$el","$$c","$$i","lValue","availableOptions","noInherit","dValue","isCustom","preset","custom","large","contrast","hint","hint_18pt","aaa","aa","laaa","laa","importFailed","exportData","btoa","stringified","display","removeChild","importData","filePicker","reader","readAsText","exportLabel","importLabel","importFailedText","v1OnlyNames","availableStyles","themeWarning","tempImportFile","engineVersion","previewShadows","previewColors","previewRadii","previewFonts","shadowsInvalid","colorsInvalid","radiiInvalid","keepColor","keepShadows","keepOpacity","keepRoundness","keepFonts","shadowSelected","shadowsLocal","fontsLocal","btnRadiusLocal","inputRadiusLocal","checkboxRadiusLocal","panelRadiusLocal","avatarRadiusLocal","avatarAltRadiusLocal","attachmentRadiusLocal","tooltipRadiusLocal","themesComplete","loadThemeFromLocalStorage","shadowsAvailable","themeWarningHelp","pre","noActionsPossible","selectedVersion","currentColors","currentOpacity","currentRadii","preview","previewTheme","previewContrast","colorsConverted","ratios","slotIsBaseText","textColors","textColorKey","newKey","ratio","toPrecision","previewRules","currentShadowOverriden","currentShadow","currentShadowFallback","themeValid","exportedTheme","saveEverything","_pleroma_theme_version","RangeInput","ContrastRatio","ShadowControl","FontControl","TabSwitcher","Preview","ExportImport","loadTheme","fileVersion","forceUseSource","dismissWarning","version","snapshotEngineVersion","versionsMatch","sourceSnapshotMismatch","forcedSourceLoad","normalizeLocalState","forceLoadLocalStorage","forceLoad","onImport","forceSnapshot","confirmLoadSource","setCustomTheme","updatePreviewColorsAndShadows","parsed","forceSource","importValidator","clearAll","clearV1","$data","clearRoundness","clearOpacity","clearShadows","clearFonts","fgColorLocal","textColorLocal","getOwnPropertyNames","deep","fontsInvalid","bgColorLocal","linkColorLocal","cRedColorLocal","cGreenColorLocal","cBlueColorLocal","cOrangeColorLocal","bgOpacityLocal","bgText","accentColorLocal","bgLink","fgTextColorLocal","fgLinkColorLocal","bgCRed","bgCBlue","bgCGreen","bgCOrange","postLinkColorLocal","alertErrorColorLocal","alertErrorTextColorLocal","alertWarningColorLocal","alertWarningTextColorLocal","alertNeutralColorLocal","alertNeutralTextColorLocal","alertOpacityLocal","badgeNotificationColorLocal","badgeNotificationTextColorLocal","panelColorLocal","panelOpacityLocal","panelTextColorLocal","panelLinkColorLocal","topBarColorLocal","topBarTextColorLocal","topBarLinkColorLocal","inputColorLocal","inputOpacityLocal","inputTextColorLocal","btnColorLocal","btnOpacityLocal","btnTextColorLocal","btnPanelTextColorLocal","btnTopBarTextColorLocal","btnPressedColorLocal","btnPressedTextColorLocal","btnPressedPanelTextColorLocal","btnPressedTopBarTextColorLocal","btnDisabledColorLocal","btnDisabledTextColorLocal","btnDisabledPanelTextColorLocal","btnDisabledTopBarTextColorLocal","btnToggledColorLocal","btnToggledTextColorLocal","btnToggledPanelTextColorLocal","btnToggledTopBarTextColorLocal","tabColorLocal","tabTextColorLocal","tabActiveTextColorLocal","borderColorLocal","borderOpacityLocal","faintColorLocal","faintLinkColorLocal","panelFaintColorLocal","faintOpacityLocal","underlayColorLocal","underlayOpacityLocal","pollColorLocal","pollTextColorLocal","iconColorLocal","highlightColorLocal","highlightTextColorLocal","highlightLinkColorLocal","popoverColorLocal","popoverOpacityLocal","popoverTextColorLocal","popoverLinkColorLocal","selectedPostColorLocal","selectedPostTextColorLocal","selectedPostLinkColorLocal","selectedMenuColorLocal","selectedMenuTextColorLocal","selectedMenuLinkColorLocal","languageCodes","languageNames","$i18n","getLanguageName","langCode","multiChoiceProperties","loopSilentAvailable","getOwnPropertyDescriptor","HTMLVideoElement","HTMLMediaElement","StyleSwitcher","InterfaceLanguageSwitcher","instanceSpecificPanelPresent","frontendVersionLink","backendVersionLink","versionString","configDefaultState","muteWordsString","hideMutedPostsLocalizedValue","collapseMessageWithSubjectLocalizedValue","scopeCopyLocalizedValue","alwaysShowSubjectInputLocalizedValue","subjectLineBehaviorDefaultValue","postContentTypeDefaultValue","minimalScopesModeLocalizedValue","modifiers","_n","$forceUpdate","greentextLocalizedValue","hidePostStatsLocalizedValue","hideUserStatsLocalizedValue","hideFilteredStatusesLocalizedValue","mixins","validationMixin","fullname","captcha","validations","requiredIf","accountActivationRequired","sameAsPassword","sameAs","signedIn","setCaptcha","bioPlaceholder","isPending","serverValidationErrors","termsOfService","mapActions","submit","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$v","$touch","$invalid","cpt","$error","resetPassword","passwordReset","throttled","mailerEnabled","passwordResetRequested","dismissError","passwordResetApi","ImageCropper","submitHandler","cropperOptions","aspectRatio","autoCropArea","viewMode","zoomable","guides","mimes","saveButtonLabel","saveWithoutCroppingButtonlabel","cancelButtonLabel","cropper","dataUrl","filename","submitting","submitError","saveText","saveWithoutCroppingText","cancelText","submitErrorMsg","cropping","avatarUploadError","pickImage","createCropper","Cropper","getTriggerDOM","readFile","fileInput","FileReader","readAsDataURL","beforeDestroy","BlockCard","blocked","MuteCard","DomainMuteCard","SelectableList","filteredSelected","allSelected","noneSelected","someSelected","isSelected","toggle","toggleAll","placeholder","term","results","resultsVisible","filtered","fetchResults","onInputClick","Importer","submitButtonLabel","successMessage","dismiss","Exporter","getContent","exportButtonLabel","processingMessage","processing","process","fileToDownload","withSubscription","fetchedData","refresh","fetchData","backupCodes","codes","displayTitle","Confirm","cancel","currentPassword","deactivate","isActivated","totp","doActivate","cancelDeactivate","doDeactivate","confirmDeactivate","Mfa","available","enabled","setupState","setupOTPState","getNewCodes","otpSettings","provisioning_uri","otpConfirmToken","readyInit","RecoveryCodes","TOTP","VueQrcode","canSetupOTP","setupInProgress","backupCodesPrepared","setupOTPInProgress","completedOTP","prepareOTP","confirmOTP","confirmNewBackupCodes","activateOTP","fetchBackupCodes","getBackupCodes","confirmBackupCodes","cancelBackupCodes","setupOTP","doConfirmOTP","completeSetup","fetchSettings","cancelSetup","BlockList","MuteList","DomainMuteList","UserSettings","newEmail","newName","newBio","unescape","newLocked","newNoRichText","newDefaultScope","hideFollows","hideFollowers","showRole","pickAvatarBtnVisible","bannerUploading","backgroundUploading","bannerPreview","backgroundPreview","bannerUploadError","backgroundUploadError","changeEmailError","changeEmailPassword","changedEmail","deletingAccount","deleteAccountConfirmPasswordInput","deleteAccountError","changePasswordInputs","changedPassword","changePasswordError","notificationSettings","newDomainToMute","Autosuggest","vis","oauthToken","appName","app_name","validUntil","valid_until","toLocaleDateString","submitAvatar","that","getCroppedCanvas","toBlob","clearUploadError","submitBanner","submitBg","generateExportableUsersContent","hostname","getFollowsContent","getBlocksContent","confirmDelete","filterUnblockedUsers","filterUnMutedUsers","queryUserIds","identity","FollowRequestCard","findFollowRequestNotificationId","notif","notifId","FollowRequests","oac","LoginForm","isPasswordAuth","isTokenAuth","mapMutations","submitToken","submitPassword","identifier","focusOnPasswordInput","passwordInput","mfa","authSettings","mfa_token","mfaApi","AuthForm","is","authForm","MFARecoveryForm","MFATOTPForm","chatPanel","currentMessage","collapsed","togglePanel","floating","author","WhoToFollow","getWhoToFollow","showWhoToFollow","externalUser","InstanceSpecificPanel","FeaturesPanel","gopher","whoToFollow","mediaProxy","TermsOfServicePanel","StaffPanel","staffAccounts","MRFTransparencyPanel","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","About","policy","pattern","RemoteUserResolver","redirect","validateAuthenticatedRoute","to","next","_to","beforeEnter","ConversationPage","dontScroll","Settings","Registration","PasswordReset","ChatPanel","OAuthCallback","route","UserPanel","NavPanel","followRequestCount","privateMode","federating","SearchBar","usersToFollow","toFollow","shuffled","WhoToFollowPanel","fill","oldUser","isOpen","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","Modal","showing","currentMedia","canNavigate","mediaSwipeGestureRight","goPrev","mediaSwipeGestureLeft","goNext","mediaTouchStart","mediaTouchMove","prevIndex","nextIndex","handleKeyupEvent","handleKeydownEvent","SideDrawer","closed","closeGesture","toggleDrawer","unseenNotificationsCount","sitename","doLogout","touchStart","touchMove","MobilePostStatusButton","scrollingDown","inputActive","oldScrollPos","amountScrolled","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","MobileNav","notificationsCloseGesture","notificationsOpen","closeMobileNotifications","toggleMobileSidebar","sideDrawer","openMobileNotifications","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","UserReportingModal","statusIdsToReport","remoteInstance","closeModal","isChecked","toggleStatus","PostStatusModal","resettingForm","isFormVisible","_b","windowWidth","mobileActivePanel","searchBarHidden","supportsMask","updateMobileState","enableMask","logoStyle","logoMaskStyle","logoBgStyle","bgStyle","bgAppStyle","isMobileLayout","onSearchBarToggled","getStatusnetConfig","site","registrationClosed","safeDMMentionsEnabled","avatarlimit","backgroundlimit","bannerlimit","pleromafe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","loginMethod","getTOS","getInstancePanel","getStickers","resPack","pack","localeCompare","getAppSecret","resolveStaffAccounts","getNodeInfo","metadata","features","web","software","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","afterStoreSetup","router","VueRouter","routes","scrollBehavior","_from","savedPosition","matched","App","currentLocale","use","Vuex","VueI18n","VueChatScroll","VueClickOutside","PortalVue","fallbackLocale","persistedStateOptions","persistedState","Store","interfaceModule","instanceModule","statusesModule","usersModule","apiModule","configModule","chatModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokensModule","reportsModule","pollsModule","postStatusModule","plugins","pushNotifications","strict","COMMIT_HASH","DEV_OVERRIDES"],"mappings":"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","file":"static/js/app.996428ccaaaa7f28cb8d.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded 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\":\"18e4adec273c4ce867a8\"}[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// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([586,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 { 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\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.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 } 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 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","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 } from '../entity_normalizer/entity_normalizer.service.js'\nimport 'whatwg-fetch'\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_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_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 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 ].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 ].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}) => {\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 }\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\n params.push(['limit', 20])\n params.push(['with_muted', withMuted])\n\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n let status = ''\n let statusText = ''\n return fetch(url, { headers: authHeaders(credentials) })\n .then((data) => {\n status = data.status\n statusText = data.statusText\n return data\n })\n .then((data) => data.json())\n .then((data) => {\n if (!data.error) {\n return data.map(isNotifications ? parseNotification : parseStatus)\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 postStatus = ({\n credentials,\n status,\n spoilerText,\n visibility,\n sensitive,\n poll,\n mediaIds = [],\n inReplyToStatusId,\n contentType\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\n return fetch(MASTODON_POST_STATUS_URL, {\n body: form,\n method: 'POST',\n headers: authHeaders(credentials)\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 : 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 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 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 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 postStatus,\n deleteStatus,\n uploadMedia,\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 fetchDomainMutes,\n muteDomain,\n unmuteDomain\n}\n\nexport default apiService\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 { 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","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-bf5e6e30\\\",\\\"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\"}},[_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-4d895630\\\",\\\"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)?_c('router-link',{attrs:{\"to\":{ name: 'user-settings' }}},[_c('i',{staticClass:\"button-icon icon-wrench usersettings\",attrs:{\"title\":_vm.$t('tool_tip.user_settings')}})]):_vm._e(),_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 staff\"},[_vm._v(_vm._s(_vm.visibleRole))]):_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()],1)])],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\":\"style-switcher\"}},[_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 { 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 },\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-b30b8de6\\\",\\\"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\"},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.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 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 'statusId',\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 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 return this.type === 'html' || this.type === 'audio'\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 const modalTypes = this.mergedConfig.playVideosInModal\n ? ['image', 'video']\n : ['image']\n if (fileTypeService.fileMatchesSomeType(modalTypes, this.attachment) ||\n this.usePlaceHolder\n ) {\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-61e0eb0c\\\",\\\"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',{on:{\"click\":_vm.openModal}},[(_vm.type !== 'html')?_c('a',{staticClass:\"placeholder\",attrs:{\"target\":\"_blank\",\"href\":_vm.attachment.url}},[_vm._v(\"\\n [\"+_vm._s(_vm.nsfw ? \"NSFW/\" : \"\")+_vm._s(_vm.type.toUpperCase())+\"]\\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},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\",\"title\":_vm.attachment.description},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}})],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,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type === 'html' && _vm.attachment.oembed)?_c('div',{staticClass:\"oembed\",on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}},[(_vm.attachment.thumb_url)?_c('div',{staticClass:\"image\"},[_c('img',{attrs:{\"src\":_vm.attachment.thumb_url}})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text\"},[_c('h1',[_c('a',{attrs:{\"href\":_vm.attachment.url}},[_vm._v(_vm._s(_vm.attachment.oembed.title))])]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.attachment.oembed.oembedHTML)}})])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import 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-db51c57e\\\",\\\"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',[_vm._v(_vm._s(option.title))])]),_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-68a574b8\\\",\\\"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 > 900\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.tallStatus || 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 hasImageAttachments () {\n return this.status.attachments.some(\n file => fileType.fileType(file.mimetype) === 'image'\n )\n },\n hasVideoAttachments () {\n return this.status.attachments.some(\n file => fileType.fileType(file.mimetype) === 'video'\n )\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 contentHtml () {\n if (!this.status.summary_html) {\n return this.postBodyHtml\n }\n return this.status.summary_html + '<br />' + this.postBodyHtml\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 link url\n const 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-43c5cfd4\\\",\\\"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.longSubject)?_c('div',{staticClass:\"status-content-wrapper\",class:{ 'tall-status': !_vm.showingLongSubject }},[(!_vm.showingLongSubject)?_c('a',{staticClass:\"tall-status-hider\",class:{ 'tall-status-hider_focused': _vm.focused },attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=true}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t(\"general.show_more\"))+\"\\n \"),(_vm.hasImageAttachments)?_c('span',{staticClass:\"icon-picture\"}):_vm._e(),_vm._v(\" \"),(_vm.hasVideoAttachments)?_c('span',{staticClass:\"icon-video\"}):_vm._e(),_vm._v(\" \"),(_vm.status.card)?_c('span',{staticClass:\"icon-link\"}):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.contentHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.showingLongSubject)?_c('a',{staticClass:\"status-unhider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showingLongSubject=false}}},[_vm._v(_vm._s(_vm.$t(\"general.show_less\")))]):_vm._e()]):_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(_vm._s(_vm.$t(\"general.show_more\")))]):_vm._e(),_vm._v(\" \"),(!_vm.hideSubjectStatus)?_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.contentHtml)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}):_c('div',{staticClass:\"status-content media-body\",domProps:{\"innerHTML\":_vm._s(_vm.status.summary_html)},on:{\"click\":function($event){$event.preventDefault();return _vm.linkClicked($event)}}}),_vm._v(\" \"),(_vm.hideSubjectStatus)?_c('a',{staticClass:\"cw-status-hider\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleShowMore($event)}}},[_vm._v(_vm._s(_vm.$t(\"general.show_more\")))]):_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(_vm._s(_vm.$t(\"general.show_less\")))]):_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 }","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 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 { filter, 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 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 const statusText = this.status.text.toLowerCase()\n const statusSummary = this.status.summary.toLowerCase()\n const hits = filter(this.muteWords, (muteWord) => {\n return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n })\n\n return hits\n },\n muted () {\n const relationship = this.$store.getters.relationship(this.status.user.id)\n return !this.unmuted && (\n (!(this.inProfile && this.status.user.id === this.profileUserId) && relationship.muting) ||\n (!this.inConversation && this.status.thread_muted) ||\n this.muteWordHits.length > 0)\n },\n hideFilteredStatuses () {\n return this.mergedConfig.hideFilteredStatuses\n },\n hideStatus () {\n return (this.hideReply || 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 hideReply () {\n if (this.mergedConfig.replyVisibility === 'all') {\n return false\n }\n if (this.inConversation || !this.isReply) {\n return false\n }\n if (this.status.user.id === this.currentUser.id) {\n return false\n }\n if (this.status.type === 'retweet') {\n return false\n }\n const checkFollowing = this.mergedConfig.replyVisibility === 'following'\n for (var i = 0; i < this.status.attentions.length; ++i) {\n if (this.status.user.id === this.status.attentions[i].id) {\n continue\n }\n // There's zero guarantee of this working. If we happen to have that user and their\n // relationship in store then it will work, but there's kinda little chance of having\n // them for people you're not following.\n const relationship = this.$store.state.users.relationships[this.status.attentions[i].id]\n if (checkFollowing && relationship && relationship.following) {\n return false\n }\n if (this.status.attentions[i].id === this.currentUser.id) {\n return false\n }\n }\n return this.status.attentions.length > 0\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-2d68efa0\\\",\\\"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',[_c('router-link',{attrs:{\"to\":_vm.userProfileLink}},[_vm._v(\"\\n \"+_vm._s(_vm.status.user.screen_name)+\"\\n \")])],1),_vm._v(\" \"),_c('small',{staticClass:\"muteWords\"},[_vm._v(_vm._s(_vm.muteWordHits.join(', ')))]),_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.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\"},[_vm._v(_vm._s(_vm.$t('status.reply_to')))])])]):_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 }","\nconst 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 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 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.$el.offsetParent.getBoundingClientRect()\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","<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 { 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","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 },\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 }\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\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 {slot.data.attrs.label}</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 if (this.renderOnlyFocused) {\n return active\n ? <div class=\"active\">{slot}</div>\n : <div class=\"hidden\"></div>\n }\n return <div class={active ? 'active' : 'hidden' }>{slot}</div>\n })\n\n return (\n <div class=\"tab-switcher\">\n <div class=\"tabs\">\n {tabs}\n </div>\n <div class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}>\n {contents}\n </div>\n </div>\n )\n }\n})\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst mediaUpload = {\n data () {\n return {\n uploading: false,\n uploadReady: true\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.uploading = true\n\n statusPosterService.uploadMedia({ store, formData })\n .then((fileData) => {\n self.$emit('uploaded', fileData)\n self.uploading = false\n }, (error) => { // eslint-disable-line handle-callback-err\n self.$emit('upload-failed', 'default')\n self.uploading = false\n })\n },\n fileDrop (e) {\n if (e.dataTransfer.files.length > 0) {\n e.preventDefault() // allow dropping text like before\n this.uploadFile(e.dataTransfer.files[0])\n }\n },\n fileDrag (e) {\n let types = e.dataTransfer.types\n if (types.contains('Files')) {\n e.dataTransfer.dropEffect = 'copy'\n } else {\n e.dataTransfer.dropEffect = 'none'\n }\n },\n clearFile () {\n this.uploadReady = false\n this.$nextTick(() => {\n this.uploadReady = true\n })\n },\n change ({ target }) {\n for (var i = 0; i < target.files.length; i++) {\n let file = target.files[i]\n this.uploadFile(file)\n }\n }\n },\n props: [\n 'dropFiles'\n ],\n watch: {\n 'dropFiles': function (fileInfos) {\n if (!this.uploading) {\n this.uploadFile(fileInfos[0])\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-74382032\\\",\\\"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\",on:{\"drop\":[function($event){$event.preventDefault();},_vm.fileDrop],\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)}}},[_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 fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy } 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 },\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 visibility: scope,\n contentType\n },\n caret: 0,\n pollFormVisible: 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: (input) => this.$store.dispatch('searchUsers', input)\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 ...mapGetters(['mergedConfig'])\n },\n methods: {\n postStatus (newStatus) {\n if (this.posting) { return }\n if (this.submitDisabled) { return }\n\n if (this.newStatus.status === '') {\n if (this.newStatus.files.length === 0) {\n this.error = 'Cannot post an empty status with no files'\n return\n }\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 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 }).then((data) => {\n if (!data.error) {\n this.newStatus = {\n status: '',\n spoilerText: '',\n files: [],\n visibility: newStatus.visibility,\n contentType: newStatus.contentType,\n poll: {}\n }\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 } else {\n this.error = data.error\n }\n this.posting = false\n })\n },\n addMediaFile (fileInfo) {\n this.newStatus.files.push(fileInfo)\n this.enableSubmit()\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 this.enableSubmit()\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.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.files.length > 0) {\n e.preventDefault() // allow dropping text like before\n this.dropFiles = e.dataTransfer.files\n }\n },\n fileDrag (e) {\n e.dataTransfer.dropEffect = 'copy'\n },\n onEmojiInputInput (e) {\n this.$nextTick(() => {\n this.resize(this.$refs['textarea'])\n })\n },\n resize (e) {\n const target = e.target || e\n if (!(target instanceof window.Element)) { return }\n\n // Reset to default height for empty form, nothing else to do here.\n if (target.value === '') {\n target.style.height = null\n this.$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 }\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-c2ba770c\\\",\\\"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)}}},[_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(\" \"),(_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')},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)},\"keyup\":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)},\"drop\":_vm.fileDrop,\"dragover\":function($event){$event.preventDefault();return _vm.fileDrag($event)},\"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}}),_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('div',{staticClass:\"media-upload-container attachment\"},[(_vm.type(file) === 'image')?_c('img',{staticClass:\"thumbnail media-upload\",attrs:{\"src\":file.url}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'video')?_c('video',{attrs:{\"src\":file.url,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'audio')?_c('audio',{attrs:{\"src\":file.url,\"controls\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.type(file) === 'unknown')?_c('a',{attrs:{\"href\":file.url}},[_vm._v(_vm._s(file.url))]):_vm._e()])])}),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 ],\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-1bc509fc\\\",\\\"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:{\"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 }","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, { leading: true, trailing: false })\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 if there are no matches\n if (newUsers.length === 0 && data.updateUsersList) {\n debounceUserSearch(data, noPrefix)\n }\n return newUsers\n /* eslint-enable camelcase */\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({ store, status, spoilerText, visibility, sensitive, poll, media = [], inReplyToStatusId = undefined, contentType = 'text/plain' }) => {\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 .then((data) => {\n if (!data.error) {\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\n return apiService.uploadMedia({ credentials, formData })\n}\n\nconst statusPosterService = {\n postStatus,\n uploadMedia\n}\n\nexport default statusPosterService\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","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 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 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 }","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 }","\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-6fce6a82\\\",\\\"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,\"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 }","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/dist/cjs.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(\"600af463\", content, 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/dist/cjs.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(\"7348e8b2\", content, 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{overflow-wrap:break-word;word-wrap:break-word;word-break:break-word;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{width:14px;height:14px;vertical-align:middle;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 .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;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 .5em}.muted button{margin-left:auto}.muted .muteWords{margin-left:10px}a.unmute{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/dist/cjs.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(\"4e1a01ce\", content, 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/dist/cjs.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(\"271e589c\", content, 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/dist/cjs.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(\"12c57cee\", content, 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/dist/cjs.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(\"7b131771\", content, 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/dist/cjs.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(\"e54bcd54\", content, 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/dist/cjs.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(\"cfac785c\", content, 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 .visibility-tray{padding-top:5px}.post-status-form .form-bottom,.post-status-form .visibility-tray{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between}.post-status-form .form-bottom{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 .text-format .only-format{color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.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{-ms-flex:0 0 auto;flex:0 0 auto;max-width:100%;min-width:50px;margin-right:.2em;margin-bottom:.5em}.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 .status-input-wrapper{display:-ms-flexbox;display:flex;position:relative;width:100%;-ms-flex-direction:column;flex-direction:column}.post-status-form .attachments{padding:0 .5em}.post-status-form .attachments .attachment{margin:0;position:relative;-ms-flex:0 0 auto;flex:0 0 auto;border:1px solid #222;border:1px solid var(--border,#222);text-align:center}.post-status-form .attachments .attachment audio{min-width:300px;-ms-flex:1 0 auto;flex:1 0 auto}.post-status-form .attachments .attachment a{display:block;text-align:left;line-height:1.2;padding:.5em}.post-status-form .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{padding:.6em}.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}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.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(\"0670ebe8\", content, 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/dist/cjs.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(\"1338d53a\", content, 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/dist/cjs.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(\"23bc1675\", content, 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;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/dist/cjs.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(\"f8a83ffc\", content, 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{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/dist/cjs.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(\"5fac32e1\", content, 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/dist/cjs.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(\"e196cd16\", content, 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/dist/cjs.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(\"2eb241c8\", content, 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{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);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;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{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 .staff{-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/dist/cjs.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(\"0aebd09e\", content, 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/dist/cjs.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(\"98730d0c\", content, 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%}.still-image:hover canvas{display:none}.still-image img{width:100%;height:100%;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%;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/dist/cjs.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(\"6efefc64\", content, 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/dist/cjs.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(\"2b6cea22\", content, 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/dist/cjs.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(\"bfe8a2a4\", content, 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/dist/cjs.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(\"1554a28f\", content, 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/dist/cjs.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(\"009cfbf0\", content, 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/dist/cjs.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(\"11c9b810\", content, 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 .tall-status{position:relative;height:220px;overflow-x:hidden;overflow-y:hidden;z-index:1}.status-body .tall-status .status-content{height:100%;-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 .status-content{font-family:var(--postFont,sans-serif);line-height:1.4em;white-space:pre-wrap}.status-body .status-content img,.status-body .status-content video{max-width:100%;max-height:400px;vertical-align:middle;object-fit:contain}.status-body .status-content img.emoji,.status-body .status-content video.emoji{width:32px;height:32px}.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(--cGreen,#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/dist/cjs.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(\"36226d7e\", content, 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 .attachment.media-upload-container{-ms-flex:0 0 auto;flex:0 0 auto;max-height:200px;max-width:100%;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.attachments .attachment.media-upload-container video{max-width:100%}.attachments .placeholder{margin-right:8px;margin-bottom:4px;color:#d8a070;color:var(--postLink,#d8a070)}.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%;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%;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{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/dist/cjs.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(\"4dadad36\", content, 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/dist/cjs.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(\"a6cb5554\", content, 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 .attachment.image{margin:0 .5em 0 0;-ms-flex-positive:1;flex-grow:1;height:100%;box-sizing:border-box;min-width:2em}.gallery-row .attachment.image: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{object-fit:contain}.gallery-row.cover-fit canvas,.gallery-row.cover-fit img,.gallery-row.cover-fit video{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/dist/cjs.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(\"2ed66ba2\", content, 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%;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/dist/cjs.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(\"445850cc\", content, 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/dist/cjs.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(\"17ef1fd6\", content, 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/dist/cjs.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(\"00e28cbe\", content, 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/dist/cjs.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(\"df526ee2\", content, 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)}.notification:hover .animated.avatar canvas{display:none}.notification:hover .animated.avatar img{visibility:visible}.notification .muted{padding:.25em .6em}.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-el{padding:0}.notification .non-mention .status-el .status{padding:.25em 0;color:hsla(240,1%,73%,.5);color:var(--faint,hsla(240,1%,73%,.5))}.notification .non-mention .status-el .status a{color:var(--faintLink)}.notification .non-mention .status-el .status .status-content a{color:var(--postFaintLink)}.notification .non-mention .status-el .media-body{margin:0}.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;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/dist/cjs.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(\"0e81a5ef\", content, 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 .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/dist/cjs.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(\"37d03462\", content, 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/dist/cjs.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(\"52d5eed7\", content, 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{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/dist/cjs.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(\"b63831f4\", content, 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/dist/cjs.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(\"0fc2c47c\", content, 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/dist/cjs.js!./style_switcher.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(\"5945bb7a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".style-switcher .theme-warning{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;margin-bottom:.5em}.style-switcher .theme-warning .buttons .btn{margin-bottom:.5em}.style-switcher .preset-switcher{margin-right:1em}.style-switcher .style-control{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline;margin-bottom:5px}.style-switcher .style-control .label{-ms-flex:1;flex:1}.style-switcher .style-control.disabled input,.style-switcher .style-control.disabled select{opacity:.5}.style-switcher .style-control .opt{margin:.5em}.style-switcher .style-control .color-input{-ms-flex:0 0 0px;flex:0 0 0}.style-switcher .style-control input,.style-switcher .style-control select{min-width:3em;margin:0;-ms-flex:0;flex:0}.style-switcher .style-control input[type=number],.style-switcher .style-control select[type=number]{min-width:5em}.style-switcher .style-control input[type=range],.style-switcher .style-control select[type=range]{-ms-flex:1;flex:1;min-width:3em;-ms-flex-item-align:start;align-self:flex-start}.style-switcher .tab-switcher{margin:0 -1em}.style-switcher .reset-container{-ms-flex-wrap:wrap;flex-wrap:wrap}.style-switcher .apply-container,.style-switcher .color-container,.style-switcher .fonts-container,.style-switcher .radius-container,.style-switcher .reset-container{display:-ms-flexbox;display:flex}.style-switcher .fonts-container,.style-switcher .radius-container{-ms-flex-direction:column;flex-direction:column}.style-switcher .color-container{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between}.style-switcher .color-container>h4{width:99%}.style-switcher .color-container,.style-switcher .fonts-container,.style-switcher .presets-container,.style-switcher .radius-container,.style-switcher .shadow-container{margin:1em 1em 0}.style-switcher .tab-header{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:baseline;align-items:baseline;width:100%;min-height:30px;margin-bottom:1em}.style-switcher .tab-header .btn{min-width:1px;-ms-flex:0 auto;flex:0 auto;padding:0 1em}.style-switcher .tab-header p{-ms-flex:1;flex:1;margin:0;margin-right:.5em}.style-switcher .shadow-selector .override{-ms-flex:1;flex:1;margin-left:.5em}.style-switcher .shadow-selector .select-container{margin-top:-4px;margin-bottom:-3px}.style-switcher .save-load,.style-switcher .save-load-options{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:baseline;align-items:baseline;-ms-flex-wrap:wrap;flex-wrap:wrap}.style-switcher .save-load-options .import-export,.style-switcher .save-load-options .presets,.style-switcher .save-load .import-export,.style-switcher .save-load .presets{margin-bottom:.5em}.style-switcher .save-load-options .import-export,.style-switcher .save-load .import-export{display:-ms-flexbox;display:flex}.style-switcher .save-load-options .override,.style-switcher .save-load .override{margin-left:.5em}.style-switcher .save-load-options{-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:.5em;-ms-flex-pack:center;justify-content:center}.style-switcher .save-load-options .keep-option{margin:0 .5em .5em;min-width:25%}.style-switcher .preview-container{border-top:1px dashed;border-bottom:1px dashed;border-color:#222;border-color:var(--border,#222);margin:1em -1em 0;padding:1em;background:var(--body-background-image);background-size:cover;background-position:50% 50%}.style-switcher .preview-container .dummy .post{font-family:var(--postFont);display:-ms-flexbox;display:flex}.style-switcher .preview-container .dummy .post .content{-ms-flex:1;flex:1}.style-switcher .preview-container .dummy .post .content h4{margin-bottom:.25em}.style-switcher .preview-container .dummy .post .content .icons{margin-top:.5em;display:-ms-flexbox;display:flex}.style-switcher .preview-container .dummy .post .content .icons i{margin-right:1em}.style-switcher .preview-container .dummy .after-post{margin-top:1em;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.style-switcher .preview-container .dummy .avatar,.style-switcher .preview-container .dummy .avatar-alt{background:linear-gradient(135deg,#b8e1fc,#a9d2f3 10%,#90bae4 25%,#90bcea 37%,#90bff0 50%,#6ba8e5 51%,#a2daf5 83%,#bdf3fd);color:#000;font-family:sans-serif;text-align:center;margin-right:1em}.style-switcher .preview-container .dummy .avatar-alt{-ms-flex:0 auto;flex:0 auto;margin-left:28px;font-size:12px;min-width:20px;min-height:20px;line-height:20px;border-radius:10px;border-radius:var(--avatarAltRadius,10px)}.style-switcher .preview-container .dummy .avatar{-ms-flex:0 auto;flex:0 auto;width:48px;height:48px;font-size:14px;line-height:48px}.style-switcher .preview-container .dummy .actions{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline}.style-switcher .preview-container .dummy .actions .checkbox{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:baseline;align-items:baseline;margin-right:1em;-ms-flex:1;flex:1}.style-switcher .preview-container .dummy .separator{margin:1em;border-bottom:1px solid;border-color:#222;border-color:var(--border,#222)}.style-switcher .preview-container .dummy .panel-heading .alert,.style-switcher .preview-container .dummy .panel-heading .badge,.style-switcher .preview-container .dummy .panel-heading .btn,.style-switcher .preview-container .dummy .panel-heading .faint{margin-left:1em;white-space:nowrap}.style-switcher .preview-container .dummy .panel-heading .faint{text-overflow:ellipsis;min-width:2em;overflow-x:hidden}.style-switcher .preview-container .dummy .panel-heading .flex-spacer{-ms-flex:1;flex:1}.style-switcher .preview-container .dummy .btn{margin-left:0;padding:0 1em;min-width:3em;min-height:30px}.style-switcher .apply-container{-ms-flex-pack:center;justify-content:center}.style-switcher .color-item,.style-switcher .radius-item{min-width:20em;margin:5px 6px 0 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1 1 0px;flex:1 1 0}.style-switcher .color-item.wide,.style-switcher .radius-item.wide{min-width:60%}.style-switcher .color-item:not(.wide):nth-child(odd),.style-switcher .radius-item:not(.wide):nth-child(odd){margin-right:7px}.style-switcher .color-item .color,.style-switcher .color-item .opacity,.style-switcher .radius-item .color,.style-switcher .radius-item .opacity{display:-ms-flexbox;display:flex;-ms-flex-align:baseline;align-items:baseline}.style-switcher .radius-item{-ms-flex-preferred-size:auto;flex-basis:auto}.style-switcher .theme-color-cl,.style-switcher .theme-radius-rn{border:0;box-shadow:none;background:transparent;color:var(--faint,hsla(240,1%,73%,.5));-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.style-switcher .theme-color-cl,.style-switcher .theme-color-in,.style-switcher .theme-radius-in{margin-left:4px}.style-switcher .theme-radius-in{min-width:1em;max-width:7em;-ms-flex:1;flex:1}.style-switcher .theme-radius-lb{max-width:50em}.style-switcher .theme-preview-content{padding:20px}.style-switcher .btn{margin-left:.25em;margin-right:.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!./color_input.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(\"dfd77006\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".color-input,.color-input-field.input{display:-ms-inline-flexbox;display:inline-flex}.color-input-field.input{-ms-flex:0 0 0px;flex:0 0 0;max-width:9em;-ms-flex-align:stretch;align-items:stretch;padding:.2em 8px}.color-input-field.input input{background:none;color:#b9b9ba;color:var(--inputText,#b9b9ba);border:none;padding:0;margin:0}.color-input-field.input input.textColor{-ms-flex:1 0 3em;flex:1 0 3em;min-width:3em;padding:0}.color-input-field.input .computedIndicator,.color-input-field.input .transparentIndicator,.color-input-field.input input.nativeColor{-ms-flex:0 0 2em;flex:0 0 2em;min-width:2em;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;height:100%}.color-input-field.input .transparentIndicator{background-color:#f0f;position:relative}.color-input-field.input .transparentIndicator:after,.color-input-field.input .transparentIndicator:before{display:block;content:\\\"\\\";background-color:#000;position:absolute;height:50%;width:50%}.color-input-field.input .transparentIndicator:after{top:0;left:0}.color-input-field.input .transparentIndicator:before{bottom:0;right:0}.color-input .label{-ms-flex:1 1 auto;flex:1 1 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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=1!./color_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(\"0903f05e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".color-control input.text-input{max-width:7em;-ms-flex:1;flex: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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./shadow_control.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"34994334\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".shadow-control{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin-bottom:1em}.shadow-control .shadow-preview-container,.shadow-control .shadow-tweak{margin:5px 6px 0 0}.shadow-control .shadow-preview-container{-ms-flex:0;flex:0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.shadow-control .shadow-preview-container input[type=number]{width:5em;min-width:2em}.shadow-control .shadow-preview-container .x-shift-control,.shadow-control .shadow-preview-container .y-shift-control{display:-ms-flexbox;display:flex;-ms-flex:0;flex:0}.shadow-control .shadow-preview-container .x-shift-control[disabled=disabled] *,.shadow-control .shadow-preview-container .y-shift-control[disabled=disabled] *{opacity:.5}.shadow-control .shadow-preview-container .x-shift-control{-ms-flex-align:start;align-items:flex-start}.shadow-control .shadow-preview-container .x-shift-control .wrap,.shadow-control .shadow-preview-container input[type=range]{margin:0;width:15em;height:2em}.shadow-control .shadow-preview-container .y-shift-control{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:end;align-items:flex-end}.shadow-control .shadow-preview-container .y-shift-control .wrap{width:2em;height:15em}.shadow-control .shadow-preview-container .y-shift-control input[type=range]{transform-origin:1em 1em;transform:rotate(90deg)}.shadow-control .shadow-preview-container .preview-window{-ms-flex:1;flex:1;background-color:#999;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;background-image:linear-gradient(45deg,#666 25%,transparent 0),linear-gradient(-45deg,#666 25%,transparent 0),linear-gradient(45deg,transparent 75%,#666 0),linear-gradient(-45deg,transparent 75%,#666 0);background-size:20px 20px;background-position:0 0,0 10px,10px -10px,-10px 0;border-radius:4px;border-radius:var(--inputRadius,4px)}.shadow-control .shadow-preview-container .preview-window .preview-block{width:33%;height:33%;background-color:#121a24;background-color:var(--bg,#121a24);border-radius:10px;border-radius:var(--panelRadius,10px)}.shadow-control .shadow-tweak{-ms-flex:1;flex:1;min-width:280px}.shadow-control .shadow-tweak .id-control{-ms-flex-align:stretch;align-items:stretch}.shadow-control .shadow-tweak .id-control .btn,.shadow-control .shadow-tweak .id-control .select{min-width:1px;margin-right:5px}.shadow-control .shadow-tweak .id-control .btn{padding:0 .4em;margin:0 .1em}.shadow-control .shadow-tweak .id-control .select{-ms-flex:1;flex:1}.shadow-control .shadow-tweak .id-control .select select{-ms-flex-item-align:initial;-ms-grid-row-align:initial;align-self: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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./font_control.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4759ac92\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".font-control input.custom-font{min-width:10em}.font-control.custom .select{border-top-right-radius:0;border-bottom-right-radius:0}.font-control.custom .custom-font{border-top-left-radius:0;border-bottom-left-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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./contrast_ratio.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"1bcb29d4\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".contrast-ratio{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;margin-top:-4px;margin-bottom:5px}.contrast-ratio .label{margin-right:1em}.contrast-ratio .rating{display:inline-block;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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./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(\"66bd33ad\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".preview-container{position:relative}.underlay-preview{position:absolute;top:0;bottom:0;left:10px;right: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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./export_import.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"325a9e58\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".import-export-container{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:baseline;align-items:baseline;-ms-flex-pack:center;justify-content:center}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.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(\"3df2d06b\", content, 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/dist/cjs.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(\"6db54939\", content, 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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./user_settings.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ac89020a\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".profile-edit .bio{margin:0}.profile-edit .visibility-tray{padding-top:5px}.profile-edit input[type=file]{padding:5px;height:auto}.profile-edit .banner{max-width:100%}.profile-edit .uploading{font-size:1.5em;margin:.25em}.profile-edit .name-changer{width:100%}.profile-edit .bg{max-width:100%}.profile-edit .current-avatar{display:block;width:150px;height:150px;border-radius:4px;border-radius:var(--avatarRadius,4px)}.profile-edit .oauth-tokens{width:100%}.profile-edit .oauth-tokens th{text-align:left}.profile-edit .oauth-tokens .actions{text-align:right}.profile-edit-usersearch-wrapper{padding:1em}.profile-edit-bulk-actions{text-align:right;padding:0 1em;min-height:28px}.profile-edit-bulk-actions button{width:10em}.profile-edit-domain-mute-form{padding:1em;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.profile-edit-domain-mute-form button{-ms-flex-item-align:end;align-self:flex-end;margin-top:1em;width:10em}.profile-edit .setting-subitem{margin-left:1.75em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./image_cropper.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"e3aa5d66\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".image-cropper-img-input{display:none}.image-cropper-image-container{position:relative}.image-cropper-image-container img{display:block;max-width:100%}.image-cropper-buttons-wrapper{margin-top:10px}.image-cropper-buttons-wrapper button{margin-top:5px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./block_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(\"3662bb22\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".block-card-content-container{margin-top:.5em;text-align:right}.block-card-content-container button{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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mute_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(\"a4e7c40c\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".mute-card-content-container{margin-top:.5em;text-align:right}.mute-card-content-container button{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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./domain_mute_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(\"390fb9e9\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".domain-mute-card{-ms-flex:1 0;flex:1 0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;padding:.6em 1em .6em 0}.domain-mute-card-domain{margin-right:1em;overflow:hidden;text-overflow:ellipsis}.domain-mute-card button{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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./selectable_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(\"4011360b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".selectable-list-item-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.selectable-list-item-inner>*{min-width:0}.selectable-list-item-selected-inner{background-color:#151e2a;background-color:var(--selectedMenu,#151e2a);color:var(--selectedMenuText,#b9b9ba);--faint:var(--selectedMenuFaintText,$fallback--faint);--faintLink:var(--selectedMenuFaintLink,$fallback--faint);--lightText:var(--selectedMenuLightText,$fallback--lightText);--icon:var(--selectedMenuIcon,$fallback--icon)}.selectable-list-header{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.6em 0;border-bottom:2px solid;border-bottom-color:#222;border-bottom-color:var(--border,#222)}.selectable-list-header-actions{-ms-flex:1;flex:1}.selectable-list-checkbox-wrapper{padding:0 10px;-ms-flex:none;flex: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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./autosuggest.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6c8cb94e\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".autosuggest{position:relative}.autosuggest-input{display:block;width:100%}.autosuggest-results{position:absolute;left:0;top:100%;right:0;max-height:400px;background-color:#121a24;background-color:var(--bg,#121a24);border-color:#222;border:1px solid var(--border,#222);border-radius:4px;border-radius:var(--inputRadius,4px);border-top-left-radius:0;border-top-right-radius:0;box-shadow:1px 1px 4px rgba(0,0,0,.6);box-shadow:var(--panelShadow);overflow-y:auto;z-index: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/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./importer.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"8918dedc\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".importer-uploading{font-size:1.5em;margin:.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./exporter.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3dee2543\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".exporter-processing{font-size:1.5em;margin:.25em}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mfa.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"26ea081b\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".warning{color:orange;color:var(--cOrange,orange)}.mfa-settings .method-item,.mfa-settings .mfa-heading{overflow:hidden;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:baseline;align-items:baseline}.mfa-settings .setup-otp{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.mfa-settings .setup-otp .qr-code{-ms-flex:1;flex:1;padding-right:10px}.mfa-settings .setup-otp .verify{-ms-flex:1;flex:1}.mfa-settings .setup-otp .error{margin:4px 0 0}.mfa-settings .setup-otp .confirm-otp-actions button{width:15em;margin-top:5px}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./mfa_backup_codes.vue\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6e08db13\", content, true, {});","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".warning{color:orange;color:var(--cOrange,orange)}.backup-codes{font-family:var(--postCodeFont,monospace)}\", \"\"]);\n\n// exports\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../node_modules/css-loader/index.js?minimize!../../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!../../../node_modules/sass-loader/dist/cjs.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(\"032dac12\", content, 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/dist/cjs.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(\"57b854ca\", content, 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/dist/cjs.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(\"41485587\", content, 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/dist/cjs.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(\"1c861e78\", content, 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/dist/cjs.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(\"4a463c9e\", content, 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/dist/cjs.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(\"23db0922\", content, 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/dist/cjs.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(\"6968494c\", content, 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/dist/cjs.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(\"2c7f2b6e\", content, 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/dist/cjs.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(\"5f05aee9\", content, 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/dist/cjs.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(\"64f0cf3a\", content, 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/dist/cjs.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(\"280231c6\", content, 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%;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:.25em;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:gray}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}}.setting-item{border-bottom:2px solid var(--fg,#182230);margin:1em 1em 1.4em;padding-bottom:1.4em}.setting-item>div{margin-bottom:.5em}.setting-item>div:last-child{margin-bottom:0}.setting-item:last-child{border-bottom:none;padding-bottom:0;margin-bottom:1em}.setting-item select{min-width:10em}.setting-item textarea{width:100%;max-width:100%;height:100px}.setting-item .unavailable,.setting-item .unavailable i{color:var(--cRed,red);color:red}.setting-item .btn{min-height:28px;min-width:10em;padding:0 2em}.setting-item .number-input{max-width:6em}.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/dist/cjs.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(\"1a1c8294\", content, 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/dist/cjs.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(\"526b73a8\", content, 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/dist/cjs.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(\"0df33f28\", content, 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/dist/cjs.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(\"ee21dec6\", content, 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/dist/cjs.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(\"9a6a22d4\", content, 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/dist/cjs.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(\"3d75765e\", content, 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;animation-duration:.2s;background-color:rgba(0,0,0,.5);animation-name:modal-background-fadein}body:not(.scroll-locked) .modal-view{opacity:0}@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/dist/cjs.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(\"74ce49bd\", content, 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/dist/cjs.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(\"0c45e9be\", content, 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/dist/cjs.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(\"3357d19e\", content, 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/dist/cjs.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(\"769f3dbc\", content, 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/dist/cjs.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(\"0c21e47a\", content, 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","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 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}\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 },\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 }\n}\n\nexport default interfaceMod\n","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}\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 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 badgeNotification: '--cRed',\n badgeNotificationText: {\n depends: ['text', 'badgeNotification'],\n layer: 'badge',\n variant: 'badgeNotification',\n textColor: 'bw'\n }\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 { 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 { set, delete as del } from 'vue'\nimport { setPreset, applyTheme } from '../services/style_setter/style_setter.js'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\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 }\n }\n }\n}\n\nexport default config\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 { instanceDefaultProperties } from './config.js'\n\nconst defaultState = {\n // Stuff from static/config.json and apiConfig\n name: 'Pleroma FE',\n registrationOpen: true,\n safeDM: true,\n textlimit: 5000,\n server: 'http://localhost:4040/',\n theme: 'pleroma-dark',\n themeData: undefined,\n background: '/static/aurora_borealis.jpg',\n logo: '/static/logo.png',\n logoMask: true,\n logoMargin: '.2em',\n redirectRootNoLogin: '/main/all',\n redirectRootLogin: '/main/friends',\n showInstanceSpecificPanel: false,\n alwaysShowSubjectInput: true,\n hideMutedPosts: false,\n collapseMessageWithSubject: false,\n hidePostStats: false,\n hideUserStats: false,\n hideFilteredStatuses: false,\n disableChat: false,\n scopeCopy: true,\n subjectLineBehavior: 'email',\n postContentType: 'text/plain',\n hideSitename: false,\n nsfwCensorImage: undefined,\n vapidPublicKey: undefined,\n noAttachmentLinks: false,\n showFeaturesPanel: true,\n minimalScopesMode: false,\n greentext: false,\n\n // Nasty stuff\n pleromaBackend: true,\n emoji: [],\n emojiFetched: false,\n customEmoji: [],\n customEmojiFetched: false,\n restrictedNicknames: [],\n postFormats: [],\n\n // Feature-set, apparently, not everything here is reported...\n mediaProxyAvailable: false,\n chatAvailable: false,\n gopherAvailable: 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 },\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}\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 } from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n// import parse 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 }\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 = {},\n noIdUpdate = false, userId }) => {\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 const maxNew = statuses.length > 0 ? maxBy(statuses, 'id').id : 0\n const minNew = statuses.length > 0 ? minBy(statuses, 'id').id : 0\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) {\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 = {}\n const status = notification.status\n const title = notification.from_profile.name\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 = rootGetters.i18n.t('notifications.reacted_with', [notification.emoji])\n } else if (i18nString) {\n notifObj.body = rootGetters.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 if (!notification.seen && !state.notifications.desktopNotificationSilence && visibleNotificationTypes.includes(notification.type)) {\n let desktopNotification = new window.Notification(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 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 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 }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId })\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 queueFlush ({ rootState, commit }, { timeline, id }) {\n commit('queueFlush', { timeline, id })\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 }) => {\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 })\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 = getters.mergedConfig.hideMutedPosts\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\n const numStatusesBeforeFetch = timelineData.statuses.length\n\n return apiService.fetchTimeline(args)\n .then((statuses) => {\n if (statuses.error) {\n store.dispatch('setErrorData', { value: statuses })\n return\n }\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 })\n return statuses\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 // load unread notifications repeatedly to provide consistency between browser tabs\n const notifications = timelineData.data\n const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n if (readNotifsIds.length) {\n args['since'] = Math.max(...readNotifsIds)\n fetchNotifications({ store, args, older })\n }\n\n return result\n }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n return apiService.fetchTimeline(args)\n .then((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 }, () => {})\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 fetchAndUpdateNotifications ({ store }) {\n return notificationsFetcher.fetchAndUpdate({ 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, merge, last, concat, uniq } 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 merge(oldItem, item)\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 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 = merge(state.currentUser || {}, user)\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 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 (store, query) {\n return store.rootState.api.backendInteractor.searchUsers({ query })\n .then((users) => {\n store.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 fetchAndUpdateNotifications (store) {\n store.state.backendInteractor.fetchAndUpdateNotifications({ store })\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'\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 objectPath from 'object-path'\nimport localforage from 'localforage'\nimport { each } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n paths.length === 0 ? state : paths.reduce((substate, path) => {\n objectPath.set(substate, path, objectPath.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","// 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 messages = {\n ar: require('./ar.json'),\n ca: require('./ca.json'),\n cs: require('./cs.json'),\n de: require('./de.json'),\n en: require('./en.json'),\n eo: require('./eo.json'),\n es: require('./es.json'),\n et: require('./et.json'),\n eu: require('./eu.json'),\n fi: require('./fi.json'),\n fr: require('./fr.json'),\n ga: require('./ga.json'),\n he: require('./he.json'),\n hu: require('./hu.json'),\n it: require('./it.json'),\n ja: require('./ja_pedantic.json'),\n ja_easy: require('./ja_easy.json'),\n ko: require('./ko.json'),\n nb: require('./nb.json'),\n nl: require('./nl.json'),\n oc: require('./oc.json'),\n pl: require('./pl.json'),\n pt: require('./pt.json'),\n ro: require('./ro.json'),\n ru: require('./ru.json'),\n te: require('./te.json'),\n zh: require('./zh.json')\n}\n\nexport default messages\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 newStatusCountStr () {\n if (this.timeline.flushMarker !== 0) {\n return ''\n } else {\n return ` (${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.newStatusCount === 0) return\n\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-1b95cb52\\\",\\\"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._e(),_vm._v(\" \"),(_vm.timeline.newStatusCount > 0 && !_vm.timelineError && !_vm.errorData)?_c('button',{staticClass:\"loadmore-button\",on:{\"click\":function($event){$event.preventDefault();return _vm.showNewStatuses($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('timeline.show_new'))+_vm._s(_vm.newStatusCountStr)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.timeline.newStatusCount > 0 && !_vm.timelineError && !_vm.errorData)?_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._e()]),_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 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 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 Status,\n UserAvatar,\n UserCard,\n Timeago\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-0b3fbfb4\\\",\\\"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',{staticClass:\"faint\",attrs:{\"compact\":true,\"statusoid\":_vm.notification.action,\"no-heading\":true}})]],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 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 created () {\n const { dispatch } = this.$store\n\n dispatch('fetchAndUpdateNotifications')\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 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 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-070e8e0f\\\",\\\"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.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()]:[_c('FollowButton',{staticClass:\"follow-card-follow-button\",attrs:{\"relationship\":_vm.relationship,\"label-following\":_vm.$t('user_card.follow_unfollow')}})]],2)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div class=\"list\">\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n />\n </div>\n <div\n v-if=\"items.length === 0 && !!$slots.empty\"\n class=\"list-empty-content faint\"\n >\n <slot name=\"empty\" />\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list {\n &-item:not(:last-child) {\n border-bottom: 1px solid;\n border-bottom-color: $fallback--border;\n border-bottom-color: var(--border, $fallback--border);\n }\n\n &-empty-content {\n text-align: center;\n padding: 10px;\n }\n}\n</style>\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./list.vue\"\n/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c1790f52\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./list.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"list\"},[_vm._l((_vm.items),function(item){return _c('div',{key:_vm.getKey(item),staticClass:\"list-item\"},[_vm._t(\"item\",null,{\"item\":item})],2)}),_vm._v(\" \"),(_vm.items.length === 0 && !!_vm.$slots.empty)?_c('div',{staticClass:\"list-empty-content faint\"},[_vm._t(\"empty\")],2):_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","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 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 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 },\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 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-21b328ed\\\",\\\"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(\" \"),_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 }","<template>\n <div\n class=\"color-input style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined' && showOptionalTickbox\"\n :checked=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @change=\"$emit('input', typeof value === 'undefined' ? fallback : undefined)\"\n />\n <div class=\"input color-input-field\">\n <input\n :id=\"name + '-t'\"\n class=\"textColor unstyled\"\n type=\"text\"\n :value=\"value || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('input', $event.target.value)\"\n >\n <input\n v-if=\"validColor\"\n :id=\"name\"\n class=\"nativeColor unstyled\"\n type=\"color\"\n :value=\"value || fallback\"\n :disabled=\"!present || disabled\"\n @input=\"$emit('input', $event.target.value)\"\n >\n <div\n v-if=\"transparentColor\"\n class=\"transparentIndicator\"\n />\n <div\n v-if=\"computedColor\"\n class=\"computedIndicator\"\n :style=\"{backgroundColor: fallback}\"\n />\n </div>\n </div>\n</template>\n<style lang=\"scss\" src=\"./color_input.scss\"></style>\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\nexport default {\n components: {\n Checkbox\n },\n props: {\n // Name of color, used for identifying\n name: {\n required: true,\n type: String\n },\n // Readable label\n label: {\n required: true,\n type: String\n },\n // Color value, should be required but vue cannot tell the difference\n // between \"property missing\" and \"property set to undefined\"\n value: {\n required: false,\n type: String,\n default: undefined\n },\n // Color fallback to use when value is not defeind\n fallback: {\n required: false,\n type: String,\n default: undefined\n },\n // Disable the control\n disabled: {\n required: false,\n type: Boolean,\n default: false\n },\n // Show \"optional\" tickbox, for when value might become mandatory\n showOptionalTickbox: {\n required: false,\n type: Boolean,\n default: true\n }\n },\n computed: {\n present () {\n return typeof this.value !== 'undefined'\n },\n validColor () {\n return hex2rgb(this.value || this.fallback)\n },\n transparentColor () {\n return this.value === 'transparent'\n },\n computedColor () {\n return this.value && this.value.startsWith('--')\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.color-control {\n input.text-input {\n max-width: 7em;\n flex: 1;\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!./color_input.scss\")\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=1!./color_input.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./color_input.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./color_input.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-77e407b6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./color_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',{staticClass:\"color-input style-control\",class:{ disabled: !_vm.present || _vm.disabled }},[_c('label',{staticClass:\"label\",attrs:{\"for\":_vm.name}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n \")]),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined' && _vm.showOptionalTickbox)?_c('Checkbox',{staticClass:\"opt\",attrs:{\"checked\":_vm.present,\"disabled\":_vm.disabled},on:{\"change\":function($event){return _vm.$emit('input', typeof _vm.value === 'undefined' ? _vm.fallback : undefined)}}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"input color-input-field\"},[_c('input',{staticClass:\"textColor unstyled\",attrs:{\"id\":_vm.name + '-t',\"type\":\"text\",\"disabled\":!_vm.present || _vm.disabled},domProps:{\"value\":_vm.value || _vm.fallback},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}),_vm._v(\" \"),(_vm.validColor)?_c('input',{staticClass:\"nativeColor unstyled\",attrs:{\"id\":_vm.name,\"type\":\"color\",\"disabled\":!_vm.present || _vm.disabled},domProps:{\"value\":_vm.value || _vm.fallback},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}):_vm._e(),_vm._v(\" \"),(_vm.transparentColor)?_c('div',{staticClass:\"transparentIndicator\"}):_vm._e(),_vm._v(\" \"),(_vm.computedColor)?_c('div',{staticClass:\"computedIndicator\",style:({backgroundColor: _vm.fallback})}):_vm._e()])],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./range_input.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./range_input.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-6a3c1a26\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./range_input.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","<template>\n <div\n class=\"range-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ label }}\n </label>\n <input\n v-if=\"typeof fallback !== 'undefined'\"\n :id=\"name + '-o'\"\n class=\"opt\"\n type=\"checkbox\"\n :checked=\"present\"\n @input=\"$emit('input', !present ? fallback : undefined)\"\n >\n <label\n v-if=\"typeof fallback !== 'undefined'\"\n class=\"opt-l\"\n :for=\"name + '-o'\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"range\"\n :value=\"value || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"max || hardMax || 100\"\n :min=\"min || hardMin || 0\"\n :step=\"step || 1\"\n @input=\"$emit('input', $event.target.value)\"\n >\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"number\"\n :value=\"value || fallback\"\n :disabled=\"!present || disabled\"\n :max=\"hardMax\"\n :min=\"hardMin\"\n :step=\"step || 1\"\n @input=\"$emit('input', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nexport default {\n props: [\n 'name', 'value', 'fallback', 'disabled', 'label', 'max', 'min', 'step', 'hardMin', 'hardMax'\n ],\n computed: {\n present () {\n return typeof this.value !== 'undefined'\n }\n }\n}\n</script>\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"range-control style-control\",class:{ disabled: !_vm.present || _vm.disabled }},[_c('label',{staticClass:\"label\",attrs:{\"for\":_vm.name}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n \")]),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined')?_c('input',{staticClass:\"opt\",attrs:{\"id\":_vm.name + '-o',\"type\":\"checkbox\"},domProps:{\"checked\":_vm.present},on:{\"input\":function($event){return _vm.$emit('input', !_vm.present ? _vm.fallback : undefined)}}}):_vm._e(),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined')?_c('label',{staticClass:\"opt-l\",attrs:{\"for\":_vm.name + '-o'}}):_vm._e(),_vm._v(\" \"),_c('input',{staticClass:\"input-number\",attrs:{\"id\":_vm.name,\"type\":\"range\",\"disabled\":!_vm.present || _vm.disabled,\"max\":_vm.max || _vm.hardMax || 100,\"min\":_vm.min || _vm.hardMin || 0,\"step\":_vm.step || 1},domProps:{\"value\":_vm.value || _vm.fallback},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}}),_vm._v(\" \"),_c('input',{staticClass:\"input-number\",attrs:{\"id\":_vm.name,\"type\":\"number\",\"disabled\":!_vm.present || _vm.disabled,\"max\":_vm.hardMax,\"min\":_vm.hardMin,\"step\":_vm.step || 1},domProps:{\"value\":_vm.value || _vm.fallback},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div\n class=\"opacity-control style-control\"\n :class=\"{ disabled: !present || disabled }\"\n >\n <label\n :for=\"name\"\n class=\"label\"\n >\n {{ $t('settings.style.common.opacity') }}\n </label>\n <Checkbox\n v-if=\"typeof fallback !== 'undefined'\"\n :checked=\"present\"\n :disabled=\"disabled\"\n class=\"opt\"\n @change=\"$emit('input', !present ? fallback : undefined)\"\n />\n <input\n :id=\"name\"\n class=\"input-number\"\n type=\"number\"\n :value=\"value || fallback\"\n :disabled=\"!present || disabled\"\n max=\"1\"\n min=\"0\"\n step=\".05\"\n @input=\"$emit('input', $event.target.value)\"\n >\n </div>\n</template>\n\n<script>\nimport Checkbox from '../checkbox/checkbox.vue'\nexport default {\n components: {\n Checkbox\n },\n props: [\n 'name', 'value', 'fallback', 'disabled'\n ],\n computed: {\n present () {\n return typeof this.value !== 'undefined'\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./opacity_input.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./opacity_input.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-3b48fa39\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./opacity_input.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:\"opacity-control style-control\",class:{ disabled: !_vm.present || _vm.disabled }},[_c('label',{staticClass:\"label\",attrs:{\"for\":_vm.name}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.common.opacity'))+\"\\n \")]),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined')?_c('Checkbox',{staticClass:\"opt\",attrs:{\"checked\":_vm.present,\"disabled\":_vm.disabled},on:{\"change\":function($event){return _vm.$emit('input', !_vm.present ? _vm.fallback : undefined)}}}):_vm._e(),_vm._v(\" \"),_c('input',{staticClass:\"input-number\",attrs:{\"id\":_vm.name,\"type\":\"number\",\"disabled\":!_vm.present || _vm.disabled,\"max\":\"1\",\"min\":\"0\",\"step\":\".05\"},domProps:{\"value\":_vm.value || _vm.fallback},on:{\"input\":function($event){return _vm.$emit('input', $event.target.value)}}})],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ColorInput from '../color_input/color_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport { getCssShadow } from '../../services/style_setter/style_setter.js'\nimport { hex2rgb } from '../../services/color_convert/color_convert.js'\n\nconst toModel = (object = {}) => ({\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n inset: false,\n color: '#000000',\n alpha: 1,\n ...object\n})\n\nexport default {\n // 'Value' and 'Fallback' can be undefined, but if they are\n // initially vue won't detect it when they become something else\n // therefore i'm using \"ready\" which should be passed as true when\n // data becomes available\n props: [\n 'value', 'fallback', 'ready'\n ],\n data () {\n return {\n selectedId: 0,\n // TODO there are some bugs regarding display of array (it's not getting updated when deleting for some reason)\n cValue: (this.value || this.fallback || []).map(toModel)\n }\n },\n components: {\n ColorInput,\n OpacityInput\n },\n methods: {\n add () {\n this.cValue.push(toModel(this.selected))\n this.selectedId = this.cValue.length - 1\n },\n del () {\n this.cValue.splice(this.selectedId, 1)\n this.selectedId = this.cValue.length === 0 ? undefined : Math.max(this.selectedId - 1, 0)\n },\n moveUp () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId - 1, 0, movable)\n this.selectedId -= 1\n },\n moveDn () {\n const movable = this.cValue.splice(this.selectedId, 1)[0]\n this.cValue.splice(this.selectedId + 1, 0, movable)\n this.selectedId += 1\n }\n },\n beforeUpdate () {\n this.cValue = this.value || this.fallback\n },\n computed: {\n anyShadows () {\n return this.cValue.length > 0\n },\n anyShadowsFallback () {\n return this.fallback.length > 0\n },\n selected () {\n if (this.ready && this.anyShadows) {\n return this.cValue[this.selectedId]\n } else {\n return toModel({})\n }\n },\n currentFallback () {\n if (this.ready && this.anyShadowsFallback) {\n return this.fallback[this.selectedId]\n } else {\n return toModel({})\n }\n },\n moveUpValid () {\n return this.ready && this.selectedId > 0\n },\n moveDnValid () {\n return this.ready && this.selectedId < this.cValue.length - 1\n },\n present () {\n return this.ready &&\n typeof this.cValue[this.selectedId] !== 'undefined' &&\n !this.usingFallback\n },\n usingFallback () {\n return typeof this.value === 'undefined'\n },\n rgb () {\n return hex2rgb(this.selected.color)\n },\n style () {\n return this.ready ? {\n boxShadow: getCssShadow(this.fallback)\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!./shadow_control.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./shadow_control.js\"\nimport __vue_script__ from \"!!babel-loader!./shadow_control.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c532734\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./shadow_control.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"shadow-control\",class:{ disabled: !_vm.present }},[_c('div',{staticClass:\"shadow-preview-container\"},[_c('div',{staticClass:\"y-shift-control\",attrs:{\"disabled\":!_vm.present}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.y),expression:\"selected.y\"}],staticClass:\"input-number\",attrs:{\"disabled\":!_vm.present,\"type\":\"number\"},domProps:{\"value\":(_vm.selected.y)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.selected, \"y\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.y),expression:\"selected.y\"}],staticClass:\"input-range\",attrs:{\"disabled\":!_vm.present,\"type\":\"range\",\"max\":\"20\",\"min\":\"-20\"},domProps:{\"value\":(_vm.selected.y)},on:{\"__r\":function($event){return _vm.$set(_vm.selected, \"y\", $event.target.value)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"preview-window\"},[_c('div',{staticClass:\"preview-block\",style:(_vm.style)})]),_vm._v(\" \"),_c('div',{staticClass:\"x-shift-control\",attrs:{\"disabled\":!_vm.present}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.x),expression:\"selected.x\"}],staticClass:\"input-number\",attrs:{\"disabled\":!_vm.present,\"type\":\"number\"},domProps:{\"value\":(_vm.selected.x)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.selected, \"x\", $event.target.value)}}}),_vm._v(\" \"),_c('div',{staticClass:\"wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.x),expression:\"selected.x\"}],staticClass:\"input-range\",attrs:{\"disabled\":!_vm.present,\"type\":\"range\",\"max\":\"20\",\"min\":\"-20\"},domProps:{\"value\":(_vm.selected.x)},on:{\"__r\":function($event){return _vm.$set(_vm.selected, \"x\", $event.target.value)}}})])])]),_vm._v(\" \"),_c('div',{staticClass:\"shadow-tweak\"},[_c('div',{staticClass:\"id-control style-control\",attrs:{\"disabled\":_vm.usingFallback}},[_c('label',{staticClass:\"select\",attrs:{\"for\":\"shadow-switcher\",\"disabled\":!_vm.ready || _vm.usingFallback}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedId),expression:\"selectedId\"}],staticClass:\"shadow-switcher\",attrs:{\"id\":\"shadow-switcher\",\"disabled\":!_vm.ready || _vm.usingFallback},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.selectedId=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.cValue),function(shadow,index){return _c('option',{key:index,domProps:{\"value\":index}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.shadow_id', { value: index }))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":!_vm.ready || !_vm.present},on:{\"click\":_vm.del}},[_c('i',{staticClass:\"icon-cancel\"})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":!_vm.moveUpValid},on:{\"click\":_vm.moveUp}},[_c('i',{staticClass:\"icon-up-open\"})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":!_vm.moveDnValid},on:{\"click\":_vm.moveDn}},[_c('i',{staticClass:\"icon-down-open\"})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.usingFallback},on:{\"click\":_vm.add}},[_c('i',{staticClass:\"icon-plus\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"inset-control style-control\",attrs:{\"disabled\":!_vm.present}},[_c('label',{staticClass:\"label\",attrs:{\"for\":\"inset\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.inset'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.inset),expression:\"selected.inset\"}],staticClass:\"input-inset\",attrs:{\"id\":\"inset\",\"disabled\":!_vm.present,\"name\":\"inset\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.selected.inset)?_vm._i(_vm.selected.inset,null)>-1:(_vm.selected.inset)},on:{\"change\":function($event){var $$a=_vm.selected.inset,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.selected, \"inset\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.selected, \"inset\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.selected, \"inset\", $$c)}}}}),_vm._v(\" \"),_c('label',{staticClass:\"checkbox-label\",attrs:{\"for\":\"inset\"}})]),_vm._v(\" \"),_c('div',{staticClass:\"blur-control style-control\",attrs:{\"disabled\":!_vm.present}},[_c('label',{staticClass:\"label\",attrs:{\"for\":\"spread\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.blur'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.blur),expression:\"selected.blur\"}],staticClass:\"input-range\",attrs:{\"id\":\"blur\",\"disabled\":!_vm.present,\"name\":\"blur\",\"type\":\"range\",\"max\":\"20\",\"min\":\"0\"},domProps:{\"value\":(_vm.selected.blur)},on:{\"__r\":function($event){return _vm.$set(_vm.selected, \"blur\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.blur),expression:\"selected.blur\"}],staticClass:\"input-number\",attrs:{\"disabled\":!_vm.present,\"type\":\"number\",\"min\":\"0\"},domProps:{\"value\":(_vm.selected.blur)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.selected, \"blur\", $event.target.value)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"spread-control style-control\",attrs:{\"disabled\":!_vm.present}},[_c('label',{staticClass:\"label\",attrs:{\"for\":\"spread\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.spread'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.spread),expression:\"selected.spread\"}],staticClass:\"input-range\",attrs:{\"id\":\"spread\",\"disabled\":!_vm.present,\"name\":\"spread\",\"type\":\"range\",\"max\":\"20\",\"min\":\"-20\"},domProps:{\"value\":(_vm.selected.spread)},on:{\"__r\":function($event){return _vm.$set(_vm.selected, \"spread\", $event.target.value)}}}),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected.spread),expression:\"selected.spread\"}],staticClass:\"input-number\",attrs:{\"disabled\":!_vm.present,\"type\":\"number\"},domProps:{\"value\":(_vm.selected.spread)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.selected, \"spread\", $event.target.value)}}})]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"disabled\":!_vm.present,\"label\":_vm.$t('settings.style.common.color'),\"fallback\":_vm.currentFallback.color,\"show-optional-tickbox\":false,\"name\":\"shadow\"},model:{value:(_vm.selected.color),callback:function ($$v) {_vm.$set(_vm.selected, \"color\", $$v)},expression:\"selected.color\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"disabled\":!_vm.present},model:{value:(_vm.selected.alpha),callback:function ($$v) {_vm.$set(_vm.selected, \"alpha\", $$v)},expression:\"selected.alpha\"}}),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":\"settings.style.shadows.hintV3\",\"tag\":\"p\"}},[_c('code',[_vm._v(\"--variable,mod\")])])],1)])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { set } from 'vue'\n\nexport default {\n props: [\n 'name', 'label', 'value', 'fallback', 'options', 'no-inherit'\n ],\n data () {\n return {\n lValue: this.value,\n availableOptions: [\n this.noInherit ? '' : 'inherit',\n 'custom',\n ...(this.options || []),\n 'serif',\n 'monospace',\n 'sans-serif'\n ].filter(_ => _)\n }\n },\n beforeUpdate () {\n this.lValue = this.value\n },\n computed: {\n present () {\n return typeof this.lValue !== 'undefined'\n },\n dValue () {\n return this.lValue || this.fallback || {}\n },\n family: {\n get () {\n return this.dValue.family\n },\n set (v) {\n set(this.lValue, 'family', v)\n this.$emit('input', this.lValue)\n }\n },\n isCustom () {\n return this.preset === 'custom'\n },\n preset: {\n get () {\n if (this.family === 'serif' ||\n this.family === 'sans-serif' ||\n this.family === 'monospace' ||\n this.family === 'inherit') {\n return this.family\n } else {\n return 'custom'\n }\n },\n set (v) {\n this.family = v === 'custom' ? '' : v\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!./font_control.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./font_control.js\"\nimport __vue_script__ from \"!!babel-loader!./font_control.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0edf8dfc\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./font_control.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"font-control style-control\",class:{ custom: _vm.isCustom }},[_c('label',{staticClass:\"label\",attrs:{\"for\":_vm.preset === 'custom' ? _vm.name : _vm.name + '-font-switcher'}},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n \")]),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined')?_c('input',{staticClass:\"opt exlcude-disabled\",attrs:{\"id\":_vm.name + '-o',\"type\":\"checkbox\"},domProps:{\"checked\":_vm.present},on:{\"input\":function($event){return _vm.$emit('input', typeof _vm.value === 'undefined' ? _vm.fallback : undefined)}}}):_vm._e(),_vm._v(\" \"),(typeof _vm.fallback !== 'undefined')?_c('label',{staticClass:\"opt-l\",attrs:{\"for\":_vm.name + '-o'}}):_vm._e(),_vm._v(\" \"),_c('label',{staticClass:\"select\",attrs:{\"for\":_vm.name + '-font-switcher',\"disabled\":!_vm.present}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.preset),expression:\"preset\"}],staticClass:\"font-switcher\",attrs:{\"id\":_vm.name + '-font-switcher',\"disabled\":!_vm.present},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.preset=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.availableOptions),function(option){return _c('option',{key:option,domProps:{\"value\":option}},[_vm._v(\"\\n \"+_vm._s(option === 'custom' ? _vm.$t('settings.style.fonts.custom') : option)+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})]),_vm._v(\" \"),(_vm.isCustom)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.family),expression:\"family\"}],staticClass:\"custom-font\",attrs:{\"id\":_vm.name,\"type\":\"text\"},domProps:{\"value\":(_vm.family)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.family=$event.target.value}}}):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <span\n v-if=\"contrast\"\n class=\"contrast-ratio\"\n >\n <span\n :title=\"hint\"\n class=\"rating\"\n >\n <span v-if=\"contrast.aaa\">\n <i class=\"icon-thumbs-up-alt\" />\n </span>\n <span v-if=\"!contrast.aaa && contrast.aa\">\n <i class=\"icon-adjust\" />\n </span>\n <span v-if=\"!contrast.aaa && !contrast.aa\">\n <i class=\"icon-attention\" />\n </span>\n </span>\n <span\n v-if=\"contrast && large\"\n class=\"rating\"\n :title=\"hint_18pt\"\n >\n <span v-if=\"contrast.laaa\">\n <i class=\"icon-thumbs-up-alt\" />\n </span>\n <span v-if=\"!contrast.laaa && contrast.laa\">\n <i class=\"icon-adjust\" />\n </span>\n <span v-if=\"!contrast.laaa && !contrast.laa\">\n <i class=\"icon-attention\" />\n </span>\n </span>\n </span>\n</template>\n\n<script>\nexport default {\n props: {\n large: {\n required: false\n },\n // TODO: Make theme switcher compute theme initially so that contrast\n // component won't be called without contrast data\n contrast: {\n required: false,\n type: Object\n }\n },\n computed: {\n hint () {\n const levelVal = this.contrast.aaa ? 'aaa' : (this.contrast.aa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.text')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n },\n hint_18pt () {\n const levelVal = this.contrast.laaa ? 'aaa' : (this.contrast.laa ? 'aa' : 'bad')\n const level = this.$t(`settings.style.common.contrast.level.${levelVal}`)\n const context = this.$t('settings.style.common.contrast.context.18pt')\n const ratio = this.contrast.text\n return this.$t('settings.style.common.contrast.hint', { level, context, ratio })\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.contrast-ratio {\n display: flex;\n justify-content: flex-end;\n\n margin-top: -4px;\n margin-bottom: 5px;\n\n .label {\n margin-right: 1em;\n }\n\n .rating {\n display: inline-block;\n text-align: center;\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!./contrast_ratio.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./contrast_ratio.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./contrast_ratio.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-2507acc6\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./contrast_ratio.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\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.contrast)?_c('span',{staticClass:\"contrast-ratio\"},[_c('span',{staticClass:\"rating\",attrs:{\"title\":_vm.hint}},[(_vm.contrast.aaa)?_c('span',[_c('i',{staticClass:\"icon-thumbs-up-alt\"})]):_vm._e(),_vm._v(\" \"),(!_vm.contrast.aaa && _vm.contrast.aa)?_c('span',[_c('i',{staticClass:\"icon-adjust\"})]):_vm._e(),_vm._v(\" \"),(!_vm.contrast.aaa && !_vm.contrast.aa)?_c('span',[_c('i',{staticClass:\"icon-attention\"})]):_vm._e()]),_vm._v(\" \"),(_vm.contrast && _vm.large)?_c('span',{staticClass:\"rating\",attrs:{\"title\":_vm.hint_18pt}},[(_vm.contrast.laaa)?_c('span',[_c('i',{staticClass:\"icon-thumbs-up-alt\"})]):_vm._e(),_vm._v(\" \"),(!_vm.contrast.laaa && _vm.contrast.laa)?_c('span',[_c('i',{staticClass:\"icon-adjust\"})]):_vm._e(),_vm._v(\" \"),(!_vm.contrast.laaa && !_vm.contrast.laa)?_c('span',[_c('i',{staticClass:\"icon-attention\"})]):_vm._e()]):_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!./preview.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-395e9872\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./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',{staticClass:\"preview-container\"},[_c('div',{staticClass:\"underlay underlay-preview\"}),_vm._v(\" \"),_c('div',{staticClass:\"panel dummy\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.header'))+\"\\n \"),_c('span',{staticClass:\"badge badge-notification\"},[_vm._v(\"\\n 99\\n \")])]),_vm._v(\" \"),_c('span',{staticClass:\"faint\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.header_faint'))+\"\\n \")]),_vm._v(\" \"),_c('span',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.error'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.button'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"panel-body theme-preview-content\"},[_c('div',{staticClass:\"post\"},[_c('div',{staticClass:\"avatar still-image\"},[_vm._v(\"\\n ( ͡° ͜ʖ ͡°)\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.content'))+\"\\n \")]),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":\"settings.style.preview.text\"}},[_c('code',{staticStyle:{\"font-family\":\"var(--postCodeFont)\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.mono'))+\"\\n \")]),_vm._v(\" \"),_c('a',{staticStyle:{\"color\":\"var(--link)\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.link'))+\"\\n \")])]),_vm._v(\" \"),_vm._m(0)],1)]),_vm._v(\" \"),_c('div',{staticClass:\"after-post\"},[_c('div',{staticClass:\"avatar-alt\"},[_vm._v(\"\\n :^)\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content\"},[_c('i18n',{staticClass:\"faint\",attrs:{\"path\":\"settings.style.preview.fine_print\",\"tag\":\"span\"}},[_c('a',{staticStyle:{\"color\":\"var(--faintLink)\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.faint_link'))+\"\\n \")])])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"separator\"}),_vm._v(\" \"),_c('span',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.error'))+\"\\n \")]),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.$t('settings.style.preview.input')}}),_vm._v(\" \"),_c('div',{staticClass:\"actions\"},[_c('span',{staticClass:\"checkbox\"},[_c('input',{attrs:{\"id\":\"preview_checkbox\",\"checked\":\"very yes\",\"type\":\"checkbox\"}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"preview_checkbox\"}},[_vm._v(_vm._s(_vm.$t('settings.style.preview.checkbox')))])]),_vm._v(\" \"),_c('button',{staticClass:\"btn\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.preview.button'))+\"\\n \")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"icons\"},[_c('i',{staticClass:\"button-icon icon-reply\",staticStyle:{\"color\":\"var(--cBlue)\"}}),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-retweet\",staticStyle:{\"color\":\"var(--cGreen)\"}}),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-star\",staticStyle:{\"color\":\"var(--cOrange)\"}}),_vm._v(\" \"),_c('i',{staticClass:\"button-icon icon-cancel\",staticStyle:{\"color\":\"var(--cRed)\"}})])}]\nexport { render, staticRenderFns }","<template>\n <div class=\"import-export-container\">\n <slot name=\"before\" />\n <button\n class=\"btn\"\n @click=\"exportData\"\n >\n {{ exportLabel }}\n </button>\n <button\n class=\"btn\"\n @click=\"importData\"\n >\n {{ importLabel }}\n </button>\n <slot name=\"afterButtons\" />\n <p\n v-if=\"importFailed\"\n class=\"alert error\"\n >\n {{ importFailedText }}\n </p>\n <slot name=\"afterError\" />\n </div>\n</template>\n\n<script>\nexport default {\n props: [\n 'exportObject',\n 'importLabel',\n 'exportLabel',\n 'importFailedText',\n 'validator',\n 'onImport',\n 'onImportFailure'\n ],\n data () {\n return {\n importFailed: false\n }\n },\n methods: {\n exportData () {\n const stringified = JSON.stringify(this.exportObject, null, 2) // Pretty-print and indent with 2 spaces\n\n // Create an invisible link with a data url and simulate a click\n const e = document.createElement('a')\n e.setAttribute('download', 'pleroma_theme.json')\n e.setAttribute('href', 'data:application/json;base64,' + window.btoa(stringified))\n e.style.display = 'none'\n\n document.body.appendChild(e)\n e.click()\n document.body.removeChild(e)\n },\n importData () {\n this.importFailed = false\n const filePicker = document.createElement('input')\n filePicker.setAttribute('type', 'file')\n filePicker.setAttribute('accept', '.json')\n\n filePicker.addEventListener('change', event => {\n if (event.target.files[0]) {\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n try {\n const parsed = JSON.parse(target.result)\n const valid = this.validator(parsed)\n if (valid) {\n this.onImport(parsed)\n } else {\n this.importFailed = true\n // this.onImportFailure(valid)\n }\n } catch (e) {\n // This will happen both if there is a JSON syntax error or the theme is missing components\n this.importFailed = true\n // this.onImportFailure(e)\n }\n }\n reader.readAsText(event.target.files[0])\n }\n })\n\n document.body.appendChild(filePicker)\n filePicker.click()\n document.body.removeChild(filePicker)\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.import-export-container {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n justify-content: center;\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!./export_import.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./export_import.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./export_import.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-3d9b5a74\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./export_import.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"import-export-container\"},[_vm._t(\"before\"),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.exportData}},[_vm._v(\"\\n \"+_vm._s(_vm.exportLabel)+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.importData}},[_vm._v(\"\\n \"+_vm._s(_vm.importLabel)+\"\\n \")]),_vm._v(\" \"),_vm._t(\"afterButtons\"),_vm._v(\" \"),(_vm.importFailed)?_c('p',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.importFailedText)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"afterError\")],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import { set, delete as del } from 'vue'\nimport {\n rgb2hex,\n hex2rgb,\n getContrastRatioLayers\n} from '../../services/color_convert/color_convert.js'\nimport {\n DEFAULT_SHADOWS,\n generateColors,\n generateShadows,\n generateRadii,\n generateFonts,\n composePreset,\n getThemes,\n shadows2to3,\n colors2to3\n} from '../../services/style_setter/style_setter.js'\nimport {\n SLOT_INHERITANCE\n} from '../../services/theme_data/pleromafe.js'\nimport {\n CURRENT_VERSION,\n OPACITIES,\n getLayers,\n getOpacitySlot\n} from '../../services/theme_data/theme_data.service.js'\nimport ColorInput from '../color_input/color_input.vue'\nimport RangeInput from '../range_input/range_input.vue'\nimport OpacityInput from '../opacity_input/opacity_input.vue'\nimport ShadowControl from '../shadow_control/shadow_control.vue'\nimport FontControl from '../font_control/font_control.vue'\nimport ContrastRatio from '../contrast_ratio/contrast_ratio.vue'\nimport TabSwitcher from '../tab_switcher/tab_switcher.js'\nimport Preview from './preview.vue'\nimport ExportImport from '../export_import/export_import.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\n// List of color values used in v1\nconst v1OnlyNames = [\n 'bg',\n 'fg',\n 'text',\n 'link',\n 'cRed',\n 'cGreen',\n 'cBlue',\n 'cOrange'\n].map(_ => _ + 'ColorLocal')\n\nconst colorConvert = (color) => {\n if (color.startsWith('--') || color === 'transparent') {\n return color\n } else {\n return hex2rgb(color)\n }\n}\n\nexport default {\n data () {\n return {\n availableStyles: [],\n selected: this.$store.getters.mergedConfig.theme,\n themeWarning: undefined,\n tempImportFile: undefined,\n engineVersion: 0,\n\n previewShadows: {},\n previewColors: {},\n previewRadii: {},\n previewFonts: {},\n\n shadowsInvalid: true,\n colorsInvalid: true,\n radiiInvalid: true,\n\n keepColor: false,\n keepShadows: false,\n keepOpacity: false,\n keepRoundness: false,\n keepFonts: false,\n\n ...Object.keys(SLOT_INHERITANCE)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [ key + 'ColorLocal' ]: val }), {}),\n\n ...Object.keys(OPACITIES)\n .map(key => [key, ''])\n .reduce((acc, [key, val]) => ({ ...acc, [ key + 'OpacityLocal' ]: val }), {}),\n\n shadowSelected: undefined,\n shadowsLocal: {},\n fontsLocal: {},\n\n btnRadiusLocal: '',\n inputRadiusLocal: '',\n checkboxRadiusLocal: '',\n panelRadiusLocal: '',\n avatarRadiusLocal: '',\n avatarAltRadiusLocal: '',\n attachmentRadiusLocal: '',\n tooltipRadiusLocal: ''\n }\n },\n created () {\n const self = this\n\n getThemes()\n .then((promises) => {\n return Promise.all(\n Object.entries(promises)\n .map(([k, v]) => v.then(res => [k, res]))\n )\n })\n .then(themes => themes.reduce((acc, [k, v]) => {\n if (v) {\n return {\n ...acc,\n [k]: v\n }\n } else {\n return acc\n }\n }, {}))\n .then((themesComplete) => {\n self.availableStyles = themesComplete\n })\n },\n mounted () {\n this.loadThemeFromLocalStorage()\n if (typeof this.shadowSelected === 'undefined') {\n this.shadowSelected = this.shadowsAvailable[0]\n }\n },\n computed: {\n themeWarningHelp () {\n if (!this.themeWarning) return\n const t = this.$t\n const pre = 'settings.style.switcher.help.'\n const {\n origin,\n themeEngineVersion,\n type,\n noActionsPossible\n } = this.themeWarning\n if (origin === 'file') {\n // Loaded v2 theme from file\n if (themeEngineVersion === 2 && type === 'wrong_version') {\n return t(pre + 'v2_imported')\n }\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'future_version_imported') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'snapshot_missing')\n : t(pre + 'snapshot_present')\n )\n }\n } else if (origin === 'localStorage') {\n if (type === 'snapshot_source_mismatch') {\n return t(pre + 'snapshot_source_mismatch')\n }\n // FE upgraded from v2\n if (themeEngineVersion === 2) {\n return t(pre + 'upgraded_from_v2')\n }\n // Admin downgraded FE\n if (themeEngineVersion > CURRENT_VERSION) {\n return t(pre + 'fe_downgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n // Admin upgraded FE\n if (themeEngineVersion < CURRENT_VERSION) {\n return t(pre + 'fe_upgraded') + ' ' +\n (\n noActionsPossible\n ? t(pre + 'migration_snapshot_ok')\n : t(pre + 'migration_snapshot_gone')\n )\n }\n }\n },\n selectedVersion () {\n return Array.isArray(this.selected) ? 1 : 2\n },\n currentColors () {\n return Object.keys(SLOT_INHERITANCE)\n .map(key => [key, this[key + 'ColorLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n },\n currentOpacity () {\n return Object.keys(OPACITIES)\n .map(key => [key, this[key + 'OpacityLocal']])\n .reduce((acc, [key, val]) => ({ ...acc, [ key ]: val }), {})\n },\n currentRadii () {\n return {\n btn: this.btnRadiusLocal,\n input: this.inputRadiusLocal,\n checkbox: this.checkboxRadiusLocal,\n panel: this.panelRadiusLocal,\n avatar: this.avatarRadiusLocal,\n avatarAlt: this.avatarAltRadiusLocal,\n tooltip: this.tooltipRadiusLocal,\n attachment: this.attachmentRadiusLocal\n }\n },\n preview () {\n return composePreset(this.previewColors, this.previewRadii, this.previewShadows, this.previewFonts)\n },\n previewTheme () {\n if (!this.preview.theme.colors) return { colors: {}, opacity: {}, radii: {}, shadows: {}, fonts: {} }\n return this.preview.theme\n },\n // This needs optimization maybe\n previewContrast () {\n try {\n if (!this.previewTheme.colors.bg) return {}\n const colors = this.previewTheme.colors\n const opacity = this.previewTheme.opacity\n if (!colors.bg) return {}\n const hints = (ratio) => ({\n text: ratio.toPrecision(3) + ':1',\n // AA level, AAA level\n aa: ratio >= 4.5,\n aaa: ratio >= 7,\n // same but for 18pt+ texts\n laa: ratio >= 3,\n laaa: ratio >= 4.5\n })\n const colorsConverted = Object.entries(colors).reduce((acc, [key, value]) => ({ ...acc, [key]: colorConvert(value) }), {})\n\n const ratios = Object.entries(SLOT_INHERITANCE).reduce((acc, [key, value]) => {\n const slotIsBaseText = key === 'text' || key === 'link'\n const slotIsText = slotIsBaseText || (\n typeof value === 'object' && value !== null && value.textColor\n )\n if (!slotIsText) return acc\n const { layer, variant } = slotIsBaseText ? { layer: 'bg' } : value\n const background = variant || layer\n const opacitySlot = getOpacitySlot(background)\n const textColors = [\n key,\n ...(background === 'bg' ? ['cRed', 'cGreen', 'cBlue', 'cOrange'] : [])\n ]\n\n const layers = getLayers(\n layer,\n variant || layer,\n opacitySlot,\n colorsConverted,\n opacity\n )\n\n return {\n ...acc,\n ...textColors.reduce((acc, textColorKey) => {\n const newKey = slotIsBaseText\n ? 'bg' + textColorKey[0].toUpperCase() + textColorKey.slice(1)\n : textColorKey\n return {\n ...acc,\n [newKey]: getContrastRatioLayers(\n colorsConverted[textColorKey],\n layers,\n colorsConverted[textColorKey]\n )\n }\n }, {})\n }\n }, {})\n\n return Object.entries(ratios).reduce((acc, [k, v]) => { acc[k] = hints(v); return acc }, {})\n } catch (e) {\n console.warn('Failure computing contrasts', e)\n }\n },\n previewRules () {\n if (!this.preview.rules) return ''\n return [\n ...Object.values(this.preview.rules),\n 'color: var(--text)',\n 'font-family: var(--interfaceFont, sans-serif)'\n ].join(';')\n },\n shadowsAvailable () {\n return Object.keys(DEFAULT_SHADOWS).sort()\n },\n currentShadowOverriden: {\n get () {\n return !!this.currentShadow\n },\n set (val) {\n if (val) {\n set(this.shadowsLocal, this.shadowSelected, this.currentShadowFallback.map(_ => Object.assign({}, _)))\n } else {\n del(this.shadowsLocal, this.shadowSelected)\n }\n }\n },\n currentShadowFallback () {\n return (this.previewTheme.shadows || {})[this.shadowSelected]\n },\n currentShadow: {\n get () {\n return this.shadowsLocal[this.shadowSelected]\n },\n set (v) {\n set(this.shadowsLocal, this.shadowSelected, v)\n }\n },\n themeValid () {\n return !this.shadowsInvalid && !this.colorsInvalid && !this.radiiInvalid\n },\n exportedTheme () {\n const saveEverything = (\n !this.keepFonts &&\n !this.keepShadows &&\n !this.keepOpacity &&\n !this.keepRoundness &&\n !this.keepColor\n )\n\n const source = {\n themeEngineVersion: CURRENT_VERSION\n }\n\n if (this.keepFonts || saveEverything) {\n source.fonts = this.fontsLocal\n }\n if (this.keepShadows || saveEverything) {\n source.shadows = this.shadowsLocal\n }\n if (this.keepOpacity || saveEverything) {\n source.opacity = this.currentOpacity\n }\n if (this.keepColor || saveEverything) {\n source.colors = this.currentColors\n }\n if (this.keepRoundness || saveEverything) {\n source.radii = this.currentRadii\n }\n\n const theme = {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n\n return {\n // To separate from other random JSON files and possible future source formats\n _pleroma_theme_version: 2, theme, source\n }\n }\n },\n components: {\n ColorInput,\n OpacityInput,\n RangeInput,\n ContrastRatio,\n ShadowControl,\n FontControl,\n TabSwitcher,\n Preview,\n ExportImport,\n Checkbox\n },\n methods: {\n loadTheme (\n {\n theme,\n source,\n _pleroma_theme_version: fileVersion\n },\n origin,\n forceUseSource = false\n ) {\n this.dismissWarning()\n if (!source && !theme) {\n throw new Error('Can\\'t load theme: empty')\n }\n const version = (origin === 'localStorage' && !theme.colors)\n ? 'l1'\n : fileVersion\n const snapshotEngineVersion = (theme || {}).themeEngineVersion\n const themeEngineVersion = (source || {}).themeEngineVersion || 2\n const versionsMatch = themeEngineVersion === CURRENT_VERSION\n const sourceSnapshotMismatch = (\n theme !== undefined &&\n source !== undefined &&\n themeEngineVersion !== snapshotEngineVersion\n )\n // Force loading of source if user requested it or if snapshot\n // is unavailable\n const forcedSourceLoad = (source && forceUseSource) || !theme\n if (!(versionsMatch && !sourceSnapshotMismatch) &&\n !forcedSourceLoad &&\n version !== 'l1' &&\n origin !== 'defaults'\n ) {\n if (sourceSnapshotMismatch && origin === 'localStorage') {\n this.themeWarning = {\n origin,\n themeEngineVersion,\n type: 'snapshot_source_mismatch'\n }\n } else if (!theme) {\n this.themeWarning = {\n origin,\n noActionsPossible: true,\n themeEngineVersion,\n type: 'no_snapshot_old_version'\n }\n } else if (!versionsMatch) {\n this.themeWarning = {\n origin,\n noActionsPossible: !source,\n themeEngineVersion,\n type: 'wrong_version'\n }\n }\n }\n this.normalizeLocalState(theme, version, source, forcedSourceLoad)\n },\n forceLoadLocalStorage () {\n this.loadThemeFromLocalStorage(true)\n },\n dismissWarning () {\n this.themeWarning = undefined\n this.tempImportFile = undefined\n },\n forceLoad () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(true)\n break\n case 'file':\n this.onImport(this.tempImportFile, true)\n break\n }\n this.dismissWarning()\n },\n forceSnapshot () {\n const { origin } = this.themeWarning\n switch (origin) {\n case 'localStorage':\n this.loadThemeFromLocalStorage(false, true)\n break\n case 'file':\n console.err('Forcing snapshout from file is not supported yet')\n break\n }\n this.dismissWarning()\n },\n loadThemeFromLocalStorage (confirmLoadSource = false, forceSnapshot = false) {\n const {\n customTheme: theme,\n customThemeSource: source\n } = this.$store.getters.mergedConfig\n if (!theme && !source) {\n // Anon user or never touched themes\n this.loadTheme(\n this.$store.state.instance.themeData,\n 'defaults',\n confirmLoadSource\n )\n } else {\n this.loadTheme(\n {\n theme,\n source: forceSnapshot ? theme : source\n },\n 'localStorage',\n confirmLoadSource\n )\n }\n },\n setCustomTheme () {\n this.$store.dispatch('setOption', {\n name: 'customTheme',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n ...this.previewTheme\n }\n })\n this.$store.dispatch('setOption', {\n name: 'customThemeSource',\n value: {\n themeEngineVersion: CURRENT_VERSION,\n shadows: this.shadowsLocal,\n fonts: this.fontsLocal,\n opacity: this.currentOpacity,\n colors: this.currentColors,\n radii: this.currentRadii\n }\n })\n },\n updatePreviewColorsAndShadows () {\n this.previewColors = generateColors({\n opacity: this.currentOpacity,\n colors: this.currentColors\n })\n this.previewShadows = generateShadows(\n { shadows: this.shadowsLocal, opacity: this.previewTheme.opacity, themeEngineVersion: this.engineVersion },\n this.previewColors.theme.colors,\n this.previewColors.mod\n )\n },\n onImport (parsed, forceSource = false) {\n this.tempImportFile = parsed\n this.loadTheme(parsed, 'file', forceSource)\n },\n importValidator (parsed) {\n const version = parsed._pleroma_theme_version\n return version >= 1 || version <= 2\n },\n clearAll () {\n this.loadThemeFromLocalStorage()\n },\n\n // Clears all the extra stuff when loading V1 theme\n clearV1 () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('ColorLocal') || _.endsWith('OpacityLocal'))\n .filter(_ => !v1OnlyNames.includes(_))\n .forEach(key => {\n set(this.$data, key, undefined)\n })\n },\n\n clearRoundness () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('RadiusLocal'))\n .forEach(key => {\n set(this.$data, key, undefined)\n })\n },\n\n clearOpacity () {\n Object.keys(this.$data)\n .filter(_ => _.endsWith('OpacityLocal'))\n .forEach(key => {\n set(this.$data, key, undefined)\n })\n },\n\n clearShadows () {\n this.shadowsLocal = {}\n },\n\n clearFonts () {\n this.fontsLocal = {}\n },\n\n /**\n * This applies stored theme data onto form. Supports three versions of data:\n * v3 (version >= 3) - newest version of themes which supports snapshots for better compatiblity\n * v2 (version = 2) - newer version of themes.\n * v1 (version = 1) - older version of themes (import from file)\n * v1l (version = l1) - older version of theme (load from local storage)\n * v1 and v1l differ because of way themes were stored/exported.\n * @param {Object} theme - theme data (snapshot)\n * @param {Number} version - version of data. 0 means try to guess based on data. \"l1\" means v1, locastorage type\n * @param {Object} source - theme source - this will be used if compatible\n * @param {Boolean} source - by default source won't be used if version doesn't match since it might render differently\n * this allows importing source anyway\n */\n normalizeLocalState (theme, version = 0, source, forceSource = false) {\n let input\n if (typeof source !== 'undefined') {\n if (forceSource || source.themeEngineVersion === CURRENT_VERSION) {\n input = source\n version = source.themeEngineVersion\n } else {\n input = theme\n }\n } else {\n input = theme\n }\n\n const radii = input.radii || input\n const opacity = input.opacity\n const shadows = input.shadows || {}\n const fonts = input.fonts || {}\n const colors = !input.themeEngineVersion\n ? colors2to3(input.colors || input)\n : input.colors || input\n\n if (version === 0) {\n if (input.version) version = input.version\n // Old v1 naming: fg is text, btn is foreground\n if (typeof colors.text === 'undefined' && typeof colors.fg !== 'undefined') {\n version = 1\n }\n // New v2 naming: text is text, fg is foreground\n if (typeof colors.text !== 'undefined' && typeof colors.fg !== 'undefined') {\n version = 2\n }\n }\n\n this.engineVersion = version\n\n // Stuff that differs between V1 and V2\n if (version === 1) {\n this.fgColorLocal = rgb2hex(colors.btn)\n this.textColorLocal = rgb2hex(colors.fg)\n }\n\n if (!this.keepColor) {\n this.clearV1()\n const keys = new Set(version !== 1 ? Object.keys(SLOT_INHERITANCE) : [])\n if (version === 1 || version === 'l1') {\n keys\n .add('bg')\n .add('link')\n .add('cRed')\n .add('cBlue')\n .add('cGreen')\n .add('cOrange')\n }\n\n keys.forEach(key => {\n const color = colors[key]\n const hex = rgb2hex(colors[key])\n this[key + 'ColorLocal'] = hex === '#aN' ? color : hex\n })\n }\n\n if (opacity && !this.keepOpacity) {\n this.clearOpacity()\n Object.entries(opacity).forEach(([k, v]) => {\n if (typeof v === 'undefined' || v === null || Number.isNaN(v)) return\n this[k + 'OpacityLocal'] = v\n })\n }\n\n if (!this.keepRoundness) {\n this.clearRoundness()\n Object.entries(radii).forEach(([k, v]) => {\n // 'Radius' is kept mostly for v1->v2 localstorage transition\n const key = k.endsWith('Radius') ? k.split('Radius')[0] : k\n this[key + 'RadiusLocal'] = v\n })\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n if (version === 2) {\n this.shadowsLocal = shadows2to3(shadows, this.previewTheme.opacity)\n } else {\n this.shadowsLocal = shadows\n }\n this.shadowSelected = this.shadowsAvailable[0]\n }\n\n if (!this.keepFonts) {\n this.clearFonts()\n this.fontsLocal = fonts\n }\n }\n },\n watch: {\n currentRadii () {\n try {\n this.previewRadii = generateRadii({ radii: this.currentRadii })\n this.radiiInvalid = false\n } catch (e) {\n this.radiiInvalid = true\n console.warn(e)\n }\n },\n shadowsLocal: {\n handler () {\n if (Object.getOwnPropertyNames(this.previewColors).length === 1) return\n try {\n this.updatePreviewColorsAndShadows()\n this.shadowsInvalid = false\n } catch (e) {\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n fontsLocal: {\n handler () {\n try {\n this.previewFonts = generateFonts({ fonts: this.fontsLocal })\n this.fontsInvalid = false\n } catch (e) {\n this.fontsInvalid = true\n console.warn(e)\n }\n },\n deep: true\n },\n currentColors () {\n try {\n this.updatePreviewColorsAndShadows()\n this.colorsInvalid = false\n this.shadowsInvalid = false\n } catch (e) {\n this.colorsInvalid = true\n this.shadowsInvalid = true\n console.warn(e)\n }\n },\n currentOpacity () {\n try {\n this.updatePreviewColorsAndShadows()\n } catch (e) {\n console.warn(e)\n }\n },\n selected () {\n this.dismissWarning()\n if (this.selectedVersion === 1) {\n if (!this.keepRoundness) {\n this.clearRoundness()\n }\n\n if (!this.keepShadows) {\n this.clearShadows()\n }\n\n if (!this.keepOpacity) {\n this.clearOpacity()\n }\n\n if (!this.keepColor) {\n this.clearV1()\n\n this.bgColorLocal = this.selected[1]\n this.fgColorLocal = this.selected[2]\n this.textColorLocal = this.selected[3]\n this.linkColorLocal = this.selected[4]\n this.cRedColorLocal = this.selected[5]\n this.cGreenColorLocal = this.selected[6]\n this.cBlueColorLocal = this.selected[7]\n this.cOrangeColorLocal = this.selected[8]\n }\n } else if (this.selectedVersion >= 2) {\n this.normalizeLocalState(this.selected.theme, 2, this.selected.source)\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!./style_switcher.scss\")\n}\n/* script */\nexport * from \"!!babel-loader!./style_switcher.js\"\nimport __vue_script__ from \"!!babel-loader!./style_switcher.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4263524f\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./style_switcher.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"style-switcher\"},[_c('div',{staticClass:\"presets-container\"},[_c('div',{staticClass:\"save-load\"},[(_vm.themeWarning)?_c('div',{staticClass:\"theme-warning\"},[_c('div',{staticClass:\"alert warning\"},[_vm._v(\"\\n \"+_vm._s(_vm.themeWarningHelp)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"buttons\"},[(_vm.themeWarning.type === 'snapshot_source_mismatch')?[_c('button',{staticClass:\"btn\",on:{\"click\":_vm.forceLoad}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.use_source'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.forceSnapshot}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.use_snapshot'))+\"\\n \")])]:(_vm.themeWarning.noActionsPossible)?[_c('button',{staticClass:\"btn\",on:{\"click\":_vm.dismissWarning}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.dismiss'))+\"\\n \")])]:[_c('button',{staticClass:\"btn\",on:{\"click\":_vm.forceLoad}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.load_theme'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.dismissWarning}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_as_is'))+\"\\n \")])]],2)]):_vm._e(),_vm._v(\" \"),_c('ExportImport',{attrs:{\"export-object\":_vm.exportedTheme,\"export-label\":_vm.$t(\"settings.export_theme\"),\"import-label\":_vm.$t(\"settings.import_theme\"),\"import-failed-text\":_vm.$t(\"settings.invalid_theme_imported\"),\"on-import\":_vm.onImport,\"validator\":_vm.importValidator}},[_c('template',{slot:\"before\"},[_c('div',{staticClass:\"presets\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.presets'))+\"\\n \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"preset-switcher\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selected),expression:\"selected\"}],staticClass:\"preset-switcher\",attrs:{\"id\":\"preset-switcher\"},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.selected=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.availableStyles),function(style){return _c('option',{key:style.name,style:({\n backgroundColor: style[1] || (style.theme || style.source).colors.bg,\n color: style[3] || (style.theme || style.source).colors.text\n }),domProps:{\"value\":style}},[_vm._v(\"\\n \"+_vm._s(style[0] || style.name)+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])])],2)],1),_vm._v(\" \"),_c('div',{staticClass:\"save-load-options\"},[_c('span',{staticClass:\"keep-option\"},[_c('Checkbox',{model:{value:(_vm.keepColor),callback:function ($$v) {_vm.keepColor=$$v},expression:\"keepColor\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_color'))+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"keep-option\"},[_c('Checkbox',{model:{value:(_vm.keepShadows),callback:function ($$v) {_vm.keepShadows=$$v},expression:\"keepShadows\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_shadows'))+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"keep-option\"},[_c('Checkbox',{model:{value:(_vm.keepOpacity),callback:function ($$v) {_vm.keepOpacity=$$v},expression:\"keepOpacity\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_opacity'))+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"keep-option\"},[_c('Checkbox',{model:{value:(_vm.keepRoundness),callback:function ($$v) {_vm.keepRoundness=$$v},expression:\"keepRoundness\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_roundness'))+\"\\n \")])],1),_vm._v(\" \"),_c('span',{staticClass:\"keep-option\"},[_c('Checkbox',{model:{value:(_vm.keepFonts),callback:function ($$v) {_vm.keepFonts=$$v},expression:\"keepFonts\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.keep_fonts'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.style.switcher.save_load_hint')))])])]),_vm._v(\" \"),_c('preview',{style:(_vm.previewRules)}),_vm._v(\" \"),_c('keep-alive',[_c('tab-switcher',{key:\"style-tweak\"},[_c('div',{staticClass:\"color-container\",attrs:{\"label\":_vm.$t('settings.style.common_colors._tab_label')}},[_c('div',{staticClass:\"tab-header\"},[_c('p',[_vm._v(_vm._s(_vm.$t('settings.theme_help')))]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearOpacity}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_opacity'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearV1}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_all'))+\"\\n \")])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.theme_help_v2_1')))]),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.common_colors.main')))]),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('ColorInput',{attrs:{\"name\":\"bgColor\",\"label\":_vm.$t('settings.background')},model:{value:(_vm.bgColorLocal),callback:function ($$v) {_vm.bgColorLocal=$$v},expression:\"bgColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"bgOpacity\",\"fallback\":_vm.previewTheme.opacity.bg},model:{value:(_vm.bgOpacityLocal),callback:function ($$v) {_vm.bgOpacityLocal=$$v},expression:\"bgOpacityLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"textColor\",\"label\":_vm.$t('settings.text')},model:{value:(_vm.textColorLocal),callback:function ($$v) {_vm.textColorLocal=$$v},expression:\"textColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"accentColor\",\"fallback\":_vm.previewTheme.colors.link,\"label\":_vm.$t('settings.accent'),\"show-optional-tickbox\":typeof _vm.linkColorLocal !== 'undefined'},model:{value:(_vm.accentColorLocal),callback:function ($$v) {_vm.accentColorLocal=$$v},expression:\"accentColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"linkColor\",\"fallback\":_vm.previewTheme.colors.accent,\"label\":_vm.$t('settings.links'),\"show-optional-tickbox\":typeof _vm.accentColorLocal !== 'undefined'},model:{value:(_vm.linkColorLocal),callback:function ($$v) {_vm.linkColorLocal=$$v},expression:\"linkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgLink}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('ColorInput',{attrs:{\"name\":\"fgColor\",\"label\":_vm.$t('settings.foreground')},model:{value:(_vm.fgColorLocal),callback:function ($$v) {_vm.fgColorLocal=$$v},expression:\"fgColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"fgTextColor\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.fgText},model:{value:(_vm.fgTextColorLocal),callback:function ($$v) {_vm.fgTextColorLocal=$$v},expression:\"fgTextColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"fgLinkColor\",\"label\":_vm.$t('settings.links'),\"fallback\":_vm.previewTheme.colors.fgLink},model:{value:(_vm.fgLinkColorLocal),callback:function ($$v) {_vm.fgLinkColorLocal=$$v},expression:\"fgLinkColorLocal\"}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.style.common_colors.foreground_hint')))])],1),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.common_colors.rgbo')))]),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('ColorInput',{attrs:{\"name\":\"cRedColor\",\"label\":_vm.$t('settings.cRed')},model:{value:(_vm.cRedColorLocal),callback:function ($$v) {_vm.cRedColorLocal=$$v},expression:\"cRedColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgCRed}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"cBlueColor\",\"label\":_vm.$t('settings.cBlue')},model:{value:(_vm.cBlueColorLocal),callback:function ($$v) {_vm.cBlueColorLocal=$$v},expression:\"cBlueColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgCBlue}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('ColorInput',{attrs:{\"name\":\"cGreenColor\",\"label\":_vm.$t('settings.cGreen')},model:{value:(_vm.cGreenColorLocal),callback:function ($$v) {_vm.cGreenColorLocal=$$v},expression:\"cGreenColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgCGreen}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"cOrangeColor\",\"label\":_vm.$t('settings.cOrange')},model:{value:(_vm.cOrangeColorLocal),callback:function ($$v) {_vm.cOrangeColorLocal=$$v},expression:\"cOrangeColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.bgCOrange}})],1),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.theme_help_v2_2')))])]),_vm._v(\" \"),_c('div',{staticClass:\"color-container\",attrs:{\"label\":_vm.$t('settings.style.advanced_colors._tab_label')}},[_c('div',{staticClass:\"tab-header\"},[_c('p',[_vm._v(_vm._s(_vm.$t('settings.theme_help')))]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearOpacity}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_opacity'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearV1}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_all'))+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.post')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"postLinkColor\",\"fallback\":_vm.previewTheme.colors.accent,\"label\":_vm.$t('settings.links')},model:{value:(_vm.postLinkColorLocal),callback:function ($$v) {_vm.postLinkColorLocal=$$v},expression:\"postLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.postLink}}),_vm._v(\" \"),_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.alert')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertError\",\"label\":_vm.$t('settings.style.advanced_colors.alert_error'),\"fallback\":_vm.previewTheme.colors.alertError},model:{value:(_vm.alertErrorColorLocal),callback:function ($$v) {_vm.alertErrorColorLocal=$$v},expression:\"alertErrorColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertErrorText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.alertErrorText},model:{value:(_vm.alertErrorTextColorLocal),callback:function ($$v) {_vm.alertErrorTextColorLocal=$$v},expression:\"alertErrorTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.alertErrorText,\"large\":\"true\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertWarning\",\"label\":_vm.$t('settings.style.advanced_colors.alert_warning'),\"fallback\":_vm.previewTheme.colors.alertWarning},model:{value:(_vm.alertWarningColorLocal),callback:function ($$v) {_vm.alertWarningColorLocal=$$v},expression:\"alertWarningColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertWarningText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.alertWarningText},model:{value:(_vm.alertWarningTextColorLocal),callback:function ($$v) {_vm.alertWarningTextColorLocal=$$v},expression:\"alertWarningTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.alertWarningText,\"large\":\"true\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertNeutral\",\"label\":_vm.$t('settings.style.advanced_colors.alert_neutral'),\"fallback\":_vm.previewTheme.colors.alertNeutral},model:{value:(_vm.alertNeutralColorLocal),callback:function ($$v) {_vm.alertNeutralColorLocal=$$v},expression:\"alertNeutralColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"alertNeutralText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.alertNeutralText},model:{value:(_vm.alertNeutralTextColorLocal),callback:function ($$v) {_vm.alertNeutralTextColorLocal=$$v},expression:\"alertNeutralTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.alertNeutralText,\"large\":\"true\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"alertOpacity\",\"fallback\":_vm.previewTheme.opacity.alert},model:{value:(_vm.alertOpacityLocal),callback:function ($$v) {_vm.alertOpacityLocal=$$v},expression:\"alertOpacityLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.badge')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"badgeNotification\",\"label\":_vm.$t('settings.style.advanced_colors.badge_notification'),\"fallback\":_vm.previewTheme.colors.badgeNotification},model:{value:(_vm.badgeNotificationColorLocal),callback:function ($$v) {_vm.badgeNotificationColorLocal=$$v},expression:\"badgeNotificationColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"badgeNotificationText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.badgeNotificationText},model:{value:(_vm.badgeNotificationTextColorLocal),callback:function ($$v) {_vm.badgeNotificationTextColorLocal=$$v},expression:\"badgeNotificationTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.badgeNotificationText,\"large\":\"true\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.panel_header')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"panelColor\",\"fallback\":_vm.previewTheme.colors.panel,\"label\":_vm.$t('settings.background')},model:{value:(_vm.panelColorLocal),callback:function ($$v) {_vm.panelColorLocal=$$v},expression:\"panelColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"panelOpacity\",\"fallback\":_vm.previewTheme.opacity.panel,\"disabled\":_vm.panelColorLocal === 'transparent'},model:{value:(_vm.panelOpacityLocal),callback:function ($$v) {_vm.panelOpacityLocal=$$v},expression:\"panelOpacityLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"panelTextColor\",\"fallback\":_vm.previewTheme.colors.panelText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.panelTextColorLocal),callback:function ($$v) {_vm.panelTextColorLocal=$$v},expression:\"panelTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.panelText,\"large\":\"true\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"panelLinkColor\",\"fallback\":_vm.previewTheme.colors.panelLink,\"label\":_vm.$t('settings.links')},model:{value:(_vm.panelLinkColorLocal),callback:function ($$v) {_vm.panelLinkColorLocal=$$v},expression:\"panelLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.panelLink,\"large\":\"true\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.top_bar')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"topBarColor\",\"fallback\":_vm.previewTheme.colors.topBar,\"label\":_vm.$t('settings.background')},model:{value:(_vm.topBarColorLocal),callback:function ($$v) {_vm.topBarColorLocal=$$v},expression:\"topBarColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"topBarTextColor\",\"fallback\":_vm.previewTheme.colors.topBarText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.topBarTextColorLocal),callback:function ($$v) {_vm.topBarTextColorLocal=$$v},expression:\"topBarTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.topBarText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"topBarLinkColor\",\"fallback\":_vm.previewTheme.colors.topBarLink,\"label\":_vm.$t('settings.links')},model:{value:(_vm.topBarLinkColorLocal),callback:function ($$v) {_vm.topBarLinkColorLocal=$$v},expression:\"topBarLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.topBarLink}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.inputs')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"inputColor\",\"fallback\":_vm.previewTheme.colors.input,\"label\":_vm.$t('settings.background')},model:{value:(_vm.inputColorLocal),callback:function ($$v) {_vm.inputColorLocal=$$v},expression:\"inputColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"inputOpacity\",\"fallback\":_vm.previewTheme.opacity.input,\"disabled\":_vm.inputColorLocal === 'transparent'},model:{value:(_vm.inputOpacityLocal),callback:function ($$v) {_vm.inputOpacityLocal=$$v},expression:\"inputOpacityLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"inputTextColor\",\"fallback\":_vm.previewTheme.colors.inputText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.inputTextColorLocal),callback:function ($$v) {_vm.inputTextColorLocal=$$v},expression:\"inputTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.inputText}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.buttons')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnColor\",\"fallback\":_vm.previewTheme.colors.btn,\"label\":_vm.$t('settings.background')},model:{value:(_vm.btnColorLocal),callback:function ($$v) {_vm.btnColorLocal=$$v},expression:\"btnColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"btnOpacity\",\"fallback\":_vm.previewTheme.opacity.btn,\"disabled\":_vm.btnColorLocal === 'transparent'},model:{value:(_vm.btnOpacityLocal),callback:function ($$v) {_vm.btnOpacityLocal=$$v},expression:\"btnOpacityLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnTextColor\",\"fallback\":_vm.previewTheme.colors.btnText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.btnTextColorLocal),callback:function ($$v) {_vm.btnTextColorLocal=$$v},expression:\"btnTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnPanelTextColor\",\"fallback\":_vm.previewTheme.colors.btnPanelText,\"label\":_vm.$t('settings.style.advanced_colors.panel_header')},model:{value:(_vm.btnPanelTextColorLocal),callback:function ($$v) {_vm.btnPanelTextColorLocal=$$v},expression:\"btnPanelTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnPanelText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnTopBarTextColor\",\"fallback\":_vm.previewTheme.colors.btnTopBarText,\"label\":_vm.$t('settings.style.advanced_colors.top_bar')},model:{value:(_vm.btnTopBarTextColorLocal),callback:function ($$v) {_vm.btnTopBarTextColorLocal=$$v},expression:\"btnTopBarTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnTopBarText}}),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.pressed')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnPressedColor\",\"fallback\":_vm.previewTheme.colors.btnPressed,\"label\":_vm.$t('settings.background')},model:{value:(_vm.btnPressedColorLocal),callback:function ($$v) {_vm.btnPressedColorLocal=$$v},expression:\"btnPressedColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnPressedTextColor\",\"fallback\":_vm.previewTheme.colors.btnPressedText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.btnPressedTextColorLocal),callback:function ($$v) {_vm.btnPressedTextColorLocal=$$v},expression:\"btnPressedTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnPressedText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnPressedPanelTextColor\",\"fallback\":_vm.previewTheme.colors.btnPressedPanelText,\"label\":_vm.$t('settings.style.advanced_colors.panel_header')},model:{value:(_vm.btnPressedPanelTextColorLocal),callback:function ($$v) {_vm.btnPressedPanelTextColorLocal=$$v},expression:\"btnPressedPanelTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnPressedPanelText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnPressedTopBarTextColor\",\"fallback\":_vm.previewTheme.colors.btnPressedTopBarText,\"label\":_vm.$t('settings.style.advanced_colors.top_bar')},model:{value:(_vm.btnPressedTopBarTextColorLocal),callback:function ($$v) {_vm.btnPressedTopBarTextColorLocal=$$v},expression:\"btnPressedTopBarTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnPressedTopBarText}}),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.disabled')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnDisabledColor\",\"fallback\":_vm.previewTheme.colors.btnDisabled,\"label\":_vm.$t('settings.background')},model:{value:(_vm.btnDisabledColorLocal),callback:function ($$v) {_vm.btnDisabledColorLocal=$$v},expression:\"btnDisabledColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnDisabledTextColor\",\"fallback\":_vm.previewTheme.colors.btnDisabledText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.btnDisabledTextColorLocal),callback:function ($$v) {_vm.btnDisabledTextColorLocal=$$v},expression:\"btnDisabledTextColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnDisabledPanelTextColor\",\"fallback\":_vm.previewTheme.colors.btnDisabledPanelText,\"label\":_vm.$t('settings.style.advanced_colors.panel_header')},model:{value:(_vm.btnDisabledPanelTextColorLocal),callback:function ($$v) {_vm.btnDisabledPanelTextColorLocal=$$v},expression:\"btnDisabledPanelTextColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnDisabledTopBarTextColor\",\"fallback\":_vm.previewTheme.colors.btnDisabledTopBarText,\"label\":_vm.$t('settings.style.advanced_colors.top_bar')},model:{value:(_vm.btnDisabledTopBarTextColorLocal),callback:function ($$v) {_vm.btnDisabledTopBarTextColorLocal=$$v},expression:\"btnDisabledTopBarTextColorLocal\"}}),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.toggled')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnToggledColor\",\"fallback\":_vm.previewTheme.colors.btnToggled,\"label\":_vm.$t('settings.background')},model:{value:(_vm.btnToggledColorLocal),callback:function ($$v) {_vm.btnToggledColorLocal=$$v},expression:\"btnToggledColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnToggledTextColor\",\"fallback\":_vm.previewTheme.colors.btnToggledText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.btnToggledTextColorLocal),callback:function ($$v) {_vm.btnToggledTextColorLocal=$$v},expression:\"btnToggledTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnToggledText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnToggledPanelTextColor\",\"fallback\":_vm.previewTheme.colors.btnToggledPanelText,\"label\":_vm.$t('settings.style.advanced_colors.panel_header')},model:{value:(_vm.btnToggledPanelTextColorLocal),callback:function ($$v) {_vm.btnToggledPanelTextColorLocal=$$v},expression:\"btnToggledPanelTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnToggledPanelText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"btnToggledTopBarTextColor\",\"fallback\":_vm.previewTheme.colors.btnToggledTopBarText,\"label\":_vm.$t('settings.style.advanced_colors.top_bar')},model:{value:(_vm.btnToggledTopBarTextColorLocal),callback:function ($$v) {_vm.btnToggledTopBarTextColorLocal=$$v},expression:\"btnToggledTopBarTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.btnToggledTopBarText}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.tabs')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"tabColor\",\"fallback\":_vm.previewTheme.colors.tab,\"label\":_vm.$t('settings.background')},model:{value:(_vm.tabColorLocal),callback:function ($$v) {_vm.tabColorLocal=$$v},expression:\"tabColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"tabTextColor\",\"fallback\":_vm.previewTheme.colors.tabText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.tabTextColorLocal),callback:function ($$v) {_vm.tabTextColorLocal=$$v},expression:\"tabTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.tabText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"tabActiveTextColor\",\"fallback\":_vm.previewTheme.colors.tabActiveText,\"label\":_vm.$t('settings.text')},model:{value:(_vm.tabActiveTextColorLocal),callback:function ($$v) {_vm.tabActiveTextColorLocal=$$v},expression:\"tabActiveTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.tabActiveText}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.borders')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"borderColor\",\"fallback\":_vm.previewTheme.colors.border,\"label\":_vm.$t('settings.style.common.color')},model:{value:(_vm.borderColorLocal),callback:function ($$v) {_vm.borderColorLocal=$$v},expression:\"borderColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"borderOpacity\",\"fallback\":_vm.previewTheme.opacity.border,\"disabled\":_vm.borderColorLocal === 'transparent'},model:{value:(_vm.borderOpacityLocal),callback:function ($$v) {_vm.borderOpacityLocal=$$v},expression:\"borderOpacityLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.faint_text')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"faintColor\",\"fallback\":_vm.previewTheme.colors.faint,\"label\":_vm.$t('settings.text')},model:{value:(_vm.faintColorLocal),callback:function ($$v) {_vm.faintColorLocal=$$v},expression:\"faintColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"faintLinkColor\",\"fallback\":_vm.previewTheme.colors.faintLink,\"label\":_vm.$t('settings.links')},model:{value:(_vm.faintLinkColorLocal),callback:function ($$v) {_vm.faintLinkColorLocal=$$v},expression:\"faintLinkColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"panelFaintColor\",\"fallback\":_vm.previewTheme.colors.panelFaint,\"label\":_vm.$t('settings.style.advanced_colors.panel_header')},model:{value:(_vm.panelFaintColorLocal),callback:function ($$v) {_vm.panelFaintColorLocal=$$v},expression:\"panelFaintColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"faintOpacity\",\"fallback\":_vm.previewTheme.opacity.faint},model:{value:(_vm.faintOpacityLocal),callback:function ($$v) {_vm.faintOpacityLocal=$$v},expression:\"faintOpacityLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.underlay')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"underlay\",\"label\":_vm.$t('settings.style.advanced_colors.underlay'),\"fallback\":_vm.previewTheme.colors.underlay},model:{value:(_vm.underlayColorLocal),callback:function ($$v) {_vm.underlayColorLocal=$$v},expression:\"underlayColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"underlayOpacity\",\"fallback\":_vm.previewTheme.opacity.underlay,\"disabled\":_vm.underlayOpacityLocal === 'transparent'},model:{value:(_vm.underlayOpacityLocal),callback:function ($$v) {_vm.underlayOpacityLocal=$$v},expression:\"underlayOpacityLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.poll')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"poll\",\"label\":_vm.$t('settings.background'),\"fallback\":_vm.previewTheme.colors.poll},model:{value:(_vm.pollColorLocal),callback:function ($$v) {_vm.pollColorLocal=$$v},expression:\"pollColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"pollText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.pollText},model:{value:(_vm.pollTextColorLocal),callback:function ($$v) {_vm.pollTextColorLocal=$$v},expression:\"pollTextColorLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.icons')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"icon\",\"label\":_vm.$t('settings.style.advanced_colors.icons'),\"fallback\":_vm.previewTheme.colors.icon},model:{value:(_vm.iconColorLocal),callback:function ($$v) {_vm.iconColorLocal=$$v},expression:\"iconColorLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.highlight')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"highlight\",\"label\":_vm.$t('settings.background'),\"fallback\":_vm.previewTheme.colors.highlight},model:{value:(_vm.highlightColorLocal),callback:function ($$v) {_vm.highlightColorLocal=$$v},expression:\"highlightColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"highlightText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.highlightText},model:{value:(_vm.highlightTextColorLocal),callback:function ($$v) {_vm.highlightTextColorLocal=$$v},expression:\"highlightTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.highlightText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"highlightLink\",\"label\":_vm.$t('settings.links'),\"fallback\":_vm.previewTheme.colors.highlightLink},model:{value:(_vm.highlightLinkColorLocal),callback:function ($$v) {_vm.highlightLinkColorLocal=$$v},expression:\"highlightLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.highlightLink}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.popover')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"popover\",\"label\":_vm.$t('settings.background'),\"fallback\":_vm.previewTheme.colors.popover},model:{value:(_vm.popoverColorLocal),callback:function ($$v) {_vm.popoverColorLocal=$$v},expression:\"popoverColorLocal\"}}),_vm._v(\" \"),_c('OpacityInput',{attrs:{\"name\":\"popoverOpacity\",\"fallback\":_vm.previewTheme.opacity.popover,\"disabled\":_vm.popoverOpacityLocal === 'transparent'},model:{value:(_vm.popoverOpacityLocal),callback:function ($$v) {_vm.popoverOpacityLocal=$$v},expression:\"popoverOpacityLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"popoverText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.popoverText},model:{value:(_vm.popoverTextColorLocal),callback:function ($$v) {_vm.popoverTextColorLocal=$$v},expression:\"popoverTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.popoverText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"popoverLink\",\"label\":_vm.$t('settings.links'),\"fallback\":_vm.previewTheme.colors.popoverLink},model:{value:(_vm.popoverLinkColorLocal),callback:function ($$v) {_vm.popoverLinkColorLocal=$$v},expression:\"popoverLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.popoverLink}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.selectedPost')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedPost\",\"label\":_vm.$t('settings.background'),\"fallback\":_vm.previewTheme.colors.selectedPost},model:{value:(_vm.selectedPostColorLocal),callback:function ($$v) {_vm.selectedPostColorLocal=$$v},expression:\"selectedPostColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedPostText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.selectedPostText},model:{value:(_vm.selectedPostTextColorLocal),callback:function ($$v) {_vm.selectedPostTextColorLocal=$$v},expression:\"selectedPostTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.selectedPostText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedPostLink\",\"label\":_vm.$t('settings.links'),\"fallback\":_vm.previewTheme.colors.selectedPostLink},model:{value:(_vm.selectedPostLinkColorLocal),callback:function ($$v) {_vm.selectedPostLinkColorLocal=$$v},expression:\"selectedPostLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.selectedPostLink}})],1),_vm._v(\" \"),_c('div',{staticClass:\"color-item\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.style.advanced_colors.selectedMenu')))]),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedMenu\",\"label\":_vm.$t('settings.background'),\"fallback\":_vm.previewTheme.colors.selectedMenu},model:{value:(_vm.selectedMenuColorLocal),callback:function ($$v) {_vm.selectedMenuColorLocal=$$v},expression:\"selectedMenuColorLocal\"}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedMenuText\",\"label\":_vm.$t('settings.text'),\"fallback\":_vm.previewTheme.colors.selectedMenuText},model:{value:(_vm.selectedMenuTextColorLocal),callback:function ($$v) {_vm.selectedMenuTextColorLocal=$$v},expression:\"selectedMenuTextColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.selectedMenuText}}),_vm._v(\" \"),_c('ColorInput',{attrs:{\"name\":\"selectedMenuLink\",\"label\":_vm.$t('settings.links'),\"fallback\":_vm.previewTheme.colors.selectedMenuLink},model:{value:(_vm.selectedMenuLinkColorLocal),callback:function ($$v) {_vm.selectedMenuLinkColorLocal=$$v},expression:\"selectedMenuLinkColorLocal\"}}),_vm._v(\" \"),_c('ContrastRatio',{attrs:{\"contrast\":_vm.previewContrast.selectedMenuLink}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"radius-container\",attrs:{\"label\":_vm.$t('settings.style.radii._tab_label')}},[_c('div',{staticClass:\"tab-header\"},[_c('p',[_vm._v(_vm._s(_vm.$t('settings.radii_help')))]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearRoundness}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_all'))+\"\\n \")])]),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"btnRadius\",\"label\":_vm.$t('settings.btnRadius'),\"fallback\":_vm.previewTheme.radii.btn,\"max\":\"16\",\"hard-min\":\"0\"},model:{value:(_vm.btnRadiusLocal),callback:function ($$v) {_vm.btnRadiusLocal=$$v},expression:\"btnRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"inputRadius\",\"label\":_vm.$t('settings.inputRadius'),\"fallback\":_vm.previewTheme.radii.input,\"max\":\"9\",\"hard-min\":\"0\"},model:{value:(_vm.inputRadiusLocal),callback:function ($$v) {_vm.inputRadiusLocal=$$v},expression:\"inputRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"checkboxRadius\",\"label\":_vm.$t('settings.checkboxRadius'),\"fallback\":_vm.previewTheme.radii.checkbox,\"max\":\"16\",\"hard-min\":\"0\"},model:{value:(_vm.checkboxRadiusLocal),callback:function ($$v) {_vm.checkboxRadiusLocal=$$v},expression:\"checkboxRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"panelRadius\",\"label\":_vm.$t('settings.panelRadius'),\"fallback\":_vm.previewTheme.radii.panel,\"max\":\"50\",\"hard-min\":\"0\"},model:{value:(_vm.panelRadiusLocal),callback:function ($$v) {_vm.panelRadiusLocal=$$v},expression:\"panelRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"avatarRadius\",\"label\":_vm.$t('settings.avatarRadius'),\"fallback\":_vm.previewTheme.radii.avatar,\"max\":\"28\",\"hard-min\":\"0\"},model:{value:(_vm.avatarRadiusLocal),callback:function ($$v) {_vm.avatarRadiusLocal=$$v},expression:\"avatarRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"avatarAltRadius\",\"label\":_vm.$t('settings.avatarAltRadius'),\"fallback\":_vm.previewTheme.radii.avatarAlt,\"max\":\"28\",\"hard-min\":\"0\"},model:{value:(_vm.avatarAltRadiusLocal),callback:function ($$v) {_vm.avatarAltRadiusLocal=$$v},expression:\"avatarAltRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"attachmentRadius\",\"label\":_vm.$t('settings.attachmentRadius'),\"fallback\":_vm.previewTheme.radii.attachment,\"max\":\"50\",\"hard-min\":\"0\"},model:{value:(_vm.attachmentRadiusLocal),callback:function ($$v) {_vm.attachmentRadiusLocal=$$v},expression:\"attachmentRadiusLocal\"}}),_vm._v(\" \"),_c('RangeInput',{attrs:{\"name\":\"tooltipRadius\",\"label\":_vm.$t('settings.tooltipRadius'),\"fallback\":_vm.previewTheme.radii.tooltip,\"max\":\"50\",\"hard-min\":\"0\"},model:{value:(_vm.tooltipRadiusLocal),callback:function ($$v) {_vm.tooltipRadiusLocal=$$v},expression:\"tooltipRadiusLocal\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"shadow-container\",attrs:{\"label\":_vm.$t('settings.style.shadows._tab_label')}},[_c('div',{staticClass:\"tab-header shadow-selector\"},[_c('div',{staticClass:\"select-container\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.component'))+\"\\n \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"shadow-switcher\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.shadowSelected),expression:\"shadowSelected\"}],staticClass:\"shadow-switcher\",attrs:{\"id\":\"shadow-switcher\"},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.shadowSelected=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.shadowsAvailable),function(shadow){return _c('option',{key:shadow,domProps:{\"value\":shadow}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.components.' + shadow))+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"override\"},[_c('label',{staticClass:\"label\",attrs:{\"for\":\"override\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.shadows.override'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentShadowOverriden),expression:\"currentShadowOverriden\"}],staticClass:\"input-override\",attrs:{\"id\":\"override\",\"name\":\"override\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.currentShadowOverriden)?_vm._i(_vm.currentShadowOverriden,null)>-1:(_vm.currentShadowOverriden)},on:{\"change\":function($event){var $$a=_vm.currentShadowOverriden,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.currentShadowOverriden=$$a.concat([$$v]))}else{$$i>-1&&(_vm.currentShadowOverriden=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.currentShadowOverriden=$$c}}}}),_vm._v(\" \"),_c('label',{staticClass:\"checkbox-label\",attrs:{\"for\":\"override\"}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearShadows}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_all'))+\"\\n \")])]),_vm._v(\" \"),_c('ShadowControl',{attrs:{\"ready\":!!_vm.currentShadowFallback,\"fallback\":_vm.currentShadowFallback},model:{value:(_vm.currentShadow),callback:function ($$v) {_vm.currentShadow=$$v},expression:\"currentShadow\"}}),_vm._v(\" \"),(_vm.shadowSelected === 'avatar' || _vm.shadowSelected === 'avatarStatus')?_c('div',[_c('i18n',{attrs:{\"path\":\"settings.style.shadows.filter_hint.always_drop_shadow\",\"tag\":\"p\"}},[_c('code',[_vm._v(\"filter: drop-shadow()\")])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.style.shadows.filter_hint.avatar_inset')))]),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":\"settings.style.shadows.filter_hint.drop_shadow_syntax\",\"tag\":\"p\"}},[_c('code',[_vm._v(\"drop-shadow\")]),_vm._v(\" \"),_c('code',[_vm._v(\"spread-radius\")]),_vm._v(\" \"),_c('code',[_vm._v(\"inset\")])]),_vm._v(\" \"),_c('i18n',{attrs:{\"path\":\"settings.style.shadows.filter_hint.inset_classic\",\"tag\":\"p\"}},[_c('code',[_vm._v(\"box-shadow\")])]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.style.shadows.filter_hint.spread_zero')))])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"fonts-container\",attrs:{\"label\":_vm.$t('settings.style.fonts._tab_label')}},[_c('div',{staticClass:\"tab-header\"},[_c('p',[_vm._v(_vm._s(_vm.$t('settings.style.fonts.help')))]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearFonts}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.clear_all'))+\"\\n \")])]),_vm._v(\" \"),_c('FontControl',{attrs:{\"name\":\"ui\",\"label\":_vm.$t('settings.style.fonts.components.interface'),\"fallback\":_vm.previewTheme.fonts.interface,\"no-inherit\":\"1\"},model:{value:(_vm.fontsLocal.interface),callback:function ($$v) {_vm.$set(_vm.fontsLocal, \"interface\", $$v)},expression:\"fontsLocal.interface\"}}),_vm._v(\" \"),_c('FontControl',{attrs:{\"name\":\"input\",\"label\":_vm.$t('settings.style.fonts.components.input'),\"fallback\":_vm.previewTheme.fonts.input},model:{value:(_vm.fontsLocal.input),callback:function ($$v) {_vm.$set(_vm.fontsLocal, \"input\", $$v)},expression:\"fontsLocal.input\"}}),_vm._v(\" \"),_c('FontControl',{attrs:{\"name\":\"post\",\"label\":_vm.$t('settings.style.fonts.components.post'),\"fallback\":_vm.previewTheme.fonts.post},model:{value:(_vm.fontsLocal.post),callback:function ($$v) {_vm.$set(_vm.fontsLocal, \"post\", $$v)},expression:\"fontsLocal.post\"}}),_vm._v(\" \"),_c('FontControl',{attrs:{\"name\":\"postCode\",\"label\":_vm.$t('settings.style.fonts.components.postCode'),\"fallback\":_vm.previewTheme.fonts.postCode},model:{value:(_vm.fontsLocal.postCode),callback:function ($$v) {_vm.$set(_vm.fontsLocal, \"postCode\", $$v)},expression:\"fontsLocal.postCode\"}})],1)])],1),_vm._v(\" \"),_c('div',{staticClass:\"apply-container\"},[_c('button',{staticClass:\"btn submit\",attrs:{\"disabled\":!_vm.themeValid},on:{\"click\":_vm.setCustomTheme}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.apply'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn\",on:{\"click\":_vm.clearAll}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.style.switcher.reset'))+\"\\n \")])])],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","<template>\n <div>\n <label for=\"interface-language-switcher\">\n {{ $t('settings.interfaceLanguage') }}\n </label>\n <label\n for=\"interface-language-switcher\"\n class=\"select\"\n >\n <select\n id=\"interface-language-switcher\"\n v-model=\"language\"\n >\n <option\n v-for=\"(langCode, i) in languageCodes\"\n :key=\"langCode\"\n :value=\"langCode\"\n >\n {{ languageNames[i] }}\n </option>\n </select>\n <i class=\"icon-down-open\" />\n </label>\n </div>\n</template>\n\n<script>\nimport languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nexport default {\n computed: {\n languageCodes () {\n return Object.keys(languagesObject)\n },\n\n languageNames () {\n return _.map(this.languageCodes, this.getLanguageName)\n },\n\n language: {\n get: function () { return this.$store.getters.mergedConfig.interfaceLanguage },\n set: function (val) {\n this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n this.$i18n.locale = val\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n const specialLanguageNames = {\n 'ja': 'Japanese (日本語)',\n 'ja_easy': 'Japanese (やさしいにほんご)',\n 'zh': 'Chinese (简体中文)'\n }\n return specialLanguageNames[code] || ISO6391.getName(code)\n }\n }\n}\n</script>\n","/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./interface_language_switcher.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./interface_language_switcher.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-25d06bfd\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./interface_language_switcher.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',[_c('label',{attrs:{\"for\":\"interface-language-switcher\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.interfaceLanguage'))+\"\\n \")]),_vm._v(\" \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"interface-language-switcher\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.language),expression:\"language\"}],attrs:{\"id\":\"interface-language-switcher\"},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.language=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.languageCodes),function(langCode,i){return _c('option',{key:langCode,domProps:{\"value\":langCode}},[_vm._v(\"\\n \"+_vm._s(_vm.languageNames[i])+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","/* eslint-env browser */\nimport { filter, trim } from 'lodash'\n\nimport TabSwitcher from '../tab_switcher/tab_switcher.js'\nimport StyleSwitcher from '../style_switcher/style_switcher.vue'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport { extractCommit } from '../../services/version/version.service'\nimport { instanceDefaultProperties, defaultState as configDefaultState } from '../../modules/config.js'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst pleromaFeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma-fe/commit/'\nconst pleromaBeCommitUrl = 'https://git.pleroma.social/pleroma/pleroma/commit/'\n\nconst multiChoiceProperties = [\n 'postContentType',\n 'subjectLineBehavior'\n]\n\nconst settings = {\n data () {\n const instance = this.$store.state.instance\n\n return {\n loopSilentAvailable:\n // Firefox\n Object.getOwnPropertyDescriptor(HTMLVideoElement.prototype, 'mozHasAudio') ||\n // Chrome-likes\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'webkitAudioDecodedByteCount') ||\n // Future spec, still not supported in Nightly 63 as of 08/2018\n Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'audioTracks'),\n\n backendVersion: instance.backendVersion,\n frontendVersion: instance.frontendVersion\n }\n },\n components: {\n TabSwitcher,\n StyleSwitcher,\n InterfaceLanguageSwitcher,\n Checkbox\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\n },\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n postFormats () {\n return this.$store.state.instance.postFormats || []\n },\n instanceSpecificPanelPresent () { return this.$store.state.instance.showInstanceSpecificPanel },\n frontendVersionLink () {\n return pleromaFeCommitUrl + this.frontendVersion\n },\n backendVersionLink () {\n return pleromaBeCommitUrl + extractCommit(this.backendVersion)\n },\n // Getting localized values for instance-default properties\n ...instanceDefaultProperties\n .filter(key => multiChoiceProperties.includes(key))\n .map(key => [\n key + 'DefaultValue',\n function () {\n return this.$store.getters.instanceDefaultConfig[key]\n }\n ])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n ...instanceDefaultProperties\n .filter(key => !multiChoiceProperties.includes(key))\n .map(key => [\n key + 'LocalizedValue',\n function () {\n return this.$t('settings.values.' + this.$store.getters.instanceDefaultConfig[key])\n }\n ])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n // Generating computed values for vuex properties\n ...Object.keys(configDefaultState)\n .map(key => [key, {\n get () { return this.$store.getters.mergedConfig[key] },\n set (value) {\n this.$store.dispatch('setOption', { name: key, value })\n }\n }])\n .reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {}),\n // Special cases (need to transform values or perform actions first)\n muteWordsString: {\n get () { return this.$store.getters.mergedConfig.muteWords.join('\\n') },\n set (value) {\n this.$store.dispatch('setOption', {\n name: 'muteWords',\n value: filter(value.split('\\n'), (word) => trim(word).length > 0)\n })\n }\n },\n useStreamingApi: {\n get () { return this.$store.getters.mergedConfig.useStreamingApi },\n set (value) {\n const promise = value\n ? this.$store.dispatch('enableMastoSockets')\n : this.$store.dispatch('disableMastoSockets')\n\n promise.then(() => {\n this.$store.dispatch('setOption', { name: 'useStreamingApi', value })\n }).catch((e) => {\n console.error('Failed starting MastoAPI Streaming socket', e)\n this.$store.dispatch('disableMastoSockets')\n this.$store.dispatch('setOption', { name: 'useStreamingApi', value: false })\n })\n }\n }\n },\n // Updating nested properties\n watch: {\n notificationVisibility: {\n handler (value) {\n this.$store.dispatch('setOption', {\n name: 'notificationVisibility',\n value: this.$store.getters.mergedConfig.notificationVisibility\n })\n },\n deep: true\n }\n }\n}\n\nexport default settings\n","\nexport const extractCommit = versionString => {\n const regex = /-g(\\w+)/i\n const matches = versionString.match(regex)\n return matches ? matches[1] : ''\n}\n","/* script */\nexport * from \"!!babel-loader!./settings.js\"\nimport __vue_script__ from \"!!babel-loader!./settings.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8726eb48\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('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)],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body\"},[_c('keep-alive',[_c('tab-switcher',[_c('div',{attrs:{\"label\":_vm.$t('settings.general')}},[_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.interface')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('interface-language-switcher')],1),_vm._v(\" \"),(_vm.instanceSpecificPanelPresent)?_c('li',[_c('Checkbox',{model:{value:(_vm.hideISP),callback:function ($$v) {_vm.hideISP=$$v},expression:\"hideISP\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_isp'))+\"\\n \")])],1):_vm._e()])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('nav.timeline')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.hideMutedPosts),callback:function ($$v) {_vm.hideMutedPosts=$$v},expression:\"hideMutedPosts\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_muted_posts'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.hideMutedPostsLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.collapseMessageWithSubject),callback:function ($$v) {_vm.collapseMessageWithSubject=$$v},expression:\"collapseMessageWithSubject\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.collapse_subject'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.collapseMessageWithSubjectLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.streaming),callback:function ($$v) {_vm.streaming=$$v},expression:\"streaming\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.streaming'))+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list suboptions\",class:[{disabled: !_vm.streaming}]},[_c('li',[_c('Checkbox',{attrs:{\"disabled\":!_vm.streaming},model:{value:(_vm.pauseOnUnfocused),callback:function ($$v) {_vm.pauseOnUnfocused=$$v},expression:\"pauseOnUnfocused\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.pause_on_unfocused'))+\"\\n \")])],1)])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.useStreamingApi),callback:function ($$v) {_vm.useStreamingApi=$$v},expression:\"useStreamingApi\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.useStreamingApi'))+\"\\n \"),_c('br'),_vm._v(\" \"),_c('small',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.useStreamingApiWarning'))+\"\\n \")])])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.autoLoad),callback:function ($$v) {_vm.autoLoad=$$v},expression:\"autoLoad\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.autoload'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.hoverPreview),callback:function ($$v) {_vm.hoverPreview=$$v},expression:\"hoverPreview\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.reply_link_preview'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.emojiReactionsOnTimeline),callback:function ($$v) {_vm.emojiReactionsOnTimeline=$$v},expression:\"emojiReactionsOnTimeline\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.emoji_reactions_on_timeline'))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.composing')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.scopeCopy),callback:function ($$v) {_vm.scopeCopy=$$v},expression:\"scopeCopy\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.scope_copy'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.scopeCopyLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.alwaysShowSubjectInput),callback:function ($$v) {_vm.alwaysShowSubjectInput=$$v},expression:\"alwaysShowSubjectInput\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.subject_input_always_show'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.alwaysShowSubjectInputLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.subject_line_behavior'))+\"\\n \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"subjectLineBehavior\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.subjectLineBehavior),expression:\"subjectLineBehavior\"}],attrs:{\"id\":\"subjectLineBehavior\"},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.subjectLineBehavior=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"email\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.subject_line_email'))+\"\\n \"+_vm._s(_vm.subjectLineBehaviorDefaultValue == 'email' ? _vm.$t('settings.instance_default_simple') : '')+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"masto\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.subject_line_mastodon'))+\"\\n \"+_vm._s(_vm.subjectLineBehaviorDefaultValue == 'mastodon' ? _vm.$t('settings.instance_default_simple') : '')+\"\\n \")]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"noop\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.subject_line_noop'))+\"\\n \"+_vm._s(_vm.subjectLineBehaviorDefaultValue == 'noop' ? _vm.$t('settings.instance_default_simple') : '')+\"\\n \")])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])]),_vm._v(\" \"),(_vm.postFormats.length > 0)?_c('li',[_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.post_status_content_type'))+\"\\n \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"postContentType\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.postContentType),expression:\"postContentType\"}],attrs:{\"id\":\"postContentType\"},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.postContentType=$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 \"+_vm._s(_vm.postContentTypeDefaultValue === postFormat ? _vm.$t('settings.instance_default_simple') : '')+\"\\n \")])}),0),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])])]):_vm._e(),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.minimalScopesMode),callback:function ($$v) {_vm.minimalScopesMode=$$v},expression:\"minimalScopesMode\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.minimal_scopes_mode'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.minimalScopesModeLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.autohideFloatingPostButton),callback:function ($$v) {_vm.autohideFloatingPostButton=$$v},expression:\"autohideFloatingPostButton\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.autohide_floating_post_button'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.padEmoji),callback:function ($$v) {_vm.padEmoji=$$v},expression:\"padEmoji\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.pad_emoji'))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.attachments')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.hideAttachments),callback:function ($$v) {_vm.hideAttachments=$$v},expression:\"hideAttachments\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_attachments_in_tl'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.hideAttachmentsInConv),callback:function ($$v) {_vm.hideAttachmentsInConv=$$v},expression:\"hideAttachmentsInConv\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_attachments_in_convo'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('label',{attrs:{\"for\":\"maxThumbnails\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.max_thumbnails'))+\"\\n \")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.maxThumbnails),expression:\"maxThumbnails\",modifiers:{\"number\":true}}],staticClass:\"number-input\",attrs:{\"id\":\"maxThumbnails\",\"type\":\"number\",\"min\":\"0\",\"step\":\"1\"},domProps:{\"value\":(_vm.maxThumbnails)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.maxThumbnails=_vm._n($event.target.value)},\"blur\":function($event){return _vm.$forceUpdate()}}})]),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.hideNsfw),callback:function ($$v) {_vm.hideNsfw=$$v},expression:\"hideNsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.nsfw_clickthrough'))+\"\\n \")])],1),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list suboptions\"},[_c('li',[_c('Checkbox',{attrs:{\"disabled\":!_vm.hideNsfw},model:{value:(_vm.preloadImage),callback:function ($$v) {_vm.preloadImage=$$v},expression:\"preloadImage\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.preload_images'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{attrs:{\"disabled\":!_vm.hideNsfw},model:{value:(_vm.useOneClickNsfw),callback:function ($$v) {_vm.useOneClickNsfw=$$v},expression:\"useOneClickNsfw\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.use_one_click_nsfw'))+\"\\n \")])],1)]),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.stopGifs),callback:function ($$v) {_vm.stopGifs=$$v},expression:\"stopGifs\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.stop_gifs'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.loopVideo),callback:function ($$v) {_vm.loopVideo=$$v},expression:\"loopVideo\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.loop_video'))+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list suboptions\",class:[{disabled: !_vm.streaming}]},[_c('li',[_c('Checkbox',{attrs:{\"disabled\":!_vm.loopVideo || !_vm.loopSilentAvailable},model:{value:(_vm.loopVideoSilentOnly),callback:function ($$v) {_vm.loopVideoSilentOnly=$$v},expression:\"loopVideoSilentOnly\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.loop_video_silent_only'))+\"\\n \")]),_vm._v(\" \"),(!_vm.loopSilentAvailable)?_c('div',{staticClass:\"unavailable\"},[_c('i',{staticClass:\"icon-globe\"}),_vm._v(\"! \"+_vm._s(_vm.$t('settings.limited_availability'))+\"\\n \")]):_vm._e()],1)])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.playVideosInModal),callback:function ($$v) {_vm.playVideosInModal=$$v},expression:\"playVideosInModal\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.play_videos_in_modal'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.useContainFit),callback:function ($$v) {_vm.useContainFit=$$v},expression:\"useContainFit\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.use_contain_fit'))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.notifications')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.webPushNotifications),callback:function ($$v) {_vm.webPushNotifications=$$v},expression:\"webPushNotifications\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.enable_web_push_notifications'))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.fun')))]),_vm._v(\" \"),_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.greentext),callback:function ($$v) {_vm.greentext=$$v},expression:\"greentext\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.greentext'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.greentextLocalizedValue }))+\"\\n \")])],1)])])]),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.theme')}},[_c('div',{staticClass:\"setting-item\"},[_c('style-switcher')],1)]),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.filtering')}},[_c('div',{staticClass:\"setting-item\"},[_c('div',{staticClass:\"select-multiple\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('settings.notification_visibility')))]),_vm._v(\" \"),_c('ul',{staticClass:\"option-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.likes),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"likes\", $$v)},expression:\"notificationVisibility.likes\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_likes'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.repeats),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"repeats\", $$v)},expression:\"notificationVisibility.repeats\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_repeats'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.follows),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"follows\", $$v)},expression:\"notificationVisibility.follows\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_follows'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.mentions),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"mentions\", $$v)},expression:\"notificationVisibility.mentions\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_mentions'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.moves),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"moves\", $$v)},expression:\"notificationVisibility.moves\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_moves'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationVisibility.emojiReactions),callback:function ($$v) {_vm.$set(_vm.notificationVisibility, \"emojiReactions\", $$v)},expression:\"notificationVisibility.emojiReactions\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_visibility_emoji_reactions'))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.replies_in_timeline'))+\"\\n \"),_c('label',{staticClass:\"select\",attrs:{\"for\":\"replyVisibility\"}},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.replyVisibility),expression:\"replyVisibility\"}],attrs:{\"id\":\"replyVisibility\"},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.replyVisibility=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"all\",\"selected\":\"\"}},[_vm._v(_vm._s(_vm.$t('settings.reply_visibility_all')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"following\"}},[_vm._v(_vm._s(_vm.$t('settings.reply_visibility_following')))]),_vm._v(\" \"),_c('option',{attrs:{\"value\":\"self\"}},[_vm._v(_vm._s(_vm.$t('settings.reply_visibility_self')))])]),_vm._v(\" \"),_c('i',{staticClass:\"icon-down-open\"})])]),_vm._v(\" \"),_c('div',[_c('Checkbox',{model:{value:(_vm.hidePostStats),callback:function ($$v) {_vm.hidePostStats=$$v},expression:\"hidePostStats\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_post_stats'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.hidePostStatsLocalizedValue }))+\"\\n \")])],1),_vm._v(\" \"),_c('div',[_c('Checkbox',{model:{value:(_vm.hideUserStats),callback:function ($$v) {_vm.hideUserStats=$$v},expression:\"hideUserStats\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_user_stats'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.hideUserStatsLocalizedValue }))+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.filtering_explanation')))]),_vm._v(\" \"),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.muteWordsString),expression:\"muteWordsString\"}],attrs:{\"id\":\"muteWords\"},domProps:{\"value\":(_vm.muteWordsString)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.muteWordsString=$event.target.value}}})]),_vm._v(\" \"),_c('div',[_c('Checkbox',{model:{value:(_vm.hideFilteredStatuses),callback:function ($$v) {_vm.hideFilteredStatuses=$$v},expression:\"hideFilteredStatuses\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_filtered_statuses'))+\" \"+_vm._s(_vm.$t('settings.instance_default', { value: _vm.hideFilteredStatusesLocalizedValue }))+\"\\n \")])],1)])]),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.version.title')}},[_c('div',{staticClass:\"setting-item\"},[_c('ul',{staticClass:\"setting-list\"},[_c('li',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.version.backend_version')))]),_vm._v(\" \"),_c('ul',{staticClass:\"option-list\"},[_c('li',[_c('a',{attrs:{\"href\":_vm.backendVersionLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.backendVersion))])])])]),_vm._v(\" \"),_c('li',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.version.frontend_version')))]),_vm._v(\" \"),_c('ul',{staticClass:\"option-list\"},[_c('li',[_c('a',{attrs:{\"href\":_vm.frontendVersionLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.frontendVersion))])])])])])])])])],1)],1)])}\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 Cropper from 'cropperjs'\nimport 'cropperjs/dist/cropper.css'\n\nconst ImageCropper = {\n props: {\n trigger: {\n type: [String, window.Element],\n required: true\n },\n submitHandler: {\n type: Function,\n required: true\n },\n cropperOptions: {\n type: Object,\n default () {\n return {\n aspectRatio: 1,\n autoCropArea: 1,\n viewMode: 1,\n movable: false,\n zoomable: false,\n guides: false\n }\n }\n },\n mimes: {\n type: String,\n default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon'\n },\n saveButtonLabel: {\n type: String\n },\n saveWithoutCroppingButtonlabel: {\n type: String\n },\n cancelButtonLabel: {\n type: String\n }\n },\n data () {\n return {\n cropper: undefined,\n dataUrl: undefined,\n filename: undefined,\n submitting: false,\n submitError: null\n }\n },\n computed: {\n saveText () {\n return this.saveButtonLabel || this.$t('image_cropper.save')\n },\n saveWithoutCroppingText () {\n return this.saveWithoutCroppingButtonlabel || this.$t('image_cropper.save_without_cropping')\n },\n cancelText () {\n return this.cancelButtonLabel || this.$t('image_cropper.cancel')\n },\n submitErrorMsg () {\n return this.submitError && this.submitError instanceof Error ? this.submitError.toString() : this.submitError\n }\n },\n methods: {\n destroy () {\n if (this.cropper) {\n this.cropper.destroy()\n }\n this.$refs.input.value = ''\n this.dataUrl = undefined\n this.$emit('close')\n },\n submit (cropping = true) {\n this.submitting = true\n this.avatarUploadError = null\n this.submitHandler(cropping && this.cropper, this.file)\n .then(() => this.destroy())\n .catch((err) => {\n this.submitError = err\n })\n .finally(() => {\n this.submitting = false\n })\n },\n pickImage () {\n this.$refs.input.click()\n },\n createCropper () {\n this.cropper = new Cropper(this.$refs.img, this.cropperOptions)\n },\n getTriggerDOM () {\n return typeof this.trigger === 'object' ? this.trigger : document.querySelector(this.trigger)\n },\n readFile () {\n const fileInput = this.$refs.input\n if (fileInput.files != null && fileInput.files[0] != null) {\n this.file = fileInput.files[0]\n let reader = new window.FileReader()\n reader.onload = (e) => {\n this.dataUrl = e.target.result\n this.$emit('open')\n }\n reader.readAsDataURL(this.file)\n this.$emit('changed', this.file, reader)\n }\n },\n clearError () {\n this.submitError = null\n }\n },\n mounted () {\n // listen for click event on trigger\n const trigger = this.getTriggerDOM()\n if (!trigger) {\n this.$emit('error', 'No image make trigger found.', 'user')\n } else {\n trigger.addEventListener('click', this.pickImage)\n }\n // listen for input file changes\n const fileInput = this.$refs.input\n fileInput.addEventListener('change', this.readFile)\n },\n beforeDestroy: function () {\n // remove the event listeners\n const trigger = this.getTriggerDOM()\n if (trigger) {\n trigger.removeEventListener('click', this.pickImage)\n }\n const fileInput = this.$refs.input\n fileInput.removeEventListener('change', this.readFile)\n }\n}\n\nexport default ImageCropper\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./image_cropper.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./image_cropper.js\"\nimport __vue_script__ from \"!!babel-loader!./image_cropper.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3babea86\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./image_cropper.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"image-cropper\"},[(_vm.dataUrl)?_c('div',[_c('div',{staticClass:\"image-cropper-image-container\"},[_c('img',{ref:\"img\",attrs:{\"src\":_vm.dataUrl,\"alt\":\"\"},on:{\"load\":function($event){$event.stopPropagation();return _vm.createCropper($event)}}})]),_vm._v(\" \"),_c('div',{staticClass:\"image-cropper-buttons-wrapper\"},[_c('button',{staticClass:\"btn\",attrs:{\"type\":\"button\",\"disabled\":_vm.submitting},domProps:{\"textContent\":_vm._s(_vm.saveText)},on:{\"click\":function($event){return _vm.submit()}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn\",attrs:{\"type\":\"button\",\"disabled\":_vm.submitting},domProps:{\"textContent\":_vm._s(_vm.cancelText)},on:{\"click\":_vm.destroy}}),_vm._v(\" \"),_c('button',{staticClass:\"btn\",attrs:{\"type\":\"button\",\"disabled\":_vm.submitting},domProps:{\"textContent\":_vm._s(_vm.saveWithoutCroppingText)},on:{\"click\":function($event){return _vm.submit(false)}}}),_vm._v(\" \"),(_vm.submitting)?_c('i',{staticClass:\"icon-spin4 animate-spin\"}):_vm._e()]),_vm._v(\" \"),(_vm.submitError)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.submitErrorMsg)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":_vm.clearError}})]):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('input',{ref:\"input\",staticClass:\"image-cropper-img-input\",attrs:{\"type\":\"file\",\"accept\":_vm.mimes}})])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst BlockCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\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 blocked () {\n return this.relationship.blocking\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unblockUser () {\n this.progress = true\n this.$store.dispatch('unblockUser', this.user.id).then(() => {\n this.progress = false\n })\n },\n blockUser () {\n this.progress = true\n this.$store.dispatch('blockUser', this.user.id).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default BlockCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./block_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./block_card.js\"\nimport __vue_script__ from \"!!babel-loader!./block_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-633eab92\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./block_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:\"block-card-content-container\"},[(_vm.blocked)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.progress},on:{\"click\":_vm.unblockUser}},[(_vm.progress)?[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock_progress'))+\"\\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \")]],2):_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.progress},on:{\"click\":_vm.blockUser}},[(_vm.progress)?[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block_progress'))+\"\\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \")]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst MuteCard = {\n props: ['userId'],\n data () {\n return {\n progress: false\n }\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 muted () {\n return this.relationship.muting\n }\n },\n components: {\n BasicUserCard\n },\n methods: {\n unmuteUser () {\n this.progress = true\n this.$store.dispatch('unmuteUser', this.userId).then(() => {\n this.progress = false\n })\n },\n muteUser () {\n this.progress = true\n this.$store.dispatch('muteUser', this.userId).then(() => {\n this.progress = false\n })\n }\n }\n}\n\nexport default MuteCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mute_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mute_card.js\"\nimport __vue_script__ from \"!!babel-loader!./mute_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-4de27707\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mute_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:\"mute-card-content-container\"},[(_vm.muted)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.progress},on:{\"click\":_vm.unmuteUser}},[(_vm.progress)?[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unmute_progress'))+\"\\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unmute'))+\"\\n \")]],2):_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.progress},on:{\"click\":_vm.muteUser}},[(_vm.progress)?[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute_progress'))+\"\\n \")]:[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \")]],2)])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import ProgressButton from '../progress_button/progress_button.vue'\n\nconst DomainMuteCard = {\n props: ['domain'],\n components: {\n ProgressButton\n },\n methods: {\n unmuteDomain () {\n return this.$store.dispatch('unmuteDomain', this.domain)\n }\n }\n}\n\nexport default DomainMuteCard\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./domain_mute_card.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./domain_mute_card.js\"\nimport __vue_script__ from \"!!babel-loader!./domain_mute_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-77eaeb9c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./domain_mute_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:\"domain-mute-card\"},[_c('div',{staticClass:\"domain-mute-card-domain\"},[_vm._v(\"\\n \"+_vm._s(_vm.domain)+\"\\n \")]),_vm._v(\" \"),_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":_vm.unmuteDomain}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.unmute'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.unmute_progress'))+\"\\n \")])],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nconst SelectableList = {\n components: {\n List,\n Checkbox\n },\n props: {\n items: {\n type: Array,\n default: () => []\n },\n getKey: {\n type: Function,\n default: item => item.id\n }\n },\n data () {\n return {\n selected: []\n }\n },\n computed: {\n allKeys () {\n return this.items.map(this.getKey)\n },\n filteredSelected () {\n return this.allKeys.filter(key => this.selected.indexOf(key) !== -1)\n },\n allSelected () {\n return this.filteredSelected.length === this.items.length\n },\n noneSelected () {\n return this.filteredSelected.length === 0\n },\n someSelected () {\n return !this.allSelected && !this.noneSelected\n }\n },\n methods: {\n isSelected (item) {\n return this.filteredSelected.indexOf(this.getKey(item)) !== -1\n },\n toggle (checked, item) {\n const key = this.getKey(item)\n const oldChecked = this.isSelected(key)\n if (checked !== oldChecked) {\n if (checked) {\n this.selected.push(key)\n } else {\n this.selected.splice(this.selected.indexOf(key), 1)\n }\n }\n },\n toggleAll (value) {\n if (value) {\n this.selected = this.allKeys.slice(0)\n } else {\n this.selected = []\n }\n }\n }\n}\n\nexport default SelectableList\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./selectable_list.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./selectable_list.js\"\nimport __vue_script__ from \"!!babel-loader!./selectable_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-059c811c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./selectable_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:\"selectable-list\"},[(_vm.items.length > 0)?_c('div',{staticClass:\"selectable-list-header\"},[_c('div',{staticClass:\"selectable-list-checkbox-wrapper\"},[_c('Checkbox',{attrs:{\"checked\":_vm.allSelected,\"indeterminate\":_vm.someSelected},on:{\"change\":_vm.toggleAll}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('selectable_list.select_all'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"selectable-list-header-actions\"},[_vm._t(\"header\",null,{\"selected\":_vm.filteredSelected})],2)]):_vm._e(),_vm._v(\" \"),_c('List',{attrs:{\"items\":_vm.items,\"get-key\":_vm.getKey},scopedSlots:_vm._u([{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('div',{staticClass:\"selectable-list-item-inner\",class:{ 'selectable-list-item-selected-inner': _vm.isSelected(item) }},[_c('div',{staticClass:\"selectable-list-checkbox-wrapper\"},[_c('Checkbox',{attrs:{\"checked\":_vm.isSelected(item)},on:{\"change\":function (checked) { return _vm.toggle(checked, item); }}})],1),_vm._v(\" \"),_vm._t(\"item\",null,{\"item\":item})],2)]}}],null,true)},[_vm._v(\" \"),_c('template',{slot:\"empty\"},[_vm._t(\"empty\")],2)],2)],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const debounceMilliseconds = 500\n\nexport default {\n props: {\n query: { // function to query results and return a promise\n type: Function,\n required: true\n },\n filter: { // function to filter results in real time\n type: Function\n },\n placeholder: {\n type: String,\n default: 'Search...'\n }\n },\n data () {\n return {\n term: '',\n timeout: null,\n results: [],\n resultsVisible: false\n }\n },\n computed: {\n filtered () {\n return this.filter ? this.filter(this.results) : this.results\n }\n },\n watch: {\n term (val) {\n this.fetchResults(val)\n }\n },\n methods: {\n fetchResults (term) {\n clearTimeout(this.timeout)\n this.timeout = setTimeout(() => {\n this.results = []\n if (term) {\n this.query(term).then((results) => { this.results = results })\n }\n }, debounceMilliseconds)\n },\n onInputClick () {\n this.resultsVisible = true\n },\n onClickOutside () {\n this.resultsVisible = false\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!./autosuggest.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./autosuggest.js\"\nimport __vue_script__ from \"!!babel-loader!./autosuggest.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-105e6799\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./autosuggest.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"autosuggest\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.term),expression:\"term\"}],staticClass:\"autosuggest-input\",attrs:{\"placeholder\":_vm.placeholder},domProps:{\"value\":(_vm.term)},on:{\"click\":_vm.onInputClick,\"input\":function($event){if($event.target.composing){ return; }_vm.term=$event.target.value}}}),_vm._v(\" \"),(_vm.resultsVisible && _vm.filtered.length > 0)?_c('div',{staticClass:\"autosuggest-results\"},[_vm._l((_vm.filtered),function(item){return _vm._t(\"default\",null,{\"item\":item})})],2):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Importer = {\n props: {\n submitHandler: {\n type: Function,\n required: true\n },\n submitButtonLabel: {\n type: String,\n default () {\n return this.$t('importer.submit')\n }\n },\n successMessage: {\n type: String,\n default () {\n return this.$t('importer.success')\n }\n },\n errorMessage: {\n type: String,\n default () {\n return this.$t('importer.error')\n }\n }\n },\n data () {\n return {\n file: null,\n error: false,\n success: false,\n submitting: false\n }\n },\n methods: {\n change () {\n this.file = this.$refs.input.files[0]\n },\n submit () {\n this.dismiss()\n this.submitting = true\n this.submitHandler(this.file)\n .then(() => { this.success = true })\n .catch(() => { this.error = true })\n .finally(() => { this.submitting = false })\n },\n dismiss () {\n this.success = false\n this.error = false\n }\n }\n}\n\nexport default Importer\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./importer.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./importer.js\"\nimport __vue_script__ from \"!!babel-loader!./importer.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4927596c\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./importer.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"importer\"},[_c('form',[_c('input',{ref:\"input\",attrs:{\"type\":\"file\"},on:{\"change\":_vm.change}})]),_vm._v(\" \"),(_vm.submitting)?_c('i',{staticClass:\"icon-spin4 animate-spin importer-uploading\"}):_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.submit}},[_vm._v(\"\\n \"+_vm._s(_vm.submitButtonLabel)+\"\\n \")]),_vm._v(\" \"),(_vm.success)?_c('div',[_c('i',{staticClass:\"icon-cross\",on:{\"click\":_vm.dismiss}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.successMessage))])]):(_vm.error)?_c('div',[_c('i',{staticClass:\"icon-cross\",on:{\"click\":_vm.dismiss}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.errorMessage))])]):_vm._e()])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Exporter = {\n props: {\n getContent: {\n type: Function,\n required: true\n },\n filename: {\n type: String,\n default: 'export.csv'\n },\n exportButtonLabel: {\n type: String,\n default () {\n return this.$t('exporter.export')\n }\n },\n processingMessage: {\n type: String,\n default () {\n return this.$t('exporter.processing')\n }\n }\n },\n data () {\n return {\n processing: false\n }\n },\n methods: {\n process () {\n this.processing = true\n this.getContent()\n .then((content) => {\n const fileToDownload = document.createElement('a')\n fileToDownload.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content))\n fileToDownload.setAttribute('download', this.filename)\n fileToDownload.style.display = 'none'\n document.body.appendChild(fileToDownload)\n fileToDownload.click()\n document.body.removeChild(fileToDownload)\n // Add delay before hiding processing state since browser takes some time to handle file download\n setTimeout(() => { this.processing = false }, 2000)\n })\n }\n }\n}\n\nexport default Exporter\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./exporter.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./exporter.js\"\nimport __vue_script__ from \"!!babel-loader!./exporter.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7229517a\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./exporter.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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:\"exporter\"},[(_vm.processing)?_c('div',[_c('i',{staticClass:\"icon-spin4 animate-spin exporter-processing\"}),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.processingMessage))])]):_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.process}},[_vm._v(\"\\n \"+_vm._s(_vm.exportButtonLabel)+\"\\n \")])])}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Vue from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_subscription.scss'\n\nconst withSubscription = ({\n fetch, // function to fetch entries and return a promise\n select, // function to select data from store\n childPropName = 'content', // 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('withSubscription', {\n props: [\n ...props,\n 'refresh' // boolean saying to force-fetch data whenever created\n ],\n data () {\n return {\n loading: false,\n error: false\n }\n },\n computed: {\n fetchedData () {\n return select(this.$props, this.$store)\n }\n },\n created () {\n if (this.refresh || isEmpty(this.fetchedData)) {\n this.fetchData()\n }\n },\n methods: {\n fetchData () {\n if (!this.loading) {\n this.loading = true\n this.error = false\n fetch(this.$props, this.$store)\n .then(() => {\n this.loading = false\n })\n .catch(() => {\n this.error = true\n this.loading = false\n })\n }\n }\n },\n render (h) {\n if (!this.error && !this.loading) {\n const props = {\n props: {\n ...this.$props,\n [childPropName]: this.fetchedData\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-subscription\">\n <WrappedComponent {...props}>\n {children}\n </WrappedComponent>\n </div>\n )\n } else {\n return (\n <div class=\"with-subscription-loading\">\n {this.error\n ? <a onClick={this.fetchData} class=\"alert error\">{this.$t('general.generic_error')}</a>\n : <i class=\"icon-spin3 animate-spin\"/>\n }\n </div>\n )\n }\n }\n })\n}\n\nexport default withSubscription\n","export default {\n props: {\n backupCodes: {\n type: Object,\n default: () => ({\n inProgress: false,\n codes: []\n })\n }\n },\n data: () => ({}),\n computed: {\n inProgress () { return this.backupCodes.inProgress },\n ready () { return this.backupCodes.codes.length > 0 },\n displayTitle () { return this.inProgress || this.ready }\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!./mfa_backup_codes.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mfa_backup_codes.js\"\nimport __vue_script__ from \"!!babel-loader!./mfa_backup_codes.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-613f1377\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mfa_backup_codes.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\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.displayTitle)?_c('h4',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.recovery_codes'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.inProgress)?_c('i',[_vm._v(_vm._s(_vm.$t('settings.mfa.waiting_a_recovery_codes')))]):_vm._e(),_vm._v(\" \"),(_vm.ready)?[_c('p',{staticClass:\"alert warning\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.recovery_codes_warning'))+\"\\n \")]),_vm._v(\" \"),_c('ul',{staticClass:\"backup-codes\"},_vm._l((_vm.backupCodes.codes),function(code){return _c('li',{key:code},[_vm._v(\"\\n \"+_vm._s(code)+\"\\n \")])}),0)]:_vm._e()],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","const Confirm = {\n props: ['disabled'],\n data: () => ({}),\n methods: {\n confirm () { this.$emit('confirm') },\n cancel () { this.$emit('cancel') }\n }\n}\nexport default Confirm\n","/* script */\nexport * from \"!!babel-loader!./confirm.js\"\nimport __vue_script__ from \"!!babel-loader!./confirm.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-20b6e7b3\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./confirm.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',[_vm._t(\"default\"),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":_vm.confirm}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.confirm'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":_vm.cancel}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])],2)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import Confirm from './confirm.vue'\nimport { mapState } from 'vuex'\n\nexport default {\n props: ['settings'],\n data: () => ({\n error: false,\n currentPassword: '',\n deactivate: false,\n inProgress: false // progress peform request to disable otp method\n }),\n components: {\n 'confirm': Confirm\n },\n computed: {\n isActivated () {\n return this.settings.totp\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n methods: {\n doActivate () {\n this.$emit('activate')\n },\n cancelDeactivate () { this.deactivate = false },\n doDeactivate () {\n this.error = null\n this.deactivate = true\n },\n confirmDeactivate () { // confirm deactivate TOTP method\n this.error = null\n this.inProgress = true\n this.backendInteractor.mfaDisableOTP({\n password: this.currentPassword\n })\n .then((res) => {\n this.inProgress = false\n if (res.error) {\n this.error = res.error\n return\n }\n this.deactivate = false\n this.$emit('deactivate')\n })\n }\n }\n}\n","/* script */\nexport * from \"!!babel-loader!./mfa_totp.js\"\nimport __vue_script__ from \"!!babel-loader!./mfa_totp.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-df66df96\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mfa_totp.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',[_c('div',{staticClass:\"method-item\"},[_c('strong',[_vm._v(_vm._s(_vm.$t('settings.mfa.otp')))]),_vm._v(\" \"),(!_vm.isActivated)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.doActivate}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.enable'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.isActivated)?_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.deactivate},on:{\"click\":_vm.doDeactivate}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.disable'))+\"\\n \")]):_vm._e()]),_vm._v(\" \"),(_vm.deactivate)?_c('confirm',{attrs:{\"disabled\":_vm.inProgress},on:{\"confirm\":_vm.confirmDeactivate,\"cancel\":_vm.cancelDeactivate}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.enter_current_password_to_confirm'))+\":\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentPassword),expression:\"currentPassword\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.currentPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.currentPassword=$event.target.value}}})]):_vm._e(),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")]):_vm._e()],1)}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import RecoveryCodes from './mfa_backup_codes.vue'\nimport TOTP from './mfa_totp.vue'\nimport Confirm from './confirm.vue'\nimport VueQrcode from '@chenfengyuan/vue-qrcode'\nimport { mapState } from 'vuex'\n\nconst Mfa = {\n data: () => ({\n settings: { // current settings of MFA\n available: false,\n enabled: false,\n totp: false\n },\n setupState: { // setup mfa\n state: '', // state of setup. '' -> 'getBackupCodes' -> 'setupOTP' -> 'complete'\n setupOTPState: '' // state of setup otp. '' -> 'prepare' -> 'confirm' -> 'complete'\n },\n backupCodes: {\n getNewCodes: false,\n inProgress: false, // progress of fetch codes\n codes: []\n },\n otpSettings: { // pre-setup setting of OTP. secret key, qrcode url.\n provisioning_uri: '',\n key: ''\n },\n currentPassword: null,\n otpConfirmToken: null,\n error: null,\n readyInit: false\n }),\n components: {\n 'recovery-codes': RecoveryCodes,\n 'totp-item': TOTP,\n 'qrcode': VueQrcode,\n 'confirm': Confirm\n },\n computed: {\n canSetupOTP () {\n return (\n (this.setupInProgress && this.backupCodesPrepared) ||\n this.settings.enabled\n ) && !this.settings.totp && !this.setupOTPInProgress\n },\n setupInProgress () {\n return this.setupState.state !== '' && this.setupState.state !== 'complete'\n },\n setupOTPInProgress () {\n return this.setupState.state === 'setupOTP' && !this.completedOTP\n },\n prepareOTP () {\n return this.setupState.setupOTPState === 'prepare'\n },\n confirmOTP () {\n return this.setupState.setupOTPState === 'confirm'\n },\n completedOTP () {\n return this.setupState.setupOTPState === 'completed'\n },\n backupCodesPrepared () {\n return !this.backupCodes.inProgress && this.backupCodes.codes.length > 0\n },\n confirmNewBackupCodes () {\n return this.backupCodes.getNewCodes\n },\n ...mapState({\n backendInteractor: (state) => state.api.backendInteractor\n })\n },\n\n methods: {\n activateOTP () {\n if (!this.settings.enabled) {\n this.setupState.state = 'getBackupcodes'\n this.fetchBackupCodes()\n }\n },\n fetchBackupCodes () {\n this.backupCodes.inProgress = true\n this.backupCodes.codes = []\n\n return this.backendInteractor.generateMfaBackupCodes()\n .then((res) => {\n this.backupCodes.codes = res.codes\n this.backupCodes.inProgress = false\n })\n },\n getBackupCodes () { // get a new backup codes\n this.backupCodes.getNewCodes = true\n },\n confirmBackupCodes () { // confirm getting new backup codes\n this.fetchBackupCodes().then((res) => {\n this.backupCodes.getNewCodes = false\n })\n },\n cancelBackupCodes () { // cancel confirm form of new backup codes\n this.backupCodes.getNewCodes = false\n },\n\n // Setup OTP\n setupOTP () { // prepare setup OTP\n this.setupState.state = 'setupOTP'\n this.setupState.setupOTPState = 'prepare'\n this.backendInteractor.mfaSetupOTP()\n .then((res) => {\n this.otpSettings = res\n this.setupState.setupOTPState = 'confirm'\n })\n },\n doConfirmOTP () { // handler confirm enable OTP\n this.error = null\n this.backendInteractor.mfaConfirmOTP({\n token: this.otpConfirmToken,\n password: this.currentPassword\n })\n .then((res) => {\n if (res.error) {\n this.error = res.error\n return\n }\n this.completeSetup()\n })\n },\n\n completeSetup () {\n this.setupState.setupOTPState = 'complete'\n this.setupState.state = 'complete'\n this.currentPassword = null\n this.error = null\n this.fetchSettings()\n },\n cancelSetup () { // cancel setup\n this.setupState.setupOTPState = ''\n this.setupState.state = ''\n this.currentPassword = null\n this.error = null\n },\n // end Setup OTP\n\n // fetch settings from server\n async fetchSettings () {\n let result = await this.backendInteractor.settingsMFA()\n if (result.error) return\n this.settings = result.settings\n this.settings.available = true\n return result\n }\n },\n mounted () {\n this.fetchSettings().then(() => {\n this.readyInit = true\n })\n }\n}\nexport default Mfa\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"optionsId\\\":\\\"0\\\",\\\"vue\\\":true,\\\"scoped\\\":false,\\\"sourceMap\\\":false}!sass-loader!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./mfa.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./mfa.js\"\nimport __vue_script__ from \"!!babel-loader!./mfa.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e9d3ba70\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./mfa.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\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.readyInit && _vm.settings.available)?_c('div',{staticClass:\"setting-item mfa-settings\"},[_c('div',{staticClass:\"mfa-heading\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.mfa.title')))])]),_vm._v(\" \"),_c('div',[(!_vm.setupInProgress)?_c('div',{staticClass:\"setting-item\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('settings.mfa.authentication_methods')))]),_vm._v(\" \"),_c('totp-item',{attrs:{\"settings\":_vm.settings},on:{\"deactivate\":_vm.fetchSettings,\"activate\":_vm.activateOTP}}),_vm._v(\" \"),_c('br'),_vm._v(\" \"),(_vm.settings.enabled)?_c('div',[(!_vm.confirmNewBackupCodes)?_c('recovery-codes',{attrs:{\"backup-codes\":_vm.backupCodes}}):_vm._e(),_vm._v(\" \"),(!_vm.confirmNewBackupCodes)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.getBackupCodes}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.generate_new_recovery_codes'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.confirmNewBackupCodes)?_c('div',[_c('confirm',{attrs:{\"disabled\":_vm.backupCodes.inProgress},on:{\"confirm\":_vm.confirmBackupCodes,\"cancel\":_vm.cancelBackupCodes}},[_c('p',{staticClass:\"warning\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.warning_of_generate_new_codes'))+\"\\n \")])])],1):_vm._e()],1):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.setupInProgress)?_c('div',[_c('h3',[_vm._v(_vm._s(_vm.$t('settings.mfa.setup_otp')))]),_vm._v(\" \"),(!_vm.setupOTPInProgress)?_c('recovery-codes',{attrs:{\"backup-codes\":_vm.backupCodes}}):_vm._e(),_vm._v(\" \"),(_vm.canSetupOTP)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.cancelSetup}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.canSetupOTP)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.setupOTP}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.setup_otp'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.setupOTPInProgress)?[(_vm.prepareOTP)?_c('i',[_vm._v(_vm._s(_vm.$t('settings.mfa.wait_pre_setup_otp')))]):_vm._e(),_vm._v(\" \"),(_vm.confirmOTP)?_c('div',[_c('div',{staticClass:\"setup-otp\"},[_c('div',{staticClass:\"qr-code\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('settings.mfa.scan.title')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.mfa.scan.desc')))]),_vm._v(\" \"),_c('qrcode',{attrs:{\"value\":_vm.otpSettings.provisioning_uri,\"options\":{ width: 200 }}}),_vm._v(\" \"),_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.scan.secret_code'))+\":\\n \"+_vm._s(_vm.otpSettings.key)+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"verify\"},[_c('h4',[_vm._v(_vm._s(_vm.$t('general.verify')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.mfa.verify.desc')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.otpConfirmToken),expression:\"otpConfirmToken\"}],attrs:{\"type\":\"text\"},domProps:{\"value\":(_vm.otpConfirmToken)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.otpConfirmToken=$event.target.value}}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.enter_current_password_to_confirm'))+\":\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentPassword),expression:\"currentPassword\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.currentPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.currentPassword=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"confirm-otp-actions\"},[_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.doConfirmOTP}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.mfa.confirm_and_enable'))+\"\\n \")]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.cancelSetup}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.cancel'))+\"\\n \")])]),_vm._v(\" \"),(_vm.error)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")]):_vm._e()])])]):_vm._e()]:_vm._e()],2):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\nexport { render, staticRenderFns }","import unescape from 'lodash/unescape'\nimport get from 'lodash/get'\nimport map from 'lodash/map'\nimport reject from 'lodash/reject'\nimport TabSwitcher from '../tab_switcher/tab_switcher.js'\nimport ImageCropper from '../image_cropper/image_cropper.vue'\nimport StyleSwitcher from '../style_switcher/style_switcher.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\nimport BlockCard from '../block_card/block_card.vue'\nimport MuteCard from '../mute_card/mute_card.vue'\nimport DomainMuteCard from '../domain_mute_card/domain_mute_card.vue'\nimport SelectableList from '../selectable_list/selectable_list.vue'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport suggestor from '../emoji_input/suggestor.js'\nimport Autosuggest from '../autosuggest/autosuggest.vue'\nimport Importer from '../importer/importer.vue'\nimport Exporter from '../exporter/exporter.vue'\nimport withSubscription from '../../hocs/with_subscription/with_subscription'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Mfa from './mfa.vue'\n\nconst BlockList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchBlocks'),\n select: (props, $store) => get($store.state.users.currentUser, 'blockIds', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst MuteList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'muteIds', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst DomainMuteList = withSubscription({\n fetch: (props, $store) => $store.dispatch('fetchDomainMutes'),\n select: (props, $store) => get($store.state.users.currentUser, 'domainMutes', []),\n childPropName: 'items'\n})(SelectableList)\n\nconst UserSettings = {\n data () {\n return {\n newEmail: '',\n newName: this.$store.state.users.currentUser.name,\n newBio: unescape(this.$store.state.users.currentUser.description),\n newLocked: this.$store.state.users.currentUser.locked,\n newNoRichText: this.$store.state.users.currentUser.no_rich_text,\n newDefaultScope: this.$store.state.users.currentUser.default_scope,\n hideFollows: this.$store.state.users.currentUser.hide_follows,\n hideFollowers: this.$store.state.users.currentUser.hide_followers,\n hideFollowsCount: this.$store.state.users.currentUser.hide_follows_count,\n hideFollowersCount: this.$store.state.users.currentUser.hide_followers_count,\n showRole: this.$store.state.users.currentUser.show_role,\n role: this.$store.state.users.currentUser.role,\n discoverable: this.$store.state.users.currentUser.discoverable,\n allowFollowingMove: this.$store.state.users.currentUser.allow_following_move,\n pickAvatarBtnVisible: true,\n bannerUploading: false,\n backgroundUploading: false,\n banner: null,\n bannerPreview: null,\n background: null,\n backgroundPreview: null,\n bannerUploadError: null,\n backgroundUploadError: null,\n changeEmailError: false,\n changeEmailPassword: '',\n changedEmail: false,\n deletingAccount: false,\n deleteAccountConfirmPasswordInput: '',\n deleteAccountError: false,\n changePasswordInputs: [ '', '', '' ],\n changedPassword: false,\n changePasswordError: false,\n activeTab: 'profile',\n notificationSettings: this.$store.state.users.currentUser.notification_settings,\n newDomainToMute: ''\n }\n },\n created () {\n this.$store.dispatch('fetchTokens')\n },\n components: {\n StyleSwitcher,\n ScopeSelector,\n TabSwitcher,\n ImageCropper,\n BlockList,\n MuteList,\n DomainMuteList,\n EmojiInput,\n Autosuggest,\n BlockCard,\n MuteCard,\n DomainMuteCard,\n ProgressButton,\n Importer,\n Exporter,\n Mfa,\n Checkbox\n },\n computed: {\n user () {\n return this.$store.state.users.currentUser\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: (input) => this.$store.dispatch('searchUsers', input)\n })\n },\n emojiSuggestor () {\n return suggestor({ emoji: [\n ...this.$store.state.instance.emoji,\n ...this.$store.state.instance.customEmoji\n ] })\n },\n pleromaBackend () {\n return this.$store.state.instance.pleromaBackend\n },\n minimalScopesMode () {\n return this.$store.state.instance.minimalScopesMode\n },\n vis () {\n return {\n public: { selected: this.newDefaultScope === 'public' },\n unlisted: { selected: this.newDefaultScope === 'unlisted' },\n private: { selected: this.newDefaultScope === 'private' },\n direct: { selected: this.newDefaultScope === 'direct' }\n }\n },\n currentSaveStateNotice () {\n return this.$store.state.interface.settings.currentSaveStateNotice\n },\n oauthTokens () {\n return this.$store.state.oauthTokens.tokens.map(oauthToken => {\n return {\n id: oauthToken.id,\n appName: oauthToken.app_name,\n validUntil: new Date(oauthToken.valid_until).toLocaleDateString()\n }\n })\n }\n },\n methods: {\n updateProfile () {\n this.$store.state.api.backendInteractor\n .updateProfile({\n params: {\n note: this.newBio,\n locked: this.newLocked,\n // Backend notation.\n /* eslint-disable camelcase */\n display_name: this.newName,\n default_scope: this.newDefaultScope,\n no_rich_text: this.newNoRichText,\n hide_follows: this.hideFollows,\n hide_followers: this.hideFollowers,\n discoverable: this.discoverable,\n allow_following_move: this.allowFollowingMove,\n hide_follows_count: this.hideFollowsCount,\n hide_followers_count: this.hideFollowersCount,\n show_role: this.showRole\n /* eslint-enable camelcase */\n } }).then((user) => {\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n })\n },\n updateNotificationSettings () {\n this.$store.state.api.backendInteractor\n .updateNotificationSettings({ settings: this.notificationSettings })\n },\n changeVis (visibility) {\n this.newDefaultScope = visibility\n },\n uploadFile (slot, e) {\n const file = e.target.files[0]\n if (!file) { return }\n if (file.size > this.$store.state.instance[slot + 'limit']) {\n const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n const allowedsize = fileSizeFormatService.fileSizeFormat(this.$store.state.instance[slot + 'limit'])\n this[slot + 'UploadError'] = this.$t('upload.error.base') + ' ' + this.$t('upload.error.file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n return\n }\n // eslint-disable-next-line no-undef\n const reader = new FileReader()\n reader.onload = ({ target }) => {\n const img = target.result\n this[slot + 'Preview'] = img\n this[slot] = file\n }\n reader.readAsDataURL(file)\n },\n submitAvatar (cropper, file) {\n const that = this\n return new Promise((resolve, reject) => {\n function updateAvatar (avatar) {\n that.$store.state.api.backendInteractor.updateAvatar({ avatar })\n .then((user) => {\n that.$store.commit('addNewUsers', [user])\n that.$store.commit('setCurrentUser', user)\n resolve()\n })\n .catch((err) => {\n reject(new Error(that.$t('upload.error.base') + ' ' + err.message))\n })\n }\n\n if (cropper) {\n cropper.getCroppedCanvas().toBlob(updateAvatar, file.type)\n } else {\n updateAvatar(file)\n }\n })\n },\n clearUploadError (slot) {\n this[slot + 'UploadError'] = null\n },\n submitBanner () {\n if (!this.bannerPreview) { return }\n\n this.bannerUploading = true\n this.$store.state.api.backendInteractor.updateBanner({ banner: this.banner })\n .then((user) => {\n this.$store.commit('addNewUsers', [user])\n this.$store.commit('setCurrentUser', user)\n this.bannerPreview = null\n })\n .catch((err) => {\n this.bannerUploadError = this.$t('upload.error.base') + ' ' + err.message\n })\n .then(() => { this.bannerUploading = false })\n },\n submitBg () {\n if (!this.backgroundPreview) { return }\n let background = this.background\n this.backgroundUploading = true\n this.$store.state.api.backendInteractor.updateBg({ background }).then((data) => {\n if (!data.error) {\n this.$store.commit('addNewUsers', [data])\n this.$store.commit('setCurrentUser', data)\n this.backgroundPreview = null\n } else {\n this.backgroundUploadError = this.$t('upload.error.base') + data.error\n }\n this.backgroundUploading = false\n })\n },\n importFollows (file) {\n return this.$store.state.api.backendInteractor.importFollows({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n importBlocks (file) {\n return this.$store.state.api.backendInteractor.importBlocks({ file })\n .then((status) => {\n if (!status) {\n throw new Error('failed')\n }\n })\n },\n generateExportableUsersContent (users) {\n // Get addresses\n return users.map((user) => {\n // check is it's a local user\n if (user && user.is_local) {\n // append the instance address\n // eslint-disable-next-line no-undef\n return user.screen_name + '@' + location.hostname\n }\n return user.screen_name\n }).join('\\n')\n },\n getFollowsContent () {\n return this.$store.state.api.backendInteractor.exportFriends({ id: this.$store.state.users.currentUser.id })\n .then(this.generateExportableUsersContent)\n },\n getBlocksContent () {\n return this.$store.state.api.backendInteractor.fetchBlocks()\n .then(this.generateExportableUsersContent)\n },\n confirmDelete () {\n this.deletingAccount = true\n },\n deleteAccount () {\n this.$store.state.api.backendInteractor.deleteAccount({ password: this.deleteAccountConfirmPasswordInput })\n .then((res) => {\n if (res.status === 'success') {\n this.$store.dispatch('logout')\n this.$router.push({ name: 'root' })\n } else {\n this.deleteAccountError = res.error\n }\n })\n },\n changePassword () {\n const params = {\n password: this.changePasswordInputs[0],\n newPassword: this.changePasswordInputs[1],\n newPasswordConfirmation: this.changePasswordInputs[2]\n }\n this.$store.state.api.backendInteractor.changePassword(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedPassword = true\n this.changePasswordError = false\n this.logout()\n } else {\n this.changedPassword = false\n this.changePasswordError = res.error\n }\n })\n },\n changeEmail () {\n const params = {\n email: this.newEmail,\n password: this.changeEmailPassword\n }\n this.$store.state.api.backendInteractor.changeEmail(params)\n .then((res) => {\n if (res.status === 'success') {\n this.changedEmail = true\n this.changeEmailError = false\n } else {\n this.changedEmail = false\n this.changeEmailError = res.error\n }\n })\n },\n activateTab (tabName) {\n this.activeTab = tabName\n },\n logout () {\n this.$store.dispatch('logout')\n this.$router.replace('/')\n },\n revokeToken (id) {\n if (window.confirm(`${this.$i18n.t('settings.revoke_token')}?`)) {\n this.$store.dispatch('revokeToken', id)\n }\n },\n filterUnblockedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.blocking || userId === this.$store.state.users.currentUser.id\n })\n },\n filterUnMutedUsers (userIds) {\n return reject(userIds, (userId) => {\n const relationship = this.$store.getters.relationship(this.userId)\n return relationship.muting || userId === this.$store.state.users.currentUser.id\n })\n },\n queryUserIds (query) {\n return this.$store.dispatch('searchUsers', query)\n .then((users) => map(users, 'id'))\n },\n blockUsers (ids) {\n return this.$store.dispatch('blockUsers', ids)\n },\n unblockUsers (ids) {\n return this.$store.dispatch('unblockUsers', ids)\n },\n muteUsers (ids) {\n return this.$store.dispatch('muteUsers', ids)\n },\n unmuteUsers (ids) {\n return this.$store.dispatch('unmuteUsers', ids)\n },\n unmuteDomains (domains) {\n return this.$store.dispatch('unmuteDomains', domains)\n },\n muteDomain () {\n return this.$store.dispatch('muteDomain', this.newDomainToMute)\n .then(() => { this.newDomainToMute = '' })\n },\n identity (value) {\n return value\n }\n }\n}\n\nexport default UserSettings\n","function injectStyle (context) {\n require(\"!!vue-style-loader!css-loader?minimize!../../../node_modules/vue-loader/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_settings.vue\")\n}\n/* script */\nexport * from \"!!babel-loader!./user_settings.js\"\nimport __vue_script__ from \"!!babel-loader!./user_settings.js\"/* template */\nimport {render as __vue_render__, staticRenderFns as __vue_static_render_fns__} from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7d87c530\\\",\\\"hasScoped\\\":false,\\\"optionsId\\\":\\\"0\\\",\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./user_settings.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nimport normalizeComponent from \"!../../../node_modules/vue-loader/lib/runtime/component-normalizer\"\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_render__,\n __vue_static_render_fns__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"settings panel panel-default\"},[_c('div',{staticClass:\"panel-heading\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.user_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)],1),_vm._v(\" \"),_c('div',{staticClass:\"panel-body profile-edit\"},[_c('tab-switcher',[_c('div',{attrs:{\"label\":_vm.$t('settings.profile_tab')}},[_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.name_bio')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.name')))]),_vm._v(\" \"),_c('EmojiInput',{attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiSuggestor},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newName),expression:\"newName\"}],attrs:{\"id\":\"username\",\"classname\":\"name-changer\"},domProps:{\"value\":(_vm.newName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newName=$event.target.value}}})]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.bio')))]),_vm._v(\" \"),_c('EmojiInput',{attrs:{\"enable-emoji-picker\":\"\",\"suggest\":_vm.emojiUserSuggestor},model:{value:(_vm.newBio),callback:function ($$v) {_vm.newBio=$$v},expression:\"newBio\"}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newBio),expression:\"newBio\"}],attrs:{\"classname\":\"bio\"},domProps:{\"value\":(_vm.newBio)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newBio=$event.target.value}}})]),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.newLocked),callback:function ($$v) {_vm.newLocked=$$v},expression:\"newLocked\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.lock_account_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',[_c('label',{attrs:{\"for\":\"default-vis\"}},[_vm._v(_vm._s(_vm.$t('settings.default_vis')))]),_vm._v(\" \"),_c('div',{staticClass:\"visibility-tray\",attrs:{\"id\":\"default-vis\"}},[_c('scope-selector',{attrs:{\"show-all\":true,\"user-default\":_vm.newDefaultScope,\"initial-scope\":_vm.newDefaultScope,\"on-scope-change\":_vm.changeVis}})],1)]),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.newNoRichText),callback:function ($$v) {_vm.newNoRichText=$$v},expression:\"newNoRichText\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.no_rich_text_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.hideFollows),callback:function ($$v) {_vm.hideFollows=$$v},expression:\"hideFollows\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_follows_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',{staticClass:\"setting-subitem\"},[_c('Checkbox',{attrs:{\"disabled\":!_vm.hideFollows},model:{value:(_vm.hideFollowsCount),callback:function ($$v) {_vm.hideFollowsCount=$$v},expression:\"hideFollowsCount\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_follows_count_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.hideFollowers),callback:function ($$v) {_vm.hideFollowers=$$v},expression:\"hideFollowers\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_followers_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',{staticClass:\"setting-subitem\"},[_c('Checkbox',{attrs:{\"disabled\":!_vm.hideFollowers},model:{value:(_vm.hideFollowersCount),callback:function ($$v) {_vm.hideFollowersCount=$$v},expression:\"hideFollowersCount\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.hide_followers_count_description'))+\"\\n \")])],1),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.allowFollowingMove),callback:function ($$v) {_vm.allowFollowingMove=$$v},expression:\"allowFollowingMove\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.allow_following_move'))+\"\\n \")])],1),_vm._v(\" \"),(_vm.role === 'admin' || _vm.role === 'moderator')?_c('p',[_c('Checkbox',{model:{value:(_vm.showRole),callback:function ($$v) {_vm.showRole=$$v},expression:\"showRole\"}},[(_vm.role === 'admin')?[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.show_admin_badge'))+\"\\n \")]:_vm._e(),_vm._v(\" \"),(_vm.role === 'moderator')?[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.show_moderator_badge'))+\"\\n \")]:_vm._e()],2)],1):_vm._e(),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.discoverable),callback:function ($$v) {_vm.discoverable=$$v},expression:\"discoverable\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.discoverable'))+\"\\n \")])],1),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",attrs:{\"disabled\":_vm.newName && _vm.newName.length === 0},on:{\"click\":_vm.updateProfile}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.avatar')))]),_vm._v(\" \"),_c('p',{staticClass:\"visibility-notice\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.avatar_size_instruction'))+\"\\n \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.current_avatar')))]),_vm._v(\" \"),_c('img',{staticClass:\"current-avatar\",attrs:{\"src\":_vm.user.profile_image_url_original}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.set_new_avatar')))]),_vm._v(\" \"),_c('button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.pickAvatarBtnVisible),expression:\"pickAvatarBtnVisible\"}],staticClass:\"btn\",attrs:{\"id\":\"pick-avatar\",\"type\":\"button\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.upload_a_photo'))+\"\\n \")]),_vm._v(\" \"),_c('image-cropper',{attrs:{\"trigger\":\"#pick-avatar\",\"submit-handler\":_vm.submitAvatar},on:{\"open\":function($event){_vm.pickAvatarBtnVisible=false},\"close\":function($event){_vm.pickAvatarBtnVisible=true}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.profile_banner')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.current_profile_banner')))]),_vm._v(\" \"),_c('img',{staticClass:\"banner\",attrs:{\"src\":_vm.user.cover_photo}}),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.set_new_profile_banner')))]),_vm._v(\" \"),(_vm.bannerPreview)?_c('img',{staticClass:\"banner\",attrs:{\"src\":_vm.bannerPreview}}):_vm._e(),_vm._v(\" \"),_c('div',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.uploadFile('banner', $event)}}})]),_vm._v(\" \"),(_vm.bannerUploading)?_c('i',{staticClass:\" icon-spin4 animate-spin uploading\"}):(_vm.bannerPreview)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.submitBanner}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.bannerUploadError)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.bannerUploadError)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){return _vm.clearUploadError('banner')}}})]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.profile_background')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.set_new_profile_background')))]),_vm._v(\" \"),(_vm.backgroundPreview)?_c('img',{staticClass:\"bg\",attrs:{\"src\":_vm.backgroundPreview}}):_vm._e(),_vm._v(\" \"),_c('div',[_c('input',{attrs:{\"type\":\"file\"},on:{\"change\":function($event){return _vm.uploadFile('background', $event)}}})]),_vm._v(\" \"),(_vm.backgroundUploading)?_c('i',{staticClass:\" icon-spin4 animate-spin uploading\"}):(_vm.backgroundPreview)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.submitBg}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.backgroundUploadError)?_c('div',{staticClass:\"alert error\"},[_vm._v(\"\\n Error: \"+_vm._s(_vm.backgroundUploadError)+\"\\n \"),_c('i',{staticClass:\"button-icon icon-cancel\",on:{\"click\":function($event){return _vm.clearUploadError('background')}}})]):_vm._e()])]),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.security_tab')}},[_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.change_email')))]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.new_email')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newEmail),expression:\"newEmail\"}],attrs:{\"type\":\"email\",\"autocomplete\":\"email\"},domProps:{\"value\":(_vm.newEmail)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newEmail=$event.target.value}}})]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.current_password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.changeEmailPassword),expression:\"changeEmailPassword\"}],attrs:{\"type\":\"password\",\"autocomplete\":\"current-password\"},domProps:{\"value\":(_vm.changeEmailPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.changeEmailPassword=$event.target.value}}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.changeEmail}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.changedEmail)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.changed_email'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.changeEmailError !== false)?[_c('p',[_vm._v(_vm._s(_vm.$t('settings.change_email_error')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.changeEmailError))])]:_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.change_password')))]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.current_password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.changePasswordInputs[0]),expression:\"changePasswordInputs[0]\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.changePasswordInputs[0])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.changePasswordInputs, 0, $event.target.value)}}})]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.new_password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.changePasswordInputs[1]),expression:\"changePasswordInputs[1]\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.changePasswordInputs[1])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.changePasswordInputs, 1, $event.target.value)}}})]),_vm._v(\" \"),_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.confirm_new_password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.changePasswordInputs[2]),expression:\"changePasswordInputs[2]\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.changePasswordInputs[2])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.changePasswordInputs, 2, $event.target.value)}}})]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.changePassword}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]),_vm._v(\" \"),(_vm.changedPassword)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.changed_password'))+\"\\n \")]):(_vm.changePasswordError !== false)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.change_password_error'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.changePasswordError)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.changePasswordError)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.oauth_tokens')))]),_vm._v(\" \"),_c('table',{staticClass:\"oauth-tokens\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(_vm._s(_vm.$t('settings.app_name')))]),_vm._v(\" \"),_c('th',[_vm._v(_vm._s(_vm.$t('settings.valid_until')))]),_vm._v(\" \"),_c('th')])]),_vm._v(\" \"),_c('tbody',_vm._l((_vm.oauthTokens),function(oauthToken){return _c('tr',{key:oauthToken.id},[_c('td',[_vm._v(_vm._s(oauthToken.appName))]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(oauthToken.validUntil))]),_vm._v(\" \"),_c('td',{staticClass:\"actions\"},[_c('button',{staticClass:\"btn btn-default\",on:{\"click\":function($event){return _vm.revokeToken(oauthToken.id)}}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.revoke_token'))+\"\\n \")])])])}),0)])]),_vm._v(\" \"),_c('mfa'),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.delete_account')))]),_vm._v(\" \"),(!_vm.deletingAccount)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.delete_account_description'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.deletingAccount)?_c('div',[_c('p',[_vm._v(_vm._s(_vm.$t('settings.delete_account_instructions')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('login.password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.deleteAccountConfirmPasswordInput),expression:\"deleteAccountConfirmPasswordInput\"}],attrs:{\"type\":\"password\"},domProps:{\"value\":(_vm.deleteAccountConfirmPasswordInput)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.deleteAccountConfirmPasswordInput=$event.target.value}}}),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.deleteAccount}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.delete_account'))+\"\\n \")])]):_vm._e(),_vm._v(\" \"),(_vm.deleteAccountError !== false)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.delete_account_error'))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.deleteAccountError)?_c('p',[_vm._v(\"\\n \"+_vm._s(_vm.deleteAccountError)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(!_vm.deletingAccount)?_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.confirmDelete}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")]):_vm._e()])],1),_vm._v(\" \"),(_vm.pleromaBackend)?_c('div',{attrs:{\"label\":_vm.$t('settings.notifications')}},[_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.notification_setting_filters')))]),_vm._v(\" \"),_c('div',{staticClass:\"select-multiple\"},[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm.$t('settings.notification_setting')))]),_vm._v(\" \"),_c('ul',{staticClass:\"option-list\"},[_c('li',[_c('Checkbox',{model:{value:(_vm.notificationSettings.follows),callback:function ($$v) {_vm.$set(_vm.notificationSettings, \"follows\", $$v)},expression:\"notificationSettings.follows\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_setting_follows'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationSettings.followers),callback:function ($$v) {_vm.$set(_vm.notificationSettings, \"followers\", $$v)},expression:\"notificationSettings.followers\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_setting_followers'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationSettings.non_follows),callback:function ($$v) {_vm.$set(_vm.notificationSettings, \"non_follows\", $$v)},expression:\"notificationSettings.non_follows\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_setting_non_follows'))+\"\\n \")])],1),_vm._v(\" \"),_c('li',[_c('Checkbox',{model:{value:(_vm.notificationSettings.non_followers),callback:function ($$v) {_vm.$set(_vm.notificationSettings, \"non_followers\", $$v)},expression:\"notificationSettings.non_followers\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_setting_non_followers'))+\"\\n \")])],1)])])]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.notification_setting_privacy')))]),_vm._v(\" \"),_c('p',[_c('Checkbox',{model:{value:(_vm.notificationSettings.privacy_option),callback:function ($$v) {_vm.$set(_vm.notificationSettings, \"privacy_option\", $$v)},expression:\"notificationSettings.privacy_option\"}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.notification_setting_privacy_option'))+\"\\n \")])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('p',[_vm._v(_vm._s(_vm.$t('settings.notification_mutes')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.notification_blocks')))]),_vm._v(\" \"),_c('button',{staticClass:\"btn btn-default\",on:{\"click\":_vm.updateNotificationSettings}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('general.submit'))+\"\\n \")])])]):_vm._e(),_vm._v(\" \"),(_vm.pleromaBackend)?_c('div',{attrs:{\"label\":_vm.$t('settings.data_import_export_tab')}},[_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.follow_import')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.import_followers_from_a_csv_file')))]),_vm._v(\" \"),_c('Importer',{attrs:{\"submit-handler\":_vm.importFollows,\"success-message\":_vm.$t('settings.follows_imported'),\"error-message\":_vm.$t('settings.follow_import_error')}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.follow_export')))]),_vm._v(\" \"),_c('Exporter',{attrs:{\"get-content\":_vm.getFollowsContent,\"filename\":\"friends.csv\",\"export-button-label\":_vm.$t('settings.follow_export_button')}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.block_import')))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.$t('settings.import_blocks_from_a_csv_file')))]),_vm._v(\" \"),_c('Importer',{attrs:{\"submit-handler\":_vm.importBlocks,\"success-message\":_vm.$t('settings.blocks_imported'),\"error-message\":_vm.$t('settings.block_import_error')}})],1),_vm._v(\" \"),_c('div',{staticClass:\"setting-item\"},[_c('h2',[_vm._v(_vm._s(_vm.$t('settings.block_export')))]),_vm._v(\" \"),_c('Exporter',{attrs:{\"get-content\":_vm.getBlocksContent,\"filename\":\"blocks.csv\",\"export-button-label\":_vm.$t('settings.block_export_button')}})],1)]):_vm._e(),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.blocks_tab')}},[_c('div',{staticClass:\"profile-edit-usersearch-wrapper\"},[_c('Autosuggest',{attrs:{\"filter\":_vm.filterUnblockedUsers,\"query\":_vm.queryUserIds,\"placeholder\":_vm.$t('settings.search_user_to_block')},scopedSlots:_vm._u([{key:\"default\",fn:function(row){return _c('BlockCard',{attrs:{\"user-id\":row.item}})}}])})],1),_vm._v(\" \"),_c('BlockList',{attrs:{\"refresh\":true,\"get-key\":_vm.identity},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar selected = ref.selected;\nreturn [_c('div',{staticClass:\"profile-edit-bulk-actions\"},[(selected.length > 0)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":function () { return _vm.blockUsers(selected); }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.block_progress'))+\"\\n \")])],2):_vm._e(),_vm._v(\" \"),(selected.length > 0)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":function () { return _vm.unblockUsers(selected); }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unblock_progress'))+\"\\n \")])],2):_vm._e()],1)]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('BlockCard',{attrs:{\"user-id\":item}})]}}])},[_vm._v(\" \"),_vm._v(\" \"),_c('template',{slot:\"empty\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.no_blocks'))+\"\\n \")])],2)],1),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.mutes_tab')}},[_c('tab-switcher',[_c('div',{attrs:{\"label\":\"Users\"}},[_c('div',{staticClass:\"profile-edit-usersearch-wrapper\"},[_c('Autosuggest',{attrs:{\"filter\":_vm.filterUnMutedUsers,\"query\":_vm.queryUserIds,\"placeholder\":_vm.$t('settings.search_user_to_mute')},scopedSlots:_vm._u([{key:\"default\",fn:function(row){return _c('MuteCard',{attrs:{\"user-id\":row.item}})}}])})],1),_vm._v(\" \"),_c('MuteList',{attrs:{\"refresh\":true,\"get-key\":_vm.identity},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar selected = ref.selected;\nreturn [_c('div',{staticClass:\"profile-edit-bulk-actions\"},[(selected.length > 0)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":function () { return _vm.muteUsers(selected); }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.mute_progress'))+\"\\n \")])],2):_vm._e(),_vm._v(\" \"),(selected.length > 0)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":function () { return _vm.unmuteUsers(selected); }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unmute'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('user_card.unmute_progress'))+\"\\n \")])],2):_vm._e()],1)]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('MuteCard',{attrs:{\"user-id\":item}})]}}])},[_vm._v(\" \"),_vm._v(\" \"),_c('template',{slot:\"empty\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.no_mutes'))+\"\\n \")])],2)],1),_vm._v(\" \"),_c('div',{attrs:{\"label\":_vm.$t('settings.domain_mutes')}},[_c('div',{staticClass:\"profile-edit-domain-mute-form\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newDomainToMute),expression:\"newDomainToMute\"}],attrs:{\"placeholder\":_vm.$t('settings.type_domains_to_mute'),\"type\":\"text\"},domProps:{\"value\":(_vm.newDomainToMute)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.muteDomain($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.newDomainToMute=$event.target.value}}}),_vm._v(\" \"),_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":_vm.muteDomain}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.mute'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.mute_progress'))+\"\\n \")])],2)],1),_vm._v(\" \"),_c('DomainMuteList',{attrs:{\"refresh\":true,\"get-key\":_vm.identity},scopedSlots:_vm._u([{key:\"header\",fn:function(ref){\nvar selected = ref.selected;\nreturn [_c('div',{staticClass:\"profile-edit-bulk-actions\"},[(selected.length > 0)?_c('ProgressButton',{staticClass:\"btn btn-default\",attrs:{\"click\":function () { return _vm.unmuteDomains(selected); }}},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.unmute'))+\"\\n \"),_c('template',{slot:\"progress\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('domain_mute_card.unmute_progress'))+\"\\n \")])],2):_vm._e()],1)]}},{key:\"item\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('DomainMuteCard',{attrs:{\"domain\":item}})]}}])},[_vm._v(\" \"),_vm._v(\" \"),_c('template',{slot:\"empty\"},[_vm._v(\"\\n \"+_vm._s(_vm.$t('settings.no_mutes'))+\"\\n \")])],2)],1)])],1)])],1)])}\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 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 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 Settings from 'components/settings/settings.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport UserSettings from 'components/user_settings/user_settings.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: '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: 'settings', path: '/settings', component: Settings },\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: 'user-settings', path: '/user-settings', component: UserSettings, 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-51c2d26e\\\",\\\"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('div',{staticClass:\"panel-footer\"},[_c('PostStatusForm')],1)],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-dcb46fd0\\\",\\\"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 && _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\"\n class=\"modal-view\"\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 }\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 animation-duration: 0.2s;\n background-color: rgba(0, 0, 0, 0.5);\n animation-name: modal-background-fadein;\n\n body:not(.scroll-locked) & {\n opacity: 0;\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-068d175e\\\",\\\"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),expression:\"isOpen\"}],staticClass:\"modal-view\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.$emit('backdropClicked')}}},[_vm._t(\"default\")],2)}\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 document.addEventListener('keyup', this.handleKeyupEvent)\n document.addEventListener('keydown', this.handleKeydownEvent)\n },\n destroyed () {\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-c0e28422\\\",\\\"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},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.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 }\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-f3e56db6\\\",\\\"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 && _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('router-link',{attrs:{\"to\":{ name: 'settings' }}},[_c('i',{staticClass:\"button-icon icon-cog\"}),_vm._v(\" \"+_vm._s(_vm.$t(\"settings.settings\"))+\"\\n \")])],1),_vm._v(\" \"),_c('li',{on:{\"click\":_vm.toggleDrawer}},[_c('router-link',{attrs:{\"to\":{ name: 'about'}}},[_c('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 }","\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 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 { 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 UserReportingModal,\n PostStatusModal\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 this.$i18n.locale = this.$store.getters.mergedConfig.interfaceLanguage\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 },\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 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-e59c2fa4\\\",\\\"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('router-link',{staticClass:\"mobile-hidden\",attrs:{\"to\":{ name: 'settings'}}},[_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\"},[_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('portal-target',{attrs:{\"name\":\"modal\"}})],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\nconst getStatusnetConfig = async ({ store }) => {\n try {\n const res = await window.fetch('/api/statusnet/config.json')\n if (res.ok) {\n const data = await res.json()\n const { name, closed: registrationClosed, textlimit, uploadlimit, server, vapidPublicKey, safeDMMentionsEnabled } = data.site\n\n store.dispatch('setInstanceOption', { name: 'name', value: name })\n store.dispatch('setInstanceOption', { name: 'registrationOpen', value: (registrationClosed === '0') })\n store.dispatch('setInstanceOption', { name: 'textlimit', value: parseInt(textlimit) })\n store.dispatch('setInstanceOption', { name: 'server', value: server })\n store.dispatch('setInstanceOption', { name: 'safeDM', value: safeDMMentionsEnabled !== '0' })\n\n // TODO: default values for this stuff, added if to not make it break on\n // my dev config out of the box.\n if (uploadlimit) {\n store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadlimit.uploadlimit) })\n store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadlimit.avatarlimit) })\n store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadlimit.backgroundlimit) })\n store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadlimit.bannerlimit) })\n }\n\n if (vapidPublicKey) {\n store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n }\n\n return data.site.pleromafe\n } else {\n throw (res)\n }\n } catch (error) {\n console.error('Could not load statusnet 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('noAttachmentLinks')\n copyInstanceOption('showFeaturesPanel')\n copyInstanceOption('hideSitename')\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 window.fetch('/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 nicknames.map(nickname => store.dispatch('fetchUser', nickname))\n store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n try {\n const res = await window.fetch('/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: 'mediaProxyAvailable', value: features.includes('media_proxy') })\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 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([getStatusnetConfig({ 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 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 await Promise.all([\n checkOAuthToken({ store }),\n getTOS({ store }),\n getInstancePanel({ store }),\n getStickers({ store }),\n getNodeInfo({ store })\n ])\n\n // Start fetching things that don't need to block the UI\n store.dispatch('fetchMutes')\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: currentLocale,\n fallbackLocale: 'en',\n messages\n})\n\nconst persistedStateOptions = {\n paths: [\n 'config',\n 'users.lastLoginName',\n 'oauth'\n ]\n};\n\n(async () => {\n const persistedState = await createPersistedState(persistedStateOptions)\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: [persistedState, pushNotifications],\n strict: false // Socket modifies itself, let's ignore this for now.\n // strict: process.env.NODE_ENV !== 'production'\n })\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":""}