summaryrefslogtreecommitdiff
path: root/priv/static/static/js/app.4c23e08cf351a54f4177.js.map
blob: fd6d4c66f9c5bd4e8f9770b968f0051526baee61 (plain)
1
{"version":3,"file":"static/js/app.4c23e08cf351a54f4177.js","mappings":"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AC1B,QAAYN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8CAA6C,G,iBC9jC/H,IAAIS,EAAM,CACT,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,KAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,KACA,MAED,eAAgB,CACf,MACA,IAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,gBAAiB,CAChB,MACA,MAED,eAAgB,CACf,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,iBAAkB,CACjB,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,eAAgB,CACf,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,MAED,YAAa,CACZ,MACA,KAED,YAAa,CACZ,KACA,MAED,YAAa,CACZ,MACA,MAED,oBAAqB,C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,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO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","sources":["webpack://pleroma_fe/webpack/runtime/chunk loaded","webpack://pleroma_fe/webpack/runtime/create fake namespace object","webpack://pleroma_fe/webpack/runtime/load script","webpack://pleroma_fe/webpack/runtime/css loading","webpack://pleroma_fe/./src/i18n/en.json","webpack://pleroma_fe/./node_modules/@kazvmoe-infra/unicode-emoji-json/annotations/ lazy ^\\.\\/.*\\.json$ chunkName: emoji-annotations/[request] namespace object","webpack://pleroma_fe/./src/components/emoji_input/suggestor.js","webpack://pleroma_fe/./src/services/html_converter/utility.service.js","webpack://pleroma_fe/./src/services/html_converter/html_line_converter.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.js","webpack://pleroma_fe/./src/services/matcher/matcher.service.js","webpack://pleroma_fe/./src/components/hashtag_link/hashtag_link.vue?7c0f","webpack://pleroma_fe/./src/components/rich_content/rich_content.jsx","webpack://pleroma_fe/./src/services/html_converter/html_tree_converter.service.js","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.jsx","webpack://pleroma_fe/./src/i18n/languages.js","webpack://pleroma_fe/./src/i18n/messages.js","webpack://pleroma_fe/./src/lib/event_target_polyfill.js","webpack://pleroma_fe/./src/modules/interface.js","webpack://pleroma_fe/./src/modules/instance.js","webpack://pleroma_fe/./src/modules/statuses.js","webpack://pleroma_fe/./src/modules/lists.js","webpack://pleroma_fe/./src/services/timeline_fetcher/timeline_fetcher.service.js","webpack://pleroma_fe/./src/services/follow_request_fetcher/follow_request_fetcher.service.js","webpack://pleroma_fe/./src/services/lists_fetcher/lists_fetcher.service.js","webpack://pleroma_fe/./src/services/backend_interactor_service/backend_interactor_service.js","webpack://pleroma_fe/./src/services/window_utils/window_utils.js","webpack://pleroma_fe/./src/services/new_api/oauth.js","webpack://pleroma_fe/./src/services/push/push.js","webpack://pleroma_fe/./src/modules/users.js","webpack://pleroma_fe/./src/services/chat_utils/chat_utils.js","webpack://pleroma_fe/./src/modules/api.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/modules/serverSideStorage.js","webpack://pleroma_fe/./src/modules/shout.js","webpack://pleroma_fe/./src/modules/oauth.js","webpack://pleroma_fe/./src/modules/auth_flow.js","webpack://pleroma_fe/./src/modules/media_viewer.js","webpack://pleroma_fe/./src/modules/oauth_tokens.js","webpack://pleroma_fe/./src/modules/reports.js","webpack://pleroma_fe/./src/modules/polls.js","webpack://pleroma_fe/./src/modules/postStatus.js","webpack://pleroma_fe/./src/modules/editStatus.js","webpack://pleroma_fe/./src/modules/statusHistory.js","webpack://pleroma_fe/./src/services/chat_service/chat_service.js","webpack://pleroma_fe/./src/modules/chats.js","webpack://pleroma_fe/./src/modules/announcements.js","webpack://pleroma_fe/./src/lib/persisted_state.js","webpack://pleroma_fe/./src/lib/push_notifications_plugin.js","webpack://pleroma_fe/./src/App.vue","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue","webpack://pleroma_fe/./src/components/login_form/login_form.vue","webpack://pleroma_fe/./src/components/login_form/login_form.js","webpack://pleroma_fe/./src/components/login_form/login_form.vue?7e2c","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue","webpack://pleroma_fe/./src/services/new_api/mfa.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.js","webpack://pleroma_fe/./src/components/mfa_form/recovery_form.vue?75db","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue","webpack://pleroma_fe/./src/components/mfa_form/totp_form.js","webpack://pleroma_fe/./src/components/mfa_form/totp_form.vue?e31f","webpack://pleroma_fe/./src/components/auth_form/auth_form.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.js","webpack://pleroma_fe/./src/components/user_panel/user_panel.vue?62d1","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue","webpack://pleroma_fe/./src/components/navigation/navigation.js","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue","webpack://pleroma_fe/./src/components/optional_router_link/optional_router_link.vue?aa8e","webpack://pleroma_fe/./src/components/navigation/navigation_entry.js","webpack://pleroma_fe/./src/components/navigation/navigation_entry.vue?57fe","webpack://pleroma_fe/./src/components/navigation/filter.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.js","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue?5439","webpack://pleroma_fe/./src/components/lists_menu/lists_menu_content.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue","webpack://pleroma_fe/./src/components/navigation/navigation_pins.js","webpack://pleroma_fe/./src/components/navigation/navigation_pins.vue?9359","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.js","webpack://pleroma_fe/./src/components/nav_panel/nav_panel.vue?ec9c","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.js","webpack://pleroma_fe/./src/components/instance_specific_panel/instance_specific_panel.vue?b4d3","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue","webpack://pleroma_fe/./src/components/features_panel/features_panel.js","webpack://pleroma_fe/./src/components/features_panel/features_panel.vue?e52c","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.js","webpack://pleroma_fe/./src/components/who_to_follow_panel/who_to_follow_panel.vue?c79e","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.js","webpack://pleroma_fe/./src/components/shout_panel/shout_panel.vue?452f","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.js","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue?6a4b","webpack://pleroma_fe/./src/components/pinch_zoom/pinch_zoom.vue","webpack://pleroma_fe/./src/services/gesture_service/gesture_service.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.js","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue?cb15","webpack://pleroma_fe/./src/components/swipe_click/swipe_click.vue","webpack://pleroma_fe/./src/components/media_modal/media_modal.js","webpack://pleroma_fe/./src/components/media_modal/media_modal.vue?9f8e","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.js","webpack://pleroma_fe/./src/components/side_drawer/side_drawer.vue?c115","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.js","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue?cc2d","webpack://pleroma_fe/./src/components/mobile_post_status_button/mobile_post_status_button.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.js","webpack://pleroma_fe/./src/components/mobile_nav/mobile_nav.vue?67f1","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue","webpack://pleroma_fe/./src/components/search_bar/search_bar.js","webpack://pleroma_fe/./src/components/search_bar/search_bar.vue?d1ca","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.js","webpack://pleroma_fe/./src/components/desktop_nav/desktop_nav.vue?6641","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.js","webpack://pleroma_fe/./src/components/user_reporting_modal/user_reporting_modal.vue?df82","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.js","webpack://pleroma_fe/./src/components/edit_status_modal/edit_status_modal.vue?03f9","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.js","webpack://pleroma_fe/./src/components/post_status_modal/post_status_modal.vue?9c44","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.js","webpack://pleroma_fe/./src/components/status_history_modal/status_history_modal.vue?4ee0","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.js","webpack://pleroma_fe/./src/components/global_notice_list/global_notice_list.vue?1667","webpack://pleroma_fe/./src/App.js","webpack://pleroma_fe/./src/App.vue?3b2b","webpack://pleroma_fe/./src/components/timeline/timeline.vue","webpack://pleroma_fe/./src/components/conversation/conversation.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.js","webpack://pleroma_fe/./src/components/thread_tree/thread_tree.vue?7311","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.js","webpack://pleroma_fe/./src/components/quick_filter_settings/quick_filter_settings.vue?f71f","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.js","webpack://pleroma_fe/./src/components/quick_view_settings/quick_view_settings.vue?4eaf","webpack://pleroma_fe/./src/components/conversation/conversation.js","webpack://pleroma_fe/./src/components/conversation/conversation.vue?6723","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.js","webpack://pleroma_fe/./src/components/timeline_menu/timeline_menu.vue?96c1","webpack://pleroma_fe/./src/components/timeline/timeline.js","webpack://pleroma_fe/./src/components/timeline/timeline.vue?7060","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.js","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue?daf2","webpack://pleroma_fe/./src/components/public_timeline/public_timeline.vue","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.js","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue?9b62","webpack://pleroma_fe/./src/components/public_and_external_timeline/public_and_external_timeline.vue","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.js","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue?a3f1","webpack://pleroma_fe/./src/components/friends_timeline/friends_timeline.vue","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.js","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue?be7b","webpack://pleroma_fe/./src/components/tag_timeline/tag_timeline.vue","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.js","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue?863c","webpack://pleroma_fe/./src/components/bookmark_timeline/bookmark_timeline.vue","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.js","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue?2386","webpack://pleroma_fe/./src/components/conversation-page/conversation-page.vue","webpack://pleroma_fe/./src/components/interactions/interactions.vue","webpack://pleroma_fe/./src/components/interactions/interactions.js","webpack://pleroma_fe/./src/components/interactions/interactions.vue?3dc7","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.js","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue?fced","webpack://pleroma_fe/./src/components/dm_timeline/dm_timeline.vue","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue","webpack://pleroma_fe/./src/components/chat_title/chat_title.js","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue?723f","webpack://pleroma_fe/./src/components/chat_title/chat_title.vue","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.js","webpack://pleroma_fe/./src/components/chat_list_item/chat_list_item.vue?9103","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue","webpack://pleroma_fe/./src/components/chat_new/chat_new.js","webpack://pleroma_fe/./src/components/chat_new/chat_new.vue?e65f","webpack://pleroma_fe/./src/components/chat_list/chat_list.js","webpack://pleroma_fe/./src/components/chat_list/chat_list.vue?39cf","webpack://pleroma_fe/./src/components/chat/chat.vue","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue","webpack://pleroma_fe/./src/components/chat_message_date/chat_message_date.vue?a1e2","webpack://pleroma_fe/./src/components/chat_message/chat_message.js","webpack://pleroma_fe/./src/components/chat_message/chat_message.vue?38f9","webpack://pleroma_fe/./src/components/chat/chat_layout_utils.js","webpack://pleroma_fe/./src/components/chat/chat.js","webpack://pleroma_fe/./src/components/chat/chat.vue?0265","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.js","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue?a06d","webpack://pleroma_fe/./src/components/remove_follower_button/remove_follower_button.vue","webpack://pleroma_fe/./src/components/follow_card/follow_card.js","webpack://pleroma_fe/./src/components/follow_card/follow_card.vue?a7d5","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.jsx","webpack://pleroma_fe/./src/components/user_profile/user_profile.js","webpack://pleroma_fe/./src/components/user_profile/user_profile.vue?c6a1","webpack://pleroma_fe/./src/components/search/search.vue","webpack://pleroma_fe/./src/components/search/search.js","webpack://pleroma_fe/./src/components/search/search.vue?853e","webpack://pleroma_fe/./src/components/registration/registration.vue","webpack://pleroma_fe/./src/components/registration/registration.js","webpack://pleroma_fe/./src/components/registration/registration.vue?5788","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue","webpack://pleroma_fe/./src/components/password_reset/password_reset.js","webpack://pleroma_fe/./src/services/new_api/password_reset.js","webpack://pleroma_fe/./src/components/password_reset/password_reset.vue?e9fd","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.js","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.js","webpack://pleroma_fe/./src/components/follow_request_card/follow_request_card.vue?64bb","webpack://pleroma_fe/./src/components/follow_requests/follow_requests.vue?427b","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.js","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue?a7e1","webpack://pleroma_fe/./src/components/oauth_callback/oauth_callback.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.js","webpack://pleroma_fe/./src/components/who_to_follow/who_to_follow.vue?d712","webpack://pleroma_fe/./src/components/about/about.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.js","webpack://pleroma_fe/./src/components/terms_of_service_panel/terms_of_service_panel.vue?39d2","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.js","webpack://pleroma_fe/./src/components/staff_panel/staff_panel.vue?16a1","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.js","webpack://pleroma_fe/./src/components/about/about.js","webpack://pleroma_fe/./src/components/mrf_transparency_panel/mrf_transparency_panel.vue?cbb1","webpack://pleroma_fe/./src/components/about/about.vue?07c3","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.js","webpack://pleroma_fe/./src/components/remote_user_resolver/remote_user_resolver.vue?ac33","webpack://pleroma_fe/./src/components/lists/lists.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue","webpack://pleroma_fe/./src/components/lists_card/lists_card.js","webpack://pleroma_fe/./src/components/lists/lists.js","webpack://pleroma_fe/./src/components/lists_card/lists_card.vue?16e6","webpack://pleroma_fe/./src/components/lists/lists.vue?7e21","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.js","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue?804f","webpack://pleroma_fe/./src/components/lists_timeline/lists_timeline.vue","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.js","webpack://pleroma_fe/./src/components/lists_user_search/lists_user_search.vue?4447","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.js","webpack://pleroma_fe/./src/components/lists_edit/lists_edit.vue?056b","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue","webpack://pleroma_fe/./src/components/announcement/announcement.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.js","webpack://pleroma_fe/./src/components/announcement_editor/announcement_editor.vue?cdb9","webpack://pleroma_fe/./src/components/announcement/announcement.js","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.js","webpack://pleroma_fe/./src/components/announcement/announcement.vue?a400","webpack://pleroma_fe/./src/components/announcements_page/announcements_page.vue?89ce","webpack://pleroma_fe/./src/boot/routes.js","webpack://pleroma_fe/./src/directives/body_scroll_lock.js","webpack://pleroma_fe/./src/boot/after_store.js","webpack://pleroma_fe/./src/main.js","webpack://pleroma_fe/./src/modules/config.js","webpack://pleroma_fe/./src/modules/serverSideConfig.js","webpack://pleroma_fe/./src/services/errors/errors.js","webpack://pleroma_fe/./src/modules/errors.js","webpack://pleroma_fe/./src/services/api/api.service.js","webpack://pleroma_fe/./src/services/color_convert/color_convert.js","webpack://pleroma_fe/./src/services/component_utils/component_utils.js","webpack://pleroma_fe/./src/services/date_utils/date_utils.js","webpack://pleroma_fe/./src/services/desktop_notification_utils/desktop_notification_utils.js","webpack://pleroma_fe/./src/services/entity_normalizer/entity_normalizer.service.js","webpack://pleroma_fe/./src/services/favicon_service/favicon_service.js","webpack://pleroma_fe/./src/services/file_size_format/file_size_format.js","webpack://pleroma_fe/./src/services/file_type/file_type.service.js","webpack://pleroma_fe/./src/services/locale/locale.service.js","webpack://pleroma_fe/./src/services/notification_utils/notification_utils.js","webpack://pleroma_fe/./src/services/notifications_fetcher/notifications_fetcher.service.js","webpack://pleroma_fe/./src/services/offset_finder/offset_finder.service.js","webpack://pleroma_fe/./src/services/promise_interval/promise_interval.js","webpack://pleroma_fe/./src/services/status_parser/status_parser.js","webpack://pleroma_fe/./src/services/status_poster/status_poster.service.js","webpack://pleroma_fe/./src/services/style_setter/style_setter.js","webpack://pleroma_fe/./src/services/theme_data/pleromafe.js","webpack://pleroma_fe/./src/services/theme_data/theme_data.service.js","webpack://pleroma_fe/./src/services/user_highlighter/user_highlighter.js","webpack://pleroma_fe/./src/services/user_profile_link_generator/user_profile_link_generator.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue","webpack://pleroma_fe/./src/components/attachment/attachment.js","webpack://pleroma_fe/./src/components/attachment/attachment.vue?6808","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.js","webpack://pleroma_fe/./src/components/avatar_list/avatar_list.vue?171c","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.js","webpack://pleroma_fe/./src/components/basic_user_card/basic_user_card.vue?95ff","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue","webpack://pleroma_fe/./src/components/checkbox/checkbox.vue?4d95","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/services/completion/completion.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.js","webpack://pleroma_fe/./src/components/emoji_picker/emoji_picker.vue?6411","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.js","webpack://pleroma_fe/./src/components/emoji_input/emoji_input.vue?cc95","webpack://pleroma_fe/./src/services/ruffle_service/ruffle_service.js","webpack://pleroma_fe/./src/components/flash/flash.vue","webpack://pleroma_fe/./src/components/flash/flash.js","webpack://pleroma_fe/./src/components/flash/flash.vue?8f01","webpack://pleroma_fe/./src/services/follow_manipulate/follow_manipulate.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.js","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue?fbc0","webpack://pleroma_fe/./src/components/follow_button/follow_button.vue","webpack://pleroma_fe/./src/components/gallery/gallery.vue","webpack://pleroma_fe/./src/components/gallery/gallery.js","webpack://pleroma_fe/./src/components/gallery/gallery.vue?c41d","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue","webpack://pleroma_fe/./src/components/interface_language_switcher/interface_language_switcher.vue?f2c7","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue","webpack://pleroma_fe/./src/components/link-preview/link-preview.js","webpack://pleroma_fe/./src/components/link-preview/link-preview.vue?5c9b","webpack://pleroma_fe/./src/components/list/list.vue","webpack://pleroma_fe/./src/components/list/list.vue?b52f","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue","webpack://pleroma_fe/./src/components/mention_link/mention_link.js","webpack://pleroma_fe/./src/components/mention_link/mention_link.vue?f0cb","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.js","webpack://pleroma_fe/./src/components/mentions_line/mentions_line.vue?e8e7","webpack://pleroma_fe/./src/components/modal/modal.vue","webpack://pleroma_fe/./src/components/modal/modal.vue?8c58","webpack://pleroma_fe/./src/components/notifications/notifications.vue","webpack://pleroma_fe/./src/components/notification/notification.vue","webpack://pleroma_fe/./src/components/report/report.vue","webpack://pleroma_fe/./src/components/report/report.js","webpack://pleroma_fe/./src/components/report/report.vue?5c84","webpack://pleroma_fe/./src/components/notification/notification.js","webpack://pleroma_fe/./src/components/notification/notification.vue?17c8","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue","webpack://pleroma_fe/./src/components/notifications/notification_filters.vue?4a98","webpack://pleroma_fe/./src/components/notifications/notifications.js","webpack://pleroma_fe/./src/components/notifications/notifications.vue?770b","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue","webpack://pleroma_fe/./src/components/panel_loading/panel_loading.vue?50c2","webpack://pleroma_fe/./src/components/popover/popover.js","webpack://pleroma_fe/./src/components/popover/popover.vue?237b","webpack://pleroma_fe/./src/components/popover/popover.vue","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue","webpack://pleroma_fe/./src/components/media_upload/media_upload.js","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue?73d1","webpack://pleroma_fe/./src/components/media_upload/media_upload.vue","webpack://pleroma_fe/./src/components/poll/poll_form.vue","webpack://pleroma_fe/./src/components/poll/poll_form.js","webpack://pleroma_fe/./src/components/poll/poll_form.vue?5434","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.js","webpack://pleroma_fe/./src/components/post_status_form/post_status_form.vue?b98e","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue","webpack://pleroma_fe/./src/components/progress_button/progress_button.vue?2d10","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.js","webpack://pleroma_fe/./src/components/remote_follow/remote_follow.vue?188a","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.js","webpack://pleroma_fe/./src/components/scope_selector/scope_selector.vue?cbff","webpack://pleroma_fe/./src/components/select/select.js","webpack://pleroma_fe/./src/components/select/select.vue?fa00","webpack://pleroma_fe/./src/components/select/select.vue","webpack://pleroma_fe/./src/components/status/status.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue","webpack://pleroma_fe/./src/components/reply_button/reply_button.js","webpack://pleroma_fe/./src/components/reply_button/reply_button.vue?f8cc","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.js","webpack://pleroma_fe/./src/components/favorite_button/favorite_button.vue?4c13","webpack://pleroma_fe/./src/components/react_button/react_button.vue","webpack://pleroma_fe/./src/components/react_button/react_button.js","webpack://pleroma_fe/./src/components/react_button/react_button.vue?64d4","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.js","webpack://pleroma_fe/./src/components/retweet_button/retweet_button.vue?774a","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.js","webpack://pleroma_fe/./src/components/extra_buttons/extra_buttons.vue?2a14","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue","webpack://pleroma_fe/./src/components/status_popover/status_popover.js","webpack://pleroma_fe/./src/components/status_popover/status_popover.vue?2f31","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.js","webpack://pleroma_fe/./src/components/user_list_popover/user_list_popover.vue?32eb","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.js","webpack://pleroma_fe/./src/components/emoji_reactions/emoji_reactions.vue?be26","webpack://pleroma_fe/./src/components/status/status.js","webpack://pleroma_fe/./src/components/status/status.vue?f274","webpack://pleroma_fe/./src/components/status_content/status_content.vue","webpack://pleroma_fe/./src/components/poll/poll.vue","webpack://pleroma_fe/./src/components/poll/poll.js","webpack://pleroma_fe/./src/components/poll/poll.vue?09ad","webpack://pleroma_fe/./src/components/status_body/status_body.vue","webpack://pleroma_fe/./src/components/status_body/status_body.js","webpack://pleroma_fe/./src/components/status_body/status_body.vue?a029","webpack://pleroma_fe/./src/components/status_content/status_content.js","webpack://pleroma_fe/./src/components/status_content/status_content.vue?5b7b","webpack://pleroma_fe/./src/components/still-image/still-image.vue","webpack://pleroma_fe/./src/components/still-image/still-image.js","webpack://pleroma_fe/./src/components/still-image/still-image.vue?7a8d","webpack://pleroma_fe/./src/components/timeago/timeago.vue","webpack://pleroma_fe/./src/components/timeago/timeago.vue?3167","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue","webpack://pleroma_fe/./src/components/unicode_domain_indicator/unicode_domain_indicator.vue?760a","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.js","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue?84fc","webpack://pleroma_fe/./src/components/user_avatar/user_avatar.vue","webpack://pleroma_fe/./src/components/user_card/user_card.vue","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.js","webpack://pleroma_fe/./src/components/dialog_modal/dialog_modal.vue?60df","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.js","webpack://pleroma_fe/./src/components/moderation_tools/moderation_tools.vue?98d7","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.js","webpack://pleroma_fe/./src/components/user_list_menu/user_list_menu.vue?e3cb","webpack://pleroma_fe/./src/components/account_actions/account_actions.js","webpack://pleroma_fe/./src/components/account_actions/account_actions.vue?26a0","webpack://pleroma_fe/./src/components/user_note/user_note.vue","webpack://pleroma_fe/./src/components/user_note/user_note.js","webpack://pleroma_fe/./src/components/user_note/user_note.vue?302a","webpack://pleroma_fe/./src/components/user_card/user_card.js","webpack://pleroma_fe/./src/components/user_card/user_card.vue?bb36","webpack://pleroma_fe/./src/components/user_link/user_link.vue","webpack://pleroma_fe/./src/components/user_link/user_link.vue?e5f2","webpack://pleroma_fe/./src/components/user_popover/user_popover.js","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue?dfdb","webpack://pleroma_fe/./src/components/user_popover/user_popover.vue","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.js","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue?da03","webpack://pleroma_fe/./src/components/video_attachment/video_attachment.vue","webpack://pleroma_fe/./src/i18n/ lazy ^\\.\\/.*\\.json$ include: \\.json$ chunkName: i18n/[request] namespace object","webpack://pleroma_fe/webpack/bootstrap","webpack://pleroma_fe/webpack/runtime/compat get default export","webpack://pleroma_fe/webpack/runtime/define property getters","webpack://pleroma_fe/webpack/runtime/ensure chunk","webpack://pleroma_fe/webpack/runtime/get javascript chunk filename","webpack://pleroma_fe/webpack/runtime/get mini-css chunk filename","webpack://pleroma_fe/webpack/runtime/global","webpack://pleroma_fe/webpack/runtime/hasOwnProperty shorthand","webpack://pleroma_fe/webpack/runtime/make namespace object","webpack://pleroma_fe/webpack/runtime/node module decorator","webpack://pleroma_fe/webpack/runtime/publicPath","webpack://pleroma_fe/webpack/runtime/jsonp chunk loading","webpack://pleroma_fe/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"pleroma_fe:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = (chunkId, fullhref, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"1264\":1,\"1325\":1,\"6464\":1,\"8532\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","export default {\n  \"about\": {\n    \"mrf\": {\n      \"federation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Federation\"])},\n      \"keyword\": {\n        \"keyword_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keyword policies\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"The Whole Known Network\\\" Timeline\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"replace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace\"])},\n        \"is_replaced_by\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"→\"])}\n      },\n      \"mrf_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enabled MRF policies\"])},\n      \"mrf_policies_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MRF policies manipulate the federation behaviour of the instance.  The following policies are enabled:\"])},\n      \"simple\": {\n        \"simple_policies\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance-specific policies\"])},\n        \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n        \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason\"])},\n        \"not_applicable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"N/A\"])},\n        \"accept\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept\"])},\n        \"accept_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance only accepts messages from the following instances:\"])},\n        \"reject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject\"])},\n        \"reject_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will not accept messages from the following instances:\"])},\n        \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quarantine\"])},\n        \"quarantine_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance will send only public posts to the following instances:\"])},\n        \"ftl_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Removal from \\\"Known Network\\\" Timeline\"])},\n        \"ftl_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes these instances from \\\"Known Network\\\" timeline:\"])},\n        \"media_removal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media Removal\"])},\n        \"media_removal_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance removes media from posts on the following instances:\"])},\n        \"media_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media force-set as sensitive\"])},\n        \"media_nsfw_desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance forces media to be set sensitive in posts on the following instances:\"])}\n      }\n    },\n    \"staff\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Staff\"])}\n  },\n  \"announcements\": {\n    \"page_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])},\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcement\"])},\n    \"mark_as_read_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark as read\"])},\n    \"post_form_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post announcement\"])},\n    \"post_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your announcement content here...\"])},\n    \"post_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n    \"post_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error: \", _interpolate(_named(\"error\"))])},\n    \"close_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n    \"delete_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n    \"start_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Start time: \"])},\n    \"end_time_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"End time: \"])},\n    \"all_day_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is an all-day event\"])},\n    \"published_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Published at \", _interpolate(_named(\"time\"))])},\n    \"start_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Starts at \", _interpolate(_named(\"time\"))])},\n    \"end_time_display\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Ends at \", _interpolate(_named(\"time\"))])},\n    \"edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit\"])},\n    \"submit_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"cancel_edit_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n    \"inactive_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This announcement is inactive\"])}\n  },\n  \"shoutbox\": {\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])}\n  },\n  \"domain_mute_card\": {\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])}\n  },\n  \"exporter\": {\n    \"export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export\"])},\n    \"processing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Processing, you'll soon be asked to download your file\"])}\n  },\n  \"features_panel\": {\n    \"shout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shoutbox\"])},\n    \"pleroma_chat_messages\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma Chat\"])},\n    \"gopher\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Gopher\"])},\n    \"media_proxy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media proxy\"])},\n    \"scope_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scope options\"])},\n    \"text_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text limit\"])},\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Features\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"upload_limit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload limit\"])}\n  },\n  \"finder\": {\n    \"error_fetching_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error fetching user\"])},\n    \"find_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Find user\"])}\n  },\n  \"general\": {\n    \"apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading…\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured\"])},\n    \"generic_error_message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"An error occured: \", _interpolate(_list(0))])},\n    \"error_retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please try again\"])},\n    \"retry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again\"])},\n    \"optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"optional\"])},\n    \"show_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show more\"])},\n    \"show_less\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show less\"])},\n    \"never_show_again\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Never show again\"])},\n    \"dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Dismiss\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])},\n    \"disable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable\"])},\n    \"enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable\"])},\n    \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n    \"verify\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Verify\"])},\n    \"close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n    \"undo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Undo\"])},\n    \"yes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Yes\"])},\n    \"no\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No\"])},\n    \"peek\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Peek\"])},\n    \"scroll_to_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scroll to top\"])},\n    \"role\": {\n      \"admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Admin\"])},\n      \"moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderator\"])}\n    },\n    \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin item\"])},\n    \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin item\"])},\n    \"flash_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click to show Flash content using Ruffle (Experimental, may not work).\"])},\n    \"flash_security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note that this can be potentially dangerous since Flash content is still arbitrary code.\"])},\n    \"flash_fail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to load flash content, see console for details.\"])},\n    \"scope_in_timeline\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted\"])}\n    }\n  },\n  \"image_cropper\": {\n    \"crop_picture\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Crop picture\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n    \"save_without_cropping\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save without cropping\"])},\n    \"cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n  },\n  \"importer\": {\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"success\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Imported successfully.\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occured while importing this file.\"])}\n  },\n  \"login\": {\n    \"login\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in\"])},\n    \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in with OAuth\"])},\n    \"logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log out\"])},\n    \"password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"username\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Username\"])},\n    \"hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Log in to join the discussion\"])},\n    \"authentication_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication code\"])},\n    \"enter_recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a recovery code\"])},\n    \"enter_two_factor_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter a two-factor code\"])},\n    \"recovery_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery code\"])},\n    \"heading\": {\n      \"totp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor authentication\"])},\n      \"recovery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor recovery\"])}\n    }\n  },\n  \"media_modal\": {\n    \"previous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Previous\"])},\n    \"next\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Next\"])},\n    \"counter\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"current\")), \" / \", _interpolate(_named(\"total\"))])},\n    \"hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close media viewer\"])}\n  },\n  \"nav\": {\n    \"about\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"About\"])},\n    \"administration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n    \"back\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Back\"])},\n    \"friend_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"interactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interactions\"])},\n    \"dms\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct messages\"])},\n    \"public_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public timeline\"])},\n    \"timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timeline\"])},\n    \"home_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Home timeline\"])},\n    \"twkn\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Known Network\"])},\n    \"bookmarks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmarks\"])},\n    \"user_search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Search\"])},\n    \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])},\n    \"preferences\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preferences\"])},\n    \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n    \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n    \"edit_nav_mobile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Customize navigation bar\"])},\n    \"edit_pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit pinned items\"])},\n    \"edit_finish\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Done editing\"])},\n    \"mobile_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggle mobile sidebar\"])},\n    \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications\"])},\n    \"mobile_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open notifications (there are unread ones)\"])},\n    \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close notifications\"])},\n    \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])}\n  },\n  \"notifications\": {\n    \"broken_favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unknown status, searching for it…\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching notifications: \", _interpolate(_list(0))])},\n    \"favorited_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"favorited your status\"])},\n    \"followed_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"followed you\"])},\n    \"follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"wants to follow you\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older notifications\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"read\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Read!\"])},\n    \"repeated_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated your status\"])},\n    \"no_more_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more notifications\"])},\n    \"migrated_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"migrated to\"])},\n    \"reacted_with\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"reacted with \", _interpolate(_list(0))])},\n    \"submitted_report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"submitted a report\"])},\n    \"poll_ended\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"poll has ended\"])}\n  },\n  \"polls\": {\n    \"add_poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add poll\"])},\n    \"add_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add option\"])},\n    \"option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Option\"])},\n    \"votes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"votes\"])},\n    \"people_voted_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" person voted\"]), _normalize([_interpolate(_named(\"count\")), \" people voted\"])])},\n    \"votes_count\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"count\")), \" vote\"]), _normalize([_interpolate(_named(\"count\")), \" votes\"])])},\n    \"vote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Vote\"])},\n    \"type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll type\"])},\n    \"single_choice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Single choice\"])},\n    \"multiple_choices\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Multiple choices\"])},\n    \"expiry\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll age\"])},\n    \"expires_in\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ends in \", _interpolate(_list(0))])},\n    \"expired\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Poll ended \", _interpolate(_list(0)), \" ago\"])},\n    \"not_enough_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Too few unique options in poll\"])}\n  },\n  \"emoji\": {\n    \"stickers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stickers\"])},\n    \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])},\n    \"keep_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep picker open\"])},\n    \"search_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for an emoji\"])},\n    \"add_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Insert emoji\"])},\n    \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom emoji\"])},\n    \"unicode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unicode emoji\"])},\n    \"unicode_groups\": {\n      \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activities\"])},\n      \"animals-and-nature\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Animals & Nature\"])},\n      \"flags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Flags\"])},\n      \"food-and-drink\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Food & Drink\"])},\n      \"objects\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Objects\"])},\n      \"people-and-body\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People & Body\"])},\n      \"smileys-and-emotion\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Smileys & Emotion\"])},\n      \"symbols\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Symbols\"])},\n      \"travel-and-places\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Travel & Places\"])}\n    },\n    \"load_all_hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loaded first \", _interpolate(_named(\"saneAmount\")), \" emoji, loading all emoji may cause performance issues.\"])},\n    \"load_all\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Loading all \", _interpolate(_named(\"emojiAmount\")), \" emoji\"])},\n    \"regional_indicator\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Regional indicator \", _interpolate(_named(\"letter\"))])}\n  },\n  \"errors\": {\n    \"storage_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma could not access browser storage. Your login or your local settings won't be saved and you might encounter unexpected issues. Try enabling cookies.\"])}\n  },\n  \"interactions\": {\n    \"favs_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats and favorites\"])},\n    \"follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New follows\"])},\n    \"emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji Reactions\"])},\n    \"reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reports\"])},\n    \"moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User migrates\"])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older interactions\"])}\n  },\n  \"post_status\": {\n    \"edit_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n    \"new_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post new status\"])},\n    \"account_not_locked_warning\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Your account is not \", _interpolate(_list(0)), \". Anyone can follow you to view your follower-only posts.\"])},\n    \"account_not_locked_warning_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"locked\"])},\n    \"attachments_sensitive\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark attachments as sensitive\"])},\n    \"media_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media description\"])},\n    \"content_type\": {\n      \"text/plain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Plain text\"])},\n      \"text/html\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"HTML\"])},\n      \"text/markdown\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Markdown\"])},\n      \"text/bbcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"BBCode\"])}\n    },\n    \"content_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subject (optional)\"])},\n    \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n    \"direct_warning_to_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to all the mentioned users.\"])},\n    \"direct_warning_to_first_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will only be visible to the mentioned users at the beginning of the message.\"])},\n    \"edit_remote_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Other remote instances may not support editing and unable to receive the latest version of your post.\"])},\n    \"edit_unsupported_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma does not support editing mentions or polls.\"])},\n    \"posting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posting\"])},\n    \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post\"])},\n    \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n    \"preview_empty\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Empty\"])},\n    \"empty_status_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Can't post an empty status with no files\"])},\n    \"media_description_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Failed to update media, try again\"])},\n    \"scope_notice\": {\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to everyone\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will be visible to your followers only\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post will not be visible in Public Timeline and The Whole Known Network\"])}\n    },\n    \"scope\": {\n      \"direct\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Direct - post to mentioned users only\"])},\n      \"private\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers-only - post to followers only\"])},\n      \"public\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Public - post to public timelines\"])},\n      \"unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unlisted - do not post to public timelines\"])}\n    }\n  },\n  \"registration\": {\n    \"bio_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio (optional)\"])},\n    \"email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email\"])},\n    \"email_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email (optional)\"])},\n    \"fullname\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display name\"])},\n    \"password_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password confirmation\"])},\n    \"registration\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Registration\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Invite token\"])},\n    \"captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n    \"new_captcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Click the image to get a new captcha\"])},\n    \"username_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. lain\"])},\n    \"fullname_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g. Lain Iwakura\"])},\n    \"bio_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"e.g.\\nHi, I'm Lain.\\nI’m an anime girl living in suburban Japan. You may know me from the Wired.\"])},\n    \"reason\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reason to register\"])},\n    \"reason_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This instance approves registrations manually.\\nLet the administration know why you want to register.\"])},\n    \"register\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Register\"])},\n    \"validations\": {\n      \"username_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"fullname_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"email_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n      \"password_confirmation_match\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"should be the same as password\"])}\n    },\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])}\n  },\n  \"remote_user_resolver\": {\n    \"remote_user_resolver\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote user resolver\"])},\n    \"searching_for\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Searching for\"])},\n    \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Not found.\"])}\n  },\n  \"report\": {\n    \"reporter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reporter:\"])},\n    \"reported_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported user:\"])},\n    \"reported_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reported statuses:\"])},\n    \"notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notes:\"])},\n    \"state\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"State:\"])},\n    \"state_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open\"])},\n    \"state_closed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Closed\"])},\n    \"state_resolved\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Resolved\"])}\n  },\n  \"selectable_list\": {\n    \"select_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select all\"])}\n  },\n  \"settings\": {\n    \"app_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"App name\"])},\n    \"expert_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show advanced\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n    \"security\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"setting_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setting is different from default\"])},\n    \"setting_server_side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This setting is tied to your profile and affects all sessions and clients\"])},\n    \"enter_current_password_to_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your current password to confirm your identity\"])},\n    \"post_look_feel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts Look & Feel\"])},\n    \"mention_links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention links\"])},\n    \"mfa\": {\n      \"otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OTP\"])},\n      \"setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Setup OTP\"])},\n      \"wait_pre_setup_otp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"presetting OTP\"])},\n      \"confirm_and_enable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm & enable OTP\"])},\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Two-factor Authentication\"])},\n      \"generate_new_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Generate new recovery codes\"])},\n      \"warning_of_generate_new_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When you generate new recovery codes, your old codes won’t work anymore.\"])},\n      \"recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Recovery codes.\"])},\n      \"waiting_a_recovery_codes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receiving backup codes…\"])},\n      \"recovery_codes_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Write the codes down or save them somewhere secure - otherwise you won't see them again. If you lose access to your 2FA app and recovery codes you'll be locked out of your account.\"])},\n      \"authentication_methods\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Authentication methods\"])},\n      \"scan\": {\n        \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Scan\"])},\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Using your two-factor app, scan this QR code or enter text key:\"])},\n        \"secret_code\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Key\"])}\n      },\n      \"verify\": {\n        \"desc\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To enable two-factor authentication, enter the code from your two-factor app:\"])}\n      }\n    },\n    \"lists_navigation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show lists in navigation\"])},\n    \"allow_following_move\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow auto-follow when following account moves\"])},\n    \"attachmentRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments\"])},\n    \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatar\"])},\n    \"avatarAltRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars (notifications)\"])},\n    \"avatarRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Avatars\"])},\n    \"background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background\"])},\n    \"bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bio\"])},\n    \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Language for receiving emails from the server\"])},\n    \"block_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block export\"])},\n    \"block_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your blocks to a csv file\"])},\n    \"block_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block import\"])},\n    \"block_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing blocks\"])},\n    \"blocks_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks imported! Processing them will take a while.\"])},\n    \"mute_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute export\"])},\n    \"mute_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your mutes to a csv file\"])},\n    \"mute_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute import\"])},\n    \"mute_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing mutes\"])},\n    \"mutes_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes imported! Processing them will take a while.\"])},\n    \"import_mutes_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import mutes from a csv file\"])},\n    \"account_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account backup\"])},\n    \"account_backup_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This allows you to download an archive of your account information and your posts, but they cannot yet be imported into a Pleroma account.\"])},\n    \"account_backup_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup\"])},\n    \"download_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download\"])},\n    \"backup_not_ready\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup is not ready yet.\"])},\n    \"remove_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n    \"list_backups_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching backup list: \", _interpolate(_named(\"error\"))])},\n    \"add_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create a new backup\"])},\n    \"added_backup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Added a new backup.\"])},\n    \"add_backup_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding a new backup: \", _interpolate(_named(\"error\"))])},\n    \"blocks_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocks\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is a bot account\"])},\n    \"btnRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n    \"cBlue\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blue (Reply, follow)\"])},\n    \"cGreen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Green (Retweet)\"])},\n    \"cOrange\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Orange (Favorite)\"])},\n    \"cRed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Red (Cancel)\"])},\n    \"change_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change email\"])},\n    \"change_email_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your email.\"])},\n    \"changed_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Email changed successfully!\"])},\n    \"change_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change password\"])},\n    \"change_password_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue changing your password.\"])},\n    \"changed_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password changed successfully!\"])},\n    \"chatMessageRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chat message\"])},\n    \"collapse_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse posts with subjects\"])},\n    \"composing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Composing\"])},\n    \"confirm_new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new password\"])},\n    \"current_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Current password\"])},\n    \"mutes_and_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes and Blocks\"])},\n    \"data_import_export_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Data import / export\"])},\n    \"default_vis\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default visibility scope\"])},\n    \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n    \"delete_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Permanently delete your data and deactivate your account.\"])},\n    \"delete_account_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"There was an issue deleting your account. If this persists please contact your instance administrator.\"])},\n    \"delete_account_instructions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Type your password in the input below to confirm account deletion.\"])},\n    \"account_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account aliases\"])},\n    \"account_alias_table_head\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias\"])},\n    \"list_aliases_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error fetching aliases: \", _interpolate(_named(\"error\"))])},\n    \"hide_list_aliases_error_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close\"])},\n    \"remove_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove this alias\"])},\n    \"new_alias_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Add a new alias (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n    \"added_alias\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alias is added.\"])},\n    \"add_alias_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error adding alias: \", _interpolate(_named(\"error\"))])},\n    \"move_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Move account\"])},\n    \"move_account_notes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"If you want to move the account somewhere else, you must go to your target account and add an alias pointing here.\"])},\n    \"move_account_target\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Target account (e.g. \", _interpolate(_named(\"example\")), \")\"])},\n    \"moved_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Account is moved.\"])},\n    \"move_account_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Error moving account: \", _interpolate(_named(\"error\"))])},\n    \"discoverable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow discovery of this account in search results and other services\"])},\n    \"domain_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Domains\"])},\n    \"avatar_size_instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The recommended minimum size for avatar images is 150x150 pixels.\"])},\n    \"pad_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pad emoji with spaces when adding from picker\"])},\n    \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n    \"export_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save preset\"])},\n    \"filtering\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filtering\"])},\n    \"wordfilter\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wordfilter\"])},\n    \"filtering_explanation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"All statuses containing these words will be muted, one per line\"])},\n    \"word_filter_and_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Word filter and more...\"])},\n    \"follow_export\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow export\"])},\n    \"follow_export_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Export your follows to a csv file\"])},\n    \"follow_import\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow import\"])},\n    \"follow_import_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error importing followers\"])},\n    \"follows_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows imported! Processing them will take a while.\"])},\n    \"accent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accent\"])},\n    \"foreground\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Foreground\"])},\n    \"general\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"General\"])},\n    \"hide_attachments_in_convo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in conversations\"])},\n    \"hide_attachments_in_tl\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachments in timeline\"])},\n    \"hide_media_previews\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide media previews\"])},\n    \"hide_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide posts of muted users\"])},\n    \"mute_bot_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute bot posts\"])},\n    \"hide_bot_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide bot indication in posts\"])},\n    \"hide_all_muted_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted posts\"])},\n    \"max_thumbnails\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum amount of thumbnails per post (empty = no limit)\"])},\n    \"hide_isp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance-specific panel\"])},\n    \"hide_shoutbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance shoutbox\"])},\n    \"right_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reverse order of columns\"])},\n    \"navbar_column_stretch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stretch navbar to columns width\"])},\n    \"always_show_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show floating New Post button\"])},\n    \"hide_wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide instance wallpaper\"])},\n    \"preload_images\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preload images\"])},\n    \"use_one_click_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open NSFW attachments with just one click\"])},\n    \"hide_post_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide post statistics (e.g. the number of favorites)\"])},\n    \"hide_user_stats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide user statistics (e.g. the number of followers)\"])},\n    \"hide_filtered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide all filtered posts\"])},\n    \"hide_wordfiltered_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide word-filtered statuses\"])},\n    \"hide_muted_threads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide muted threads\"])},\n    \"import_blocks_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import blocks from a csv file\"])},\n    \"import_followers_from_a_csv_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import follows from a csv file\"])},\n    \"import_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load preset\"])},\n    \"inputRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n    \"checkboxRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Checkboxes\"])},\n    \"instance_default\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(default: \", _interpolate(_named(\"value\")), \")\"])},\n    \"instance_default_simple\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(default)\"])},\n    \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n    \"interfaceLanguage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface language\"])},\n    \"invalid_theme_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma theme. No changes to your theme were made.\"])},\n    \"limited_availability\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unavailable in your browser\"])},\n    \"links\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Links\"])},\n    \"lock_account_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict your account to approved followers only\"])},\n    \"loop_video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop videos\"])},\n    \"loop_video_silent_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loop only videos without sound (i.e. Mastodon's \\\"gifs\\\")\"])},\n    \"mutes_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mutes\"])},\n    \"play_videos_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Play videos in a popup frame\"])},\n    \"file_export_import\": {\n      \"backup_restore\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings backup\"])},\n      \"backup_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings to file\"])},\n      \"backup_settings_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backup settings and theme to file\"])},\n      \"restore_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restore settings from file\"])},\n      \"errors\": {\n        \"invalid_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The selected file is not a supported Pleroma settings backup. No changes were made.\"])},\n        \"file_too_new\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", this PleromaFE (settings ver \", _interpolate(_named(\"feMajor\")), \") is too old to handle it\"])},\n        \"file_too_old\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Incompatile major version: \", _interpolate(_named(\"fileMajor\")), \", file version is too old and not supported (min. set. ver. \", _interpolate(_named(\"feMajor\")), \")\"])},\n        \"file_slightly_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File minor version is different, some settings might not load\"])}\n      }\n    },\n    \"profile_fields\": {\n      \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile metadata\"])},\n      \"add_field\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add field\"])},\n      \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Label\"])},\n      \"value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])}\n    },\n    \"account_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"use_contain_fit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't crop the attachment in thumbnails\"])},\n    \"name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name\"])},\n    \"name_bio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Name & bio\"])},\n    \"new_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New email\"])},\n    \"new_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New password\"])},\n    \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts\"])},\n    \"user_profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Profiles\"])},\n    \"notification_visibility\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Types of notifications to show\"])},\n    \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n    \"notification_visibility_likes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"notification_visibility_mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"notification_visibility_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"notification_visibility_moves\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Migrates\"])},\n    \"notification_visibility_emoji_reactions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions\"])},\n    \"notification_visibility_polls\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ends of polls you voted in\"])},\n    \"no_rich_text_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Strip rich text formatting from all posts\"])},\n    \"no_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No blocks\"])},\n    \"no_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No mutes\"])},\n    \"hide_favorites_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show list of my favorites (people still get notified)\"])},\n    \"hide_follows_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who I'm following\"])},\n    \"hide_followers_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show who's following me\"])},\n    \"hide_follows_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follow count\"])},\n    \"hide_followers_count_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show follower count\"])},\n    \"show_admin_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Admin\\\" badge in my profile\"])},\n    \"show_moderator_badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show \\\"Moderator\\\" badge in my profile\"])},\n    \"nsfw_clickthrough\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide sensitive/NSFW media\"])},\n    \"oauth_tokens\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"OAuth tokens\"])},\n    \"token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Token\"])},\n    \"refresh_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Refresh token\"])},\n    \"valid_until\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Valid until\"])},\n    \"revoke_token\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke\"])},\n    \"panelRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panels\"])},\n    \"pause_on_unfocused\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause when tab is not focused\"])},\n    \"presets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Presets\"])},\n    \"profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile background\"])},\n    \"profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile banner\"])},\n    \"profile_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile\"])},\n    \"radii_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set up interface edge rounding (in pixels)\"])},\n    \"replies_in_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies in timeline\"])},\n    \"reply_visibility_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all replies\"])},\n    \"reply_visibility_following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me or users I'm following\"])},\n    \"reply_visibility_self\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies directed at me\"])},\n    \"reply_visibility_following_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to my follows\"])},\n    \"reply_visibility_self_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show replies to self only\"])},\n    \"autohide_floating_post_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically hide New Post button (mobile)\"])},\n    \"saving_err\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error saving settings\"])},\n    \"saving_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings saved\"])},\n    \"search_user_to_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to block\"])},\n    \"search_user_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search whom you want to mute\"])},\n    \"security_tab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Security\"])},\n    \"scope_copy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy scope when replying (DMs are always copied)\"])},\n    \"minimal_scopes_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minimize post scope selection options\"])},\n    \"set_new_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new avatar\"])},\n    \"set_new_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile background\"])},\n    \"set_new_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set new profile banner\"])},\n    \"reset_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset avatar\"])},\n    \"reset_profile_background\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile background\"])},\n    \"reset_profile_banner\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset profile banner\"])},\n    \"reset_avatar_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the avatar?\"])},\n    \"reset_banner_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the banner?\"])},\n    \"reset_background_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to reset the background?\"])},\n    \"settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Settings\"])},\n    \"subject_input_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show subject field\"])},\n    \"subject_line_behavior\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy subject when replying\"])},\n    \"subject_line_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like email: \\\"re: subject\\\"\"])},\n    \"subject_line_mastodon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Like mastodon: copy as is\"])},\n    \"subject_line_noop\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not copy\"])},\n    \"conversation_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation display style\"])},\n    \"conversation_display_tree\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree-style\"])},\n    \"conversation_display_tree_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tree view\"])},\n    \"disable_sticky_headers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't stick column headers to top of the screen\"])},\n    \"show_scrollbars\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show side column's scrollbars\"])},\n    \"third_column_mode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"When there's enough space, show third column containing\"])},\n    \"third_column_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Don't show third column at all\"])},\n    \"third_column_mode_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications column\"])},\n    \"third_column_mode_postform\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Main post form and navigation\"])},\n    \"columns\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Columns\"])},\n    \"column_sizes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Column sizes\"])},\n    \"column_sizes_sidebar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sidebar\"])},\n    \"column_sizes_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n    \"column_sizes_notifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"tree_advanced\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Allow more flexible navigation in tree view\"])},\n    \"tree_fade_ancestors\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display ancestors of the current status in faint text\"])},\n    \"conversation_display_linear\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear-style\"])},\n    \"conversation_display_linear_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Linear view\"])},\n    \"conversation_other_replies_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the \\\"other replies\\\" button\"])},\n    \"conversation_other_replies_button_below\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Below statuses\"])},\n    \"conversation_other_replies_button_inside\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inside statuses\"])},\n    \"max_depth_in_thread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Maximum number of levels in thread to display by default\"])},\n    \"post_status_content_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post status content type\"])},\n    \"sensitive_by_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark posts as sensitive by default\"])},\n    \"stop_gifs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pause animated images until you hover on them\"])},\n    \"streaming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically show new posts when scrolled to the top\"])},\n    \"auto_update\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new posts automatically\"])},\n    \"user_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Users\"])},\n    \"useStreamingApi\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Receive posts and notifications real-time\"])},\n    \"use_websockets\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use websockets (Realtime updates)\"])},\n    \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text\"])},\n    \"theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme\"])},\n    \"theme_help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use hex color codes (#rrggbb) to customize your color theme.\"])},\n    \"theme_help_v2_1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You can also override certain component's colors and opacity by toggling the checkbox, use \\\"Clear all\\\" button to clear all overrides.\"])},\n    \"theme_help_v2_2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons underneath some entries are background/text contrast indicators, hover over for detailed info. Please keep in mind that when using transparency contrast indicators show the worst possible case.\"])},\n    \"tooltipRadius\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips/alerts\"])},\n    \"type_domains_to_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search domains to mute\"])},\n    \"upload_a_photo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload a photo\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"values\": {\n      \"false\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"no\"])},\n      \"true\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"yes\"])}\n    },\n    \"virtual_scrolling\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Optimize timeline rendering\"])},\n    \"use_at_icon\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display \", \"@\", \" symbol as an icon instead of text\"])},\n    \"mention_link_display\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display mention links\"])},\n    \"mention_link_display_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as short names (e.g. \", \"@\", \"foo)\"])},\n    \"mention_link_display_full_for_remote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"as full names only for remote users (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_display_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"always as full names (e.g. \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_use_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user card when clicking mention links\"])},\n    \"mention_link_show_avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar beside the link\"])},\n    \"mention_link_show_avatar_quick\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user avatar next to mentions\"])},\n    \"mention_link_fade_domain\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fade domains (e.g. \", \"@\", \"example.org in \", \"@\", \"foo\", \"@\", \"example.org)\"])},\n    \"mention_link_bolden_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlight mention of you when you are mentioned\"])},\n    \"user_popover_avatar_action\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popover avatar click action\"])},\n    \"user_popover_avatar_action_zoom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Zoom the avatar\"])},\n    \"user_popover_avatar_action_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close the popover\"])},\n    \"user_popover_avatar_action_open\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open profile\"])},\n    \"user_popover_avatar_overlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show user popover over user avatar\"])},\n    \"fun\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fun\"])},\n    \"greentext\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Meme arrows\"])},\n    \"show_yous\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show (You)s\"])},\n    \"notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notifications\"])},\n    \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n    \"notification_setting_block_from_strangers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block notifications from users who you do not follow\"])},\n    \"notification_setting_privacy\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Privacy\"])},\n    \"notification_setting_hide_notification_contents\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the sender and contents of push notifications\"])},\n    \"notification_mutes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"To stop receiving notifications from a specific user, use a mute.\"])},\n    \"notification_blocks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking a user stops all notifications as well as unsubscribes them.\"])},\n    \"enable_web_push_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enable web push notifications\"])},\n    \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n    \"style\": {\n      \"switcher\": {\n        \"keep_color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep colors\"])},\n        \"keep_shadows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep shadows\"])},\n        \"keep_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep opacity\"])},\n        \"keep_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep roundness\"])},\n        \"keep_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep fonts\"])},\n        \"save_load_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"\\\"Keep\\\" options preserve currently set options when selecting or loading themes, it also stores said options when exporting a theme. When all checkboxes unset, exporting theme will save everything.\"])},\n        \"reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n        \"clear_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear all\"])},\n        \"clear_opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Clear opacity\"])},\n        \"load_theme\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load theme\"])},\n        \"keep_as_is\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep as is\"])},\n        \"use_snapshot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Old version\"])},\n        \"use_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New version\"])},\n        \"help\": {\n          \"upgraded_from_v2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE has been upgraded, theme could look a little bit different than you remember.\"])},\n          \"v2_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made for older FE. We try to maximize compatibility but there still could be inconsistencies.\"])},\n          \"future_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in newer version of FE.\"])},\n          \"older_version_imported\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File you imported was made in older version of FE.\"])},\n          \"snapshot_present\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme snapshot is loaded, so all values are overriden. You can load theme's actual data instead.\"])},\n          \"snapshot_missing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No theme snapshot was in the file so it could look different than originally envisioned.\"])},\n          \"fe_upgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's theme engine upgraded after version update.\"])},\n          \"fe_downgraded\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"PleromaFE's version rolled back.\"])},\n          \"migration_snapshot_ok\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just to be safe, theme snapshot loaded. You can try loading theme data.\"])},\n          \"migration_napshot_gone\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"For whatever reason snapshot was missing, some stuff could look different than you remember.\"])},\n          \"snapshot_source_mismatch\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Versions conflict: most likely FE was rolled back and updated again, if you changed theme using older version of FE you most likely want to use old version, otherwise use new version.\"])}\n        }\n      },\n      \"common\": {\n        \"color\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Color\"])},\n        \"opacity\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Opacity\"])},\n        \"contrast\": {\n          \"hint\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Contrast ratio is \", _interpolate(_named(\"ratio\")), \", it \", _interpolate(_named(\"level\")), \" \", _interpolate(_named(\"context\"))])},\n          \"level\": {\n            \"aa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AA guideline (minimal)\"])},\n            \"aaa\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"meets Level AAA guideline (recommended)\"])},\n            \"bad\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"doesn't meet any accessibility guidelines\"])}\n          },\n          \"context\": {\n            \"18pt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for large (18pt+) text\"])},\n            \"text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"for text\"])}\n          }\n        }\n      },\n      \"common_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common\"])},\n        \"main\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Common colors\"])},\n        \"foreground_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"See \\\"Advanced\\\" tab for more detailed control\"])},\n        \"rgbo\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons, accents, badges\"])}\n      },\n      \"advanced_colors\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Advanced\"])},\n        \"alert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Alert background\"])},\n        \"alert_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Error\"])},\n        \"alert_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Warning\"])},\n        \"alert_neutral\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Neutral\"])},\n        \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Posts/User bios\"])},\n        \"badge\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Badge background\"])},\n        \"popover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tooltips, menus, popovers\"])},\n        \"badge_notification\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Notification\"])},\n        \"panel_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n        \"top_bar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n        \"borders\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Borders\"])},\n        \"buttons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Buttons\"])},\n        \"inputs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n        \"faint_text\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Faded text\"])},\n        \"underlay\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Underlay\"])},\n        \"wallpaper\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Wallpaper\"])},\n        \"poll\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Poll graph\"])},\n        \"icons\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Icons\"])},\n        \"highlight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Highlighted elements\"])},\n        \"pressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pressed\"])},\n        \"selectedPost\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected post\"])},\n        \"selectedMenu\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Selected menu item\"])},\n        \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabled\"])},\n        \"toggled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Toggled\"])},\n        \"tabs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Tabs\"])},\n        \"chat\": {\n          \"incoming\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Incoming\"])},\n          \"outgoing\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Outgoing\"])},\n          \"border\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Border\"])}\n        }\n      },\n      \"radii\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Roundness\"])}\n      },\n      \"shadows\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadow and lighting\"])},\n        \"component\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Component\"])},\n        \"override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n        \"shadow_id\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Shadow #\", _interpolate(_named(\"value\"))])},\n        \"blur\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blur\"])},\n        \"spread\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Spread\"])},\n        \"inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Inset\"])},\n        \"hintV3\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"For shadows you can also use the \", _interpolate(_list(0)), \" notation to use other color slot.\"])},\n        \"filter_hint\": {\n          \"always_drop_shadow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Warning, this shadow always uses \", _interpolate(_list(0)), \" when browser supports it.\"])},\n          \"drop_shadow_syntax\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" does not support \", _interpolate(_list(1)), \" parameter and \", _interpolate(_list(2)), \" keyword.\"])},\n          \"avatar_inset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that combining both inset and non-inset shadows on avatars might give unexpected results with transparent avatars.\"])},\n          \"spread_zero\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shadows with spread > 0 will appear as if it was set to zero\"])},\n          \"inset_classic\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Inset shadows will be using \", _interpolate(_list(0))])}\n        },\n        \"components\": {\n          \"panel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel\"])},\n          \"panelHeader\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header\"])},\n          \"topBar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar\"])},\n          \"avatar\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in profile view)\"])},\n          \"avatarStatus\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User avatar (in post display)\"])},\n          \"popup\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Popups and tooltips\"])},\n          \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n          \"buttonHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (hover)\"])},\n          \"buttonPressed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed)\"])},\n          \"buttonPressedHover\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button (pressed+hover)\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input field\"])}\n        }\n      },\n      \"fonts\": {\n        \"_tab_label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fonts\"])},\n        \"help\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font to use for elements of UI. For \\\"custom\\\" you have to enter exact font name as it appears in system.\"])},\n        \"components\": {\n          \"interface\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface\"])},\n          \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Input fields\"])},\n          \"post\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post text\"])},\n          \"postCode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced text in a post (rich text)\"])}\n        },\n        \"family\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Font name\"])},\n        \"size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Size (in px)\"])},\n        \"weight\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Weight (boldness)\"])},\n        \"custom\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Custom\"])}\n      },\n      \"preview\": {\n        \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\n        \"content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Content\"])},\n        \"error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Example error\"])},\n        \"button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Button\"])},\n        \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"A bunch of more \", _interpolate(_list(0)), \" and \", _interpolate(_list(1))])},\n        \"mono\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"content\"])},\n        \"input\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Just landed in L.A.\"])},\n        \"faint_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"helpful manual\"])},\n        \"fine_print\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Read our \", _interpolate(_list(0)), \" to learn nothing useful!\"])},\n        \"header_faint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This is fine\"])},\n        \"checkbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"I have skimmed over terms and conditions\"])},\n        \"link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a nice lil' link\"])}\n      }\n    },\n    \"version\": {\n      \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Version\"])},\n      \"backend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Backend version\"])},\n      \"frontend_version\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Frontend version\"])}\n    }\n  },\n  \"time\": {\n    \"unit\": {\n      \"days\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" day\"]), _normalize([_interpolate(_list(0)), \" days\"])])},\n      \"days_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"d\"])},\n      \"hours\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" hour\"]), _normalize([_interpolate(_list(0)), \" hours\"])])},\n      \"hours_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"h\"])},\n      \"minutes\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" minute\"]), _normalize([_interpolate(_list(0)), \" minutes\"])])},\n      \"minutes_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"min\"])},\n      \"months\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" month\"]), _normalize([_interpolate(_list(0)), \" months\"])])},\n      \"months_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"mo\"])},\n      \"seconds\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" second\"]), _normalize([_interpolate(_list(0)), \" seconds\"])])},\n      \"seconds_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"s\"])},\n      \"weeks\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" week\"]), _normalize([_interpolate(_list(0)), \" weeks\"])])},\n      \"weeks_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"w\"])},\n      \"years\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_list(0)), \" year\"]), _normalize([_interpolate(_list(0)), \" years\"])])},\n      \"years_short\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \"y\"])}\n    },\n    \"in_future\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"in \", _interpolate(_list(0))])},\n    \"in_past\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([_interpolate(_list(0)), \" ago\"])},\n    \"now\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"just now\"])},\n    \"now_short\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"now\"])}\n  },\n  \"timeline\": {\n    \"collapse\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse\"])},\n    \"conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Conversation\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error fetching timeline: \", _interpolate(_list(0))])},\n    \"load_older\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load older statuses\"])},\n    \"no_retweet_hint\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post is marked as followers-only or direct and cannot be repeated\"])},\n    \"repeated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeated\"])},\n    \"show_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new\"])},\n    \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload\"])},\n    \"up_to_date\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Up-to-date\"])},\n    \"no_more_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more statuses\"])},\n    \"no_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No statuses\"])},\n    \"socket_reconnected\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Realtime connection established\"])},\n    \"socket_broke\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Realtime connection lost: CloseEvent code \", _interpolate(_list(0))])},\n    \"quick_view_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick view settings\"])},\n    \"quick_filter_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quick filter settings\"])}\n  },\n  \"status\": {\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeats\"])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n    \"edit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit status\"])},\n    \"edited_at\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(last edited \", _interpolate(_named(\"time\")), \")\"])},\n    \"pin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pin on profile\"])},\n    \"unpin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpin from profile\"])},\n    \"pinned\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pinned\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n    \"unbookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unbookmark\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this status?\"])},\n    \"reply_to\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to\"])},\n    \"mentions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mentions\"])},\n    \"replies_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replies:\"])},\n    \"replies_list_with_others\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" other):\"]), _normalize([\"Replies (+\", _interpolate(_named(\"numReplies\")), \" others):\"])])},\n    \"mute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute conversation\"])},\n    \"unmute_conversation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute conversation\"])},\n    \"status_unavailable\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status unavailable\"])},\n    \"copy_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Copy link to status\"])},\n    \"external_source\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"External source\"])},\n    \"thread_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Thread muted\"])},\n    \"thread_muted_and_words\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\", has words:\"])},\n    \"show_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show full subject\"])},\n    \"hide_full_subject\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide full subject\"])},\n    \"show_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show content\"])},\n    \"hide_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide content\"])},\n    \"status_deleted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This post was deleted\"])},\n    \"nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"NSFW\"])},\n    \"expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand\"])},\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(You)\"])},\n    \"plus_more\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"+\", _interpolate(_named(\"number\")), \" more\"])},\n    \"many_attachments\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Post has \", _interpolate(_named(\"number\")), \" attachment(s)\"])},\n    \"collapse_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Collapse attachments\"])},\n    \"show_all_attachments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show all attachments\"])},\n    \"show_attachment_in_modal\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in media modal\"])},\n    \"show_attachment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview description (open attachment for full description)\"])},\n    \"hide_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide attachment\"])},\n    \"remove_attachment\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove attachment\"])},\n    \"attachment_stop_flash\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Stop Flash player\"])},\n    \"move_up\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment left\"])},\n    \"move_down\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shift attachment right\"])},\n    \"open_gallery\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Open gallery\"])},\n    \"thread_hide\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide this thread\"])},\n    \"thread_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show this thread\"])},\n    \"thread_show_full\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" status in total, max depth \", _interpolate(_named(\"depth\")), \")\"]), _normalize([\"Show everything under this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total, max depth \", _interpolate(_named(\"depth\")), \")\"])])},\n    \"thread_show_full_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"thread_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" status in total)\"]), _normalize([\"See the remaining part of this thread (\", _interpolate(_named(\"numStatus\")), \" statuses in total)\"])])},\n    \"thread_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"ancestor_follow\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other reply under this status\"]), _normalize([\"See \", _interpolate(_named(\"numReplies\")), \" other replies under this status\"])])},\n    \"ancestor_follow_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation_with_icon\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"icon\")), \" \", _interpolate(_named(\"text\"))])},\n    \"show_all_conversation\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other status)\"]), _normalize([\"Show full conversation (\", _interpolate(_named(\"numStatus\")), \" other statuses)\"])])},\n    \"show_only_conversation_under_this\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Only show replies to this status\"])},\n    \"status_history\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Status history\"])}\n  },\n  \"user_card\": {\n    \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n    \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n    \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n    \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n    \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n    \"edit_profile\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit profile\"])},\n    \"favorites\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorites\"])},\n    \"follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow\"])},\n    \"follow_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel request\"])},\n    \"follow_sent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Request sent!\"])},\n    \"follow_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Requesting…\"])},\n    \"follow_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n    \"followees\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following\"])},\n    \"followers\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Followers\"])},\n    \"following\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Following!\"])},\n    \"follows_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows you!\"])},\n    \"hidden\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hidden\"])},\n    \"its_you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"It's you!\"])},\n    \"media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Media\"])},\n    \"mention\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mention\"])},\n    \"message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Message\"])},\n    \"mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n    \"muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muted\"])},\n    \"per_day\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"per day\"])},\n    \"remote_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote follow\"])},\n    \"remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower\"])},\n    \"report\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Report\"])},\n    \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses\"])},\n    \"subscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscribe\"])},\n    \"unsubscribe\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsubscribe\"])},\n    \"unblock\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblock\"])},\n    \"unblock_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unblocking…\"])},\n    \"block_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocking…\"])},\n    \"unmute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmute\"])},\n    \"unmute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unmuting…\"])},\n    \"mute_progress\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting…\"])},\n    \"hide_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide repeats\"])},\n    \"show_repeats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show repeats\"])},\n    \"bot\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bot\"])},\n    \"admin_menu\": {\n      \"moderation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Moderation\"])},\n      \"grant_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Admin\"])},\n      \"revoke_admin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Admin\"])},\n      \"grant_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Grant Moderator\"])},\n      \"revoke_moderator\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revoke Moderator\"])},\n      \"activate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Activate account\"])},\n      \"deactivate_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivate account\"])},\n      \"delete_account\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete account\"])},\n      \"force_nsfw\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all posts as NSFW\"])},\n      \"strip_media\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove media from posts\"])},\n      \"force_unlisted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be unlisted\"])},\n      \"sandbox\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force posts to be followers-only\"])},\n      \"disable_remote_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user from remote instances\"])},\n      \"disable_any_subscription\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow following user at all\"])},\n      \"quarantine\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disallow user posts from federating\"])},\n      \"delete_user\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete user\"])},\n      \"delete_user_data_and_deactivate_confirmation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will permanently delete the data from this account and deactivate it. Are you absolutely sure?\"])}\n    },\n    \"highlight\": {\n      \"disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No highlight\"])},\n      \"solid\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Solid bg\"])},\n      \"striped\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Striped bg\"])},\n      \"side\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Side stripe\"])}\n    },\n    \"note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Note\"])},\n    \"note_blank\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(None)\"])},\n    \"edit_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit note\"])},\n    \"edit_note_apply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Apply\"])},\n    \"edit_note_cancel\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cancel\"])}\n  },\n  \"user_profile\": {\n    \"timeline_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User timeline\"])},\n    \"profile_does_not_exist\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, this profile does not exist.\"])},\n    \"profile_loading_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sorry, there was an error loading this profile.\"])}\n  },\n  \"user_reporting\": {\n    \"title\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Reporting \", _interpolate(_list(0))])},\n    \"add_comment_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:\"])},\n    \"additional_comments\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Additional comments\"])},\n    \"forward_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"The account is from another server. Send a copy of the report there as well?\"])},\n    \"forward_to\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Forward to \", _interpolate(_list(0))])},\n    \"submit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Submit\"])},\n    \"generic_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"An error occurred while processing your request.\"])}\n  },\n  \"who_to_follow\": {\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"who_to_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Who to follow\"])}\n  },\n  \"tool_tip\": {\n    \"media_upload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload media\"])},\n    \"repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n    \"reply\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply\"])},\n    \"favorite\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Favorite\"])},\n    \"add_reaction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add Reaction\"])},\n    \"user_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User Settings\"])},\n    \"accept_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Accept follow request\"])},\n    \"reject_follow_request\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reject follow request\"])},\n    \"bookmark\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Bookmark\"])},\n    \"toggle_expand\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to show post in full\"])},\n    \"toggle_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Expand or collapse notification to reveal muted content\"])}\n  },\n  \"upload\": {\n    \"error\": {\n      \"base\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Upload failed.\"])},\n      \"message\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Upload failed: \", _interpolate(_list(0))])},\n      \"file_too_big\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"File too big [\", _interpolate(_named(\"filesize\")), _interpolate(_named(\"filesizeunit\")), \" / \", _interpolate(_named(\"allowedsize\")), _interpolate(_named(\"allowedsizeunit\")), \"]\"])},\n      \"default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Try again later\"])}\n    },\n    \"file_size_units\": {\n      \"B\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"B\"])},\n      \"KiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KiB\"])},\n      \"MiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"MiB\"])},\n      \"GiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"GiB\"])},\n      \"TiB\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"TiB\"])}\n    }\n  },\n  \"search\": {\n    \"people\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"People\"])},\n    \"hashtags\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hashtags\"])},\n    \"person_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" person talking\"])},\n    \"people_talking\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([_interpolate(_named(\"count\")), \" people talking\"])},\n    \"no_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No results\"])},\n    \"no_more_results\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No more results\"])},\n    \"load_more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load more results\"])}\n  },\n  \"password_reset\": {\n    \"forgot_password\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Forgot password?\"])},\n    \"password_reset\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset\"])},\n    \"instruction\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter your email address or username. We will send you a link to reset your password.\"])},\n    \"placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Your email or username\"])},\n    \"check_email\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Check your email for a link to reset your password.\"])},\n    \"return_home\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Return to the home page\"])},\n    \"too_many_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You have reached the limit of attempts, try again later.\"])},\n    \"password_reset_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Password reset is disabled. Please contact your instance administrator.\"])},\n    \"password_reset_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password to log in.\"])},\n    \"password_reset_required_but_mailer_is_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You must reset your password, but password reset is disabled. Please contact your instance administrator.\"])}\n  },\n  \"chats\": {\n    \"you\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You:\"])},\n    \"message_user\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Message \", _interpolate(_named(\"nickname\"))])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n    \"chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Chats\"])},\n    \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New Chat\"])},\n    \"empty_message_error\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Cannot post empty message\"])},\n    \"more\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More\"])},\n    \"delete_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to delete this message?\"])},\n    \"error_loading_chat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when loading the chat.\"])},\n    \"error_sending_message\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Something went wrong when sending the message.\"])},\n    \"empty_chat_list_placeholder\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"You don't have any chats yet. Start a new chat!\"])}\n  },\n  \"lists\": {\n    \"lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Lists\"])},\n    \"new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New List\"])},\n    \"title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List title\"])},\n    \"search\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search users\"])},\n    \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create\"])},\n    \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save changes\"])},\n    \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete list\"])},\n    \"following_only\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit to Following\"])},\n    \"manage_lists\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage lists\"])},\n    \"manage_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Manage list members\"])},\n    \"add_members\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Search for more users\"])},\n    \"remove_from_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove from list\"])},\n    \"add_to_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add to list\"])},\n    \"is_in_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Already in list\"])},\n    \"editing_list\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Editing list \", _interpolate(_named(\"listTitle\"))])},\n    \"creating_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Creating new list\"])},\n    \"update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save Title\"])},\n    \"really_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Really delete list?\"])},\n    \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error manipulating lists: \", _interpolate(_list(0))])}\n  },\n  \"file_type\": {\n    \"audio\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Audio\"])},\n    \"video\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Video\"])},\n    \"image\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Image\"])},\n    \"file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"File\"])}\n  },\n  \"display_date\": {\n    \"today\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Today\"])}\n  },\n  \"update\": {\n    \"big_update_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please bear with us\"])},\n    \"big_update_content\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"We haven't had a release in a while, so things might look and feel different than what you're used to.\"])},\n    \"update_bugs\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Please report any issues and bugs on \", _interpolate(_named(\"pleromaGitlab\")), \", as we have changed a lot, and although we test thoroughly and use development versions ourselves, we may have missed some things. We welcome your feedback and suggestions on issues you might encounter, or how to improve Pleroma and Pleroma-FE.\"])},\n    \"update_bugs_gitlab\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Pleroma GitLab\"])},\n    \"update_changelog\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"For more details on what's changed, see \", _interpolate(_named(\"theFullChangelog\")), \".\"])},\n    \"update_changelog_here\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"the full changelog\"])},\n    \"art_by\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Art by \", _interpolate(_named(\"linkToArtist\"))])}\n  },\n  \"unicode_domain_indicator\": {\n    \"tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This domain contains non-ascii characters.\"])}\n  }\n}","var map = {\n\t\"./af.json\": [\n\t\t44919,\n\t\t6355\n\t],\n\t\"./am.json\": [\n\t\t53139,\n\t\t5119\n\t],\n\t\"./ar.json\": [\n\t\t44557,\n\t\t9873\n\t],\n\t\"./ar_SA.json\": [\n\t\t23450,\n\t\t7360\n\t],\n\t\"./as.json\": [\n\t\t44359,\n\t\t3377\n\t],\n\t\"./ast.json\": [\n\t\t13764,\n\t\t7569\n\t],\n\t\"./az.json\": [\n\t\t86459,\n\t\t2342\n\t],\n\t\"./be.json\": [\n\t\t50866,\n\t\t7304\n\t],\n\t\"./bg.json\": [\n\t\t26219,\n\t\t3974\n\t],\n\t\"./bn.json\": [\n\t\t69178,\n\t\t9064\n\t],\n\t\"./br.json\": [\n\t\t67871,\n\t\t6148\n\t],\n\t\"./bs.json\": [\n\t\t75340,\n\t\t8134\n\t],\n\t\"./ca.json\": [\n\t\t86914,\n\t\t4691\n\t],\n\t\"./ccp.json\": [\n\t\t73872,\n\t\t1162\n\t],\n\t\"./ceb.json\": [\n\t\t64478,\n\t\t9790\n\t],\n\t\"./chr.json\": [\n\t\t61017,\n\t\t6869\n\t],\n\t\"./ckb.json\": [\n\t\t56412,\n\t\t2656\n\t],\n\t\"./cs.json\": [\n\t\t8888,\n\t\t4710\n\t],\n\t\"./cy.json\": [\n\t\t25392,\n\t\t6272\n\t],\n\t\"./da.json\": [\n\t\t35042,\n\t\t1596\n\t],\n\t\"./de.json\": [\n\t\t35169,\n\t\t6226\n\t],\n\t\"./de_CH.json\": [\n\t\t28246,\n\t\t7164\n\t],\n\t\"./doi.json\": [\n\t\t59784,\n\t\t4209\n\t],\n\t\"./dsb.json\": [\n\t\t60634,\n\t\t1790\n\t],\n\t\"./el.json\": [\n\t\t98338,\n\t\t7879\n\t],\n\t\"./en.json\": [\n\t\t74990,\n\t\t5728\n\t],\n\t\"./en_001.json\": [\n\t\t62736,\n\t\t577\n\t],\n\t\"./en_AU.json\": [\n\t\t2597,\n\t\t9360\n\t],\n\t\"./en_CA.json\": [\n\t\t1516,\n\t\t4879\n\t],\n\t\"./en_GB.json\": [\n\t\t84830,\n\t\t50\n\t],\n\t\"./en_IN.json\": [\n\t\t71809,\n\t\t8988\n\t],\n\t\"./es.json\": [\n\t\t61148,\n\t\t6831\n\t],\n\t\"./es_419.json\": [\n\t\t25696,\n\t\t8873\n\t],\n\t\"./es_MX.json\": [\n\t\t11915,\n\t\t2699\n\t],\n\t\"./es_US.json\": [\n\t\t87826,\n\t\t3313\n\t],\n\t\"./et.json\": [\n\t\t66641,\n\t\t3276\n\t],\n\t\"./eu.json\": [\n\t\t6541,\n\t\t2992\n\t],\n\t\"./fa.json\": [\n\t\t43305,\n\t\t5521\n\t],\n\t\"./fi.json\": [\n\t\t40752,\n\t\t420\n\t],\n\t\"./fil.json\": [\n\t\t26843,\n\t\t1236\n\t],\n\t\"./fo.json\": [\n\t\t43032,\n\t\t8995\n\t],\n\t\"./fr.json\": [\n\t\t80898,\n\t\t2223\n\t],\n\t\"./fr_CA.json\": [\n\t\t54515,\n\t\t1821\n\t],\n\t\"./ga.json\": [\n\t\t66572,\n\t\t4571\n\t],\n\t\"./gd.json\": [\n\t\t9185,\n\t\t6116\n\t],\n\t\"./gl.json\": [\n\t\t23840,\n\t\t6126\n\t],\n\t\"./gu.json\": [\n\t\t85811,\n\t\t7261\n\t],\n\t\"./ha.json\": [\n\t\t91566,\n\t\t227\n\t],\n\t\"./ha_NE.json\": [\n\t\t3400,\n\t\t5304\n\t],\n\t\"./he.json\": [\n\t\t26260,\n\t\t5548\n\t],\n\t\"./hi.json\": [\n\t\t18136,\n\t\t5968\n\t],\n\t\"./hi_Latn.json\": [\n\t\t95638,\n\t\t3056\n\t],\n\t\"./hr.json\": [\n\t\t77435,\n\t\t2861\n\t],\n\t\"./hsb.json\": [\n\t\t15758,\n\t\t8015\n\t],\n\t\"./hu.json\": [\n\t\t2727,\n\t\t4902\n\t],\n\t\"./hy.json\": [\n\t\t8397,\n\t\t6344\n\t],\n\t\"./ia.json\": [\n\t\t49796,\n\t\t6936\n\t],\n\t\"./id.json\": [\n\t\t56635,\n\t\t9465\n\t],\n\t\"./ig.json\": [\n\t\t26406,\n\t\t9895\n\t],\n\t\"./is.json\": [\n\t\t51391,\n\t\t7300\n\t],\n\t\"./it.json\": [\n\t\t54879,\n\t\t8970\n\t],\n\t\"./ja.json\": [\n\t\t2971,\n\t\t1290\n\t],\n\t\"./jv.json\": [\n\t\t18644,\n\t\t2479\n\t],\n\t\"./ka.json\": [\n\t\t71255,\n\t\t6068\n\t],\n\t\"./kab.json\": [\n\t\t92892,\n\t\t9780\n\t],\n\t\"./kk.json\": [\n\t\t46419,\n\t\t2873\n\t],\n\t\"./kl.json\": [\n\t\t2227,\n\t\t2397\n\t],\n\t\"./km.json\": [\n\t\t65729,\n\t\t1404\n\t],\n\t\"./kn.json\": [\n\t\t65611,\n\t\t278\n\t],\n\t\"./ko.json\": [\n\t\t67080,\n\t\t2966\n\t],\n\t\"./kok.json\": [\n\t\t47209,\n\t\t2599\n\t],\n\t\"./ku.json\": [\n\t\t18738,\n\t\t2883\n\t],\n\t\"./ky.json\": [\n\t\t89690,\n\t\t4785\n\t],\n\t\"./lb.json\": [\n\t\t3929,\n\t\t4770\n\t],\n\t\"./lo.json\": [\n\t\t19778,\n\t\t7464\n\t],\n\t\"./lt.json\": [\n\t\t41683,\n\t\t7169\n\t],\n\t\"./lv.json\": [\n\t\t54873,\n\t\t8898\n\t],\n\t\"./mai.json\": [\n\t\t11781,\n\t\t1613\n\t],\n\t\"./mi.json\": [\n\t\t11569,\n\t\t6701\n\t],\n\t\"./mk.json\": [\n\t\t67589,\n\t\t9921\n\t],\n\t\"./ml.json\": [\n\t\t24415,\n\t\t2685\n\t],\n\t\"./mn.json\": [\n\t\t50512,\n\t\t4718\n\t],\n\t\"./mni.json\": [\n\t\t81597,\n\t\t5401\n\t],\n\t\"./mr.json\": [\n\t\t97747,\n\t\t1911\n\t],\n\t\"./ms.json\": [\n\t\t81588,\n\t\t9924\n\t],\n\t\"./mt.json\": [\n\t\t25081,\n\t\t9399\n\t],\n\t\"./my.json\": [\n\t\t8608,\n\t\t6790\n\t],\n\t\"./ne.json\": [\n\t\t8572,\n\t\t9377\n\t],\n\t\"./nl.json\": [\n\t\t52355,\n\t\t6773\n\t],\n\t\"./nn.json\": [\n\t\t52874,\n\t\t9414\n\t],\n\t\"./no.json\": [\n\t\t48005,\n\t\t9979\n\t],\n\t\"./or.json\": [\n\t\t26728,\n\t\t1012\n\t],\n\t\"./pa.json\": [\n\t\t15042,\n\t\t6946\n\t],\n\t\"./pa_Arab.json\": [\n\t\t43578,\n\t\t9994\n\t],\n\t\"./pcm.json\": [\n\t\t91163,\n\t\t5104\n\t],\n\t\"./pl.json\": [\n\t\t61335,\n\t\t1095\n\t],\n\t\"./ps.json\": [\n\t\t51828,\n\t\t678\n\t],\n\t\"./pt.json\": [\n\t\t38543,\n\t\t5041\n\t],\n\t\"./pt_PT.json\": [\n\t\t8063,\n\t\t1546\n\t],\n\t\"./qu.json\": [\n\t\t15821,\n\t\t8031\n\t],\n\t\"./rm.json\": [\n\t\t5014,\n\t\t5887\n\t],\n\t\"./ro.json\": [\n\t\t34064,\n\t\t9864\n\t],\n\t\"./ru.json\": [\n\t\t95222,\n\t\t8395\n\t],\n\t\"./rw.json\": [\n\t\t12710,\n\t\t346\n\t],\n\t\"./sa.json\": [\n\t\t69343,\n\t\t2243\n\t],\n\t\"./sat.json\": [\n\t\t51243,\n\t\t7855\n\t],\n\t\"./sc.json\": [\n\t\t1319,\n\t\t2874\n\t],\n\t\"./sd.json\": [\n\t\t67728,\n\t\t6826\n\t],\n\t\"./si.json\": [\n\t\t5044,\n\t\t4354\n\t],\n\t\"./sk.json\": [\n\t\t45626,\n\t\t2350\n\t],\n\t\"./sl.json\": [\n\t\t76091,\n\t\t1553\n\t],\n\t\"./so.json\": [\n\t\t93761,\n\t\t625\n\t],\n\t\"./sq.json\": [\n\t\t1230,\n\t\t4368\n\t],\n\t\"./sr.json\": [\n\t\t60445,\n\t\t3887\n\t],\n\t\"./sr_Cyrl_BA.json\": [\n\t\t38940,\n\t\t6060\n\t],\n\t\"./sr_Latn.json\": [\n\t\t21650,\n\t\t8681\n\t],\n\t\"./sr_Latn_BA.json\": [\n\t\t78328,\n\t\t5115\n\t],\n\t\"./su.json\": [\n\t\t54395,\n\t\t1959\n\t],\n\t\"./sv.json\": [\n\t\t3418,\n\t\t3241\n\t],\n\t\"./sw.json\": [\n\t\t11958,\n\t\t7585\n\t],\n\t\"./sw_KE.json\": [\n\t\t35001,\n\t\t3994\n\t],\n\t\"./ta.json\": [\n\t\t92930,\n\t\t7897\n\t],\n\t\"./te.json\": [\n\t\t8748,\n\t\t4786\n\t],\n\t\"./tg.json\": [\n\t\t20999,\n\t\t313\n\t],\n\t\"./th.json\": [\n\t\t23900,\n\t\t3951\n\t],\n\t\"./ti.json\": [\n\t\t368,\n\t\t3568\n\t],\n\t\"./tk.json\": [\n\t\t88770,\n\t\t1780\n\t],\n\t\"./to.json\": [\n\t\t95781,\n\t\t1584\n\t],\n\t\"./tr.json\": [\n\t\t92619,\n\t\t9978\n\t],\n\t\"./tt.json\": [\n\t\t87782,\n\t\t2569\n\t],\n\t\"./ug.json\": [\n\t\t19005,\n\t\t9757\n\t],\n\t\"./uk.json\": [\n\t\t82057,\n\t\t9871\n\t],\n\t\"./ur.json\": [\n\t\t13889,\n\t\t6797\n\t],\n\t\"./uz.json\": [\n\t\t45108,\n\t\t1056\n\t],\n\t\"./vi.json\": [\n\t\t97099,\n\t\t5224\n\t],\n\t\"./wo.json\": [\n\t\t9923,\n\t\t7303\n\t],\n\t\"./xh.json\": [\n\t\t29064,\n\t\t786\n\t],\n\t\"./yo.json\": [\n\t\t11971,\n\t\t8732\n\t],\n\t\"./yo_BJ.json\": [\n\t\t64533,\n\t\t9926\n\t],\n\t\"./yue.json\": [\n\t\t40648,\n\t\t1452\n\t],\n\t\"./yue_Hans.json\": [\n\t\t24800,\n\t\t4424\n\t],\n\t\"./zh.json\": [\n\t\t34626,\n\t\t457\n\t],\n\t\"./zh_Hant.json\": [\n\t\t82560,\n\t\t2767\n\t],\n\t\"./zh_Hant_HK.json\": [\n\t\t47677,\n\t\t1044\n\t],\n\t\"./zu.json\": [\n\t\t73784,\n\t\t9319\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 3 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 1395;\nmodule.exports = webpackAsyncContext;","/**\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 *   (getters.standardEmojiList + state.instance.customEmoji)\n * data.users - optional, an array of all known users\n * updateUsersList - optional, a function to search and append to users\n *\n * Depending on data present one or both (or none) can be present, so if field\n * doesn't support user linking you can just provide only emoji.\n */\n\nexport default data => {\n  const emojiCurry = suggestEmoji(data.emoji)\n  const usersCurry = data.store && suggestUsers(data.store)\n  return (input, nameKeywordLocalizer) => {\n    const firstChar = input[0]\n    if (firstChar === ':' && data.emoji) {\n      return emojiCurry(input, nameKeywordLocalizer)\n    }\n    if (firstChar === '@' && usersCurry) {\n      return usersCurry(input)\n    }\n    return []\n  }\n}\n\nexport const suggestEmoji = emojis => (input, nameKeywordLocalizer) => {\n  const noPrefix = input.toLowerCase().substr(1)\n  return emojis\n    .map(emoji => ({ ...emoji, ...nameKeywordLocalizer(emoji) }))\n    .filter((emoji) => (emoji.names.concat(emoji.keywords)).filter(kw => kw.toLowerCase().match(noPrefix)).length)\n    .map(k => {\n      let score = 0\n\n      // An exact match always wins\n      score += Math.max(...k.names.map(name => name.toLowerCase() === noPrefix ? 200 : 0), 0)\n\n      // Prioritize custom emoji a lot\n      score += k.imageUrl ? 100 : 0\n\n      // Prioritize prefix matches somewhat\n      score += Math.max(...k.names.map(kw => kw.toLowerCase().startsWith(noPrefix) ? 10 : 0), 0)\n\n      // Sort by length\n      score -= k.displayText.length\n\n      k.score = score\n      return k\n    })\n    .sort((a, b) => {\n      // Break ties alphabetically\n      const alphabetically = a.displayText > b.displayText ? 0.5 : -0.5\n\n      return b.score - a.score + alphabetically\n    })\n}\n\nexport const suggestUsers = ({ dispatch, state }) => {\n  // Keep some persistent values in closure, most importantly for the\n  // custom debounce to work. Lodash debounce does not return a promise.\n  let suggestions = []\n  let previousQuery = ''\n  let timeout = null\n  let cancelUserSearch = null\n\n  const userSearch = (query) => dispatch('searchUsers', { query })\n  const debounceUserSearch = (query) => {\n    cancelUserSearch && cancelUserSearch()\n    return new Promise((resolve, reject) => {\n      timeout = setTimeout(() => {\n        userSearch(query).then(resolve).catch(reject)\n      }, 300)\n      cancelUserSearch = () => {\n        clearTimeout(timeout)\n        resolve([])\n      }\n    })\n  }\n\n  return async input => {\n    const noPrefix = input.toLowerCase().substr(1)\n    if (previousQuery === noPrefix) return suggestions\n\n    suggestions = []\n    previousQuery = noPrefix\n    // Fetch more and wait, don't fetch if there's the 2nd @ because\n    // the backend user search can't deal with it.\n    // Reference semantics make it so that we get the updated data after\n    // the await.\n    if (!noPrefix.includes('@')) {\n      await debounceUserSearch(noPrefix)\n    }\n\n    const newSuggestions = state.users.users.filter(\n      user =>\n        user.screen_name.toLowerCase().startsWith(noPrefix) ||\n        user.name.toLowerCase().startsWith(noPrefix)\n    ).slice(0, 20).sort((a, b) => {\n      let aScore = 0\n      let bScore = 0\n\n      // Matches on screen name (i.e. user@instance) makes a priority\n      aScore += a.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n      bScore += b.screen_name.toLowerCase().startsWith(noPrefix) ? 2 : 0\n\n      // Matches on name takes second priority\n      aScore += a.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n      bScore += b.name.toLowerCase().startsWith(noPrefix) ? 1 : 0\n\n      const diff = (bScore - aScore) * 10\n\n      // Then sort alphabetically\n      const nameAlphabetically = a.name > b.name ? 1 : -1\n      const screenNameAlphabetically = a.screen_name > b.screen_name ? 1 : -1\n\n      return diff + nameAlphabetically + screenNameAlphabetically\n      /* eslint-disable camelcase */\n    }).map((user) => ({\n      user,\n      displayText: user.screen_name_ui,\n      detailText: user.name,\n      imageUrl: user.profile_image_url_original,\n      replacement: '@' + user.screen_name + ' '\n    }))\n    /* eslint-enable camelcase */\n\n    suggestions = newSuggestions || []\n    return suggestions\n  }\n}\n","/**\n * Extract tag name from tag opener/closer.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {String} - tagname, i.e. \"div\"\n */\nexport const getTagName = (tag) => {\n  const result = /(?:<\\/(\\w+)>|<(\\w+)\\s?.*?\\/?>)/gi.exec(tag)\n  return result && (result[1] || result[2])\n}\n\n/**\n * Extract attributes from tag opener.\n *\n * @param {String} tag - tag string, i.e. '<a href=\"...\">'\n * @return {Object} - map of attributes key = attribute name, value = attribute value\n *   attributes without values represented as boolean true\n */\nexport const getAttrs = (tag, filter) => {\n  const innertag = tag\n    .substring(1, tag.length - 1)\n    .replace(new RegExp('^' + getTagName(tag)), '')\n    .replace(/\\/?$/, '')\n    .trim()\n  const attrs = Array.from(innertag.matchAll(/([a-z0-9-]+)(?:=(\"[^\"]+?\"|'[^']+?'))?/gi))\n    .map(([trash, key, value]) => [key, value])\n    .map(([k, v]) => {\n      if (!v) return [k, true]\n      return [k, v.substring(1, v.length - 1)]\n    })\n  const defaultFilter = ([k, v]) => {\n    const attrKey = k.toLowerCase()\n    if (attrKey === 'style') return false\n    if (attrKey === 'class') {\n      return v === 'greentext' || v === 'cyantext'\n    }\n    return true\n  }\n  return Object.fromEntries(attrs.filter(filter || defaultFilter))\n}\n\n/**\n * Finds shortcodes in text\n *\n * @param {String} text - original text to find emojis in\n * @param {{ url: String, shortcode: Sring }[]} emoji - list of shortcodes to find\n * @param {Function} processor - function to call on each encountered emoji,\n *   function is passed single object containing matching emoji ({ url, shortcode })\n *   return value will be inserted into resulting array instead of :shortcode:\n * @return {Array} resulting array with non-emoji parts of text and whatever {processor}\n *   returned for emoji\n */\nexport const processTextForEmoji = (text, emojis, processor) => {\n  const buffer = []\n  let textBuffer = ''\n  for (let i = 0; i < text.length; i++) {\n    const char = text[i]\n    if (char === ':') {\n      const next = text.slice(i + 1)\n      let found = false\n      for (const emoji of emojis) {\n        if (next.slice(0, emoji.shortcode.length + 1) === (emoji.shortcode + ':')) {\n          found = emoji\n          break\n        }\n      }\n      if (found) {\n        buffer.push(textBuffer)\n        textBuffer = ''\n        buffer.push(processor(found))\n        i += found.shortcode.length + 1\n      } else {\n        textBuffer += char\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (textBuffer) buffer.push(textBuffer)\n  return buffer\n}\n","import { getTagName } from './utility.service.js'\n\n/**\n * This is a tiny purpose-built HTML parser/processor. This basically detects\n * any type of visual newline and converts entire HTML into a array structure.\n *\n * Text nodes are represented as object with single property - text - containing\n * the visual line. Intended usage is to process the array with .map() in which\n * map function returns a string and resulting array can be converted back to html\n * with a .join('').\n *\n * Generally this isn't very useful except for when you really need to either\n * modify visual lines (greentext i.e. simple quoting) or do something with\n * first/last line.\n *\n * known issue: doesn't handle CDATA so nested CDATA might not work well\n *\n * @param {Object} input - input data\n * @return {(string|{ text: string })[]} processed html in form of a list.\n */\nexport const convertHtmlToLines = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // Block-level element (they make a visual line)\n  // https://developer.mozilla.org/en-US/docs/Web/HTML/Block-level_elements\n  const blockElements = new Set([\n    'address', 'article', 'aside', 'blockquote', 'details', 'dialog', 'dd',\n    'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form',\n    'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main',\n    'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'\n  ])\n  // br is very weird in a way that it's technically not block-level, it's\n  // essentially converted to a \\n (or \\r\\n). There's also wbr but it doesn't\n  // guarantee linebreak, only suggest it.\n  const linebreakElements = new Set(['br'])\n\n  const visualLineElements = new Set([\n    ...blockElements.values(),\n    ...linebreakElements.values()\n  ])\n\n  // All block-level elements that aren't empty elements, i.e. not <hr>\n  const nonEmptyElements = new Set(visualLineElements)\n  // Difference\n  for (const elem of emptyElements) {\n    nonEmptyElements.delete(elem)\n  }\n\n  // All elements that we are recognizing\n  const allElements = new Set([\n    ...nonEmptyElements.values(),\n    ...emptyElements.values()\n  ])\n\n  const 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  const flush = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer.trim().length > 0) {\n      buffer.push({ level: [...level], text: textBuffer })\n    } else {\n      buffer.push(textBuffer)\n    }\n    textBuffer = ''\n  }\n\n  const handleBr = (tag) => { // handles single newlines/linebreaks/selfclosing\n    flush()\n    buffer.push(tag)\n  }\n\n  const handleOpen = (tag) => { // handles opening tags\n    flush()\n    buffer.push(tag)\n    level.unshift(getTagName(tag))\n  }\n\n  const handleClose = (tag) => { // handles closing tags\n    if (level[0] === getTagName(tag)) {\n      flush()\n      buffer.push(tag)\n      level.shift()\n    } else { // Broken case\n      textBuffer += tag\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 (allElements.has(tagName)) {\n        if (linebreakElements.has(tagName)) {\n          handleBr(tagFull)\n        } else if (nonEmptyElements.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        } else {\n          textBuffer += tagFull\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","<template>\n  <span\n    class=\"HashtagLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      @click.prevent=\"onClick\"\n      v-html=\"content\"\n    />\n    <!-- eslint-enable vue/no-v-html -->\n  </span>\n</template>\n\n<script src=\"./hashtag_link.js\" />\n\n<style lang=\"scss\" src=\"./hashtag_link.scss\" />\n","import { extractTagFromUrl } from 'src/services/matcher/matcher.service.js'\n\nconst HashtagLink = {\n  name: 'HashtagLink',\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    tag: {\n      required: false,\n      type: String,\n      default: ''\n    }\n  },\n  methods: {\n    onClick () {\n      const tag = this.tag || extractTagFromUrl(this.url)\n      if (tag) {\n        const link = this.generateTagLink(tag)\n        this.$router.push(link)\n      } else {\n        window.open(this.url, '_blank')\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default HashtagLink\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","import { render } from \"./hashtag_link.vue?vue&type=template&id=76a14451\"\nimport script from \"./hashtag_link.js?vue&type=script&lang=js\"\nexport * from \"./hashtag_link.js?vue&type=script&lang=js\"\n\nimport \"./hashtag_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unescape, flattenDeep } from 'lodash'\nimport { getTagName, processTextForEmoji, getAttrs } from 'src/services/html_converter/utility.service.js'\nimport { convertHtmlToTree } from 'src/services/html_converter/html_tree_converter.service.js'\nimport { convertHtmlToLines } from 'src/services/html_converter/html_line_converter.service.js'\nimport StillImage from 'src/components/still-image/still-image.vue'\nimport MentionsLine, { MENTIONS_LIMIT } from 'src/components/mentions_line/mentions_line.vue'\nimport HashtagLink from 'src/components/hashtag_link/hashtag_link.vue'\n\nimport './rich_content.scss'\n\n/**\n * RichContent, The Über-powered component for rendering Post HTML.\n *\n * This takes post HTML and does multiple things to it:\n * - Groups all mentions into <MentionsLine>, this affects all mentions regardles\n *   of where they are (beginning/middle/end), even single mentions are converted\n *   to a <MentionsLine> containing single <MentionLink>.\n * - Replaces emoji shortcodes with <StillImage>'d images.\n *\n * There are two problems with this component's architecture:\n * 1. Parsing HTML and rendering are inseparable. Attempts to separate the two\n *    proven to be a massive overcomplication due to amount of things done here.\n * 2. We need to output both render and some extra data, which seems to be imp-\n *    possible in vue. Current solution is to emit 'parseReady' event when parsing\n *    is done within render() function.\n *\n * Apart from that one small hiccup with emit in render this _should_ be vue3-ready\n */\nexport default {\n  name: 'RichContent',\n  components: {\n    MentionsLine,\n    HashtagLink\n  },\n  props: {\n    // Original html content\n    html: {\n      required: true,\n      type: String\n    },\n    attentions: {\n      required: false,\n      default: () => []\n    },\n    // Emoji object, as in status.emojis, note the \"s\" at the end...\n    emoji: {\n      required: true,\n      type: Array\n    },\n    // Whether to handle links or not (posts: yes, everything else: no)\n    handleLinks: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    // Meme arrows\n    greentext: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  // NEVER EVER TOUCH DATA INSIDE RENDER\n  render () {\n    // Pre-process HTML\n    const { newHtml: html } = preProcessPerLine(this.html, this.greentext)\n    let currentMentions = null // Current chain of mentions, we group all mentions together\n    // This is used to recover spacing removed when parsing mentions\n    let lastSpacing = ''\n\n    const lastTags = [] // Tags that appear at the end of post body\n    const writtenMentions = [] // All mentions that appear in post body\n    const invisibleMentions = [] // All mentions that go beyond the limiter (see MentionsLine)\n    // to collapse too many mentions in a row\n    const writtenTags = [] // All tags that appear in post body\n    // unique index for vue \"tag\" property\n    let mentionIndex = 0\n    let tagsIndex = 0\n\n    const renderImage = (tag) => {\n      return <StillImage\n        {...getAttrs(tag)}\n        class=\"img\"\n      />\n    }\n\n    const renderHashtag = (attrs, children, encounteredTextReverse) => {\n      const { index, ...linkData } = getLinkData(attrs, children, tagsIndex++)\n      writtenTags.push(linkData)\n      if (!encounteredTextReverse) {\n        lastTags.push(linkData)\n      }\n      const { url, tag, content } = linkData\n      return <HashtagLink url={url} tag={tag} content={content}/>\n    }\n\n    const renderMention = (attrs, children) => {\n      const linkData = getLinkData(attrs, children, mentionIndex++)\n      linkData.notifying = this.attentions.some(a => a.statusnet_profile_url === linkData.url)\n      writtenMentions.push(linkData)\n      if (currentMentions === null) {\n        currentMentions = []\n      }\n      currentMentions.push(linkData)\n      if (currentMentions.length > MENTIONS_LIMIT) {\n        invisibleMentions.push(linkData)\n      }\n      if (currentMentions.length === 1) {\n        return <MentionsLine mentions={ currentMentions } />\n      } else {\n        return ''\n      }\n    }\n\n    // Processor to use with html_tree_converter\n    const processItem = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (item.includes('\\n')) {\n          currentMentions = null\n        }\n        if (emptyText) {\n          // don't include spaces when processing mentions - we'll include them\n          // in MentionsLine\n          lastSpacing = item\n          // Don't remove last space in a container (fixes poast mentions)\n          return (index !== array.length - 1) && (currentMentions !== null) ? item.trim() : item\n        }\n\n        currentMentions = null\n        if (item.includes(':')) {\n          item = ['', processTextForEmoji(\n            item,\n            this.emoji,\n            ({ shortcode, url }) => {\n              return <StillImage\n                class=\"emoji img\"\n                src={url}\n                title={`:${shortcode}:`}\n                alt={`:${shortcode}:`}\n              />\n            }\n          )]\n        }\n        return item\n      }\n\n      // Handle tag nodes\n      if (Array.isArray(item)) {\n        const [opener, children, closer] = item\n        const Tag = getTagName(opener)\n        const fullAttrs = getAttrs(opener, () => true)\n        const attrs = getAttrs(opener)\n        const previouslyMentions = currentMentions !== null\n        /* During grouping of mentions we trim all the empty text elements\n         * This padding is added to recover last space removed in case\n         * we have a tag right next to mentions\n         */\n        const mentionsLinePadding =\n              // Padding is only needed if we just finished parsing mentions\n              previouslyMentions &&\n              // Don't add padding if content is string and has padding already\n              !(children && typeof children[0] === 'string' && children[0].match(/^\\s/))\n                ? lastSpacing\n                : ''\n        switch (Tag) {\n          case 'br':\n            currentMentions = null\n            break\n          case 'img': // replace images with StillImage\n            return ['', [mentionsLinePadding, renderImage(opener)], '']\n          case 'a': // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            if (fullAttrs.class && fullAttrs.class.includes('mention')) {\n              // Handling mentions here\n              return renderMention(attrs, children)\n            } else {\n              currentMentions = null\n              break\n            }\n          case 'span':\n            if (this.handleLinks && fullAttrs.class && fullAttrs.class.includes('h-card')) {\n              return ['', children.map(processItem), '']\n            }\n        }\n\n        if (children !== undefined) {\n          return [\n            '',\n            [\n              mentionsLinePadding,\n              [opener, children.map(processItem), closer]\n            ],\n            ''\n          ]\n        } else {\n          return ['', [mentionsLinePadding, item], '']\n        }\n      }\n    }\n\n    // Processor for back direction (for finding \"last\" stuff, just easier this way)\n    let encounteredTextReverse = false\n    const processItemReverse = (item, index, array, what) => {\n      // Handle text nodes - just add emoji\n      if (typeof item === 'string') {\n        const emptyText = item.trim() === ''\n        if (emptyText) return item\n        if (!encounteredTextReverse) encounteredTextReverse = true\n        return unescape(item)\n      } else if (Array.isArray(item)) {\n        // Handle tag nodes\n        const [opener, children] = item\n        const Tag = opener === '' ? '' : getTagName(opener)\n        switch (Tag) {\n          case 'a': { // replace mentions with MentionLink\n            if (!this.handleLinks) break\n            const fullAttrs = getAttrs(opener, () => true)\n            const attrs = getAttrs(opener, () => true)\n            // should only be this\n            if (\n              (fullAttrs.class && fullAttrs.class.includes('hashtag')) || // Pleroma style\n                (fullAttrs.rel === 'tag') // Mastodon style\n            ) {\n              return renderHashtag(attrs, children, encounteredTextReverse)\n            } else {\n              attrs.target = '_blank'\n              const newChildren = [...children].reverse().map(processItemReverse).reverse()\n\n              return <a {...attrs}>\n                { newChildren }\n              </a>\n            }\n          }\n          case '':\n            return [...children].reverse().map(processItemReverse).reverse()\n        }\n\n        // Render tag as is\n        if (children !== undefined) {\n          const newChildren = Array.isArray(children)\n            ? [...children].reverse().map(processItemReverse).reverse()\n            : children\n          return <Tag {...getAttrs(opener)}>\n            { newChildren }\n          </Tag>\n        } else {\n          return <Tag/>\n        }\n      }\n      return item\n    }\n\n    const pass1 = convertHtmlToTree(html).map(processItem)\n    const pass2 = [...pass1].reverse().map(processItemReverse).reverse()\n    // DO NOT USE SLOTS they cause a re-render feedback loop here.\n    // slots updated -> rerender -> emit -> update up the tree -> rerender -> ...\n    // at least until vue3?\n    const result = <span class=\"RichContent\">\n      { pass2 }\n    </span>\n\n    const event = {\n      lastTags,\n      writtenMentions,\n      writtenTags,\n      invisibleMentions\n    }\n\n    // DO NOT MOVE TO UPDATE. BAD IDEA.\n    this.$emit('parseReady', event)\n\n    return result\n  }\n}\n\nconst getLinkData = (attrs, children, index) => {\n  const stripTags = (item) => {\n    if (typeof item === 'string') {\n      return item\n    } else {\n      return item[1].map(stripTags).join('')\n    }\n  }\n  const textContent = children.map(stripTags).join('')\n  return {\n    index,\n    url: attrs.href,\n    tag: attrs['data-tag'],\n    content: flattenDeep(children).join(''),\n    textContent\n  }\n}\n\n/** Pre-processing HTML\n *\n * Currently this does one thing:\n * - add green/cyantexting\n *\n * @param {String} html - raw HTML to process\n * @param {Boolean} greentext - whether to enable greentexting or not\n */\nexport const preProcessPerLine = (html, greentext) => {\n  const greentextHandle = new Set(['p', 'div'])\n\n  const lines = convertHtmlToLines(html)\n  const newHtml = lines.reverse().map((item, index, array) => {\n    if (!item.text) return item\n    const string = item.text\n\n    // Greentext stuff\n    if (\n      // Only if greentext is engaged\n      greentext &&\n        // Only handle p's and divs. Don't want to affect blockquotes, code etc\n        item.level.every(l => greentextHandle.has(l)) &&\n        // Only if line begins with '>' or '<'\n        (string.includes('&gt;') || string.includes('&lt;'))\n    ) {\n      const cleanedString = string.replace(/<[^>]+?>/gi, '') // remove all tags\n        .replace(/@\\w+/gi, '') // remove mentions (even failed ones)\n        .trim()\n      if (cleanedString.startsWith('&gt;')) {\n        return `<span class='greentext'>${string}</span>`\n      } else if (cleanedString.startsWith('&lt;')) {\n        return `<span class='cyantext'>${string}</span>`\n      }\n    }\n\n    return string\n  }).reverse().join('')\n\n  return { newHtml }\n}\n","import { getTagName } from './utility.service.js'\nimport { unescape } from 'lodash'\n\n/**\n * This is a not-so-tiny purpose-built HTML parser/processor. This parses html\n * and converts it into a tree structure representing tag openers/closers and\n * children.\n *\n * Structure follows this pattern: [opener, [...children], closer] except root\n * node which is just [...children]. Text nodes can only be within children and\n * are represented as strings.\n *\n * Intended use is to convert HTML structure and then recursively iterate over it\n * most likely using a map. Very useful for dynamically rendering html replacing\n * tags with JSX elements in a render function.\n *\n * known issue: doesn't handle CDATA so CDATA might not work well\n * known issue: doesn't handle HTML comments\n *\n * @param {Object} input - input data\n * @return {string} processed html\n */\nexport const convertHtmlToTree = (html = '') => {\n  // Elements that are implicitly self-closing\n  // https://developer.mozilla.org/en-US/docs/Glossary/empty_element\n  const emptyElements = new Set([\n    'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n    'keygen', 'link', 'meta', 'param', 'source', 'track', 'wbr'\n  ])\n  // TODO For future - also parse HTML5 multi-source components?\n\n  const buffer = [] // Current output buffer\n  const levels = [['', buffer]] // 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  const getCurrentBuffer = () => {\n    return levels[levels.length - 1][1]\n  }\n\n  const flushText = () => { // Processes current line buffer, adds it to output buffer and clears line buffer\n    if (textBuffer === '') return\n    getCurrentBuffer().push(textBuffer)\n    textBuffer = ''\n  }\n\n  const handleSelfClosing = (tag) => {\n    getCurrentBuffer().push([tag])\n  }\n\n  const handleOpen = (tag) => {\n    const curBuf = getCurrentBuffer()\n    const newLevel = [unescape(tag), []]\n    levels.push(newLevel)\n    curBuf.push(newLevel)\n  }\n\n  const handleClose = (tag) => {\n    const currentTag = levels[levels.length - 1]\n    if (getTagName(levels[levels.length - 1][0]) === getTagName(tag)) {\n      currentTag.push(tag)\n      levels.pop()\n    } else {\n      getCurrentBuffer().push(tag)\n    }\n  }\n\n  for (let i = 0; i < html.length; i++) {\n    const char = html[i]\n    if (char === '<' && tagBuffer === null) {\n      flushText()\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 (tagFull[1] === '/') {\n        handleClose(tagFull)\n      } else if (emptyElements.has(tagName) || tagFull[tagFull.length - 2] === '/') {\n        // self-closing\n        handleSelfClosing(tagFull)\n      } else {\n        handleOpen(tagFull)\n      }\n    } else {\n      textBuffer += char\n    }\n  }\n  if (tagBuffer) {\n    textBuffer += tagBuffer\n  }\n\n  flushText()\n  return buffer\n}\n","// eslint-disable-next-line no-unused\nimport { h, Fragment } from 'vue'\nimport { mapState } from 'vuex'\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\n\nimport './tab_switcher.scss'\n\nconst findFirstUsable = (slots) => slots.findIndex(_ => _.props)\n\nexport default {\n  name: 'TabSwitcher',\n  props: {\n    renderOnlyFocused: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    onSwitch: {\n      required: false,\n      type: Function,\n      default: undefined\n    },\n    activeTab: {\n      required: false,\n      type: String,\n      default: undefined\n    },\n    scrollableTabs: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    sideTabBar: {\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    bodyScrollLock: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      active: findFirstUsable(this.slots())\n    }\n  },\n  computed: {\n    activeIndex () {\n      // In case of controlled component\n      if (this.activeTab) {\n        return this.slots().findIndex(slot => slot && slot.props && this.activeTab === slot.props.key)\n      } else {\n        return this.active\n      }\n    },\n    isActive () {\n      return tabName => {\n        const isWanted = slot => slot.props && slot.props['data-tab-name'] === tabName\n        return this.$slots.default().findIndex(isWanted) === this.activeIndex\n      }\n    },\n    settingsModalVisible () {\n      return this.settingsModalState === 'visible'\n    },\n    ...mapState({\n      settingsModalState: state => state.interface.settingsModalState\n    })\n  },\n  beforeUpdate () {\n    const currentSlot = this.slots()[this.active]\n    if (!currentSlot.props) {\n      this.active = findFirstUsable(this.slots())\n    }\n  },\n  methods: {\n    clickTab (index) {\n      return (e) => {\n        e.preventDefault()\n        this.setTab(index)\n      }\n    },\n    // DO NOT put it to computed, it doesn't work (caching?)\n    slots () {\n      if (this.$slots.default()[0].type === Fragment) {\n        return this.$slots.default()[0].children\n      }\n      return this.$slots.default()\n    },\n    setTab (index) {\n      if (typeof this.onSwitch === 'function') {\n        this.onSwitch.call(null, this.slots()[index].key)\n      }\n      this.active = index\n      if (this.scrollableTabs) {\n        this.$refs.contents.scrollTop = 0\n      }\n    }\n  },\n  render () {\n    const tabs = this.slots()\n      .map((slot, index) => {\n        const props = slot.props\n        if (!props) return\n        const classesTab = ['tab', 'button-default']\n        const classesWrapper = ['tab-wrapper']\n        if (this.activeIndex === index) {\n          classesTab.push('active')\n          classesWrapper.push('active')\n        }\n        if (props.image) {\n          return (\n            <div class={classesWrapper.join(' ')}>\n              <button\n                disabled={props.disabled}\n                onClick={this.clickTab(index)}\n                class={classesTab.join(' ')}\n                type=\"button\"\n              >\n                <img src={props.image} title={props['image-tooltip']}/>\n                {props.label ? '' : props.label}\n              </button>\n            </div>\n          )\n        }\n        return (\n          <div class={classesWrapper.join(' ')}>\n            <button\n              disabled={props.disabled}\n              onClick={this.clickTab(index)}\n              class={classesTab.join(' ')}\n              type=\"button\"\n            >\n              {!props.icon ? '' : (<FAIcon class=\"tab-icon\" size=\"2x\" fixed-width icon={props.icon}/>)}\n              <span class=\"text\">\n                {props.label}\n              </span>\n            </button>\n          </div>\n        )\n      })\n\n    const contents = this.slots().map((slot, index) => {\n      const props = slot.props\n      if (!props) return\n      const active = this.activeIndex === index\n      const classes = [ active ? 'active' : 'hidden' ]\n      if (props.fullHeight) {\n        classes.push('full-height')\n      }\n      const renderSlot = (!this.renderOnlyFocused || active)\n        ? slot\n        : ''\n\n      return (\n        <div class={classes}>\n          {\n            this.sideTabBar\n              ? <h1 class=\"mobile-label\">{props.label}</h1>\n              : ''\n          }\n          {renderSlot}\n        </div>\n      )\n    })\n\n    return (\n      <div class={'tab-switcher ' + (this.sideTabBar ? 'side-tabs' : 'top-tabs')}>\n        <div class=\"tabs\">\n          {tabs}\n        </div>\n        <div\n          ref=\"contents\"\n          class={'contents' + (this.scrollableTabs ? ' scrollable-tabs' : '')}\n          v-body-scroll-lock={this.bodyScrollLock}\n        >\n          {contents}\n        </div>\n      </div>\n    )\n  }\n}\n","\nconst languages = [\n  'ar',\n  'ca',\n  'cs',\n  'de',\n  'eo',\n  'en',\n  'es',\n  'et',\n  'eu',\n  'fi',\n  'fr',\n  'ga',\n  'he',\n  'hu',\n  'it',\n  'ja',\n  'ja_easy',\n  'ko',\n  'nb',\n  'nl',\n  'oc',\n  'pl',\n  'pt',\n  'ro',\n  'ru',\n  'sk',\n  'te',\n  'uk',\n  'zh',\n  'zh_Hant'\n]\n\nconst specialJsonName = {\n  ja: 'ja_pedantic'\n}\n\nconst langCodeToJsonName = (code) => specialJsonName[code] || code\n\nconst langCodeToCldrName = (code) => code\n\nconst ensureFinalFallback = codes => {\n  const codeList = Array.isArray(codes) ? codes : [codes]\n  return codeList.includes('en') ? codeList : codeList.concat(['en'])\n}\n\nmodule.exports = {\n  languages,\n  langCodeToJsonName,\n  langCodeToCldrName,\n  ensureFinalFallback\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\nimport { languages, langCodeToJsonName } from './languages.js'\n\nconst hasLanguageFile = (code) => languages.includes(code)\n\nconst loadLanguageFile = (code) => {\n  return import(\n    /* webpackInclude: /\\.json$/ */\n    /* webpackChunkName: \"i18n/[request]\" */\n    `./${langCodeToJsonName(code)}.json`\n  )\n}\n\nconst messages = {\n  languages,\n  default: {\n    en: require('./en.json').default\n  },\n  setLanguage: async (i18n, language) => {\n    if (hasLanguageFile(language)) {\n      const messages = await loadLanguageFile(language)\n      i18n.setLocaleMessage(language, messages.default)\n    }\n    i18n.locale = language\n  }\n}\n\nexport default messages\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","const defaultState = {\n  settingsModalState: 'hidden',\n  settingsModalLoaded: false,\n  settingsModalTargetTab: null,\n  settings: {\n    currentSaveStateNotice: null,\n    noticeClearTimeout: null,\n    notificationPermission: null\n  },\n  browserSupport: {\n    cssFilter: window.CSS && window.CSS.supports && (\n      window.CSS.supports('filter', 'drop-shadow(0 0)') ||\n      window.CSS.supports('-webkit-filter', 'drop-shadow(0 0)')\n    )\n  },\n  layoutType: 'normal',\n  globalNotices: [],\n  layoutHeight: 0,\n  lastTimeline: null\n}\n\nconst interfaceMod = {\n  state: defaultState,\n  mutations: {\n    settingsSaved (state, { success, error }) {\n      if (success) {\n        if (state.noticeClearTimeout) {\n          clearTimeout(state.noticeClearTimeout)\n        }\n        state.settings.currentSaveStateNotice = { error: false, data: success }\n        state.settings.noticeClearTimeout = setTimeout(() => delete state.settings.currentSaveStateNotice, 2000)\n      } else {\n        state.settings.currentSaveStateNotice = { error: true, errorData: error }\n      }\n    },\n    setNotificationPermission (state, permission) {\n      state.notificationPermission = permission\n    },\n    setLayoutType (state, value) {\n      state.layoutType = value\n    },\n    closeSettingsModal (state) {\n      state.settingsModalState = 'hidden'\n    },\n    togglePeekSettingsModal (state) {\n      switch (state.settingsModalState) {\n        case 'minimized':\n          state.settingsModalState = 'visible'\n          return\n        case 'visible':\n          state.settingsModalState = 'minimized'\n          return\n        default:\n          throw new Error('Illegal minimization state of settings modal')\n      }\n    },\n    openSettingsModal (state) {\n      state.settingsModalState = 'visible'\n      if (!state.settingsModalLoaded) {\n        state.settingsModalLoaded = true\n      }\n    },\n    setSettingsModalTargetTab (state, value) {\n      state.settingsModalTargetTab = value\n    },\n    pushGlobalNotice (state, notice) {\n      state.globalNotices.push(notice)\n    },\n    removeGlobalNotice (state, notice) {\n      state.globalNotices = state.globalNotices.filter(n => n !== notice)\n    },\n    setLayoutHeight (state, value) {\n      state.layoutHeight = value\n    },\n    setLayoutWidth (state, value) {\n      state.layoutWidth = value\n    },\n    setLastTimeline (state, value) {\n      state.lastTimeline = value\n    }\n  },\n  actions: {\n    setPageTitle ({ rootState }, option = '') {\n      document.title = `${option} ${rootState.instance.name}`\n    },\n    settingsSaved ({ commit, dispatch }, { success, error }) {\n      commit('settingsSaved', { success, error })\n    },\n    setNotificationPermission ({ commit }, permission) {\n      commit('setNotificationPermission', permission)\n    },\n    closeSettingsModal ({ commit }) {\n      commit('closeSettingsModal')\n    },\n    openSettingsModal ({ commit }) {\n      commit('openSettingsModal')\n    },\n    togglePeekSettingsModal ({ commit }) {\n      commit('togglePeekSettingsModal')\n    },\n    clearSettingsModalTargetTab ({ commit }) {\n      commit('setSettingsModalTargetTab', null)\n    },\n    openSettingsModalTab ({ commit }, value) {\n      commit('setSettingsModalTargetTab', value)\n      commit('openSettingsModal')\n    },\n    pushGlobalNotice (\n      { commit, dispatch, state },\n      {\n        messageKey,\n        messageArgs = {},\n        level = 'error',\n        timeout = 0\n      }) {\n      const notice = {\n        messageKey,\n        messageArgs,\n        level\n      }\n      commit('pushGlobalNotice', notice)\n      // Adding a new element to array wraps it in a Proxy, which breaks the comparison\n      // TODO: Generate UUID or something instead or relying on !== operator?\n      const newNotice = state.globalNotices[state.globalNotices.length - 1]\n      if (timeout) {\n        setTimeout(() => dispatch('removeGlobalNotice', newNotice), timeout)\n      }\n      return newNotice\n    },\n    removeGlobalNotice ({ commit }, notice) {\n      commit('removeGlobalNotice', notice)\n    },\n    setLayoutHeight ({ commit }, value) {\n      commit('setLayoutHeight', value)\n    },\n    // value is optional, assuming it was cached prior\n    setLayoutWidth ({ commit, state, rootGetters, rootState }, value) {\n      let width = value\n      if (value !== undefined) {\n        commit('setLayoutWidth', value)\n      } else {\n        width = state.layoutWidth\n      }\n      const mobileLayout = width <= 800\n      const normalOrMobile = mobileLayout ? 'mobile' : 'normal'\n      const { thirdColumnMode } = rootGetters.mergedConfig\n      if (thirdColumnMode === 'none' || !rootState.users.currentUser) {\n        commit('setLayoutType', normalOrMobile)\n      } else {\n        const wideLayout = width >= 1300\n        commit('setLayoutType', wideLayout ? 'wide' : normalOrMobile)\n      }\n    },\n    setLastTimeline ({ commit }, value) {\n      commit('setLastTimeline', value)\n    }\n  }\n}\n\nexport default interfaceMod\n","import { getPreset, applyTheme } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION } from '../services/theme_data/theme_data.service.js'\nimport apiService from '../services/api/api.service.js'\nimport { instanceDefaultProperties } from './config.js'\nimport { langCodeToCldrName, ensureFinalFallback } from '../i18n/languages.js'\n\nconst SORTED_EMOJI_GROUP_IDS = [\n  'smileys-and-emotion',\n  'people-and-body',\n  'animals-and-nature',\n  'food-and-drink',\n  'travel-and-places',\n  'activities',\n  'objects',\n  'symbols',\n  'flags'\n]\n\nconst REGIONAL_INDICATORS = (() => {\n  const start = 0x1F1E6\n  const end = 0x1F1FF\n  const A = 'A'.codePointAt(0)\n  const res = new Array(end - start + 1)\n  for (let i = start; i <= end; ++i) {\n    const letter = String.fromCodePoint(A + i - start)\n    res[i - start] = {\n      replacement: String.fromCodePoint(i),\n      imageUrl: false,\n      displayText: 'regional_indicator_' + letter,\n      displayTextI18n: {\n        key: 'emoji.regional_indicator',\n        args: { letter }\n      }\n    }\n  }\n  return res\n})()\n\nconst REMOTE_INTERACTION_URL = '/main/ostatus'\n\nconst defaultState = {\n  // Stuff from apiConfig\n  name: 'Pleroma FE',\n  registrationOpen: true,\n  server: 'http://localhost:4040/',\n  textlimit: 5000,\n  themeData: undefined,\n  vapidPublicKey: undefined,\n\n  // Stuff from static/config.json\n  alwaysShowSubjectInput: true,\n  defaultAvatar: '/images/avi.png',\n  defaultBanner: '/images/banner.png',\n  background: '/static/aurora_borealis.jpg',\n  collapseMessageWithSubject: false,\n  greentext: false,\n  useAtIcon: false,\n  mentionLinkDisplay: 'short',\n  mentionLinkShowTooltip: true,\n  mentionLinkShowAvatar: false,\n  mentionLinkFadeDomain: true,\n  mentionLinkShowYous: false,\n  mentionLinkBoldenYou: true,\n  hideFilteredStatuses: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: false,\n  hideMutedThreads: true,\n  hideWordFilteredPosts: false,\n  hidePostStats: false,\n  hideBotIndication: false,\n  hideSitename: false,\n  hideUserStats: false,\n  muteBotStatuses: false,\n  loginMethod: 'password',\n  logo: '/static/logo.svg',\n  logoMargin: '.2em',\n  logoMask: true,\n  logoLeft: false,\n  disableUpdateNotification: false,\n  minimalScopesMode: false,\n  nsfwCensorImage: undefined,\n  postContentType: 'text/plain',\n  redirectRootLogin: '/main/friends',\n  redirectRootNoLogin: '/main/all',\n  scopeCopy: true,\n  showFeaturesPanel: true,\n  showInstanceSpecificPanel: false,\n  sidebarRight: false,\n  subjectLineBehavior: 'email',\n  theme: 'pleroma-dark',\n  virtualScrolling: true,\n  sensitiveByDefault: false,\n  conversationDisplay: 'linear',\n  conversationTreeAdvanced: false,\n  conversationOtherRepliesButton: 'below',\n  conversationTreeFadeAncestors: false,\n  maxDepthInThread: 6,\n\n  // Nasty stuff\n  customEmoji: [],\n  customEmojiFetched: false,\n  emoji: {},\n  emojiFetched: false,\n  unicodeEmojiAnnotations: {},\n  pleromaBackend: true,\n  postFormats: [],\n  restrictedNicknames: [],\n  safeDM: true,\n  knownDomains: [],\n\n  // Feature-set, apparently, not everything here is reported...\n  shoutAvailable: false,\n  pleromaChatMessagesAvailable: false,\n  gopherAvailable: false,\n  mediaProxyAvailable: false,\n  suggestionsEnabled: false,\n  suggestionsWeb: '',\n\n  // Html stuff\n  instanceSpecificPanelContent: '',\n  tos: '',\n\n  // Version Information\n  backendVersion: '',\n  frontendVersion: '',\n\n  pollsAvailable: false,\n  pollLimits: {\n    max_options: 4,\n    max_option_chars: 255,\n    min_expiration: 60,\n    max_expiration: 60 * 60 * 24\n  }\n}\n\nconst loadAnnotations = (lang) => {\n  return import(\n    /* webpackChunkName: \"emoji-annotations/[request]\" */\n    `@kazvmoe-infra/unicode-emoji-json/annotations/${langCodeToCldrName(lang)}.json`\n  )\n    .then(k => k.default)\n}\n\nconst injectAnnotations = (emoji, annotations) => {\n  const availableLangs = Object.keys(annotations)\n\n  return {\n    ...emoji,\n    annotations: availableLangs.reduce((acc, cur) => {\n      acc[cur] = annotations[cur][emoji.replacement]\n      return acc\n    }, {})\n  }\n}\n\nconst injectRegionalIndicators = groups => {\n  groups.symbols.push(...REGIONAL_INDICATORS)\n  return groups\n}\n\nconst instance = {\n  state: defaultState,\n  mutations: {\n    setInstanceOption (state, { name, value }) {\n      if (typeof value !== 'undefined') {\n        state[name] = value\n      }\n    },\n    setKnownDomains (state, domains) {\n      state.knownDomains = domains\n    },\n    setUnicodeEmojiAnnotations (state, { lang, annotations }) {\n      state.unicodeEmojiAnnotations[lang] = annotations\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    groupedCustomEmojis (state) {\n      const packsOf = emoji => {\n        return emoji.tags\n          .filter(k => k.startsWith('pack:'))\n          .map(k => k.slice(5)) // remove 'pack:' prefix\n      }\n\n      return state.customEmoji\n        .reduce((res, emoji) => {\n          packsOf(emoji).forEach(packName => {\n            const packId = `custom-${packName}`\n            if (!res[packId]) {\n              res[packId] = ({\n                id: packId,\n                text: packName,\n                image: emoji.imageUrl,\n                emojis: []\n              })\n            }\n            res[packId].emojis.push(emoji)\n          })\n          return res\n        }, {})\n    },\n    standardEmojiList (state) {\n      return SORTED_EMOJI_GROUP_IDS\n        .map(groupId => (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations)))\n        .reduce((a, b) => a.concat(b), [])\n    },\n    standardEmojiGroupList (state) {\n      return SORTED_EMOJI_GROUP_IDS.map(groupId => ({\n        id: groupId,\n        emojis: (state.emoji[groupId] || []).map(k => injectAnnotations(k, state.unicodeEmojiAnnotations))\n      }))\n    },\n    instanceDomain (state) {\n      return new URL(state.server).hostname\n    },\n    remoteInteractionLink (state) {\n      const server = state.server.endsWith('/') ? state.server.slice(0, -1) : state.server\n      const link = server + REMOTE_INTERACTION_URL\n\n      return ({ statusId, nickname }) => {\n        if (statusId) {\n          return `${link}?status_id=${statusId}`\n        } else {\n          return `${link}?nickname=${nickname}`\n        }\n      }\n    }\n  },\n  actions: {\n    setInstanceOption ({ commit, dispatch }, { name, value }) {\n      commit('setInstanceOption', { name, value })\n      switch (name) {\n        case 'name':\n          dispatch('setPageTitle')\n          break\n        case 'shoutAvailable':\n          if (value) {\n            dispatch('initializeSocket')\n          }\n          break\n        case 'theme':\n          dispatch('setTheme', value)\n          break\n      }\n    },\n    async getStaticEmoji ({ commit }) {\n      try {\n        const values = (await import(/* webpackChunkName: 'emoji' */ '../../static/emoji.json')).default\n\n        const emoji = Object.keys(values).reduce((res, groupId) => {\n          res[groupId] = values[groupId].map(e => ({\n            displayText: e.slug,\n            imageUrl: false,\n            replacement: e.emoji\n          }))\n          return res\n        }, {})\n        commit('setInstanceOption', { name: 'emoji', value: injectRegionalIndicators(emoji) })\n      } catch (e) {\n        console.warn(\"Can't load static emoji\")\n        console.warn(e)\n      }\n    },\n\n    loadUnicodeEmojiData ({ commit, state }, language) {\n      const langList = ensureFinalFallback(language)\n\n      return Promise.all(\n        langList\n          .map(async lang => {\n            if (!state.unicodeEmojiAnnotations[lang]) {\n              const annotations = await loadAnnotations(lang)\n              commit('setUnicodeEmojiAnnotations', { lang, annotations })\n            }\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 caseInsensitiveStrCmp = (a, b) => {\n            const la = a.toLowerCase()\n            const lb = b.toLowerCase()\n            return la > lb ? 1 : (la < lb ? -1 : 0)\n          }\n          const byPackThenByName = (a, b) => {\n            const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)\n            return caseInsensitiveStrCmp(packOf(a), packOf(b)) || caseInsensitiveStrCmp(a.displayText, b.displayText)\n          }\n\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(byPackThenByName)\n          commit('setInstanceOption', { name: 'customEmoji', value: emoji })\n        } else {\n          throw (res)\n        }\n      } catch (e) {\n        console.warn(\"Can't load custom emojis\")\n        console.warn(e)\n      }\n    },\n\n    setTheme ({ commit, rootState }, themeName) {\n      commit('setInstanceOption', { name: 'theme', value: themeName })\n      getPreset(themeName)\n        .then(themeData => {\n          commit('setInstanceOption', { name: 'themeData', value: themeData })\n          // No need to apply theme if there's user theme already\n          const { customTheme } = rootState.config\n          if (customTheme) return\n\n          // New theme presets don't have 'theme' property, they use 'source'\n          const themeSource = themeData.source\n          if (!themeData.theme || (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION)) {\n            applyTheme(themeSource)\n          } else {\n            applyTheme(themeData.theme)\n          }\n        })\n    },\n    fetchEmoji ({ dispatch, state }) {\n      if (!state.customEmojiFetched) {\n        state.customEmojiFetched = true\n        dispatch('getCustomEmoji')\n      }\n      if (!state.emojiFetched) {\n        state.emojiFetched = true\n        dispatch('getStaticEmoji')\n      }\n    },\n\n    async getKnownDomains ({ commit, rootState }) {\n      try {\n        const result = await apiService.fetchKnownDomains({\n          credentials: rootState.users.currentUser.credentials\n        })\n        commit('setKnownDomains', result)\n      } catch (e) {\n        console.warn(\"Can't load known domains\")\n        console.warn(e)\n      }\n    }\n  }\n}\n\nexport default instance\n","import {\n  remove,\n  slice,\n  each,\n  findIndex,\n  find,\n  maxBy,\n  minBy,\n  merge,\n  first,\n  last,\n  isArray,\n  omitBy\n} from 'lodash'\nimport {\n  isStatusNotification,\n  isValidNotification,\n  maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\nimport apiService from '../services/api/api.service.js'\n\nconst emptyTl = (userId = 0) => ({\n  statuses: [],\n  statusesObject: {},\n  faves: [],\n  visibleStatuses: [],\n  visibleStatusesObject: {},\n  newStatusCount: 0,\n  maxId: 0,\n  minId: 0,\n  minVisibleId: 0,\n  loading: false,\n  followers: [],\n  friends: [],\n  userId,\n  flushMarker: 0\n})\n\nconst emptyNotifications = () => ({\n  desktopNotificationSilence: true,\n  maxId: 0,\n  minId: Number.POSITIVE_INFINITY,\n  data: [],\n  idStore: {},\n  loading: false\n})\n\nexport const defaultState = () => ({\n  allStatuses: [],\n  allStatusesObject: {},\n  conversationsObject: {},\n  maxId: 0,\n  notifications: emptyNotifications(),\n  favorites: new Set(),\n  timelines: {\n    mentions: emptyTl(),\n    public: emptyTl(),\n    user: emptyTl(),\n    favorites: emptyTl(),\n    media: emptyTl(),\n    publicAndExternal: emptyTl(),\n    friends: emptyTl(),\n    tag: emptyTl(),\n    dms: emptyTl(),\n    bookmarks: emptyTl(),\n    list: emptyTl()\n  }\n})\n\nexport const prepareStatus = (status) => {\n  // Set deleted flag\n  status.deleted = false\n\n  // To make the array reactive\n  status.attachments = status.attachments || []\n\n  return status\n}\n\nconst mergeOrAdd = (arr, obj, item) => {\n  const oldItem = obj[item.id]\n\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    // We ignore null values to avoid overwriting existing properties with missing data\n    // we also skip 'user' because that is handled by users module\n    merge(oldItem, omitBy(item, (v, k) => v === null || k === 'user'))\n    // Reactivity fix.\n    oldItem.attachments.splice(oldItem.attachments.length)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    prepareStatus(item)\n    arr.push(item)\n    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      conversationsObject[conversationId] = [status]\n    }\n  }\n  return result\n}\n\n// Remove status from the global storages (arrays and objects maintaining statuses) except timelines\nconst removeStatusFromGlobalStorage = (state, status) => {\n  remove(state.allStatuses, { id: status.id })\n\n  // TODO: Need to remove from allStatusesObject?\n\n  // Remove possible notification\n  remove(state.notifications.data, ({ action: { id } }) => id === status.id)\n\n  // Remove from conversation\n  const conversationId = status.statusnet_conversation_id\n  if (state.conversationsObject[conversationId]) {\n    remove(state.conversationsObject[conversationId], { id: status.id })\n  }\n}\n\nconst addNewStatuses = (state, { statuses, showImmediately = false, timeline, user = {}, noIdUpdate = false, userId, pagination = {} }) => {\n  // Sanity check\n  if (!isArray(statuses)) {\n    return false\n  }\n\n  const allStatuses = state.allStatuses\n  const timelineObject = state.timelines[timeline]\n\n  // Mismatch between API pagination and our internal minId/maxId tracking systems:\n  // pagination.maxId is the oldest of the returned statuses when fetching older,\n  // and pagination.minId is the newest when fetching newer. The names come directly\n  // from the arguments they're supposed to be passed as for the next fetch.\n  const minNew = pagination.maxId || (statuses.length > 0 ? minBy(statuses, 'id').id : 0)\n  const maxNew = pagination.minId || (statuses.length > 0 ? maxBy(statuses, 'id').id : 0)\n\n  const newer = timeline && (maxNew > timelineObject.maxId || timelineObject.maxId === 0) && statuses.length > 0\n  const older = timeline && (minNew < timelineObject.minId || timelineObject.minId === 0) && statuses.length > 0\n\n  if (!noIdUpdate && newer) {\n    timelineObject.maxId = maxNew\n  }\n  if (!noIdUpdate && older) {\n    timelineObject.minId = minNew\n  }\n\n  // This makes sure that user timeline won't get data meant for other\n  // user. I.e. opening different user profiles makes request which could\n  // return data late after user already viewing different user profile\n  if ((timeline === 'user' || timeline === 'media') && timelineObject.userId !== userId) {\n    return\n  }\n\n  const addStatus = (data, showImmediately, addToTimeline = true) => {\n    const result = addStatusToGlobalStorage(state, data)\n    const status = result.item\n\n    if (result.new) {\n      // We are mentioned in a post\n      if (status.type === 'status' && find(status.attentions, { id: user.id })) {\n        const mentions = state.timelines.mentions\n\n        // Add the mention to the mentions timeline\n        if (timelineObject !== mentions) {\n          mergeOrAdd(mentions.statuses, mentions.statusesObject, status)\n          mentions.newStatusCount += 1\n\n          sortTimeline(mentions)\n        }\n      }\n      if (status.visibility === 'direct') {\n        const dms = state.timelines.dms\n\n        mergeOrAdd(dms.statuses, dms.statusesObject, status)\n        dms.newStatusCount += 1\n\n        sortTimeline(dms)\n      }\n    }\n\n    // Decide if we should treat the status as new for this timeline.\n    let resultForCurrentTimeline\n    // Some statuses should only be added to the global status repository.\n    if (timeline && addToTimeline) {\n      resultForCurrentTimeline = mergeOrAdd(timelineObject.statuses, timelineObject.statusesObject, status)\n    }\n\n    if (timeline && showImmediately) {\n      // Add it directly to the visibleStatuses, don't change\n      // newStatusCount\n      mergeOrAdd(timelineObject.visibleStatuses, timelineObject.visibleStatusesObject, status)\n    } else if (timeline && addToTimeline && resultForCurrentTimeline.new) {\n      // Just change newStatuscount\n      timelineObject.newStatusCount += 1\n    }\n\n    return status\n  }\n\n  const favoriteStatus = (favorite, counter) => {\n    const status = find(allStatuses, { id: favorite.in_reply_to_status_id })\n    if (status) {\n      // This is our favorite, so the relevant bit.\n      if (favorite.user.id === user.id) {\n        status.favorited = true\n      } else {\n        status.fave_num += 1\n      }\n    }\n    return status\n  }\n\n  const processors = {\n    status: (status) => {\n      addStatus(status, showImmediately)\n    },\n    edit: (status) => {\n      addStatus(status, showImmediately)\n    },\n    retweet: (status) => {\n      // RetweetedStatuses are never shown immediately\n      const retweetedStatus = addStatus(status.retweeted_status, false, false)\n\n      let retweet\n      // If the retweeted status is already there, don't add the retweet\n      // to the timeline.\n      if (timeline && find(timelineObject.statuses, (s) => {\n        if (s.retweeted_status) {\n          return s.id === retweetedStatus.id || s.retweeted_status.id === retweetedStatus.id\n        } else {\n          return s.id === retweetedStatus.id\n        }\n      })) {\n        // Already have it visible (either as the original or another RT), don't add to timeline, don't show.\n        retweet = addStatus(status, false, false)\n      } else {\n        retweet = addStatus(status, showImmediately)\n      }\n\n      retweet.retweeted_status = retweetedStatus\n    },\n    favorite: (favorite) => {\n      // Only update if this is a new favorite.\n      // Ignore our own favorites because we get info about likes as response to like request\n      if (!state.favorites.has(favorite.id)) {\n        state.favorites.add(favorite.id)\n        favoriteStatus(favorite)\n      }\n    },\n    deletion: (deletion) => {\n      const uri = deletion.uri\n      const status = find(allStatuses, { uri })\n      if (!status) {\n        return\n      }\n\n      removeStatusFromGlobalStorage(state, status)\n\n      if (timeline) {\n        remove(timelineObject.statuses, { uri })\n        remove(timelineObject.visibleStatuses, { uri })\n      }\n    },\n    follow: (follow) => {\n      // NOOP, it is known status but we don't do anything about it for now\n    },\n    default: (unknown) => {\n      console.log('unknown status type')\n      console.log(unknown)\n    }\n  }\n\n  each(statuses, (status) => {\n    const type = status.type\n    const processor = processors[type] || processors.default\n    processor(status)\n  })\n\n  // Keep the visible statuses sorted\n  if (timeline && !(timeline === 'bookmarks')) {\n    sortTimeline(timelineObject)\n  }\n}\n\nconst updateNotificationsMinMaxId = (state, notification) => {\n  state.notifications.maxId = notification.id > state.notifications.maxId\n    ? notification.id\n    : state.notifications.maxId\n  state.notifications.minId = notification.id < state.notifications.minId\n    ? notification.id\n    : state.notifications.minId\n}\n\nconst addNewNotifications = (state, { dispatch, notifications, older, visibleNotificationTypes, rootGetters, newNotificationSideEffects }) => {\n  each(notifications, (notification) => {\n    // If invalid notification, update ids but don't add it to store\n    if (!isValidNotification(notification)) {\n      console.error('Invalid notification:', notification)\n      updateNotificationsMinMaxId(state, notification)\n      return\n    }\n\n    if (isStatusNotification(notification.type)) {\n      notification.action = addStatusToGlobalStorage(state, notification.action).item\n      notification.status = notification.status && addStatusToGlobalStorage(state, notification.status).item\n    }\n\n    if (notification.type === 'pleroma:report') {\n      dispatch('addReport', notification.report)\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    // eslint-disable-next-line no-prototype-builtins\n    if (!state.notifications.idStore.hasOwnProperty(notification.id)) {\n      updateNotificationsMinMaxId(state, notification)\n\n      state.notifications.data.push(notification)\n      state.notifications.idStore[notification.id] = notification\n\n      newNotificationSideEffects(notification)\n    } else if (notification.seen) {\n      state.notifications.idStore[notification.id].seen = true\n    }\n  })\n}\n\nconst removeStatus = (state, { timeline, userId }) => {\n  const timelineObject = state.timelines[timeline]\n  if (userId) {\n    remove(timelineObject.statuses, { user: { id: userId } })\n    remove(timelineObject.visibleStatuses, { user: { id: userId } })\n    timelineObject.minVisibleId = timelineObject.visibleStatuses.length > 0 ? last(timelineObject.visibleStatuses).id : 0\n    timelineObject.maxId = timelineObject.statuses.length > 0 ? first(timelineObject.statuses).id : 0\n  }\n}\n\nexport const mutations = {\n  addNewStatuses,\n  addNewNotifications,\n  removeStatus,\n  showNewStatuses (state, { timeline }) {\n    const oldTimeline = (state.timelines[timeline])\n\n    oldTimeline.newStatusCount = 0\n    oldTimeline.visibleStatuses = slice(oldTimeline.statuses, 0, 50)\n    oldTimeline.minVisibleId = last(oldTimeline.visibleStatuses).id\n    oldTimeline.minId = oldTimeline.minVisibleId\n    oldTimeline.visibleStatusesObject = {}\n    each(oldTimeline.visibleStatuses, (status) => { oldTimeline.visibleStatusesObject[status.id] = status })\n  },\n  resetStatuses (state) {\n    const emptyState = defaultState()\n    Object.entries(emptyState).forEach(([key, value]) => {\n      state[key] = value\n    })\n  },\n  clearTimeline (state, { timeline, excludeUserId = false }) {\n    const userId = excludeUserId ? state.timelines[timeline].userId : undefined\n    state.timelines[timeline] = emptyTl(userId)\n  },\n  clearNotifications (state) {\n    state.notifications = emptyNotifications()\n  },\n  setFavorited (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.favorited !== value) {\n      if (value) {\n        newStatus.fave_num++\n      } else {\n        newStatus.fave_num--\n      }\n    }\n\n    newStatus.favorited = value\n  },\n  setFavoritedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.favorited = status.favorited\n    newStatus.fave_num = status.fave_num\n    const index = findIndex(newStatus.favoritedBy, { id: user.id })\n    if (index !== -1 && !newStatus.favorited) {\n      newStatus.favoritedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.favorited) {\n      newStatus.favoritedBy.push(user)\n    }\n  },\n  setMutedStatus (state, status) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.thread_muted = status.thread_muted\n\n    if (newStatus.thread_muted !== undefined) {\n      state.conversationsObject[newStatus.statusnet_conversation_id].forEach(status => { status.thread_muted = newStatus.thread_muted })\n    }\n  },\n  setRetweeted (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n\n    if (newStatus.repeated !== value) {\n      if (value) {\n        newStatus.repeat_num++\n      } else {\n        newStatus.repeat_num--\n      }\n    }\n\n    newStatus.repeated = value\n  },\n  setRetweetedConfirm (state, { status, user }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.repeated = status.repeated\n    newStatus.repeat_num = status.repeat_num\n    const index = findIndex(newStatus.rebloggedBy, { id: user.id })\n    if (index !== -1 && !newStatus.repeated) {\n      newStatus.rebloggedBy.splice(index, 1)\n    } else if (index === -1 && newStatus.repeated) {\n      newStatus.rebloggedBy.push(user)\n    }\n  },\n  setBookmarked (state, { status, value }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = value\n  },\n  setBookmarkedConfirm (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    newStatus.bookmarked = status.bookmarked\n  },\n  setDeleted (state, { status }) {\n    const newStatus = state.allStatusesObject[status.id]\n    if (newStatus) newStatus.deleted = true\n  },\n  setManyDeleted (state, condition) {\n    Object.values(state.allStatusesObject).forEach(status => {\n      if (condition(status)) {\n        status.deleted = true\n      }\n    })\n  },\n  setLoading (state, { timeline, value }) {\n    state.timelines[timeline].loading = value\n  },\n  setNsfw (state, { id, nsfw }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.nsfw = nsfw\n  },\n  setNotificationsLoading (state, { value }) {\n    state.notifications.loading = value\n  },\n  setNotificationsSilence (state, { value }) {\n    state.notifications.desktopNotificationSilence = value\n  },\n  markNotificationsAsSeen (state) {\n    each(state.notifications.data, (notification) => {\n      notification.seen = true\n    })\n  },\n  markSingleNotificationAsSeen (state, { id }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    if (notification) notification.seen = true\n  },\n  dismissNotification (state, { id }) {\n    state.notifications.data = state.notifications.data.filter(n => n.id !== id)\n  },\n  dismissNotifications (state, { finder }) {\n    state.notifications.data = state.notifications.data.filter(n => finder)\n  },\n  updateNotification (state, { id, updater }) {\n    const notification = find(state.notifications.data, n => n.id === id)\n    notification && updater(notification)\n  },\n  queueFlush (state, { timeline, id }) {\n    state.timelines[timeline].flushMarker = id\n  },\n  queueFlushAll (state) {\n    Object.keys(state.timelines).forEach((timeline) => {\n      state.timelines[timeline].flushMarker = state.timelines[timeline].maxId\n    })\n  },\n  addRepeats (state, { id, rebloggedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.rebloggedBy = rebloggedByUsers.filter(_ => _)\n    // repeats stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.repeat_num = newStatus.rebloggedBy.length\n    newStatus.repeated = !!newStatus.rebloggedBy.find(({ id }) => currentUser.id === id)\n  },\n  addFavs (state, { id, favoritedByUsers, currentUser }) {\n    const newStatus = state.allStatusesObject[id]\n    newStatus.favoritedBy = favoritedByUsers.filter(_ => _)\n    // favorites stats can be incorrect based on polling condition, let's update them using the most recent data\n    newStatus.fave_num = newStatus.favoritedBy.length\n    newStatus.favorited = !!newStatus.favoritedBy.find(({ id }) => currentUser.id === id)\n  },\n  addEmojiReactionsBy (state, { id, emojiReactions, currentUser }) {\n    const status = state.allStatusesObject[id]\n    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      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      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      status.emoji_reactions[reactionIndex] = newReaction\n    } else {\n      status.emoji_reactions = status.emoji_reactions.filter(r => r.name !== emoji)\n    }\n  },\n  updateStatusWithPoll (state, { id, poll }) {\n    const status = state.allStatusesObject[id]\n    status.poll = poll\n  },\n  setVirtualHeight (state, { statusId, height }) {\n    state.allStatusesObject[statusId].virtualHeight = height\n  }\n}\n\nconst statuses = {\n  state: defaultState(),\n  actions: {\n    addNewStatuses ({ rootState, commit }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n      commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\n    },\n    addNewNotifications (store, { notifications, older }) {\n      const { commit, dispatch, rootGetters } = store\n\n      const newNotificationSideEffects = (notification) => {\n        maybeShowNotification(store, notification)\n      }\n      commit('addNewNotifications', { dispatch, notifications, older, rootGetters, newNotificationSideEffects })\n    },\n    setNotificationsLoading ({ rootState, commit }, { value }) {\n      commit('setNotificationsLoading', { value })\n    },\n    setNotificationsSilence ({ rootState, commit }, { value }) {\n      commit('setNotificationsSilence', { value })\n    },\n    fetchStatus ({ rootState, dispatch }, id) {\n      return rootState.api.backendInteractor.fetchStatus({ id })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    fetchStatusSource ({ rootState, dispatch }, status) {\n      return apiService.fetchStatusSource({ id: status.id, credentials: rootState.users.currentUser.credentials })\n    },\n    fetchStatusHistory ({ rootState, dispatch }, status) {\n      return apiService.fetchStatusHistory({ status })\n    },\n    deleteStatus ({ rootState, commit }, status) {\n      commit('setDeleted', { status })\n      apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n    },\n    deleteStatusById ({ rootState, commit }, id) {\n      const status = rootState.statuses.allStatusesObject[id]\n      commit('setDeleted', { status })\n    },\n    markStatusesAsDeleted ({ commit }, condition) {\n      commit('setManyDeleted', condition)\n    },\n    favorite ({ rootState, commit }, status) {\n      // Optimistic favoriting...\n      commit('setFavorited', { status, value: true })\n      rootState.api.backendInteractor.favorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    unfavorite ({ rootState, commit }, status) {\n      // Optimistic unfavoriting...\n      commit('setFavorited', { status, value: false })\n      rootState.api.backendInteractor.unfavorite({ id: status.id })\n        .then(status => commit('setFavoritedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    fetchPinnedStatuses ({ rootState, dispatch }, userId) {\n      rootState.api.backendInteractor.fetchPinnedStatuses({ id: userId })\n        .then(statuses => dispatch('addNewStatuses', { statuses, timeline: 'user', userId, showImmediately: true, noIdUpdate: true }))\n    },\n    pinStatus ({ rootState, dispatch }, statusId) {\n      return rootState.api.backendInteractor.pinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    unpinStatus ({ rootState, dispatch }, statusId) {\n      rootState.api.backendInteractor.unpinOwnStatus({ id: statusId })\n        .then((status) => dispatch('addNewStatuses', { statuses: [status] }))\n    },\n    muteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.muteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    unmuteConversation ({ rootState, commit }, statusId) {\n      return rootState.api.backendInteractor.unmuteConversation({ id: statusId })\n        .then((status) => commit('setMutedStatus', status))\n    },\n    retweet ({ rootState, commit }, status) {\n      // Optimistic retweeting...\n      commit('setRetweeted', { status, value: true })\n      rootState.api.backendInteractor.retweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser }))\n    },\n    unretweet ({ rootState, commit }, status) {\n      // Optimistic unretweeting...\n      commit('setRetweeted', { status, value: false })\n      rootState.api.backendInteractor.unretweet({ id: status.id })\n        .then(status => commit('setRetweetedConfirm', { status, user: rootState.users.currentUser }))\n    },\n    bookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: true })\n      rootState.api.backendInteractor.bookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    unbookmark ({ rootState, commit }, status) {\n      commit('setBookmarked', { status, value: false })\n      rootState.api.backendInteractor.unbookmarkStatus({ id: status.id })\n        .then(status => {\n          commit('setBookmarkedConfirm', { status })\n        })\n    },\n    queueFlush ({ rootState, commit }, { timeline, id }) {\n      commit('queueFlush', { timeline, id })\n    },\n    queueFlushAll ({ rootState, commit }) {\n      commit('queueFlushAll')\n    },\n    markNotificationsAsSeen ({ rootState, commit }) {\n      commit('markNotificationsAsSeen')\n      apiService.markNotificationsAsSeen({\n        id: rootState.statuses.notifications.maxId,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    markSingleNotificationAsSeen ({ rootState, commit }, { id }) {\n      commit('markSingleNotificationAsSeen', { id })\n      apiService.markNotificationsAsSeen({\n        single: true,\n        id,\n        credentials: rootState.users.currentUser.credentials\n      })\n    },\n    dismissNotificationLocal ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n    },\n    dismissNotification ({ rootState, commit }, { id }) {\n      commit('dismissNotification', { id })\n      rootState.api.backendInteractor.dismissNotification({ id })\n    },\n    updateNotification ({ rootState, commit }, { id, updater }) {\n      commit('updateNotification', { id, updater })\n    },\n    fetchFavsAndRepeats ({ rootState, commit }, id) {\n      Promise.all([\n        rootState.api.backendInteractor.fetchFavoritedByUsers({ id }),\n        rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n      ]).then(([favoritedByUsers, rebloggedByUsers]) => {\n        commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser })\n        commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser })\n      })\n    },\n    reactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('addOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.reactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    unreactWithEmoji ({ rootState, dispatch, commit }, { id, emoji }) {\n      const currentUser = rootState.users.currentUser\n      if (!currentUser) return\n\n      commit('removeOwnReaction', { id, emoji, currentUser })\n      rootState.api.backendInteractor.unreactWithEmoji({ id, emoji }).then(\n        ok => {\n          dispatch('fetchEmojiReactionsBy', id)\n        }\n      )\n    },\n    fetchEmojiReactionsBy ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchEmojiReactions({ id }).then(\n        emojiReactions => {\n          commit('addEmojiReactionsBy', { id, emojiReactions, currentUser: rootState.users.currentUser })\n        }\n      )\n    },\n    fetchFavs ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchFavoritedByUsers({ id })\n        .then(favoritedByUsers => commit('addFavs', { id, favoritedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    fetchRepeats ({ rootState, commit }, id) {\n      rootState.api.backendInteractor.fetchRebloggedByUsers({ id })\n        .then(rebloggedByUsers => commit('addRepeats', { id, rebloggedByUsers, currentUser: rootState.users.currentUser }))\n    },\n    search (store, { q, resolve, limit, offset, following, type }) {\n      return store.rootState.api.backendInteractor.search2({ q, resolve, limit, offset, following, type })\n        .then((data) => {\n          store.commit('addNewUsers', data.accounts)\n          store.commit('addNewStatuses', { statuses: data.statuses })\n          return data\n        })\n    },\n    setVirtualHeight ({ commit }, { statusId, height }) {\n      commit('setVirtualHeight', { statusId, height })\n    }\n  },\n  mutations\n}\n\nexport default statuses\n","import { remove, find } from 'lodash'\n\nexport const defaultState = {\n  allLists: [],\n  allListsObject: {}\n}\n\nexport const mutations = {\n  setLists (state, value) {\n    state.allLists = value\n  },\n  setList (state, { listId, title }) {\n    if (!state.allListsObject[listId]) {\n      state.allListsObject[listId] = { accountIds: [] }\n    }\n    state.allListsObject[listId].title = title\n\n    const entry = find(state.allLists, { id: listId })\n    if (!entry) {\n      state.allLists.push({ id: listId, title })\n    } else {\n      entry.title = title\n    }\n  },\n  setListAccounts (state, { listId, accountIds }) {\n    if (!state.allListsObject[listId]) {\n      state.allListsObject[listId] = { accountIds: [] }\n    }\n    state.allListsObject[listId].accountIds = accountIds\n  },\n  addListAccount (state, { listId, accountId }) {\n    if (!state.allListsObject[listId]) {\n      state.allListsObject[listId] = { accountIds: [] }\n    }\n    state.allListsObject[listId].accountIds.push(accountId)\n  },\n  removeListAccount (state, { listId, accountId }) {\n    if (!state.allListsObject[listId]) {\n      state.allListsObject[listId] = { accountIds: [] }\n    }\n    const { accountIds } = state.allListsObject[listId]\n    const set = new Set(accountIds)\n    set.delete(accountId)\n    state.allListsObject[listId].accountIds = [...set]\n  },\n  deleteList (state, { listId }) {\n    delete state.allListsObject[listId]\n    remove(state.allLists, list => list.id === listId)\n  }\n}\n\nconst actions = {\n  setLists ({ commit }, value) {\n    commit('setLists', value)\n  },\n  createList ({ rootState, commit }, { title }) {\n    return rootState.api.backendInteractor.createList({ title })\n      .then((list) => {\n        commit('setList', { listId: list.id, title })\n        return list\n      })\n  },\n  fetchList ({ rootState, commit }, { listId }) {\n    return rootState.api.backendInteractor.getList({ listId })\n      .then((list) => commit('setList', { listId: list.id, title: list.title }))\n  },\n  fetchListAccounts ({ rootState, commit }, { listId }) {\n    return rootState.api.backendInteractor.getListAccounts({ listId })\n      .then((accountIds) => commit('setListAccounts', { listId, accountIds }))\n  },\n  setList ({ rootState, commit }, { listId, title }) {\n    rootState.api.backendInteractor.updateList({ listId, title })\n    commit('setList', { listId, title })\n  },\n  setListAccounts ({ rootState, commit }, { listId, accountIds }) {\n    const saved = rootState.lists.allListsObject[listId].accountIds || []\n    const added = accountIds.filter(id => !saved.includes(id))\n    const removed = saved.filter(id => !accountIds.includes(id))\n    commit('setListAccounts', { listId, accountIds })\n    if (added.length > 0) {\n      rootState.api.backendInteractor.addAccountsToList({ listId, accountIds: added })\n    }\n    if (removed.length > 0) {\n      rootState.api.backendInteractor.removeAccountsFromList({ listId, accountIds: removed })\n    }\n  },\n  addListAccount ({ rootState, commit }, { listId, accountId }) {\n    return rootState\n      .api\n      .backendInteractor\n      .addAccountsToList({ listId, accountIds: [accountId] })\n      .then((result) => {\n        commit('addListAccount', { listId, accountId })\n        return result\n      })\n  },\n  removeListAccount ({ rootState, commit }, { listId, accountId }) {\n    return rootState\n      .api\n      .backendInteractor\n      .removeAccountsFromList({ listId, accountIds: [accountId] })\n      .then((result) => {\n        commit('removeListAccount', { listId, accountId })\n        return result\n      })\n  },\n  deleteList ({ rootState, commit }, { listId }) {\n    rootState.api.backendInteractor.deleteList({ listId })\n    commit('deleteList', { listId })\n  }\n}\n\nexport const getters = {\n  findListTitle: state => id => {\n    if (!state.allListsObject[id]) return\n    return state.allListsObject[id].title\n  },\n  findListAccounts: state => id => {\n    return [...state.allListsObject[id].accountIds]\n  }\n}\n\nconst lists = {\n  state: defaultState,\n  mutations,\n  actions,\n  getters\n}\n\nexport default lists\n","import { camelCase } from 'lodash'\n\nimport apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst update = ({ store, statuses, timeline, showImmediately, userId, listId, pagination }) => {\n  const ccTimeline = camelCase(timeline)\n\n  store.dispatch('addNewStatuses', {\n    timeline: ccTimeline,\n    userId,\n    listId,\n    statuses,\n    showImmediately,\n    pagination\n  })\n}\n\nconst fetchAndUpdate = ({\n  store,\n  credentials,\n  timeline = 'friends',\n  older = false,\n  showImmediately = false,\n  userId = false,\n  listId = false,\n  tag = false,\n  until,\n  since\n}) => {\n  const args = { timeline, credentials }\n  const rootState = store.rootState || store.state\n  const { getters } = store\n  const timelineData = rootState.statuses.timelines[camelCase(timeline)]\n  const { hideMutedPosts, replyVisibility } = getters.mergedConfig\n  const loggedIn = !!rootState.users.currentUser\n\n  if (older) {\n    args.until = until || timelineData.minId\n  } else {\n    if (since === undefined) {\n      args.since = timelineData.maxId\n    } else if (since !== null) {\n      args.since = since\n    }\n  }\n\n  args.userId = userId\n  args.listId = listId\n  args.tag = tag\n  args.withMuted = !hideMutedPosts\n  if (loggedIn && ['friends', 'public', 'publicAndExternal'].includes(timeline)) {\n    args.replyVisibility = replyVisibility\n  }\n\n  const numStatusesBeforeFetch = timelineData.statuses.length\n\n  return apiService.fetchTimeline(args)\n    .then(response => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n\n      const { data: statuses, pagination } = response\n      if (!older && statuses.length >= 20 && !timelineData.loading && numStatusesBeforeFetch > 0) {\n        store.dispatch('queueFlush', { timeline, id: timelineData.maxId })\n      }\n      update({ store, statuses, timeline, showImmediately, userId, listId, pagination })\n      return { statuses, pagination }\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'timeline.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n    })\n}\n\nconst startFetching = ({ timeline = 'friends', credentials, store, userId = false, listId = 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  timelineData.listId = listId\n  fetchAndUpdate({ timeline, credentials, store, showImmediately, userId, listId, tag })\n  const boundFetchAndUpdate = () =>\n    fetchAndUpdate({ timeline, credentials, store, userId, listId, tag })\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\nconst timelineFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default timelineFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n  return apiService.fetchFollowRequests({ credentials })\n    .then((requests) => {\n      store.commit('setFollowRequests', requests)\n      store.commit('addNewUsers', requests)\n    }, () => {})\n    .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst followRequestFetcher = {\n  startFetching\n}\n\nexport default followRequestFetcher\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\nconst fetchAndUpdate = ({ store, credentials }) => {\n  return apiService.fetchLists({ credentials })\n    .then(lists => {\n      store.commit('setLists', lists)\n    }, () => {})\n    .catch(() => {})\n}\n\nconst startFetching = ({ credentials, store }) => {\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 240000)\n}\n\nconst listsFetcher = {\n  startFetching\n}\n\nexport default listsFetcher\n","import apiService, { getMastodonSocketURI, ProcessedWS } from '../api/api.service.js'\nimport timelineFetcher from '../timeline_fetcher/timeline_fetcher.service.js'\nimport notificationsFetcher from '../notifications_fetcher/notifications_fetcher.service.js'\nimport followRequestFetcher from '../../services/follow_request_fetcher/follow_request_fetcher.service'\nimport listsFetcher from '../../services/lists_fetcher/lists_fetcher.service.js'\n\nconst backendInteractorService = credentials => ({\n  startFetchingTimeline ({ timeline, store, userId = false, listId = false, tag }) {\n    return timelineFetcher.startFetching({ timeline, store, credentials, userId, listId, tag })\n  },\n\n  fetchTimeline (args) {\n    return timelineFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingNotifications ({ store }) {\n    return notificationsFetcher.startFetching({ store, credentials })\n  },\n\n  fetchNotifications (args) {\n    return notificationsFetcher.fetchAndUpdate({ ...args, credentials })\n  },\n\n  startFetchingFollowRequests ({ store }) {\n    return followRequestFetcher.startFetching({ store, credentials })\n  },\n\n  startFetchingLists ({ store }) {\n    return listsFetcher.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","\nexport const windowWidth = () =>\n  window.innerWidth ||\n  document.documentElement.clientWidth ||\n  document.body.clientWidth\n\nexport const windowHeight = () =>\n  window.innerHeight ||\n  document.documentElement.clientHeight ||\n  document.body.clientHeight\n","import { 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-webpack5-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 { windowWidth, windowHeight } from '../services/window_utils/window_utils'\nimport oauthApi from '../services/new_api/oauth.js'\nimport { compact, map, each, mergeWith, last, concat, uniq, isArray } from 'lodash'\nimport { registerPushNotifications, unregisterPushNotifications } from '../services/push/push.js'\n\n// TODO: Unify with mergeOrAdd in statuses.js\nexport const mergeOrAdd = (arr, obj, item) => {\n  if (!item) { return false }\n  const oldItem = obj[item.id]\n  if (oldItem) {\n    // We already have this, so only merge the new info.\n    mergeWith(oldItem, item, mergeArrayLength)\n    return { item: oldItem, new: false }\n  } else {\n    // This is a new item, prepare it\n    arr.push(item)\n    obj[item.id] = item\n    return { item, new: true }\n  }\n}\n\nconst mergeArrayLength = (oldValue, newValue) => {\n  if (isArray(oldValue) && isArray(newValue)) {\n    oldValue.length = newValue.length\n    return mergeWith(oldValue, newValue, mergeArrayLength)\n  }\n}\n\nconst getNotificationPermission = () => {\n  const Notification = window.Notification\n\n  if (!Notification) return Promise.resolve(null)\n  if (Notification.permission === 'default') return Notification.requestPermission()\n  return Promise.resolve(Notification.permission)\n}\n\nconst blockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.blockUser({ id })\n    .then((relationship) => {\n      store.commit('updateUserRelationship', [relationship])\n      store.commit('addBlockId', id)\n      store.commit('removeStatus', { timeline: 'friends', userId: id })\n      store.commit('removeStatus', { timeline: 'public', userId: id })\n      store.commit('removeStatus', { timeline: 'publicAndExternal', userId: id })\n    })\n}\n\nconst unblockUser = (store, id) => {\n  return store.rootState.api.backendInteractor.unblockUser({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst removeUserFromFollowers = (store, id) => {\n  return store.rootState.api.backendInteractor.removeUserFromFollowers({ id })\n    .then((relationship) => store.commit('updateUserRelationship', [relationship]))\n}\n\nconst editUserNote = (store, { id, comment }) => {\n  return store.rootState.api.backendInteractor.editUserNote({ id, comment })\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    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    user.tags = newTags\n  },\n  updateRight (state, { user: { id }, right, value }) {\n    const user = state.usersObject[id]\n    const newRights = user.rights\n    newRights[right] = value\n    user.rights = newRights\n  },\n  updateActivationStatus (state, { user: { id }, deactivated }) {\n    const user = state.usersObject[id]\n    user.deactivated = deactivated\n  },\n  setCurrentUser (state, user) {\n    state.lastLoginName = user.screen_name\n    state.currentUser = mergeWith(state.currentUser || {}, user, mergeArrayLength)\n  },\n  clearCurrentUser (state) {\n    state.currentUser = false\n    state.lastLoginName = false\n  },\n  beginLogin (state) {\n    state.loggingIn = true\n  },\n  endLogin (state) {\n    state.loggingIn = false\n  },\n  saveFriendIds (state, { id, friendIds }) {\n    const user = state.usersObject[id]\n    user.friendIds = uniq(concat(user.friendIds || [], friendIds))\n  },\n  saveFollowerIds (state, { id, followerIds }) {\n    const user = state.usersObject[id]\n    user.followerIds = uniq(concat(user.followerIds || [], followerIds))\n  },\n  // Because frontend doesn't have a reason to keep these stuff in memory\n  // outside of viewing someones user profile.\n  clearFriends (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user.friendIds = []\n    }\n  },\n  clearFollowers (state, userId) {\n    const user = state.usersObject[userId]\n    if (user) {\n      user.followerIds = []\n    }\n  },\n  addNewUsers (state, users) {\n    each(users, (user) => {\n      if (user.relationship) {\n        state.relationships[user.relationship.id] = user.relationship\n      }\n      const res = mergeOrAdd(state.users, state.usersObject, user)\n      const item = res.item\n      if (res.new && item.screen_name && !item.screen_name.includes('@')) {\n        state.usersByNameObject[item.screen_name.toLowerCase()] = item\n      }\n    })\n  },\n  updateUserRelationship (state, relationships) {\n    relationships.forEach((relationship) => {\n      state.relationships[relationship.id] = relationship\n    })\n  },\n  updateUserInLists (state, { id, inLists }) {\n    state.usersObject[id].inLists = inLists\n  },\n  saveBlockIds (state, blockIds) {\n    state.currentUser.blockIds = blockIds\n  },\n  addBlockId (state, blockId) {\n    if (state.currentUser.blockIds.indexOf(blockId) === -1) {\n      state.currentUser.blockIds.push(blockId)\n    }\n  },\n  saveMuteIds (state, muteIds) {\n    state.currentUser.muteIds = muteIds\n  },\n  addMuteId (state, muteId) {\n    if (state.currentUser.muteIds.indexOf(muteId) === -1) {\n      state.currentUser.muteIds.push(muteId)\n    }\n  },\n  saveDomainMutes (state, domainMutes) {\n    state.currentUser.domainMutes = domainMutes\n  },\n  addDomainMute (state, domain) {\n    if (state.currentUser.domainMutes.indexOf(domain) === -1) {\n      state.currentUser.domainMutes.push(domain)\n    }\n  },\n  removeDomainMute (state, domain) {\n    const index = state.currentUser.domainMutes.indexOf(domain)\n    if (index !== -1) {\n      state.currentUser.domainMutes.splice(index, 1)\n    }\n  },\n  setPinnedToUser (state, status) {\n    const user = state.usersObject[status.user.id]\n    user.pinnedStatusIds = user.pinnedStatusIds || []\n    const index = user.pinnedStatusIds.indexOf(status.id)\n\n    if (status.pinned && index === -1) {\n      user.pinnedStatusIds.push(status.id)\n    } else if (!status.pinned && index !== -1) {\n      user.pinnedStatusIds.splice(index, 1)\n    }\n  },\n  setUserForStatus (state, status) {\n    status.user = state.usersObject[status.user.id]\n  },\n  setUserForNotification (state, notification) {\n    if (notification.type !== 'follow') {\n      notification.action.user = state.usersObject[notification.action.user.id]\n    }\n    notification.from_profile = state.usersObject[notification.from_profile.id]\n  },\n  setColor (state, { user: { id }, highlighted }) {\n    const user = state.usersObject[id]\n    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    return state.usersObject[query]\n  },\n  findUserByName: state => query => {\n    return state.usersByNameObject[query.toLowerCase()]\n  },\n  findUserByUrl: state => query => {\n    return state.users\n      .find(u => u.statusnet_profile_url &&\n            u.statusnet_profile_url.toLowerCase() === query.toLowerCase())\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  usersByNameObject: {},\n  signUpPending: false,\n  signUpErrors: [],\n  relationships: {}\n}\n\nconst users = {\n  state: defaultState,\n  mutations,\n  getters,\n  actions: {\n    fetchUserIfMissing (store, id) {\n      if (!store.getters.findUser(id)) {\n        store.dispatch('fetchUser', id)\n      }\n    },\n    fetchUser (store, id) {\n      return store.rootState.api.backendInteractor.fetchUser({ id })\n        .then((user) => {\n          store.commit('addNewUsers', [user])\n          return user\n        })\n    },\n    fetchUserByName (store, name) {\n      return store.rootState.api.backendInteractor.fetchUserByName({ name })\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    fetchUserInLists (store, id) {\n      if (store.state.currentUser) {\n        store.rootState.api.backendInteractor.fetchUserInLists({ id })\n          .then((inLists) => store.commit('updateUserInLists', { id, inLists }))\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    removeUserFromFollowers (store, id) {\n      return removeUserFromFollowers(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    editUserNote (store, args) {\n      return editUserNote(store, args)\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((user) => { const deactivated = !user.is_active; commit('updateActivationStatus', { user, deactivated }) })\n    },\n    registerPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n      const vapidPublicKey = store.rootState.instance.vapidPublicKey\n      const isEnabled = store.rootState.config.webPushNotifications\n      const notificationVisibility = store.rootState.config.notificationVisibility\n\n      registerPushNotifications(isEnabled, vapidPublicKey, token, notificationVisibility)\n    },\n    unregisterPushNotifications (store) {\n      const token = store.state.currentUser.credentials\n\n      unregisterPushNotifications(token)\n    },\n    addNewUsers ({ commit }, users) {\n      commit('addNewUsers', users)\n    },\n    addNewStatuses (store, { statuses }) {\n      const users = map(statuses, 'user')\n      const retweetedUsers = compact(map(statuses, 'retweeted_status.user'))\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', retweetedUsers)\n\n      each(statuses, (status) => {\n        // Reconnect users to statuses\n        store.commit('setUserForStatus', status)\n        // Set pinned statuses to user\n        store.commit('setPinnedToUser', status)\n      })\n      each(compact(map(statuses, 'retweeted_status')), (status) => {\n        // Reconnect users to retweets\n        store.commit('setUserForStatus', status)\n        // Set pinned retweets to user\n        store.commit('setPinnedToUser', status)\n      })\n    },\n    addNewNotifications (store, { notifications }) {\n      const users = map(notifications, 'from_profile')\n      const targetUsers = map(notifications, 'target').filter(_ => _)\n      const notificationIds = notifications.map(_ => _.id)\n      store.commit('addNewUsers', users)\n      store.commit('addNewUsers', targetUsers)\n\n      const notificationsObject = store.rootState.statuses.notifications.idStore\n      const relevantNotifications = Object.entries(notificationsObject)\n        .filter(([k, val]) => notificationIds.includes(k))\n        .map(([k, val]) => val)\n\n      // Reconnect users to notifications\n      each(relevantNotifications, (notification) => {\n        store.commit('setUserForNotification', notification)\n      })\n    },\n    searchUsers ({ rootState, commit }, { query }) {\n      return rootState.api.backendInteractor.searchUsers({ query })\n        .then((users) => {\n          commit('addNewUsers', users)\n          return users\n        })\n    },\n    async signUp (store, userInfo) {\n      store.commit('signUpPending')\n\n      const rootState = store.rootState\n\n      try {\n        const 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        const 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('stopFetchingLists')\n          store.dispatch('stopFetchingFollowRequests')\n          store.commit('clearNotifications')\n          store.commit('resetStatuses')\n          store.dispatch('resetChats')\n          store.dispatch('setLastTimeline', 'public-timeline')\n          store.dispatch('setLayoutWidth', windowWidth())\n          store.dispatch('setLayoutHeight', windowHeight())\n          store.commit('clearServerSideStorage')\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('setServerSideStorage', 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              store.dispatch('pushServerSideStorage')\n\n              if (user.token) {\n                store.dispatch('setWsToken', user.token)\n\n                // Initialize the shout socket.\n                store.dispatch('initializeSocket')\n              }\n\n              const startPolling = () => {\n                // Start getting fresh posts.\n                store.dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n                // Start fetching notifications\n                store.dispatch('startFetchingNotifications')\n\n                // Start fetching chats\n                store.dispatch('startFetchingChats')\n              }\n\n              store.dispatch('startFetchingLists')\n\n              if (user.locked) {\n                store.dispatch('startFetchingFollowRequests')\n              }\n\n              if (store.getters.mergedConfig.useStreamingApi) {\n                store.dispatch('fetchTimeline', { timeline: 'friends', since: null })\n                store.dispatch('fetchNotifications', { since: null })\n                store.dispatch('enableMastoSockets', true).catch((error) => {\n                  console.error('Failed initializing MastoAPI Streaming socket', error)\n                }).then(() => {\n                  store.dispatch('fetchChats', { latest: true })\n                  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n                })\n              } else {\n                startPolling()\n              }\n\n              // Get user mutes\n              store.dispatch('fetchMutes')\n\n              store.dispatch('setLayoutWidth', windowWidth())\n              store.dispatch('setLayoutHeight', windowHeight())\n\n              // Fetch our friends\n              store.rootState.api.backendInteractor.fetchFriends({ id: user.id })\n                .then((friends) => commit('addNewUsers', friends))\n            } else {\n              const response = data.error\n              // Authentication failed\n              commit('endLogin')\n              if (response.status === 401) {\n                reject(new Error('Wrong username or password'))\n              } else {\n                reject(new Error('An error occurred, please try again'))\n              }\n            }\n            commit('endLogin')\n            resolve()\n          })\n          .catch((error) => {\n            console.log(error)\n            commit('endLogin')\n            reject(new Error('Failed to connect to server, try again'))\n          })\n      })\n    }\n  }\n}\n\nexport default users\n","import { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const maybeShowChatNotification = (store, chat) => {\n  if (!chat.lastMessage) return\n  if (store.rootState.chats.currentChatId === chat.id && !document.hidden) return\n  if (store.rootState.users.currentUser.id === chat.lastMessage.account_id) return\n\n  const opts = {\n    tag: chat.lastMessage.id,\n    title: chat.account.name,\n    icon: chat.account.profile_image_url,\n    body: chat.lastMessage.content\n  }\n\n  if (chat.lastMessage.attachment && chat.lastMessage.attachment.type === 'image') {\n    opts.image = chat.lastMessage.attachment.preview_url\n  }\n\n  showDesktopNotification(store.rootState, opts)\n}\n\nexport const buildFakeMessage = ({ content, chatId, attachments, userId, idempotencyKey }) => {\n  const fakeMessage = {\n    content,\n    chat_id: chatId,\n    created_at: new Date(),\n    id: `${new Date().getTime()}`,\n    attachments,\n    account_id: userId,\n    idempotency_key: idempotencyKey,\n    emojis: [],\n    pending: true,\n    isNormalized: true\n  }\n\n  if (attachments[0]) {\n    fakeMessage.attachment = attachments[0]\n  }\n\n  return fakeMessage\n}\n","import backendInteractorService from '../services/backend_interactor_service/backend_interactor_service.js'\nimport { WSConnectionStatus } from '../services/api/api.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { Socket } from 'phoenix'\n\nconst retryTimeout = (multiplier) => 1000 * multiplier\n\nconst api = {\n  state: {\n    retryMultiplier: 1,\n    backendInteractor: backendInteractorService(),\n    fetchers: {},\n    socket: null,\n    mastoUserSocket: null,\n    mastoUserSocketStatus: null,\n    followRequests: []\n  },\n  getters: {\n    followRequestCount: state => state.followRequests.length\n  },\n  mutations: {\n    setBackendInteractor (state, backendInteractor) {\n      state.backendInteractor = backendInteractor\n    },\n    addFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName] = fetcher\n    },\n    removeFetcher (state, { fetcherName, fetcher }) {\n      state.fetchers[fetcherName].stop()\n      delete state.fetchers[fetcherName]\n    },\n    setWsToken (state, token) {\n      state.wsToken = token\n    },\n    setSocket (state, socket) {\n      state.socket = socket\n    },\n    setFollowRequests (state, value) {\n      state.followRequests = value\n    },\n    setMastoUserSocketStatus (state, value) {\n      state.mastoUserSocketStatus = value\n    },\n    incrementRetryMultiplier (state) {\n      state.retryMultiplier = Math.max(++state.retryMultiplier, 3)\n    },\n    resetRetryMultiplier (state) {\n      state.retryMultiplier = 1\n    }\n  },\n  actions: {\n    /**\n     * Global MastoAPI socket control, in future should disable ALL sockets/(re)start relevant sockets\n     *\n     * @param {Boolean} [initial] - whether this enabling happened at boot time or not\n     */\n    enableMastoSockets (store, initial) {\n      const { state, dispatch, commit } = store\n      // Do not initialize unless nonexistent or closed\n      if (\n        state.mastoUserSocket &&\n          ![\n            WebSocket.CLOSED,\n            WebSocket.CLOSING\n          ].includes(state.mastoUserSocket.getState())\n      ) {\n        return\n      }\n      if (initial) {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING_INITIAL)\n      } else {\n        commit('setMastoUserSocketStatus', WSConnectionStatus.STARTING)\n      }\n      return dispatch('startMastoUserSocket')\n    },\n    disableMastoSockets (store) {\n      const { state, dispatch, commit } = store\n      if (!state.mastoUserSocket) return\n      commit('setMastoUserSocketStatus', WSConnectionStatus.DISABLED)\n      return dispatch('stopMastoUserSocket')\n    },\n\n    // MastoAPI 'User' sockets\n    startMastoUserSocket (store) {\n      return new Promise((resolve, reject) => {\n        try {\n          const { state, commit, dispatch, rootState } = store\n          const timelineData = rootState.statuses.timelines.friends\n          state.mastoUserSocket = state.backendInteractor.startUserSocket({ store })\n          state.mastoUserSocket.addEventListener(\n            'message',\n            ({ detail: message }) => {\n              if (!message) return // pings\n              if (message.event === 'notification') {\n                dispatch('addNewNotifications', {\n                  notifications: [message.notification],\n                  older: false\n                })\n              } else if (message.event === 'update') {\n                dispatch('addNewStatuses', {\n                  statuses: [message.status],\n                  userId: false,\n                  showImmediately: timelineData.visibleStatuses.length === 0,\n                  timeline: 'friends'\n                })\n              } else if (message.event === 'status.update') {\n                dispatch('addNewStatuses', {\n                  statuses: [message.status],\n                  userId: false,\n                  showImmediately: message.status.id in timelineData.visibleStatusesObject,\n                  timeline: 'friends'\n                })\n              } else if (message.event === 'delete') {\n                dispatch('deleteStatusById', message.id)\n              } else if (message.event === 'pleroma:chat_update') {\n                // The setTimeout wrapper is a temporary band-aid to avoid duplicates for the user's own messages when doing optimistic sending.\n                // The cause of the duplicates is the WS event arriving earlier than the HTTP response.\n                // This setTimeout wrapper can be removed once the commit `8e41baff` is in the stable Pleroma release.\n                // (`8e41baff` adds the idempotency key to the chat message entity, which PleromaFE uses when it's available, and it makes this artificial delay unnecessary).\n                setTimeout(() => {\n                  dispatch('addChatMessages', {\n                    chatId: message.chatUpdate.id,\n                    messages: [message.chatUpdate.lastMessage]\n                  })\n                  dispatch('updateChat', { chat: message.chatUpdate })\n                  maybeShowChatNotification(store, message.chatUpdate)\n                }, 100)\n              }\n            }\n          )\n          state.mastoUserSocket.addEventListener('open', () => {\n            // Do not show notification when we just opened up the page\n            if (state.mastoUserSocketStatus !== WSConnectionStatus.STARTING_INITIAL) {\n              dispatch('pushGlobalNotice', {\n                level: 'success',\n                messageKey: 'timeline.socket_reconnected',\n                timeout: 5000\n              })\n            }\n            // Stop polling if we were errored or disabled\n            if (new Set([\n              WSConnectionStatus.ERROR,\n              WSConnectionStatus.DISABLED\n            ]).has(state.mastoUserSocketStatus)) {\n              dispatch('stopFetchingTimeline', { timeline: 'friends' })\n              dispatch('stopFetchingNotifications')\n              dispatch('stopFetchingChats')\n            }\n            commit('resetRetryMultiplier')\n            commit('setMastoUserSocketStatus', WSConnectionStatus.JOINED)\n          })\n          state.mastoUserSocket.addEventListener('error', ({ detail: error }) => {\n            console.error('Error in MastoAPI websocket:', error)\n            // TODO is this needed?\n            dispatch('clearOpenedChats')\n          })\n          state.mastoUserSocket.addEventListener('close', ({ detail: closeEvent }) => {\n            const ignoreCodes = new Set([\n              1000, // Normal (intended) closure\n              1001 // Going away\n            ])\n            const { code } = closeEvent\n            if (ignoreCodes.has(code)) {\n              console.debug(`Not restarting socket becasue of closure code ${code} is in ignore list`)\n              commit('setMastoUserSocketStatus', WSConnectionStatus.CLOSED)\n            } else {\n              console.warn(`MastoAPI websocket disconnected, restarting. CloseEvent code: ${code}`)\n              setTimeout(() => {\n                dispatch('startMastoUserSocket')\n              }, retryTimeout(state.retryMultiplier))\n              commit('incrementRetryMultiplier')\n              if (state.mastoUserSocketStatus !== WSConnectionStatus.ERROR) {\n                dispatch('startFetchingTimeline', { timeline: 'friends' })\n                dispatch('startFetchingNotifications')\n                dispatch('startFetchingChats')\n                dispatch('pushGlobalNotice', {\n                  level: 'error',\n                  messageKey: 'timeline.socket_broke',\n                  messageArgs: [code],\n                  timeout: 5000\n                })\n              }\n              commit('setMastoUserSocketStatus', WSConnectionStatus.ERROR)\n            }\n            dispatch('clearOpenedChats')\n          })\n          resolve()\n        } catch (e) {\n          reject(e)\n        }\n      })\n    },\n    stopMastoUserSocket ({ state, dispatch }) {\n      dispatch('startFetchingTimeline', { timeline: 'friends' })\n      dispatch('startFetchingNotifications')\n      dispatch('startFetchingChats')\n      state.mastoUserSocket.close()\n    },\n\n    // Timelines\n    startFetchingTimeline (store, {\n      timeline = 'friends',\n      tag = false,\n      userId = false,\n      listId = false\n    }) {\n      if (store.state.fetchers[timeline]) return\n\n      const fetcher = store.state.backendInteractor.startFetchingTimeline({\n        timeline, store, userId, listId, tag\n      })\n      store.commit('addFetcher', { fetcherName: timeline, fetcher })\n    },\n    stopFetchingTimeline (store, timeline) {\n      const fetcher = store.state.fetchers[timeline]\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: timeline, fetcher })\n    },\n    fetchTimeline (store, { timeline, ...rest }) {\n      store.state.backendInteractor.fetchTimeline({\n        store,\n        timeline,\n        ...rest\n      })\n    },\n\n    // Notifications\n    startFetchingNotifications (store) {\n      if (store.state.fetchers.notifications) return\n      const fetcher = store.state.backendInteractor.startFetchingNotifications({ store })\n      store.commit('addFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    stopFetchingNotifications (store) {\n      const fetcher = store.state.fetchers.notifications\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'notifications', fetcher })\n    },\n    fetchNotifications (store, { ...rest }) {\n      store.state.backendInteractor.fetchNotifications({\n        store,\n        ...rest\n      })\n    },\n\n    // Follow requests\n    startFetchingFollowRequests (store) {\n      if (store.state.fetchers.followRequests) return\n      const fetcher = store.state.backendInteractor.startFetchingFollowRequests({ store })\n\n      store.commit('addFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    stopFetchingFollowRequests (store) {\n      const fetcher = store.state.fetchers.followRequests\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'followRequests', fetcher })\n    },\n    removeFollowRequest (store, request) {\n      const requests = store.state.followRequests.filter((it) => it !== request)\n      store.commit('setFollowRequests', requests)\n    },\n\n    // Lists\n    startFetchingLists (store) {\n      if (store.state.fetchers.lists) return\n      const fetcher = store.state.backendInteractor.startFetchingLists({ store })\n      store.commit('addFetcher', { fetcherName: 'lists', fetcher })\n    },\n    stopFetchingLists (store) {\n      const fetcher = store.state.fetchers.lists\n      if (!fetcher) return\n      store.commit('removeFetcher', { fetcherName: 'lists', fetcher })\n    },\n\n    // Pleroma websocket\n    setWsToken (store, token) {\n      store.commit('setWsToken', token)\n    },\n    initializeSocket ({ dispatch, commit, state, rootState }) {\n      // Set up websocket connection\n      const token = state.wsToken\n      if (rootState.instance.shoutAvailable && typeof token !== 'undefined' && state.socket === null) {\n        const socket = new Socket('/socket', { params: { token } })\n        socket.connect()\n\n        commit('setSocket', socket)\n        dispatch('initializeShout', socket)\n      }\n    },\n    disconnectFromSocket ({ commit, state }) {\n      state.socket && state.socket.disconnect()\n      commit('setSocket', null)\n    }\n  }\n}\n\nexport default api\n","import Modal from 'src/components/modal/modal.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport pleromaTan from 'src/assets/pleromatan_apology.png'\nimport pleromaTanFox from 'src/assets/pleromatan_apology_fox.png'\nimport pleromaTanMask from 'src/assets/pleromatan_apology_mask.png'\nimport pleromaTanFoxMask from 'src/assets/pleromatan_apology_fox_mask.png'\n\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\nlibrary.add(\n  faTimes\n)\n\nexport const CURRENT_UPDATE_COUNTER = 1\n\nconst UpdateNotification = {\n  data () {\n    return {\n      showingImage: false,\n      pleromaTanVariant: Math.random() > 0.5 ? pleromaTan : pleromaTanFox,\n      showingMore: false\n    }\n  },\n  components: {\n    Modal\n  },\n  computed: {\n    pleromaTanStyles () {\n      const mask = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n      return {\n        'shape-outside': 'url(' + mask + ')'\n      }\n    },\n    shouldShow () {\n      return !this.$store.state.instance.disableUpdateNotification &&\n        this.$store.state.users.currentUser &&\n        this.$store.state.serverSideStorage.flagStorage.updateCounter < CURRENT_UPDATE_COUNTER &&\n        !this.$store.state.serverSideStorage.prefsStorage.simple.dontShowUpdateNotifs\n    }\n  },\n  methods: {\n    toggleShow () {\n      this.showingMore = !this.showingMore\n    },\n    neverShowAgain () {\n      this.toggleShow()\n      this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n      this.$store.commit('setPreference', { path: 'simple.dontShowUpdateNotifs', value: true })\n      this.$store.dispatch('pushServerSideStorage')\n    },\n    dismiss () {\n      this.$store.commit('setFlag', { flag: 'updateCounter', value: CURRENT_UPDATE_COUNTER })\n      this.$store.dispatch('pushServerSideStorage')\n    }\n  },\n  mounted () {\n    this.contentHeightNoImage = this.$refs.animatedText.scrollHeight\n\n    // Workaround to get the text height only after mask loaded. A bit hacky.\n    const newImg = new Image()\n    newImg.onload = () => {\n      setTimeout(() => { this.showingImage = true }, 100)\n    }\n    newImg.src = this.pleromaTanVariant === pleromaTan ? pleromaTanMask : pleromaTanFoxMask\n  }\n}\n\nexport default UpdateNotification\n","import { toRaw } from 'vue'\nimport { isEqual, cloneDeep, set, get, clamp, flatten, groupBy, findLastIndex, takeRight, uniqWith } from 'lodash'\nimport { CURRENT_UPDATE_COUNTER } from 'src/components/update_notification/update_notification.js'\n\nexport const VERSION = 1\nexport const NEW_USER_DATE = new Date('2022-08-04') // date of writing this, basically\n\nexport const COMMAND_TRIM_FLAGS = 1000\nexport const COMMAND_TRIM_FLAGS_AND_RESET = 1001\n\nexport const defaultState = {\n  // do we need to update data on server?\n  dirty: false,\n  // storage of flags - stuff that can only be set and incremented\n  flagStorage: {\n    updateCounter: 0, // Counter for most recent update notification seen\n    reset: 0 // special flag that can be used to force-reset all flags, debug purposes only\n    // special reset codes:\n    // 1000: trim keys to those known by currently running FE\n    // 1001: same as above + reset everything to 0\n  },\n  prefsStorage: {\n    _journal: [],\n    simple: {\n      dontShowUpdateNotifs: false,\n      collapseNav: false\n    },\n    collections: {\n      pinnedNavItems: ['home', 'dms', 'chats']\n    }\n  },\n  // raw data\n  raw: null,\n  // local cache\n  cache: null\n}\n\nexport const newUserFlags = {\n  ...defaultState.flagStorage,\n  updateCounter: CURRENT_UPDATE_COUNTER // new users don't need to see update notification\n}\n\nexport const _moveItemInArray = (array, value, movement) => {\n  const oldIndex = array.indexOf(value)\n  const newIndex = oldIndex + movement\n  const newArray = [...array]\n  // remove old\n  newArray.splice(oldIndex, 1)\n  // add new\n  newArray.splice(clamp(newIndex, 0, newArray.length + 1), 0, value)\n  return newArray\n}\n\nconst _wrapData = (data, userName) => ({\n  ...data,\n  _user: userName,\n  _timestamp: Date.now(),\n  _version: VERSION\n})\n\nconst _checkValidity = (data) => data._timestamp > 0 && data._version > 0\n\nconst _verifyPrefs = (state) => {\n  state.prefsStorage = state.prefsStorage || {\n    simple: {},\n    collections: {}\n  }\n  Object.entries(defaultState.prefsStorage.simple).forEach(([k, v]) => {\n    if (typeof v === 'number' || typeof v === 'boolean') return\n    console.warn(`Preference simple.${k} as invalid type, reinitializing`)\n    set(state.prefsStorage.simple, k, defaultState.prefsStorage.simple[k])\n  })\n  Object.entries(defaultState.prefsStorage.collections).forEach(([k, v]) => {\n    if (Array.isArray(v)) return\n    console.warn(`Preference collections.${k} as invalid type, reinitializing`)\n    set(state.prefsStorage.collections, k, defaultState.prefsStorage.collections[k])\n  })\n}\n\nexport const _getRecentData = (cache, live) => {\n  const result = { recent: null, stale: null, needUpload: false }\n  const cacheValid = _checkValidity(cache || {})\n  const liveValid = _checkValidity(live || {})\n  if (!liveValid && cacheValid) {\n    result.needUpload = true\n    console.debug('Nothing valid stored on server, assuming cache to be source of truth')\n    result.recent = cache\n    result.stale = live\n  } else if (!cacheValid && liveValid) {\n    console.debug('Valid storage on server found, no local cache found, using live as source of truth')\n    result.recent = live\n    result.stale = cache\n  } else if (cacheValid && liveValid) {\n    console.debug('Both sources have valid data, figuring things out...')\n    if (live._timestamp === cache._timestamp && live._version === cache._version) {\n      console.debug('Same version/timestamp on both source, source of truth irrelevant')\n      result.recent = cache\n      result.stale = live\n    } else {\n      console.debug('Different timestamp, figuring out which one is more recent')\n      if (live._timestamp < cache._timestamp) {\n        result.recent = cache\n        result.stale = live\n      } else {\n        result.recent = live\n        result.stale = cache\n      }\n    }\n  } else {\n    console.debug('Both sources are invalid, start from scratch')\n    result.needUpload = true\n  }\n  return result\n}\n\nexport const _getAllFlags = (recent, stale) => {\n  return Array.from(new Set([\n    ...Object.keys(toRaw((recent || {}).flagStorage || {})),\n    ...Object.keys(toRaw((stale || {}).flagStorage || {}))\n  ]))\n}\n\nexport const _mergeFlags = (recent, stale, allFlagKeys) => {\n  if (!stale.flagStorage) return recent.flagStorage\n  if (!recent.flagStorage) return stale.flagStorage\n  return Object.fromEntries(allFlagKeys.map(flag => {\n    const recentFlag = recent.flagStorage[flag]\n    const staleFlag = stale.flagStorage[flag]\n    // use flag that is of higher value\n    return [flag, Number((recentFlag > staleFlag ? recentFlag : staleFlag) || 0)]\n  }))\n}\n\nconst _mergeJournal = (...journals) => {\n  // Ignore invalid journal entries\n  const allJournals = flatten(\n    journals.map(j => Array.isArray(j) ? j : [])\n  ).filter(entry =>\n    Object.prototype.hasOwnProperty.call(entry, 'path') &&\n    Object.prototype.hasOwnProperty.call(entry, 'operation') &&\n    Object.prototype.hasOwnProperty.call(entry, 'args') &&\n    Object.prototype.hasOwnProperty.call(entry, 'timestamp')\n  )\n  const grouped = groupBy(allJournals, 'path')\n  const trimmedGrouped = Object.entries(grouped).map(([path, journal]) => {\n    // side effect\n    journal.sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n\n    if (path.startsWith('collections')) {\n      const lastRemoveIndex = findLastIndex(journal, ({ operation }) => operation === 'removeFromCollection')\n      // everything before last remove is unimportant\n      let remainder\n      if (lastRemoveIndex > 0) {\n        remainder = journal.slice(lastRemoveIndex)\n      } else {\n        // everything else doesn't need trimming\n        remainder = journal\n      }\n      return uniqWith(remainder, (a, b) => {\n        if (a.path !== b.path) { return false }\n        if (a.operation !== b.operation) { return false }\n        if (a.operation === 'addToCollection') {\n          return a.args[0] === b.args[0]\n        }\n        return false\n      })\n    } else if (path.startsWith('simple')) {\n      // Only the last record is important\n      return takeRight(journal)\n    } else {\n      return journal\n    }\n  })\n  return flatten(trimmedGrouped)\n    .sort((a, b) => a.timestamp > b.timestamp ? 1 : -1)\n}\n\nexport const _mergePrefs = (recent, stale, allFlagKeys) => {\n  if (!stale) return recent\n  if (!recent) return stale\n  const { _journal: recentJournal, ...recentData } = recent\n  const { _journal: staleJournal } = stale\n  /** Journal entry format:\n   * path: path to entry in prefsStorage\n   * timestamp: timestamp of the change\n   * operation: operation type\n   * arguments: array of arguments, depends on operation type\n   *\n   * currently only supported operation type is \"set\" which just sets the value\n   * to requested one. Intended only to be used with simple preferences (boolean, number)\n   * shouldn't be used with collections!\n   */\n  const resultOutput = { ...recentData }\n  const totalJournal = _mergeJournal(staleJournal, recentJournal)\n  totalJournal.forEach(({ path, timestamp, operation, command, args }) => {\n    if (path.startsWith('_')) {\n      console.error(`journal contains entry to edit internal (starts with _) field '${path}', something is incorrect here, ignoring.`)\n      return\n    }\n    switch (operation) {\n      case 'set':\n        set(resultOutput, path, args[0])\n        break\n      case 'addToCollection':\n        set(resultOutput, path, Array.from(new Set(get(resultOutput, path)).add(args[0])))\n        break\n      case 'removeFromCollection': {\n        const newSet = new Set(get(resultOutput, path))\n        newSet.delete(args[0])\n        set(resultOutput, path, Array.from(newSet))\n        break\n      }\n      case 'reorderCollection': {\n        const [value, movement] = args\n        set(resultOutput, path, _moveItemInArray(get(resultOutput, path), value, movement))\n        break\n      }\n      default:\n        console.error(`Unknown journal operation: '${operation}', did we forget to run reverse migrations beforehand?`)\n    }\n  })\n  return { ...resultOutput, _journal: totalJournal }\n}\n\nexport const _resetFlags = (totalFlags, knownKeys = defaultState.flagStorage) => {\n  let result = { ...totalFlags }\n  const allFlagKeys = Object.keys(totalFlags)\n  // flag reset functionality\n  if (totalFlags.reset >= COMMAND_TRIM_FLAGS && totalFlags.reset <= COMMAND_TRIM_FLAGS_AND_RESET) {\n    console.debug('Received command to trim the flags')\n    const knownKeysSet = new Set(Object.keys(knownKeys))\n\n    // Trim\n    result = {}\n    allFlagKeys.forEach(flag => {\n      if (knownKeysSet.has(flag)) {\n        result[flag] = totalFlags[flag]\n      }\n    })\n\n    // Reset\n    if (totalFlags.reset === COMMAND_TRIM_FLAGS_AND_RESET) {\n      // 1001 - and reset everything to 0\n      console.debug('Received command to reset the flags')\n      Object.keys(knownKeys).forEach(flag => { result[flag] = 0 })\n    }\n  } else if (totalFlags.reset > 0 && totalFlags.reset < 9000) {\n    console.debug('Received command to reset the flags')\n    allFlagKeys.forEach(flag => { result[flag] = 0 })\n  }\n  result.reset = 0\n  return result\n}\n\nexport const _doMigrations = (cache) => {\n  if (!cache) return cache\n\n  if (cache._version < VERSION) {\n    console.debug('Local cached data has older version, seeing if there any migrations that can be applied')\n\n    // no migrations right now since we only have one version\n    console.debug('No migrations found')\n  }\n\n  if (cache._version > VERSION) {\n    console.debug('Local cached data has newer version, seeing if there any reverse migrations that can be applied')\n\n    // no reverse migrations right now but we leave a possibility of loading a hotpatch if need be\n    if (window._PLEROMA_HOTPATCH) {\n      if (window._PLEROMA_HOTPATCH.reverseMigrations) {\n        console.debug('Found hotpatch migration, applying')\n        return window._PLEROMA_HOTPATCH.reverseMigrations.call({}, 'serverSideStorage', { from: cache._version, to: VERSION }, cache)\n      }\n    }\n  }\n\n  return cache\n}\n\nexport const mutations = {\n  clearServerSideStorage (state, userData) {\n    state = { ...cloneDeep(defaultState) }\n  },\n  setServerSideStorage (state, userData) {\n    const live = userData.storage\n    state.raw = live\n    let cache = state.cache\n    if (cache && cache._user !== userData.fqn) {\n      console.warn('cache belongs to another user! reinitializing local cache!')\n      cache = null\n    }\n\n    cache = _doMigrations(cache)\n\n    let { recent, stale, needsUpload } = _getRecentData(cache, live)\n\n    const userNew = userData.created_at > NEW_USER_DATE\n    const flagsTemplate = userNew ? newUserFlags : defaultState.flagStorage\n    let dirty = false\n\n    if (recent === null) {\n      console.debug(`Data is empty, initializing for ${userNew ? 'new' : 'existing'} user`)\n      recent = _wrapData({\n        flagStorage: { ...flagsTemplate },\n        prefsStorage: { ...defaultState.prefsStorage }\n      })\n    }\n\n    if (!needsUpload && recent && stale) {\n      console.debug('Checking if data needs merging...')\n      // discarding timestamps and versions\n      const { _timestamp: _0, _version: _1, ...recentData } = recent\n      const { _timestamp: _2, _version: _3, ...staleData } = stale\n      dirty = !isEqual(recentData, staleData)\n      console.debug(`Data ${dirty ? 'needs' : 'doesn\\'t need'} merging`)\n    }\n\n    const allFlagKeys = _getAllFlags(recent, stale)\n    let totalFlags\n    let totalPrefs\n    if (dirty) {\n      // Merge the flags\n      console.debug('Merging the data...')\n      totalFlags = _mergeFlags(recent, stale, allFlagKeys)\n      _verifyPrefs(recent)\n      _verifyPrefs(stale)\n      totalPrefs = _mergePrefs(recent.prefsStorage, stale.prefsStorage)\n    } else {\n      totalFlags = recent.flagStorage\n      totalPrefs = recent.prefsStorage\n    }\n\n    totalFlags = _resetFlags(totalFlags)\n\n    recent.flagStorage = { ...flagsTemplate, ...totalFlags }\n    recent.prefsStorage = { ...defaultState.prefsStorage, ...totalPrefs }\n\n    state.dirty = dirty || needsUpload\n    state.cache = recent\n    // set local timestamp to smaller one if we don't have any changes\n    if (stale && recent && !state.dirty) {\n      state.cache._timestamp = Math.min(stale._timestamp, recent._timestamp)\n    }\n    state.flagStorage = state.cache.flagStorage\n    state.prefsStorage = state.cache.prefsStorage\n  },\n  setFlag (state, { flag, value }) {\n    state.flagStorage[flag] = value\n    state.dirty = true\n  },\n  setPreference (state, { path, value }) {\n    if (path.startsWith('_')) {\n      console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n      return\n    }\n    set(state.prefsStorage, path, value)\n    state.prefsStorage._journal = [\n      ...state.prefsStorage._journal,\n      { operation: 'set', path, args: [value], timestamp: Date.now() }\n    ]\n    state.dirty = true\n  },\n  addCollectionPreference (state, { path, value }) {\n    if (path.startsWith('_')) {\n      console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n      return\n    }\n    const collection = new Set(get(state.prefsStorage, path))\n    collection.add(value)\n    set(state.prefsStorage, path, [...collection])\n    state.prefsStorage._journal = [\n      ...state.prefsStorage._journal,\n      { operation: 'addToCollection', path, args: [value], timestamp: Date.now() }\n    ]\n    state.dirty = true\n  },\n  removeCollectionPreference (state, { path, value }) {\n    if (path.startsWith('_')) {\n      console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n      return\n    }\n    const collection = new Set(get(state.prefsStorage, path))\n    collection.delete(value)\n    set(state.prefsStorage, path, [...collection])\n    state.prefsStorage._journal = [\n      ...state.prefsStorage._journal,\n      { operation: 'removeFromCollection', path, args: [value], timestamp: Date.now() }\n    ]\n    state.dirty = true\n  },\n  reorderCollectionPreference (state, { path, value, movement }) {\n    if (path.startsWith('_')) {\n      console.error(`tried to edit internal (starts with _) field '${path}', ignoring.`)\n      return\n    }\n    const collection = get(state.prefsStorage, path)\n    const newCollection = _moveItemInArray(collection, value, movement)\n    set(state.prefsStorage, path, newCollection)\n    state.prefsStorage._journal = [\n      ...state.prefsStorage._journal,\n      { operation: 'arrangeCollection', path, args: [value], timestamp: Date.now() }\n    ]\n    state.dirty = true\n  },\n  updateCache (state, { username }) {\n    state.prefsStorage._journal = _mergeJournal(state.prefsStorage._journal)\n    state.cache = _wrapData({\n      flagStorage: toRaw(state.flagStorage),\n      prefsStorage: toRaw(state.prefsStorage)\n    }, username)\n  }\n}\n\nconst serverSideStorage = {\n  state: {\n    ...cloneDeep(defaultState)\n  },\n  mutations,\n  actions: {\n    pushServerSideStorage ({ state, rootState, commit }, { force = false } = {}) {\n      const needPush = state.dirty || force\n      console.log(needPush)\n      if (!needPush) return\n      commit('updateCache', { username: rootState.users.currentUser.fqn })\n      const params = { pleroma_settings_store: { 'pleroma-fe': state.cache } }\n      rootState.api.backendInteractor\n        .updateProfile({ params })\n        .then((user) => {\n          commit('setServerSideStorage', user)\n          state.dirty = false\n        })\n    }\n  }\n}\n\nexport default serverSideStorage\n","const shout = {\n  state: {\n    messages: [],\n    channel: { state: '' },\n    joined: false\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    setJoined (state, joined) {\n      state.joined = joined\n    }\n  },\n  actions: {\n    initializeShout (store, socket) {\n      const channel = socket.channel('chat:public')\n      channel.joinPush.receive('ok', () => {\n        store.commit('setJoined', true)\n      })\n      channel.onClose(() => {\n        store.commit('setJoined', false)\n      })\n      channel.onError(() => {\n        store.commit('setJoined', false)\n      })\n      channel.on('new_msg', (msg) => {\n        store.commit('addMessage', msg)\n      })\n      channel.on('messages', ({ messages }) => {\n        store.commit('setMessages', messages)\n      })\n      channel.join()\n      store.commit('setChannel', channel)\n    }\n  }\n}\n\nexport default shout\n","const 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      delete 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'\nconst supportedTypes = new Set(['image', 'video', 'audio', 'flash'])\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    setCurrentMedia (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 supportedTypes.has(type)\n      })\n      commit('setMedia', media)\n    },\n    setCurrentMedia ({ commit, state }, current) {\n      const index = state.media.indexOf(current)\n      commit('setCurrentMedia', 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    reportModal: {\n      userId: null,\n      statuses: [],\n      preTickedIds: [],\n      activated: false\n    },\n    reports: {}\n  },\n  mutations: {\n    openUserReportingModal (state, { userId, statuses, preTickedIds }) {\n      state.reportModal.userId = userId\n      state.reportModal.statuses = statuses\n      state.reportModal.preTickedIds = preTickedIds\n      state.reportModal.activated = true\n    },\n    closeUserReportingModal (state) {\n      state.reportModal.activated = false\n    },\n    setReportState (reportsState, { id, state }) {\n      reportsState.reports[id].state = state\n    },\n    addReport (state, report) {\n      state.reports[report.id] = report\n    }\n  },\n  actions: {\n    openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {\n      const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])\n      const preTickedIds = statusIds\n      const statuses = preTickedStatuses.concat(\n        filter(rootState.statuses.allStatuses,\n          status => status.user.id === userId && !preTickedIds.includes(status.id)\n        )\n      )\n      commit('openUserReportingModal', { userId, statuses, preTickedIds })\n    },\n    closeUserReportingModal ({ commit }) {\n      commit('closeUserReportingModal')\n    },\n    setReportState ({ commit, dispatch, rootState }, { id, state }) {\n      const oldState = rootState.reports.reports[id].state\n      commit('setReportState', { id, state })\n      rootState.api.backendInteractor.setReportState({ id, state }).catch(e => {\n        console.error('Failed to set report state', e)\n        dispatch('pushGlobalNotice', {\n          level: 'error',\n          messageKey: 'general.generic_error_message',\n          messageArgs: [e.message],\n          timeout: 5000\n        })\n        commit('setReportState', { id, state: oldState })\n      })\n    },\n    addReport ({ commit }, report) {\n      commit('addReport', report)\n    }\n  }\n}\n\nexport default reports\n","import { merge } from 'lodash'\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        state.pollsObject[poll.id] = merge(existingPoll, poll)\n      } else {\n        state.pollsObject[poll.id] = poll\n      }\n    },\n    trackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue + 1\n      } else {\n        state.trackedPolls[pollId] = 1\n      }\n    },\n    untrackPoll (state, pollId) {\n      const currentValue = state.trackedPolls[pollId]\n      if (currentValue) {\n        state.trackedPolls[pollId] = currentValue - 1\n      } else {\n        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","const editStatus = {\n  state: {\n    params: null,\n    modalActivated: false\n  },\n  mutations: {\n    openEditStatusModal (state, params) {\n      state.params = params\n      state.modalActivated = true\n    },\n    closeEditStatusModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openEditStatusModal ({ commit }, params) {\n      commit('openEditStatusModal', params)\n    },\n    closeEditStatusModal ({ commit }) {\n      commit('closeEditStatusModal')\n    }\n  }\n}\n\nexport default editStatus\n","const statusHistory = {\n  state: {\n    params: {},\n    modalActivated: false\n  },\n  mutations: {\n    openStatusHistoryModal (state, params) {\n      state.params = params\n      state.modalActivated = true\n    },\n    closeStatusHistoryModal (state) {\n      state.modalActivated = false\n    }\n  },\n  actions: {\n    openStatusHistoryModal ({ commit }, params) {\n      commit('openStatusHistoryModal', params)\n    },\n    closeStatusHistoryModal ({ commit }) {\n      commit('closeStatusHistoryModal')\n    }\n  }\n}\n\nexport default statusHistory\n","import _ from 'lodash'\n\nconst empty = (chatId) => {\n  return {\n    idIndex: {},\n    idempotencyKeyIndex: {},\n    messages: [],\n    newMessageCount: 0,\n    lastSeenMessageId: '0',\n    chatId,\n    minId: undefined,\n    maxId: undefined\n  }\n}\n\nconst clear = (storage) => {\n  const failedMessageIds = []\n\n  for (const message of storage.messages) {\n    if (message.error) {\n      failedMessageIds.push(message.id)\n    } else {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n\n  storage.messages = storage.messages.filter(m => failedMessageIds.includes(m.id))\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = '0'\n  storage.minId = undefined\n  storage.maxId = undefined\n}\n\nconst deleteMessage = (storage, messageId) => {\n  if (!storage) { return }\n  storage.messages = storage.messages.filter(m => m.id !== messageId)\n  delete storage.idIndex[messageId]\n\n  if (storage.maxId === messageId) {\n    const lastMessage = _.maxBy(storage.messages, 'id')\n    storage.maxId = lastMessage.id\n  }\n\n  if (storage.minId === messageId) {\n    const firstMessage = _.minBy(storage.messages, 'id')\n    storage.minId = firstMessage.id\n  }\n}\n\nconst cullOlderMessages = (storage) => {\n  const maxIndex = storage.messages.length\n  const minIndex = maxIndex - 50\n  if (maxIndex <= 50) return\n\n  storage.messages = _.sortBy(storage.messages, ['id'])\n  storage.minId = storage.messages[minIndex].id\n  for (const message of storage.messages) {\n    if (message.id < storage.minId) {\n      delete storage.idIndex[message.id]\n      delete storage.idempotencyKeyIndex[message.idempotency_key]\n    }\n  }\n  storage.messages = storage.messages.slice(minIndex, maxIndex)\n}\n\nconst handleMessageError = (storage, fakeId, isRetry) => {\n  if (!storage) { return }\n  const fakeMessage = storage.idIndex[fakeId]\n  if (fakeMessage) {\n    fakeMessage.error = true\n    fakeMessage.pending = false\n    if (!isRetry) {\n      // Ensure the failed message doesn't stay at the bottom of the list.\n      const lastPersistedMessage = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'desc'])[0]\n      if (lastPersistedMessage) {\n        const oldId = fakeMessage.id\n        fakeMessage.id = `${lastPersistedMessage.id}-${new Date().getTime()}`\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[oldId]\n      }\n    }\n  }\n}\n\nconst add = (storage, { messages: newMessages, updateMaxId = true }) => {\n  if (!storage) { return }\n  for (let i = 0; i < newMessages.length; i++) {\n    const message = newMessages[i]\n\n    // sanity check\n    if (message.chat_id !== storage.chatId) { return }\n\n    if (message.fakeId) {\n      const fakeMessage = storage.idIndex[message.fakeId]\n      if (fakeMessage) {\n        // In case the same id exists (chat update before POST response)\n        // make sure to remove the older duplicate message.\n        if (storage.idIndex[message.id]) {\n          delete storage.idIndex[message.id]\n          storage.messages = storage.messages.filter(msg => msg.id !== message.id)\n        }\n        Object.assign(fakeMessage, message, { error: false })\n        delete fakeMessage.fakeId\n        storage.idIndex[fakeMessage.id] = fakeMessage\n        delete storage.idIndex[message.fakeId]\n\n        return\n      }\n    }\n\n    if (!storage.minId || (!message.pending && message.id < storage.minId)) {\n      storage.minId = message.id\n    }\n\n    if (!storage.maxId || message.id > storage.maxId) {\n      if (updateMaxId) {\n        storage.maxId = message.id\n      }\n    }\n\n    if (!storage.idIndex[message.id] && !isConfirmation(storage, message)) {\n      if (storage.lastSeenMessageId < message.id) {\n        storage.newMessageCount++\n      }\n      storage.idIndex[message.id] = message\n      storage.messages.push(storage.idIndex[message.id])\n      storage.idempotencyKeyIndex[message.idempotency_key] = true\n    }\n  }\n}\n\nconst isConfirmation = (storage, message) => {\n  if (!message.idempotency_key) return\n  return storage.idempotencyKeyIndex[message.idempotency_key]\n}\n\nconst resetNewMessageCount = (storage) => {\n  if (!storage) { return }\n  storage.newMessageCount = 0\n  storage.lastSeenMessageId = storage.maxId\n}\n\n// Inserts date separators and marks the head and tail if it's the chain of messages made by the same user\nconst getView = (storage) => {\n  if (!storage) { return [] }\n\n  const result = []\n  const messages = _.orderBy(storage.messages, ['pending', 'id'], ['asc', 'asc'])\n  const firstMessage = messages[0]\n  let previousMessage = messages[messages.length - 1]\n  let currentMessageChainId\n\n  if (firstMessage) {\n    const date = new Date(firstMessage.created_at)\n    date.setHours(0, 0, 0, 0)\n    result.push({\n      type: 'date',\n      date,\n      id: date.getTime().toString()\n    })\n  }\n\n  let afterDate = false\n\n  for (let i = 0; i < messages.length; i++) {\n    const message = messages[i]\n    const nextMessage = messages[i + 1]\n\n    const date = new Date(message.created_at)\n    date.setHours(0, 0, 0, 0)\n\n    // insert date separator and start a new message chain\n    if (previousMessage && previousMessage.date < date) {\n      result.push({\n        type: 'date',\n        date,\n        id: date.getTime().toString()\n      })\n\n      previousMessage.isTail = true\n      currentMessageChainId = undefined\n      afterDate = true\n    }\n\n    const object = {\n      type: 'message',\n      data: message,\n      date,\n      id: message.id,\n      messageChainId: currentMessageChainId\n    }\n\n    // end a message chian\n    if ((nextMessage && nextMessage.account_id) !== message.account_id) {\n      object.isTail = true\n      currentMessageChainId = undefined\n    }\n\n    // start a new message chain\n    if ((previousMessage && previousMessage.data && previousMessage.data.account_id) !== message.account_id || afterDate) {\n      currentMessageChainId = _.uniqueId()\n      object.isHead = true\n      object.messageChainId = currentMessageChainId\n    }\n\n    result.push(object)\n    previousMessage = object\n    afterDate = false\n  }\n\n  return result\n}\n\nconst ChatService = {\n  add,\n  empty,\n  getView,\n  deleteMessage,\n  cullOlderMessages,\n  resetNewMessageCount,\n  clear,\n  handleMessageError\n}\n\nexport default ChatService\n","import { reactive } from 'vue'\nimport { find, omitBy, orderBy, sumBy } from 'lodash'\nimport chatService from '../services/chat_service/chat_service.js'\nimport { parseChat, parseChatMessage } from '../services/entity_normalizer/entity_normalizer.service.js'\nimport { maybeShowChatNotification } from '../services/chat_utils/chat_utils.js'\nimport { promiseInterval } from '../services/promise_interval/promise_interval.js'\n\nconst emptyChatList = () => ({\n  data: [],\n  idStore: {}\n})\n\nconst defaultState = {\n  chatList: emptyChatList(),\n  chatListFetcher: null,\n  openedChats: reactive({}),\n  openedChatMessageServices: reactive({}),\n  fetcher: undefined,\n  currentChatId: null,\n  lastReadMessageId: null\n}\n\nconst getChatById = (state, id) => {\n  return find(state.chatList.data, { id })\n}\n\nconst sortedChatList = (state) => {\n  return orderBy(state.chatList.data, ['updated_at'], ['desc'])\n}\n\nconst unreadChatCount = (state) => {\n  return sumBy(state.chatList.data, 'unread')\n}\n\nconst chats = {\n  state: { ...defaultState },\n  getters: {\n    currentChat: state => state.openedChats[state.currentChatId],\n    currentChatMessageService: state => state.openedChatMessageServices[state.currentChatId],\n    findOpenedChatByRecipientId: state => recipientId => find(state.openedChats, c => c.account.id === recipientId),\n    sortedChatList,\n    unreadChatCount\n  },\n  actions: {\n    // Chat list\n    startFetchingChats ({ dispatch, commit }) {\n      const fetcher = () => dispatch('fetchChats', { latest: true })\n      fetcher()\n      commit('setChatListFetcher', {\n        fetcher: () => promiseInterval(fetcher, 5000)\n      })\n    },\n    stopFetchingChats ({ commit }) {\n      commit('setChatListFetcher', { fetcher: undefined })\n    },\n    fetchChats ({ dispatch, rootState, commit }, params = {}) {\n      return rootState.api.backendInteractor.chats()\n        .then(({ chats }) => {\n          dispatch('addNewChats', { chats })\n          return chats\n        })\n    },\n    addNewChats (store, { chats }) {\n      const { commit, dispatch, rootGetters } = store\n      const newChatMessageSideEffects = (chat) => {\n        maybeShowChatNotification(store, chat)\n      }\n      commit('addNewChats', { dispatch, chats, rootGetters, newChatMessageSideEffects })\n    },\n    updateChat ({ commit }, { chat }) {\n      commit('updateChat', { chat })\n    },\n\n    // Opened Chats\n    startFetchingCurrentChat ({ commit, dispatch }, { fetcher }) {\n      dispatch('setCurrentChatFetcher', { fetcher })\n    },\n    setCurrentChatFetcher ({ rootState, commit }, { fetcher }) {\n      commit('setCurrentChatFetcher', { fetcher })\n    },\n    addOpenedChat ({ rootState, commit, dispatch }, { chat }) {\n      commit('addOpenedChat', { dispatch, chat: parseChat(chat) })\n      dispatch('addNewUsers', [chat.account])\n    },\n    addChatMessages ({ commit }, value) {\n      commit('addChatMessages', { commit, ...value })\n    },\n    resetChatNewMessageCount ({ commit }, value) {\n      commit('resetChatNewMessageCount', value)\n    },\n    clearCurrentChat ({ rootState, commit, dispatch }, value) {\n      commit('setCurrentChatId', { chatId: undefined })\n      commit('setCurrentChatFetcher', { fetcher: undefined })\n    },\n    readChat ({ rootState, commit, dispatch }, { id, lastReadId }) {\n      const isNewMessage = rootState.chats.lastReadMessageId !== lastReadId\n\n      dispatch('resetChatNewMessageCount')\n      commit('readChat', { id, lastReadId })\n\n      if (isNewMessage) {\n        rootState.api.backendInteractor.readChat({ id, lastReadId })\n      }\n    },\n    deleteChatMessage ({ rootState, commit }, value) {\n      rootState.api.backendInteractor.deleteChatMessage(value)\n      commit('deleteChatMessage', { commit, ...value })\n    },\n    resetChats ({ commit, dispatch }) {\n      dispatch('clearCurrentChat')\n      commit('resetChats', { commit })\n    },\n    clearOpenedChats ({ rootState, commit, dispatch, rootGetters }) {\n      commit('clearOpenedChats', { commit })\n    },\n    handleMessageError ({ commit }, value) {\n      commit('handleMessageError', { commit, ...value })\n    },\n    cullOlderMessages ({ commit }, chatId) {\n      commit('cullOlderMessages', chatId)\n    }\n  },\n  mutations: {\n    setChatListFetcher (state, { commit, fetcher }) {\n      const prevFetcher = state.chatListFetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.chatListFetcher = fetcher && fetcher()\n    },\n    setCurrentChatFetcher (state, { fetcher }) {\n      const prevFetcher = state.fetcher\n      if (prevFetcher) {\n        prevFetcher.stop()\n      }\n      state.fetcher = fetcher && fetcher()\n    },\n    addOpenedChat (state, { _dispatch, chat }) {\n      state.currentChatId = chat.id\n      state.openedChats[chat.id] = chat\n\n      if (!state.openedChatMessageServices[chat.id]) {\n        state.openedChatMessageServices[chat.id] = chatService.empty(chat.id)\n      }\n    },\n    setCurrentChatId (state, { chatId }) {\n      state.currentChatId = chatId\n    },\n    addNewChats (state, { chats, newChatMessageSideEffects }) {\n      chats.forEach((updatedChat) => {\n        const chat = getChatById(state, updatedChat.id)\n\n        if (chat) {\n          const isNewMessage = (chat.lastMessage && chat.lastMessage.id) !== (updatedChat.lastMessage && updatedChat.lastMessage.id)\n          chat.lastMessage = updatedChat.lastMessage\n          chat.unread = updatedChat.unread\n          chat.updated_at = updatedChat.updated_at\n          if (isNewMessage && chat.unread) {\n            newChatMessageSideEffects(updatedChat)\n          }\n        } else {\n          state.chatList.data.push(updatedChat)\n          state.chatList.idStore[updatedChat.id] = updatedChat\n        }\n      })\n    },\n    updateChat (state, { _dispatch, chat: updatedChat, _rootGetters }) {\n      const chat = getChatById(state, updatedChat.id)\n      if (chat) {\n        chat.lastMessage = updatedChat.lastMessage\n        chat.unread = updatedChat.unread\n        chat.updated_at = updatedChat.updated_at\n      }\n      if (!chat) { state.chatList.data.unshift(updatedChat) }\n      state.chatList.idStore[updatedChat.id] = updatedChat\n    },\n    deleteChat (state, { _dispatch, id, _rootGetters }) {\n      state.chats.data = state.chats.data.filter(conversation =>\n        conversation.last_status.id !== id\n      )\n      state.chats.idStore = omitBy(state.chats.idStore, conversation => conversation.last_status.id === id)\n    },\n    resetChats (state, { commit }) {\n      state.chatList = emptyChatList()\n      state.currentChatId = null\n      commit('setChatListFetcher', { fetcher: undefined })\n      for (const chatId in state.openedChats) {\n        chatService.clear(state.openedChatMessageServices[chatId])\n        delete state.openedChats[chatId]\n        delete state.openedChatMessageServices[chatId]\n      }\n    },\n    setChatsLoading (state, { value }) {\n      state.chats.loading = value\n    },\n    addChatMessages (state, { chatId, messages, updateMaxId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.add(chatMessageService, { messages: messages.map(parseChatMessage), updateMaxId })\n      }\n    },\n    deleteChatMessage (state, { chatId, messageId }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      if (chatMessageService) {\n        chatService.deleteMessage(chatMessageService, messageId)\n      }\n    },\n    resetChatNewMessageCount (state, _value) {\n      const chatMessageService = state.openedChatMessageServices[state.currentChatId]\n      chatService.resetNewMessageCount(chatMessageService)\n    },\n    // Used when a connection loss occurs\n    clearOpenedChats (state) {\n      const currentChatId = state.currentChatId\n      for (const chatId in state.openedChats) {\n        if (currentChatId !== chatId) {\n          chatService.clear(state.openedChatMessageServices[chatId])\n          delete state.openedChats[chatId]\n          delete state.openedChatMessageServices[chatId]\n        }\n      }\n    },\n    readChat (state, { id, lastReadId }) {\n      state.lastReadMessageId = lastReadId\n      const chat = getChatById(state, id)\n      if (chat) {\n        chat.unread = 0\n      }\n    },\n    handleMessageError (state, { chatId, fakeId, isRetry }) {\n      const chatMessageService = state.openedChatMessageServices[chatId]\n      chatService.handleMessageError(chatMessageService, fakeId, isRetry)\n    },\n    cullOlderMessages (state, chatId) {\n      chatService.cullOlderMessages(state.openedChatMessageServices[chatId])\n    }\n  }\n}\n\nexport default chats\n","const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5\n\nexport const defaultState = {\n  announcements: [],\n  supportsAnnouncements: true,\n  fetchAnnouncementsTimer: undefined\n}\n\nexport const mutations = {\n  setAnnouncements (state, announcements) {\n    state.announcements = announcements\n  },\n  setAnnouncementRead (state, { id, read }) {\n    const index = state.announcements.findIndex(a => a.id === id)\n\n    if (index < 0) {\n      return\n    }\n\n    state.announcements[index].read = read\n  },\n  setFetchAnnouncementsTimer (state, timer) {\n    state.fetchAnnouncementsTimer = timer\n  },\n  setSupportsAnnouncements (state, supportsAnnouncements) {\n    state.supportsAnnouncements = supportsAnnouncements\n  }\n}\n\nexport const getters = {\n  unreadAnnouncementCount (state, _getters, rootState) {\n    if (!rootState.users.currentUser) {\n      return 0\n    }\n\n    const unread = state.announcements.filter(announcement => !(announcement.inactive || announcement.read))\n    return unread.length\n  }\n}\n\nconst announcements = {\n  state: defaultState,\n  mutations,\n  getters,\n  actions: {\n    fetchAnnouncements (store) {\n      if (!store.state.supportsAnnouncements) {\n        return Promise.resolve()\n      }\n\n      const currentUser = store.rootState.users.currentUser\n      const isAdmin = currentUser && currentUser.role === 'admin'\n\n      const getAnnouncements = async () => {\n        if (!isAdmin) {\n          return store.rootState.api.backendInteractor.fetchAnnouncements()\n        }\n\n        const all = await store.rootState.api.backendInteractor.adminFetchAnnouncements()\n        const visible = await store.rootState.api.backendInteractor.fetchAnnouncements()\n        const visibleObject = visible.reduce((a, c) => {\n          a[c.id] = c\n          return a\n        }, {})\n        const getWithinVisible = announcement => visibleObject[announcement.id]\n\n        all.forEach(announcement => {\n          const visibleAnnouncement = getWithinVisible(announcement)\n          if (!visibleAnnouncement) {\n            announcement.inactive = true\n          } else {\n            announcement.read = visibleAnnouncement.read\n          }\n        })\n\n        return all\n      }\n\n      return getAnnouncements()\n        .then(announcements => {\n          store.commit('setAnnouncements', announcements)\n        })\n        .catch(error => {\n          // If and only if backend does not support announcements, it would return 404.\n          // In this case, silently ignores it.\n          if (error && error.statusCode === 404) {\n            store.commit('setSupportsAnnouncements', false)\n          } else {\n            throw error\n          }\n        })\n    },\n    markAnnouncementAsRead (store, id) {\n      return store.rootState.api.backendInteractor.dismissAnnouncement({ id })\n        .then(() => {\n          store.commit('setAnnouncementRead', { id, read: true })\n        })\n    },\n    startFetchingAnnouncements (store) {\n      if (store.state.fetchAnnouncementsTimer) {\n        return\n      }\n\n      const interval = setInterval(() => store.dispatch('fetchAnnouncements'), FETCH_ANNOUNCEMENT_INTERVAL_MS)\n      store.commit('setFetchAnnouncementsTimer', interval)\n\n      return store.dispatch('fetchAnnouncements')\n    },\n    stopFetchingAnnouncements (store) {\n      const interval = store.state.fetchAnnouncementsTimer\n      store.commit('setFetchAnnouncementsTimer', undefined)\n      clearInterval(interval)\n    },\n    postAnnouncement (store, { content, startsAt, endsAt, allDay }) {\n      return store.rootState.api.backendInteractor.postAnnouncement({ content, startsAt, endsAt, allDay })\n        .then(() => {\n          return store.dispatch('fetchAnnouncements')\n        })\n    },\n    editAnnouncement (store, { id, content, startsAt, endsAt, allDay }) {\n      return store.rootState.api.backendInteractor.editAnnouncement({ id, content, startsAt, endsAt, allDay })\n        .then(() => {\n          return store.dispatch('fetchAnnouncements')\n        })\n    },\n    deleteAnnouncement (store, id) {\n      return store.rootState.api.backendInteractor.deleteAnnouncement({ id })\n        .then(() => {\n          return store.dispatch('fetchAnnouncements')\n        })\n    }\n  }\n}\n\nexport default announcements\n","import merge from 'lodash.merge'\nimport localforage from 'localforage'\nimport { each, get, set, cloneDeep } from 'lodash'\n\nlet loaded = false\n\nconst defaultReducer = (state, paths) => (\n  paths.length === 0\n    ? state\n    : paths.reduce((substate, path) => {\n      set(substate, path, get(state, path))\n      return substate\n    }, {})\n)\n\nconst saveImmedeatelyActions = [\n  'markNotificationsAsSeen',\n  'clearCurrentUser',\n  'setCurrentUser',\n  'setServerSideStorage',\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    const 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(cloneDeep(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","<template>\n  <div\n    id=\"app-loaded\"\n    :style=\"bgStyle\"\n  >\n    <div\n      id=\"app_bg_wrapper\"\n      class=\"app-bg-wrapper\"\n    />\n    <MobileNav v-if=\"layoutType === 'mobile'\" />\n    <DesktopNav\n      v-else\n      :class=\"navClasses\"\n    />\n    <Notifications v-if=\"currentUser\" />\n    <div\n      id=\"content\"\n      class=\"app-layout container\"\n      :class=\"classes\"\n    >\n      <div class=\"underlay\" />\n      <div\n        id=\"sidebar\"\n        class=\"column -scrollable\"\n        :class=\"{ '-show-scrollbar': showScrollbars }\"\n      >\n        <user-panel />\n        <template v-if=\"layoutType !== 'mobile'\">\n          <nav-panel />\n          <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n          <features-panel v-if=\"!currentUser && showFeaturesPanel\" />\n          <who-to-follow-panel v-if=\"currentUser && suggestionsEnabled\" />\n          <div id=\"notifs-sidebar\" />\n        </template>\n      </div>\n      <main\n        id=\"main-scroller\"\n        class=\"column main\"\n        :class=\"{ '-full-height': isChats || isListEdit }\"\n      >\n        <div\n          v-if=\"!currentUser\"\n          class=\"login-hint panel panel-default\"\n        >\n          <router-link\n            :to=\"{ name: 'login' }\"\n            class=\"panel-body\"\n          >\n            {{ $t(\"login.hint\") }}\n          </router-link>\n        </div>\n        <router-view />\n      </main>\n      <div\n        id=\"notifs-column\"\n        class=\"column -scrollable\"\n        :class=\"{ '-show-scrollbar': showScrollbars }\"\n      />\n    </div>\n    <MediaModal />\n    <shout-panel\n      v-if=\"currentUser && shout && !hideShoutbox\"\n      :floating=\"true\"\n      class=\"floating-shout mobile-hidden\"\n      :class=\"{ '-left': shoutboxPosition }\"\n    />\n    <MobilePostStatusButton />\n    <UserReportingModal />\n    <PostStatusModal />\n    <EditStatusModal v-if=\"editingAvailable\" />\n    <StatusHistoryModal v-if=\"editingAvailable\" />\n    <SettingsModal />\n    <UpdateNotification />\n    <div id=\"modal\" />\n    <GlobalNoticeList />\n  </div>\n</template>\n\n<script src=\"./App.js\"></script>\n<style lang=\"scss\" src=\"./App.scss\"></style>\n","<template>\n  <aside class=\"user-panel\">\n    <div\n      v-if=\"signedIn\"\n      key=\"user-panel-signed\"\n      class=\"panel panel-default signed-in\"\n    >\n      <UserCard\n        :user-id=\"user.id\"\n        :hide-bio=\"true\"\n        rounded=\"top\"\n      />\n      <PostStatusForm />\n    </div>\n    <auth-form\n      v-else\n      key=\"user-panel\"\n    />\n  </aside>\n</template>\n\n<script src=\"./user_panel.js\"></script>\n\n<style lang=\"scss\">\n.user-panel .signed-in {\n  overflow: visible;\n  z-index: 10;\n}\n</style>\n","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.login') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <template v-if=\"isPasswordAuth\">\n          <div class=\"form-group\">\n            <label for=\"username\">{{ $t('login.username') }}</label>\n            <input\n              id=\"username\"\n              v-model=\"user.username\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              :placeholder=\"$t('login.placeholder')\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <label for=\"password\">{{ $t('login.password') }}</label>\n            <input\n              id=\"password\"\n              ref=\"passwordInput\"\n              v-model=\"user.password\"\n              :disabled=\"loggingIn\"\n              class=\"form-control\"\n              type=\"password\"\n            >\n          </div>\n          <div class=\"form-group\">\n            <router-link :to=\"{name: 'password-reset'}\">\n              {{ $t('password_reset.forgot_password') }}\n            </router-link>\n          </div>\n        </template>\n\n        <div\n          v-if=\"isTokenAuth\"\n          class=\"form-group\"\n        >\n          <p>{{ $t('login.description') }}</p>\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <router-link\n                v-if=\"registrationOpen\"\n                :to=\"{name: 'registration'}\"\n                class=\"register\"\n              >\n                {{ $t('login.register') }}\n              </router-link>\n            </div>\n            <button\n              :disabled=\"loggingIn\"\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('login.login') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./login_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.login-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0.6em;\n\n  .btn {\n    min-height: 2em;\n    width: 10em;\n  }\n\n  .register {\n    flex: 1 1;\n  }\n\n  .login-bottom {\n    margin-top: 1.0em;\n    display: flex;\n    flex-direction: row;\n    align-items: center;\n    justify-content: space-between;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0.5em 0.6em;\n    line-height:24px;\n  }\n\n  .form-bottom {\n    display: flex;\n    padding: 0.5em;\n    height: 32px;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .error {\n    text-align: center;\n\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n}\n</style>\n","import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport oauthApi from '../../services/new_api/oauth.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst LoginForm = {\n  data: () => ({\n    user: {},\n    error: false\n  }),\n  computed: {\n    isPasswordAuth () { return this.requiredPassword },\n    isTokenAuth () { return this.requiredToken },\n    ...mapState({\n      registrationOpen: state => state.instance.registrationOpen,\n      instance: state => state.instance,\n      loggingIn: state => state.users.loggingIn,\n      oauth: state => state.oauth\n    }),\n    ...mapGetters(\n      'authFlow', ['requiredPassword', 'requiredToken', 'requiredMFA']\n    )\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    submit () {\n      this.isTokenAuth ? this.submitToken() : this.submitPassword()\n    },\n    submitToken () {\n      const { clientId, clientSecret } = this.oauth\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n\n      oauthApi.getOrCreateApp(data)\n        .then((app) => { oauthApi.login({ ...app, ...data }) })\n    },\n    submitPassword () {\n      const { clientId } = this.oauth\n      const data = {\n        clientId,\n        oauth: this.oauth,\n        instance: this.instance.server,\n        commit: this.$store.commit\n      }\n      this.error = false\n\n      oauthApi.getOrCreateApp(data).then((app) => {\n        oauthApi.getTokenWithCredentials(\n          {\n            ...app,\n            instance: data.instance,\n            username: this.user.username,\n            password: this.user.password\n          }\n        ).then((result) => {\n          if (result.error) {\n            if (result.error === 'mfa_required') {\n              this.requireMFA({ settings: result })\n            } else if (result.identifier === 'password_reset_required') {\n              this.$router.push({ name: 'password-reset', params: { passwordResetRequested: true } })\n            } else {\n              this.error = result.error\n              this.focusOnPasswordInput()\n            }\n            return\n          }\n          this.login(result).then(() => {\n            this.$router.push({ name: 'friends' })\n          })\n        })\n      })\n    },\n    clearError () { this.error = false },\n    focusOnPasswordInput () {\n      const passwordInput = this.$refs.passwordInput\n      passwordInput.focus()\n      passwordInput.setSelectionRange(0, passwordInput.value.length)\n    }\n  }\n}\n\nexport default LoginForm\n","import { render } from \"./login_form.vue?vue&type=template&id=34ffae9c\"\nimport script from \"./login_form.js?vue&type=script&lang=js\"\nexport * from \"./login_form.js?vue&type=script&lang=js\"\n\nimport \"./login_form.vue?vue&type=style&index=0&id=34ffae9c&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.recovery') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">{{ $t('login.recovery_code') }}</label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireTOTP\"\n              >\n                {{ $t('login.enter_two_factor_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./recovery_form.js\"></script>\n","const verifyOTPCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'totp')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst verifyRecoveryCode = ({ clientId, clientSecret, instance, mfaToken, code }) => {\n  const url = `${instance}/oauth/mfa/challenge`\n  const form = new window.FormData()\n\n  form.append('client_id', clientId)\n  form.append('client_secret', clientSecret)\n  form.append('mfa_token', mfaToken)\n  form.append('code', code)\n  form.append('challenge_type', 'recovery')\n\n  return window.fetch(url, {\n    method: 'POST',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst mfa = {\n  verifyOTPCode,\n  verifyRecoveryCode\n}\n\nexport default mfa\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['requireTOTP', 'abortMFA']),\n    ...mapActions({ login: 'authFlow/login' }),\n    clearError () { this.error = false },\n    submit () {\n      const { clientId, clientSecret } = this.oauth\n\n      const data = {\n        clientId,\n        clientSecret,\n        instance: this.instance.server,\n        mfaToken: this.authSettings.mfa_token,\n        code: this.code\n      }\n\n      mfaApi.verifyRecoveryCode(data).then((result) => {\n        if (result.error) {\n          this.error = result.error\n          this.code = null\n          return\n        }\n\n        this.login(result).then(() => {\n          this.$router.push({ name: 'friends' })\n        })\n      })\n    }\n  }\n}\n","import { render } from \"./recovery_form.vue?vue&type=template&id=e18da610\"\nimport script from \"./recovery_form.js?vue&type=script&lang=js\"\nexport * from \"./recovery_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"login panel panel-default\">\n    <!-- Default panel contents -->\n\n    <div class=\"panel-heading\">\n      {{ $t('login.heading.totp') }}\n    </div>\n\n    <div class=\"panel-body\">\n      <form\n        class=\"login-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"form-group\">\n          <label for=\"code\">\n            {{ $t('login.authentication_code') }}\n          </label>\n          <input\n            id=\"code\"\n            v-model=\"code\"\n            class=\"form-control\"\n          >\n        </div>\n\n        <div class=\"form-group\">\n          <div class=\"login-bottom\">\n            <div>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"requireRecovery\"\n              >\n                {{ $t('login.enter_recovery_code') }}\n              </button>\n              <br>\n              <button\n                class=\"button-unstyled -link\"\n                type=\"button\"\n                @click.prevent=\"abortMFA\"\n              >\n                {{ $t('general.cancel') }}\n              </button>\n            </div>\n            <button\n              type=\"submit\"\n              class=\"btn button-default\"\n            >\n              {{ $t('general.verify') }}\n            </button>\n          </div>\n        </div>\n      </form>\n    </div>\n\n    <div\n      v-if=\"error\"\n      class=\"form-group\"\n    >\n      <div class=\"alert error\">\n        {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            size=\"lg\"\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n    </div>\n  </div>\n</template>\n<script src=\"./totp_form.js\"></script>\n","import mfaApi from '../../services/new_api/mfa.js'\nimport { mapState, mapGetters, mapActions, mapMutations } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nexport default {\n  data: () => ({\n    code: null,\n    error: false\n  }),\n  computed: {\n    ...mapGetters({\n      authSettings: 'authFlow/settings'\n    }),\n    ...mapState({\n      instance: 'instance',\n      oauth: 'oauth'\n    })\n  },\n  methods: {\n    ...mapMutations('authFlow', ['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","import { render } from \"./totp_form.vue?vue&type=template&id=6fb04413\"\nimport script from \"./totp_form.js?vue&type=script&lang=js\"\nexport * from \"./totp_form.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { h, resolveComponent } from 'vue'\nimport 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 () {\n    return h(resolveComponent(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 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","import { render } from \"./user_panel.vue?vue&type=template&id=1a2cb8e9\"\nimport script from \"./user_panel.js?vue&type=script&lang=js\"\nexport * from \"./user_panel.js?vue&type=script&lang=js\"\n\nimport \"./user_panel.vue?vue&type=style&index=0&id=1a2cb8e9&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"NavPanel\">\n    <div class=\"panel panel-default\">\n      <div\n        v-if=\"!forceExpand\"\n        class=\"panel-heading nav-panel-heading\"\n      >\n        <NavigationPins :limit=\"6\" />\n        <div class=\"spacer\" />\n        <button\n          class=\"button-unstyled\"\n          @click=\"toggleCollapse\"\n        >\n          <FAIcon\n            class=\"navigation-chevron\"\n            fixed-width\n            :icon=\"collapsed ? 'chevron-down' : 'chevron-up'\"\n          />\n        </button>\n      </div>\n      <ul\n        v-if=\"!collapsed || forceExpand\"\n        class=\"panel-body\"\n      >\n        <NavigationEntry\n          v-if=\"currentUser || !privateMode\"\n          :show-pin=\"false\"\n          :item=\"{ icon: 'stream', label: 'nav.timelines' }\"\n          :aria-expanded=\"showTimelines ? 'true' : 'false'\"\n          @click=\"toggleTimelines\"\n        >\n          <FAIcon\n            class=\"timelines-chevron\"\n            fixed-width\n            :icon=\"showTimelines ? 'chevron-up' : 'chevron-down'\"\n          />\n        </NavigationEntry>\n        <div\n          v-show=\"showTimelines\"\n          class=\"timelines-background\"\n        >\n          <div class=\"timelines\">\n            <NavigationEntry\n              v-for=\"item in timelinesItems\"\n              :key=\"item.name\"\n              :show-pin=\"editMode || forceEditMode\"\n              :item=\"item\"\n            />\n          </div>\n        </div>\n        <NavigationEntry\n          v-if=\"currentUser\"\n          :show-pin=\"false\"\n          :item=\"{ icon: 'list', label: 'nav.lists' }\"\n          :aria-expanded=\"showLists ? 'true' : 'false'\"\n          @click=\"toggleLists\"\n        >\n          <router-link\n            :title=\"$t('lists.manage_lists')\"\n            class=\"extra-button\"\n            :to=\"{ name: 'lists' }\"\n            @click.stop\n          >\n            <FAIcon\n              class=\"extra-button\"\n              fixed-width\n              icon=\"wrench\"\n            />\n          </router-link>\n          <FAIcon\n            class=\"timelines-chevron\"\n            fixed-width\n            :icon=\"showLists ? 'chevron-up' : 'chevron-down'\"\n          />\n        </NavigationEntry>\n        <div\n          v-show=\"showLists\"\n          class=\"timelines-background\"\n        >\n          <ListsMenuContent\n            :show-pin=\"editMode || forceEditMode\"\n            class=\"timelines\"\n          />\n        </div>\n        <NavigationEntry\n          v-for=\"item in rootItems\"\n          :key=\"item.name\"\n          :show-pin=\"editMode || forceEditMode\"\n          :item=\"item\"\n        />\n        <NavigationEntry\n          v-if=\"!forceEditMode && currentUser\"\n          :show-pin=\"false\"\n          :item=\"{ label: editMode ? $t('nav.edit_finish') : $t('nav.edit_pinned'), icon: editMode ? 'check' : 'wrench' }\"\n          @click=\"toggleEditMode\"\n        />\n      </ul>\n    </div>\n  </div>\n</template>\n\n<script src=\"./nav_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavPanel {\n  .panel {\n    overflow: hidden;\n    box-shadow: var(--panelShadow);\n  }\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    position: relative;\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n  }\n\n  > li {\n    &:first-child .menu-item {\n      border-top-right-radius: $fallback--panelRadius;\n      border-top-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-top-left-radius: $fallback--panelRadius;\n      border-top-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child .menu-item {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n  }\n\n  li:last-child {\n    border: none;\n  }\n\n  .navigation-chevron {\n    margin-left: 0.8em;\n    margin-right: 0.8em;\n    font-size: 1.1em;\n  }\n\n  .timelines-chevron {\n    margin-left: 0.8em;\n    font-size: 1.1em;\n  }\n\n  .timelines-background {\n    padding: 0 0 0 0.6em;\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n  }\n\n  .timelines {\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n  }\n\n  .nav-panel-heading {\n   // breaks without a unit\n   --panel-heading-height-padding: 0em;\n  }\n}\n</style>\n","<template>\n  <OptionalRouterLink\n    v-slot=\"{ isActive, href, navigate } = {}\"\n    ass=\"ass\"\n    :to=\"routeTo\"\n  >\n    <li\n      class=\"NavigationEntry menu-item\"\n      :class=\"{ '-active': isActive }\"\n      v-bind=\"$attrs\"\n    >\n      <component\n        :is=\"routeTo ? 'a' : 'button'\"\n        class=\"main-link button-unstyled\"\n        :href=\"href\"\n        @click=\"navigate\"\n      >\n        <span>\n          <FAIcon\n            v-if=\"item.icon\"\n            fixed-width\n            class=\"fa-scale-110 menu-icon\"\n            :icon=\"item.icon\"\n          />\n        </span>\n        <span\n          v-if=\"item.iconLetter\"\n          class=\"icon iconLetter fa-scale-110 menu-icon\"\n        >{{ item.iconLetter }}\n        </span>\n        <span class=\"label\">\n          {{ item.labelRaw || $t(item.label) }}\n        </span>\n      </component>\n      <slot />\n      <div\n        v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n        class=\"badge badge-notification\"\n      >\n        {{ getters[item.badgeGetter] }}\n      </div>\n      <button\n        v-if=\"showPin && currentUser\"\n        type=\"button\"\n        class=\"button-unstyled extra-button\"\n        :title=\"$t(isPinned ? 'general.unpin' : 'general.pin' )\"\n        :aria-pressed=\"!!isPinned\"\n        @click.stop.prevent=\"togglePin(item.name)\"\n      >\n        <FAIcon\n          v-if=\"showPin && currentUser\"\n          fixed-width\n          class=\"fa-scale-110\"\n          :class=\"{ 'veryfaint': !isPinned(item.name) }\"\n          :transform=\"!isPinned(item.name) ? 'rotate-45' : ''\"\n          icon=\"thumbtack\"\n        />\n      </button>\n    </li>\n  </OptionalRouterLink>\n</template>\n\n<script src=\"./navigation_entry.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.NavigationEntry {\n  display: flex;\n  box-sizing: border-box;\n  align-items: baseline;\n  height: 3.5em;\n  line-height: 3.5em;\n  padding: 0 1em;\n  width: 100%;\n  color: $fallback--link;\n  color: var(--link, $fallback--link);\n\n  .timelines-chevron {\n    margin-right: 0;\n  }\n\n  .main-link {\n    flex: 1;\n  }\n\n  .menu-icon {\n    margin-right: 0.8em;\n  }\n\n  .extra-button {\n    width: 3em;\n    text-align: center;\n\n    &:last-child {\n      margin-right: -0.8em;\n    }\n  }\n\n  &:hover {\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    color: $fallback--link;\n    color: var(--selectedMenuText, $fallback--link);\n    --faint: var(--selectedMenuFaintText, $fallback--faint);\n    --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n    --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n    .menu-icon {\n      --icon: var(--text, $fallback--icon);\n    }\n  }\n\n  &.-active {\n    font-weight: bolder;\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    color: $fallback--text;\n    color: var(--selectedMenuText, $fallback--text);\n    --faint: var(--selectedMenuFaintText, $fallback--faint);\n    --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n    --lightText: var(--selectedMenuLightText, $fallback--lightText);\n\n    .menu-icon {\n      --icon: var(--text, $fallback--icon);\n    }\n\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n}\n</style>\n","export const USERNAME_ROUTES = new Set([\n  'bookmarks',\n  'dms',\n  'interactions',\n  'notifications',\n  'chat',\n  'chats',\n  'user-profile'\n])\n\nexport const TIMELINES = {\n  home: {\n    route: 'friends',\n    icon: 'home',\n    label: 'nav.home_timeline',\n    criteria: ['!private']\n  },\n  public: {\n    route: 'public-timeline',\n    anon: true,\n    icon: 'users',\n    label: 'nav.public_tl',\n    criteria: ['!private']\n  },\n  twkn: {\n    route: 'public-external-timeline',\n    anon: true,\n    icon: 'globe',\n    label: 'nav.twkn',\n    criteria: ['!private', 'federating']\n  },\n  bookmarks: {\n    route: 'bookmarks',\n    icon: 'bookmark',\n    label: 'nav.bookmarks'\n  },\n  favorites: {\n    routeObject: { name: 'user-profile', query: { tab: 'favorites' } },\n    icon: 'star',\n    label: 'user_card.favorites'\n  },\n  dms: {\n    route: 'dms',\n    icon: 'envelope',\n    label: 'nav.dms'\n  }\n}\n\nexport const ROOT_ITEMS = {\n  interactions: {\n    route: 'interactions',\n    icon: 'bell',\n    label: 'nav.interactions'\n  },\n  chats: {\n    route: 'chats',\n    icon: 'comments',\n    label: 'nav.chats',\n    badgeGetter: 'unreadChatCount',\n    criteria: ['chats']\n  },\n  friendRequests: {\n    route: 'friend-requests',\n    icon: 'user-plus',\n    label: 'nav.friend_requests',\n    criteria: ['lockedUser'],\n    badgeGetter: 'followRequestCount'\n  },\n  about: {\n    route: 'about',\n    anon: true,\n    icon: 'info-circle',\n    label: 'nav.about'\n  },\n  announcements: {\n    route: 'announcements',\n    icon: 'bullhorn',\n    label: 'nav.announcements',\n    badgeGetter: 'unreadAnnouncementCount',\n    criteria: ['announcements']\n  }\n}\n","<template>\n  <!-- eslint-disable vue/no-multiple-template-root -->\n  <router-link\n    v-if=\"to\"\n    v-slot=\"props\"\n    :to=\"to\"\n    custom\n  >\n    <slot\n      v-bind=\"props\"\n    />\n  </router-link>\n  <slot\n    v-else\n    v-bind=\"{}\"\n  />\n</template>\n\n<script>\nexport default {\n  props: ['to']\n}\n</script>\n","import { render } from \"./optional_router_link.vue?vue&type=template&id=0ec30c00\"\nimport script from \"./optional_router_link.vue?vue&type=script&lang=js\"\nexport * from \"./optional_router_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport OptionalRouterLink from 'src/components/optional_router_link/optional_router_link.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faThumbtack } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faThumbtack)\n\nconst NavigationEntry = {\n  props: ['item', 'showPin'],\n  components: {\n    OptionalRouterLink\n  },\n  methods: {\n    isPinned (value) {\n      return this.pinnedItems.has(value)\n    },\n    togglePin (value) {\n      if (this.isPinned(value)) {\n        this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value })\n      } else {\n        this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value })\n      }\n      this.$store.dispatch('pushServerSideStorage')\n    }\n  },\n  computed: {\n    routeTo () {\n      if (!this.item.route && !this.item.routeObject) return null\n      let route\n      if (this.item.routeObject) {\n        route = this.item.routeObject\n      } else {\n        route = { name: (this.item.anon || this.currentUser) ? this.item.route : this.item.anonRoute }\n      }\n      if (USERNAME_ROUTES.has(route.name)) {\n        route.params = { username: this.currentUser.screen_name, name: this.currentUser.screen_name }\n      }\n      return route\n    },\n    getters () {\n      return this.$store.getters\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n    })\n  }\n}\n\nexport default NavigationEntry\n","import { render } from \"./navigation_entry.vue?vue&type=template&id=05be76ee\"\nimport script from \"./navigation_entry.js?vue&type=script&lang=js\"\nexport * from \"./navigation_entry.js?vue&type=script&lang=js\"\n\nimport \"./navigation_entry.vue?vue&type=style&index=0&id=05be76ee&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","export const filterNavigation = (list = [], { hasChats, hasAnnouncements, isFederating, isPrivate, currentUser }) => {\n  return list.filter(({ criteria, anon, anonRoute }) => {\n    const set = new Set(criteria || [])\n    if (!isFederating && set.has('federating')) return false\n    if (!currentUser && isPrivate && set.has('!private')) return false\n    if (!currentUser && !(anon || anonRoute)) return false\n    if ((!currentUser || !currentUser.locked) && set.has('lockedUser')) return false\n    if (!hasChats && set.has('chats')) return false\n    if (!hasAnnouncements && set.has('announcements')) return false\n    return true\n  })\n}\n\nexport const getListEntries = state => state.lists.allLists.map(list => ({\n  name: 'list-' + list.id,\n  routeObject: { name: 'lists-timeline', params: { id: list.id } },\n  labelRaw: list.title,\n  iconLetter: list.title[0]\n}))\n","import { mapState } from 'vuex'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { getListEntries } from 'src/components/navigation/filter.js'\n\nexport const ListsMenuContent = {\n  props: [\n    'showPin'\n  ],\n  components: {\n    NavigationEntry\n  },\n  computed: {\n    ...mapState({\n      lists: getListEntries,\n      currentUser: state => state.users.currentUser,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating\n    })\n  }\n}\n\nexport default ListsMenuContent\n","import { render } from \"./lists_menu_content.vue?vue&type=template&id=24f15238\"\nimport script from \"./lists_menu_content.js?vue&type=script&lang=js\"\nexport * from \"./lists_menu_content.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <ul>\n    <NavigationEntry\n      v-for=\"item in lists\"\n      :key=\"item.name\"\n      :show-pin=\"showPin\"\n      :item=\"item\"\n    />\n  </ul>\n</template>\n\n<script src=\"./lists_menu_content.js\"></script>\n","<template>\n  <span class=\"NavigationPins\">\n    <router-link\n      v-for=\"item in pinnedList\"\n      :key=\"item.name\"\n      class=\"pinned-item\"\n      :to=\"getRouteTo(item)\"\n      :title=\"item.labelRaw || $t(item.label)\"\n    >\n      <FAIcon\n        v-if=\"item.icon\"\n        fixed-width\n        :icon=\"item.icon\"\n      />\n      <span\n        v-if=\"item.iconLetter\"\n        class=\"iconLetter fa-scale-110 fa-old-padding\"\n      >{{ item.iconLetter }}</span>\n      <div\n        v-if=\"item.badgeGetter && getters[item.badgeGetter]\"\n        class=\"alert-dot\"\n      />\n    </router-link>\n  </span>\n</template>\n\n<script src=\"./navigation_pins.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.NavigationPins {\n  display: flex;\n  flex-wrap: wrap;\n  overflow: hidden;\n  height: 100%;\n\n  .alert-dot {\n    border-radius: 100%;\n    height: 0.5em;\n    width: 0.5em;\n    position: absolute;\n    right: calc(50% - 0.75em);\n    top: calc(50% - 0.5em);\n    background-color: $fallback--cRed;\n    background-color: var(--badgeNotification, $fallback--cRed);\n  }\n\n  .pinned-item {\n    position: relative;\n    flex: 1 0 3em;\n    min-width: 2em;\n    text-align: center;\n    overflow: visible;\n    box-sizing: border-box;\n    height: 100%;\n\n    & .svg-inline--fa,\n    & .iconLetter {\n      margin: 0;\n    }\n\n    &.router-link-active {\n      color: $fallback--text;\n      color: var(--panelText, $fallback--text);\n      border-bottom: 4px solid;\n\n      & .svg-inline--fa,\n      & .iconLetter {\n        color: inherit;\n      }\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS, USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { getListEntries, filterNavigation } from 'src/components/navigation/filter.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream,\n  faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream,\n  faList\n)\n\nconst NavPanel = {\n  props: ['limit'],\n  methods: {\n    getRouteTo (item) {\n      if (item.routeObject) {\n        return item.routeObject\n      }\n      const route = { name: (item.anon || this.currentUser) ? item.route : item.anonRoute }\n      if (USERNAME_ROUTES.has(route.name)) {\n        route.params = { username: this.currentUser.screen_name }\n      }\n      return route\n    }\n  },\n  computed: {\n    getters () {\n      return this.$store.getters\n    },\n    ...mapState({\n      lists: getListEntries,\n      currentUser: state => state.users.currentUser,\n      followRequestCount: state => state.api.followRequests.length,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating,\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n      pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems)\n    }),\n    pinnedList () {\n      if (!this.currentUser) {\n        return filterNavigation([\n          { ...TIMELINES.public, name: 'public' },\n          { ...TIMELINES.twkn, name: 'twkn' },\n          { ...ROOT_ITEMS.about, name: 'about' }\n        ],\n        {\n          hasChats: this.pleromaChatMessagesAvailable,\n          isFederating: this.federating,\n          isPrivate: this.privateMode,\n          currentUser: this.currentUser\n        })\n      }\n      return filterNavigation(\n        [\n          ...Object\n            .entries({ ...TIMELINES })\n            .filter(([k]) => this.pinnedItems.has(k))\n            .map(([k, v]) => ({ ...v, name: k })),\n          ...this.lists.filter((k) => this.pinnedItems.has(k.name)),\n          ...Object\n            .entries({ ...ROOT_ITEMS })\n            .filter(([k]) => this.pinnedItems.has(k))\n            .map(([k, v]) => ({ ...v, name: k }))\n        ],\n        {\n          hasChats: this.pleromaChatMessagesAvailable,\n          isFederating: this.federating,\n          isPrivate: this.privateMode,\n          currentUser: this.currentUser\n        }\n      ).slice(0, this.limit)\n    }\n  }\n}\n\nexport default NavPanel\n","import { render } from \"./navigation_pins.vue?vue&type=template&id=1a0003e2\"\nimport script from \"./navigation_pins.js?vue&type=script&lang=js\"\nexport * from \"./navigation_pins.js?vue&type=script&lang=js\"\n\nimport \"./navigation_pins.vue?vue&type=style&index=0&id=1a0003e2&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ListsMenuContent from 'src/components/lists_menu/lists_menu_content.vue'\nimport { mapState, mapGetters } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport Checkbox from 'src/components/checkbox/checkbox.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream,\n  faList,\n  faBullhorn\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUsers,\n  faGlobe,\n  faBookmark,\n  faEnvelope,\n  faChevronDown,\n  faChevronUp,\n  faComments,\n  faBell,\n  faInfoCircle,\n  faStream,\n  faList,\n  faBullhorn\n)\nconst NavPanel = {\n  props: ['forceExpand', 'forceEditMode'],\n  created () {\n  },\n  components: {\n    ListsMenuContent,\n    NavigationEntry,\n    NavigationPins,\n    Checkbox\n  },\n  data () {\n    return {\n      editMode: false,\n      showTimelines: false,\n      showLists: false,\n      timelinesList: Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n      rootList: Object.entries(ROOT_ITEMS).map(([k, v]) => ({ ...v, name: k }))\n    }\n  },\n  methods: {\n    toggleTimelines () {\n      this.showTimelines = !this.showTimelines\n    },\n    toggleLists () {\n      this.showLists = !this.showLists\n    },\n    toggleEditMode () {\n      this.editMode = !this.editMode\n    },\n    toggleCollapse () {\n      this.$store.commit('setPreference', { path: 'simple.collapseNav', value: !this.collapsed })\n      this.$store.dispatch('pushServerSideStorage')\n    },\n    isPinned (item) {\n      return this.pinnedItems.has(item)\n    },\n    togglePin (item) {\n      if (this.isPinned(item)) {\n        this.$store.commit('removeCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n      } else {\n        this.$store.commit('addCollectionPreference', { path: 'collections.pinnedNavItems', value: item })\n      }\n      this.$store.dispatch('pushServerSideStorage')\n    }\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      followRequestCount: state => state.api.followRequests.length,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating,\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n      supportsAnnouncements: state => state.announcements.supportsAnnouncements,\n      pinnedItems: state => new Set(state.serverSideStorage.prefsStorage.collections.pinnedNavItems),\n      collapsed: state => state.serverSideStorage.prefsStorage.simple.collapseNav\n    }),\n    timelinesItems () {\n      return filterNavigation(\n        Object\n          .entries({ ...TIMELINES })\n          .map(([k, v]) => ({ ...v, name: k })),\n        {\n          hasChats: this.pleromaChatMessagesAvailable,\n          hasAnnouncements: this.supportsAnnouncements,\n          isFederating: this.federating,\n          isPrivate: this.privateMode,\n          currentUser: this.currentUser\n        }\n      )\n    },\n    rootItems () {\n      return filterNavigation(\n        Object\n          .entries({ ...ROOT_ITEMS })\n          .map(([k, v]) => ({ ...v, name: k })),\n        {\n          hasChats: this.pleromaChatMessagesAvailable,\n          hasAnnouncements: this.supportsAnnouncements,\n          isFederating: this.federating,\n          isPrivate: this.privateMode,\n          currentUser: this.currentUser\n        }\n      )\n    },\n    ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n  }\n}\n\nexport default NavPanel\n","import { render } from \"./nav_panel.vue?vue&type=template&id=6917af50\"\nimport script from \"./nav_panel.js?vue&type=script&lang=js\"\nexport * from \"./nav_panel.js?vue&type=script&lang=js\"\n\nimport \"./nav_panel.vue?vue&type=style&index=0&id=6917af50&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"instance-specific-panel\">\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div v-html=\"instanceSpecificPanelContent\" />\n        <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./instance_specific_panel.js\"></script>\n","const InstanceSpecificPanel = {\n  computed: {\n    instanceSpecificPanelContent () {\n      return this.$store.state.instance.instanceSpecificPanelContent\n    }\n  }\n}\n\nexport default InstanceSpecificPanel\n","import { render } from \"./instance_specific_panel.vue?vue&type=template&id=707b4e95\"\nimport script from \"./instance_specific_panel.js?vue&type=script&lang=js\"\nexport * from \"./instance_specific_panel.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"features-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('features_panel.title') }}\n        </div>\n      </div>\n      <div class=\"panel-body features-panel\">\n        <ul>\n          <li v-if=\"shout\">\n            {{ $t('features_panel.shout') }}\n          </li>\n          <li v-if=\"pleromaChatMessages\">\n            {{ $t('features_panel.pleroma_chat_messages') }}\n          </li>\n          <li v-if=\"gopher\">\n            {{ $t('features_panel.gopher') }}\n          </li>\n          <li v-if=\"whoToFollow\">\n            {{ $t('features_panel.who_to_follow') }}\n          </li>\n          <li v-if=\"mediaProxy\">\n            {{ $t('features_panel.media_proxy') }}\n          </li>\n          <li>{{ $t('features_panel.scope_options') }}</li>\n          <li>{{ $t('features_panel.text_limit') }} = {{ textlimit }}</li>\n          <li>{{ $t('features_panel.upload_limit') }} = {{ uploadlimit.num }} {{ $t('upload.file_size_units.' + uploadlimit.unit) }}</li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./features_panel.js\"></script>\n\n<style lang=\"scss\">\n  .features-panel li {\n    line-height: 24px;\n  }\n</style>\n","import fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nconst FeaturesPanel = {\n  computed: {\n    shout: function () { return this.$store.state.instance.shoutAvailable },\n    pleromaChatMessages: function () { return this.$store.state.instance.pleromaChatMessagesAvailable },\n    gopher: function () { return this.$store.state.instance.gopherAvailable },\n    whoToFollow: function () { return this.$store.state.instance.suggestionsEnabled },\n    mediaProxy: function () { return this.$store.state.instance.mediaProxyAvailable },\n    minimalScopesMode: function () { return this.$store.state.instance.minimalScopesMode },\n    textlimit: function () { return this.$store.state.instance.textlimit },\n    uploadlimit: function () { return fileSizeFormatService.fileSizeFormat(this.$store.state.instance.uploadlimit) }\n  }\n}\n\nexport default FeaturesPanel\n","import { render } from \"./features_panel.vue?vue&type=template&id=76defdfa\"\nimport script from \"./features_panel.js?vue&type=script&lang=js\"\nexport * from \"./features_panel.js?vue&type=script&lang=js\"\n\nimport \"./features_panel.vue?vue&type=style&index=0&id=76defdfa&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"who-to-follow-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background base04\">\n        <div class=\"title\">\n          {{ $t('who_to_follow.who_to_follow') }}\n        </div>\n      </div>\n      <div class=\"who-to-follow\">\n        <p\n          v-for=\"user in usersToFollow\"\n          :key=\"user.id\"\n          class=\"who-to-follow-items\"\n        >\n          <img :src=\"user.img\">\n          <router-link :to=\"userProfileLink(user.id, user.name)\">\n            {{ user.name }}\n          </router-link><br>\n        </p>\n        <p class=\"who-to-follow-more\">\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            {{ $t('who_to_follow.more') }}\n          </router-link>\n        </p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow_panel.js\"></script>\n\n<style lang=\"scss\">\n  .who-to-follow * {\n    vertical-align: middle;\n  }\n  .who-to-follow img {\n    width: 32px;\n    height: 32px;\n  }\n  .who-to-follow {\n    padding: 0em 1em;\n    margin: 0px;\n  }\n  .who-to-follow-items {\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    padding: 0px;\n    margin: 1em 0em;\n  }\n  .who-to-follow-more {\n    padding: 0px;\n    margin: 1em 0em;\n    text-align: center;\n  }\n</style>\n","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    const user = shuffled[index]\n    const img = user.avatar || this.$store.state.instance.defaultAvatar\n    const 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  const credentials = panel.$store.state.users.currentUser.credentials\n  if (credentials) {\n    panel.usersToFollow.forEach(toFollow => {\n      toFollow.name = 'Loading...'\n    })\n    apiService.suggestions({ credentials })\n      .then((reply) => {\n        showWhoToFollow(panel, reply)\n      })\n  }\n}\n\nconst WhoToFollowPanel = {\n  data: () => ({\n    usersToFollow: []\n  }),\n  computed: {\n    user: function () {\n      return this.$store.state.users.currentUser.screen_name\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    }\n  },\n  methods: {\n    userProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    user: function (user, oldUser) {\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n  },\n  mounted:\n    function () {\n      this.usersToFollow = new Array(3).fill().map(x => (\n        {\n          img: this.$store.state.instance.defaultAvatar,\n          name: '',\n          id: 0\n        }\n      ))\n      if (this.suggestionsEnabled) {\n        getWhoToFollow(this)\n      }\n    }\n}\n\nexport default WhoToFollowPanel\n","import { render } from \"./who_to_follow_panel.vue?vue&type=template&id=755c2db7\"\nimport script from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow_panel.js?vue&type=script&lang=js\"\n\nimport \"./who_to_follow_panel.vue?vue&type=style&index=0&id=755c2db7&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!collapsed || !floating\"\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading timeline-heading\"\n        :class=\"{ 'shout-heading': floating }\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          {{ $t('shoutbox.title') }}\n          <FAIcon\n            v-if=\"floating\"\n            icon=\"times\"\n            class=\"close-icon\"\n          />\n        </div>\n      </div>\n      <div class=\"shout-window\">\n        <div\n          v-for=\"message in messages\"\n          :key=\"message.id\"\n          class=\"shout-message\"\n        >\n          <span class=\"shout-avatar\">\n            <img :src=\"message.author.avatar\">\n          </span>\n          <div class=\"shout-content\">\n            <router-link\n              class=\"shout-name\"\n              :to=\"userProfileLink(message.author)\"\n            >\n              {{ message.author.username }}\n            </router-link>\n            <br>\n            <span class=\"shout-text\">\n              {{ message.text }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <div class=\"shout-input\">\n        <textarea\n          v-model=\"currentMessage\"\n          class=\"shout-input-textarea\"\n          rows=\"1\"\n          @keyup.enter=\"submit(currentMessage)\"\n        />\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"shout-panel\"\n  >\n    <div class=\"panel panel-default\">\n      <div\n        class=\"panel-heading -stub timeline-heading shout-heading\"\n        @click.stop.prevent=\"togglePanel\"\n      >\n        <div class=\"title\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"bullhorn\"\n          />\n          {{ $t('shoutbox.title') }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./shout_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.floating-shout {\n  position: fixed;\n  bottom: 0.5em;\n  z-index: var(--ZI_popovers);\n  max-width: 25em;\n\n  &.-left {\n    left: 0.5em;\n  }\n\n  &:not(.-left) {\n    right: 0.5em;\n  }\n}\n\n.shout-panel {\n  .shout-heading {\n    cursor: pointer;\n\n    .icon {\n      color: $fallback--text;\n      color: var(--panelText, $fallback--text);\n      margin-right: 0.5em;\n    }\n\n    .title {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n    }\n  }\n\n  .shout-window {\n    overflow-y: auto;\n    overflow-x: hidden;\n    max-height: 20em;\n  }\n\n  .shout-window-container {\n    height: 100%;\n  }\n\n  .shout-message {\n    display: flex;\n    padding: 0.2em 0.5em;\n  }\n\n  .shout-avatar {\n    img {\n      height: 24px;\n      width: 24px;\n      border-radius: $fallback--avatarRadius;\n      border-radius: var(--avatarRadius, $fallback--avatarRadius);\n      margin-right: 0.5em;\n      margin-top: 0.25em;\n    }\n  }\n\n  .shout-input {\n    display: flex;\n\n    textarea {\n      flex: 1;\n      margin: 0.6em;\n      min-height: 3.5em;\n      resize: none;\n    }\n  }\n\n  .shout-panel {\n    .title {\n      display: flex;\n      justify-content: space-between;\n    }\n  }\n}\n</style>\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBullhorn,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faBullhorn,\n  faTimes\n)\n\nconst shoutPanel = {\n  props: ['floating'],\n  data () {\n    return {\n      currentMessage: '',\n      channel: null,\n      collapsed: true\n    }\n  },\n  computed: {\n    messages () {\n      return this.$store.state.shout.messages\n    }\n  },\n  methods: {\n    submit (message) {\n      this.$store.state.shout.channel.push('new_msg', { text: message }, 10000)\n      this.currentMessage = ''\n    },\n    togglePanel () {\n      this.collapsed = !this.collapsed\n    },\n    userProfileLink (user) {\n      return generateProfileLink(user.id, user.username, this.$store.state.instance.restrictedNicknames)\n    }\n  },\n  watch: {\n    messages (newVal) {\n      const scrollEl = this.$el.querySelector('.chat-window')\n      if (!scrollEl) return\n      if (scrollEl.scrollTop + scrollEl.offsetHeight + 20 > scrollEl.scrollHeight) {\n        this.$nextTick(() => {\n          if (!scrollEl) return\n          scrollEl.scrollTop = scrollEl.scrollHeight - scrollEl.offsetHeight\n        })\n      }\n    }\n  }\n}\n\nexport default shoutPanel\n","import { render } from \"./shout_panel.vue?vue&type=template&id=9e22a182\"\nimport script from \"./shout_panel.js?vue&type=script&lang=js\"\nexport * from \"./shout_panel.js?vue&type=script&lang=js\"\n\nimport \"./shout_panel.vue?vue&type=style&index=0&id=9e22a182&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"showing\"\n    class=\"media-modal-view\"\n    @backdropClicked=\"hideIfNotSwiped\"\n  >\n    <SwipeClick\n      v-if=\"type === 'image'\"\n      ref=\"swipeClick\"\n      class=\"modal-image-container\"\n      :direction=\"swipeDirection\"\n      :threshold=\"swipeThreshold\"\n      @preview-requested=\"handleSwipePreview\"\n      @swipe-finished=\"handleSwipeEnd\"\n      @swipeless-clicked=\"hide\"\n    >\n      <PinchZoom\n        ref=\"pinchZoom\"\n        class=\"modal-image-container-inner\"\n        selector=\".modal-image\"\n        reach-min-scale-strategy=\"reset\"\n        stop-propagate-handled=\"stop-propgate-handled\"\n        :allow-pan-min-scale=\"pinchZoomMinScale\"\n        :min-scale=\"pinchZoomMinScale\"\n        :reset-to-min-scale-limit=\"pinchZoomScaleResetLimit\"\n      >\n        <img\n          :class=\"{ loading }\"\n          class=\"modal-image\"\n          :src=\"currentMedia.url\"\n          :alt=\"currentMedia.description\"\n          :title=\"currentMedia.description\"\n          @load=\"onImageLoaded\"\n        >\n      </PinchZoom>\n    </SwipeClick>\n    <VideoAttachment\n      v-if=\"type === 'video'\"\n      class=\"modal-image\"\n      :attachment=\"currentMedia\"\n      :controls=\"true\"\n    />\n    <audio\n      v-if=\"type === 'audio'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n      controls\n    />\n    <Flash\n      v-if=\"type === 'flash'\"\n      class=\"modal-image\"\n      :src=\"currentMedia.url\"\n      :alt=\"currentMedia.description\"\n      :title=\"currentMedia.description\"\n    />\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.previous')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--prev\"\n      @click.stop.prevent=\"goPrev\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-left\"\n      />\n    </button>\n    <button\n      v-if=\"canNavigate\"\n      :title=\"$t('media_modal.next')\"\n      class=\"modal-view-button modal-view-button-arrow modal-view-button-arrow--next\"\n      @click.stop.prevent=\"goNext\"\n    >\n      <FAIcon\n        class=\"button-icon arrow-icon\"\n        icon=\"chevron-right\"\n      />\n    </button>\n    <button\n      class=\"modal-view-button modal-view-button-hide\"\n      :title=\"$t('media_modal.hide')\"\n      @click.stop.prevent=\"hide\"\n    >\n      <FAIcon\n        class=\"button-icon\"\n        icon=\"times\"\n      />\n    </button>\n\n    <span\n      v-if=\"description\"\n      class=\"description\"\n    >\n      {{ description }}\n    </span>\n    <span\n      class=\"counter\"\n    >\n      {{ $tc('media_modal.counter', currentIndex + 1, { current: currentIndex + 1, total: media.length }) }}\n    </span>\n    <span\n      v-if=\"loading\"\n      class=\"loading-spinner\"\n    >\n      <FAIcon\n        spin\n        icon=\"circle-notch\"\n        size=\"5x\"\n      />\n    </span>\n  </Modal>\n</template>\n\n<script src=\"./media_modal.js\"></script>\n\n<style lang=\"scss\">\n$modal-view-button-icon-height: 3em;\n$modal-view-button-icon-half-height: calc(#{$modal-view-button-icon-height} / 2);\n$modal-view-button-icon-width: 3em;\n$modal-view-button-icon-margin: 0.5em;\n\n.modal-view.media-modal-view {\n  z-index: var(--ZI_media_modal);\n  flex-direction: column;\n\n  .modal-view-button-arrow,\n  .modal-view-button-hide {\n    opacity: 0.75;\n\n    &:focus,\n    &:hover {\n      outline: none;\n      box-shadow: none;\n    }\n\n    &:hover {\n      opacity: 1;\n    }\n  }\n  overflow: hidden;\n}\n\n.media-modal-view {\n  @keyframes media-fadein {\n    from {\n      opacity: 0;\n    }\n    to {\n      opacity: 1;\n    }\n  }\n\n  .modal-image-container {\n    display: flex;\n    overflow: hidden;\n    align-items: center;\n    flex-direction: column;\n    max-width: 100%;\n    max-height: 100%;\n    width: 100%;\n    height: 100%;\n    flex-grow: 1;\n    justify-content: center;\n\n    &-inner {\n      width: 100%;\n      height: 100%;\n      flex-grow: 1;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n    }\n  }\n\n  .description,\n  .counter {\n    /* Hardcoded since background is also hardcoded */\n    color: white;\n    margin-top: 1em;\n    text-shadow: 0 0 10px black, 0 0 10px black;\n    padding: 0.2em 2em;\n  }\n\n  .description {\n    flex: 0 0 auto;\n    overflow-y: auto;\n    min-height: 1em;\n    max-width: 500px;\n    max-height: 9.5em;\n    word-break: break-all;\n  }\n\n  .modal-image {\n    max-width: 100%;\n    max-height: 100%;\n    image-orientation: from-image; // NOTE: only FF supports this\n    animation: 0.1s cubic-bezier(0.7, 0, 1, 0.6) media-fadein;\n\n    &.loading {\n      opacity: 0.5;\n    }\n  }\n\n  .loading-spinner {\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    pointer-events: none;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n\n    svg {\n      color: white;\n    }\n  }\n\n  .modal-view-button {\n    border: 0;\n    padding: 0;\n    opacity: 0;\n    box-shadow: none;\n    background: none;\n    appearance: none;\n    overflow: visible;\n    cursor: pointer;\n    transition: opacity 333ms cubic-bezier(.4,0,.22,1);\n    height: $modal-view-button-icon-height;\n    width: $modal-view-button-icon-width;\n\n    .button-icon {\n      position: absolute;\n      height: $modal-view-button-icon-height;\n      width: $modal-view-button-icon-width;\n      font-size: 1rem;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n  }\n\n  .modal-view-button-arrow {\n    position: absolute;\n    display: block;\n    top: 50%;\n    margin-top: $modal-view-button-icon-half-height;\n    width: $modal-view-button-icon-width;\n    height: $modal-view-button-icon-height;\n\n    .arrow-icon {\n      position: absolute;\n      top: 0;\n      line-height: $modal-view-button-icon-height;\n      color: #FFF;\n      text-align: center;\n      background-color: rgba(0,0,0,.3);\n    }\n\n    &--prev {\n      left: 0;\n      .arrow-icon {\n        left: $modal-view-button-icon-margin;\n      }\n    }\n\n    &--next {\n      right: 0;\n      .arrow-icon {\n        right: $modal-view-button-icon-margin;\n      }\n    }\n  }\n\n  .modal-view-button-hide {\n    position: absolute;\n    top: 0;\n    right: 0;\n    .button-icon {\n      top: $modal-view-button-icon-margin;\n      right: $modal-view-button-icon-margin;\n    }\n  }\n}\n</style>\n","import PinchZoom from '@kazvmoe-infra/pinch-zoom-element'\n\nexport default {\n  methods: {\n    setTransform ({ scale, x, y }) {\n      this.$el.setTransform({ scale, x, y })\n    }\n  },\n  created () {\n    // Make lint happy\n    (() => PinchZoom)()\n  }\n}\n","import { render } from \"./pinch_zoom.vue?vue&type=template&id=4608b5bf\"\nimport script from \"./pinch_zoom.js?vue&type=script&lang=js\"\nexport * from \"./pinch_zoom.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <pinch-zoom\n    class=\"pinch-zoom-parent\"\n    v-bind=\"$attrs\"\n    v-on=\"$listeners\"\n  >\n    <slot />\n  </pinch-zoom>\n</template>\n\n<script src=\"./pinch_zoom.js\"></script>\n","\nconst DIRECTION_LEFT = [-1, 0]\nconst DIRECTION_RIGHT = [1, 0]\nconst DIRECTION_UP = [0, -1]\nconst DIRECTION_DOWN = [0, 1]\n\nconst BUTTON_LEFT = 0\n\nconst deltaCoord = (oldCoord, newCoord) => [newCoord[0] - oldCoord[0], newCoord[1] - oldCoord[1]]\n\nconst touchCoord = touch => [touch.screenX, touch.screenY]\n\nconst touchEventCoord = e => touchCoord(e.touches[0])\n\nconst pointerEventCoord = e => [e.clientX, e.clientY]\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\nclass SwipeAndClickGesture {\n  // swipePreviewCallback(offsets: Array[Number])\n  //   offsets: the offset vector which the underlying component should move, from the starting position\n  // swipeEndCallback(sign: 0|-1|1)\n  //   sign: if the swipe does not meet the threshold, 0\n  //         if the swipe meets the threshold in the positive direction, 1\n  //         if the swipe meets the threshold in the negative direction, -1\n  constructor ({\n    direction,\n    // swipeStartCallback\n    swipePreviewCallback,\n    swipeEndCallback,\n    swipeCancelCallback,\n    swipelessClickCallback,\n    threshold = 30,\n    perpendicularTolerance = 1.0,\n    disableClickThreshold = 1\n  }) {\n    const nop = () => {}\n    this.direction = direction\n    this.swipePreviewCallback = swipePreviewCallback || nop\n    this.swipeEndCallback = swipeEndCallback || nop\n    this.swipeCancelCallback = swipeCancelCallback || nop\n    this.swipelessClickCallback = swipelessClickCallback || nop\n    this.threshold = typeof threshold === 'function' ? threshold : () => threshold\n    this.disableClickThreshold = typeof disableClickThreshold === 'function' ? disableClickThreshold : () => disableClickThreshold\n    this.perpendicularTolerance = perpendicularTolerance\n    this._reset()\n  }\n\n  _reset () {\n    this._startPos = [0, 0]\n    this._pointerId = -1\n    this._swiping = false\n    this._swiped = false\n    this._preventNextClick = false\n  }\n\n  start (event) {\n    // Only handle left click\n    if (event.button !== BUTTON_LEFT) {\n      return\n    }\n\n    this._startPos = pointerEventCoord(event)\n    this._pointerId = event.pointerId\n    this._swiping = true\n    this._swiped = false\n  }\n\n  move (event) {\n    if (this._swiping && this._pointerId === event.pointerId) {\n      this._swiped = true\n\n      const coord = pointerEventCoord(event)\n      const delta = deltaCoord(this._startPos, coord)\n\n      this.swipePreviewCallback(delta)\n    }\n  }\n\n  cancel (event) {\n    if (!this._swiping || this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this.swipeCancelCallback()\n  }\n\n  end (event) {\n    if (!this._swiping) {\n      return\n    }\n\n    if (this._pointerId !== event.pointerId) {\n      return\n    }\n\n    this._swiping = false\n\n    // movement too small\n    const coord = pointerEventCoord(event)\n    const delta = deltaCoord(this._startPos, coord)\n\n    const sign = (() => {\n      if (vectorLength(delta) < this.threshold()) {\n        return 0\n      }\n      // movement is opposite from direction\n      const isPositive = dotProduct(delta, this.direction) > 0\n\n      // movement perpendicular to direction is too much\n      const towardsDir = project(delta, this.direction)\n      const perpendicularDir = perpendicular(this.direction)\n      const towardsPerpendicular = project(delta, perpendicularDir)\n      if (\n        vectorLength(towardsDir) * this.perpendicularTolerance <\n          vectorLength(towardsPerpendicular)\n      ) {\n        return 0\n      }\n\n      return isPositive ? 1 : -1\n    })()\n\n    if (this._swiped) {\n      this.swipeEndCallback(sign)\n    }\n    this._reset()\n    // Only a mouse will fire click event when\n    // the end point is far from the starting point\n    // so for other kinds of pointers do not check\n    // whether we have swiped\n    if (vectorLength(delta) >= this.disableClickThreshold() && event.pointerType === 'mouse') {\n      this._preventNextClick = true\n    }\n  }\n\n  click (event) {\n    if (!this._preventNextClick) {\n      this.swipelessClickCallback()\n    }\n    this._reset()\n  }\n}\n\nconst GestureService = {\n  DIRECTION_LEFT,\n  DIRECTION_RIGHT,\n  DIRECTION_UP,\n  DIRECTION_DOWN,\n  swipeGesture,\n  beginSwipe,\n  updateSwipe,\n  SwipeAndClickGesture\n}\n\nexport default GestureService\n","import GestureService from '../../services/gesture_service/gesture_service'\n\n/**\n * props:\n *   direction: a vector that indicates the direction of the intended swipe\n *   threshold: the minimum distance in pixels the swipe has moved on `direction'\n *              for swipe-finished() to have a non-zero sign\n *   perpendicularTolerance: see gesture_service\n *\n * Events:\n *   preview-requested(offsets)\n *     Emitted when the pointer has moved.\n *     offsets: the offsets from the start of the swipe to the current cursor position\n *\n *   swipe-canceled()\n *     Emitted when the swipe has been canceled due to a pointercancel event.\n *\n *   swipe-finished(sign: 0|-1|1)\n *     Emitted when the swipe has finished.\n *     sign: if the swipe does not meet the threshold, 0\n *           if the swipe meets the threshold in the positive direction, 1\n *           if the swipe meets the threshold in the negative direction, -1\n *\n *   swipeless-clicked()\n *     Emitted when there is a click without swipe.\n *     This and swipe-finished() cannot be emitted for the same pointerup event.\n */\nconst SwipeClick = {\n  props: {\n    direction: {\n      type: Array\n    },\n    threshold: {\n      type: Function,\n      default: () => 30\n    },\n    perpendicularTolerance: {\n      type: Number,\n      default: 1.0\n    }\n  },\n  methods: {\n    handlePointerDown (event) {\n      this.$gesture.start(event)\n    },\n    handlePointerMove (event) {\n      this.$gesture.move(event)\n    },\n    handlePointerUp (event) {\n      this.$gesture.end(event)\n    },\n    handlePointerCancel (event) {\n      this.$gesture.cancel(event)\n    },\n    handleNativeClick (event) {\n      this.$gesture.click(event)\n    },\n    preview (offsets) {\n      this.$emit('preview-requested', offsets)\n    },\n    end (sign) {\n      this.$emit('swipe-finished', sign)\n    },\n    click () {\n      this.$emit('swipeless-clicked')\n    },\n    cancel () {\n      this.$emit('swipe-canceled')\n    }\n  },\n  created () {\n    this.$gesture = new GestureService.SwipeAndClickGesture({\n      direction: this.direction,\n      threshold: this.threshold,\n      perpendicularTolerance: this.perpendicularTolerance,\n      swipePreviewCallback: this.preview,\n      swipeEndCallback: this.end,\n      swipeCancelCallback: this.cancel,\n      swipelessClickCallback: this.click\n    })\n  }\n}\n\nexport default SwipeClick\n","import { render } from \"./swipe_click.vue?vue&type=template&id=4c0f684c\"\nimport script from \"./swipe_click.js?vue&type=script&lang=js\"\nexport * from \"./swipe_click.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-bind=\"$attrs\"\n    @pointerdown=\"handlePointerDown\"\n    @pointermove=\"handlePointerMove\"\n    @pointerup=\"handlePointerUp\"\n    @pointercancel=\"handlePointerCancel\"\n    @click=\"handleNativeClick\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./swipe_click.js\"></script>\n","import StillImage from '../still-image/still-image.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport Modal from '../modal/modal.vue'\nimport PinchZoom from '../pinch_zoom/pinch_zoom.vue'\nimport SwipeClick from '../swipe_click/swipe_click.vue'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport Flash from 'src/components/flash/flash.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronLeft,\n  faChevronRight,\n  faCircleNotch,\n  faTimes\n)\n\nconst MediaModal = {\n  components: {\n    StillImage,\n    VideoAttachment,\n    PinchZoom,\n    SwipeClick,\n    Modal,\n    Flash\n  },\n  data () {\n    return {\n      loading: false,\n      swipeDirection: GestureService.DIRECTION_LEFT,\n      swipeThreshold: () => {\n        const considerableMoveRatio = 1 / 4\n        return window.innerWidth * considerableMoveRatio\n      },\n      pinchZoomMinScale: 1,\n      pinchZoomScaleResetLimit: 1.2\n    }\n  },\n  computed: {\n    showing () {\n      return this.$store.state.mediaViewer.activated\n    },\n    media () {\n      return this.$store.state.mediaViewer.media\n    },\n    description () {\n      return this.currentMedia.description\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 ? this.getType(this.currentMedia) : null\n    }\n  },\n  methods: {\n    getType (media) {\n      return fileTypeService.fileType(media.mimetype)\n    },\n    hide () {\n      // HACK: Closing immediately via a touch will cause the click\n      // to be processed on the content below the overlay\n      const transitionTime = 100 // ms\n      setTimeout(() => {\n        this.$store.dispatch('closeMediaViewer')\n      }, transitionTime)\n    },\n    hideIfNotSwiped (event) {\n      // If we have swiped over SwipeClick, do not trigger hide\n      const comp = this.$refs.swipeClick\n      if (!comp) {\n        this.hide()\n      } else {\n        comp.$gesture.click(event)\n      }\n    },\n    goPrev () {\n      if (this.canNavigate) {\n        const prevIndex = this.currentIndex === 0 ? this.media.length - 1 : (this.currentIndex - 1)\n        const newMedia = this.media[prevIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    goNext () {\n      if (this.canNavigate) {\n        const nextIndex = this.currentIndex === this.media.length - 1 ? 0 : (this.currentIndex + 1)\n        const newMedia = this.media[nextIndex]\n        if (this.getType(newMedia) === 'image') {\n          this.loading = true\n        }\n        this.$store.dispatch('setCurrentMedia', newMedia)\n      }\n    },\n    onImageLoaded () {\n      this.loading = false\n    },\n    handleSwipePreview (offsets) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: offsets[0], y: 0 })\n    },\n    handleSwipeEnd (sign) {\n      this.$refs.pinchZoom.setTransform({ scale: 1, x: 0, y: 0 })\n      if (sign > 0) {\n        this.goNext()\n      } else if (sign < 0) {\n        this.goPrev()\n      }\n    },\n    handleKeyupEvent (e) {\n      if (this.showing && e.keyCode === 27) { // escape\n        this.hide()\n      }\n    },\n    handleKeydownEvent (e) {\n      if (!this.showing) {\n        return\n      }\n\n      if (e.keyCode === 39) { // arrow right\n        this.goNext()\n      } else if (e.keyCode === 37) { // arrow left\n        this.goPrev()\n      }\n    }\n  },\n  mounted () {\n    window.addEventListener('popstate', this.hide)\n    document.addEventListener('keyup', this.handleKeyupEvent)\n    document.addEventListener('keydown', this.handleKeydownEvent)\n  },\n  unmounted () {\n    window.removeEventListener('popstate', this.hide)\n    document.removeEventListener('keyup', this.handleKeyupEvent)\n    document.removeEventListener('keydown', this.handleKeydownEvent)\n  }\n}\n\nexport default MediaModal\n","import { render } from \"./media_modal.vue?vue&type=template&id=21ea720c\"\nimport script from \"./media_modal.js?vue&type=script&lang=js\"\nexport * from \"./media_modal.js?vue&type=script&lang=js\"\n\nimport \"./media_modal.vue?vue&type=style&index=0&id=21ea720c&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"side-drawer-container\"\n    :class=\"{ 'side-drawer-container-closed': closed, 'side-drawer-container-open': !closed }\"\n  >\n    <div\n      class=\"side-drawer-darken\"\n      :class=\"{ 'side-drawer-darken-closed': closed}\"\n    />\n    <div\n      class=\"side-drawer\"\n      :class=\"{'side-drawer-closed': closed}\"\n      @touchstart=\"touchStart\"\n      @touchmove=\"touchMove\"\n    >\n      <div\n        class=\"side-drawer-heading\"\n        @click=\"toggleDrawer\"\n      >\n        <UserCard\n          v-if=\"currentUser\"\n          :user-id=\"currentUser.id\"\n          :hide-bio=\"true\"\n        />\n        <div\n          v-else\n          class=\"side-drawer-logo-wrapper\"\n        >\n          <img :src=\"logo\">\n          <span v-if=\"!hideSitename\">{{ sitename }}</span>\n        </div>\n      </div>\n      <ul>\n        <li\n          v-if=\"!currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'login' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-in-alt\"\n            /> {{ $t(\"login.login\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"timelinesRoute\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"home\"\n            /> {{ $t(\"nav.timelines\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'lists' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"list\"\n            /> {{ $t(\"nav.lists\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && pleromaChatMessagesAvailable\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link\n            :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n            style=\"position: relative\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"comments\"\n            /> {{ $t(\"nav.chats\") }}\n            <span\n              v-if=\"unreadChatCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadChatCount }}\n            </span>\n          </router-link>\n        </li>\n      </ul>\n      <ul v-if=\"currentUser\">\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bell\"\n            /> {{ $t(\"nav.interactions\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser.locked\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link to=\"/friend-requests\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.friend_requests\") }}\n            <span\n              v-if=\"followRequestCount > 0\"\n              class=\"badge badge-notification\"\n            >\n              {{ followRequestCount }}\n            </span>\n          </router-link>\n        </li>\n        <li\n          v-if=\"shout\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'shout-panel' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bullhorn\"\n            /> {{ $t(\"shoutbox.title\") }}\n          </router-link>\n        </li>\n      </ul>\n      <ul>\n        <li\n          v-if=\"currentUser || !privateMode\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'search' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"search\"\n            /> {{ $t(\"nav.search\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && suggestionsEnabled\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'who-to-follow' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"user-plus\"\n            /> {{ $t(\"nav.who_to_follow\") }}\n          </router-link>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"openSettingsModal\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"cog\"\n            /> {{ $t(\"settings.settings\") }}\n          </button>\n        </li>\n        <li @click=\"toggleDrawer\">\n          <router-link :to=\"{ name: 'about'}\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"info-circle\"\n            /> {{ $t(\"nav.about\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          @click=\"toggleDrawer\"\n        >\n          <a\n            href=\"/pleroma/admin/#/login-pleroma\"\n            target=\"_blank\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"tachometer-alt\"\n            /> {{ $t(\"nav.administration\") }}\n          </a>\n        </li>\n        <li\n          v-if=\"currentUser && supportsAnnouncements\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link\n            :to=\"{ name: 'announcements' }\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"bullhorn\"\n            /> {{ $t(\"nav.announcements\") }}\n            <span\n              v-if=\"unreadAnnouncementCount\"\n              class=\"badge badge-notification\"\n            >\n              {{ unreadAnnouncementCount }}\n            </span>\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <router-link :to=\"{ name: 'edit-navigation' }\">\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"compass\"\n            /> {{ $t(\"nav.edit_nav_mobile\") }}\n          </router-link>\n        </li>\n        <li\n          v-if=\"currentUser\"\n          @click=\"toggleDrawer\"\n        >\n          <button\n            class=\"button-unstyled -link -fullwidth\"\n            @click=\"doLogout\"\n          >\n            <FAIcon\n              fixed-width\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"sign-out-alt\"\n            /> {{ $t(\"login.logout\") }}\n          </button>\n        </li>\n      </ul>\n    </div>\n    <div\n      class=\"side-drawer-click-outside\"\n      :class=\"{'side-drawer-click-outside-closed': closed}\"\n      @click.stop.prevent=\"toggleDrawer\"\n    />\n  </div>\n</template>\n\n<script src=\"./side_drawer.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.side-drawer-container {\n  position: fixed;\n  z-index: var(--ZI_navbar);\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: stretch;\n  transition-duration: 0s;\n  transition-property: transform;\n}\n\n.side-drawer-container-open {\n  transform: translate(0%);\n}\n\n.side-drawer-container-closed {\n  transition-delay: 0.35s;\n  transform: translate(-100%);\n}\n\n.side-drawer-darken {\n  top: 0;\n  left: 0;\n  width: 100vw;\n  height: 100vh;\n  position: fixed;\n  z-index: -1;\n  transition: 0.35s;\n  transition-property: background-color;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.side-drawer-darken-closed {\n  background-color: rgba(0, 0, 0, 0);\n}\n\n.side-drawer-click-outside {\n  flex: 1 1 100%;\n}\n\n.side-drawer {\n  overflow-x: hidden;\n  transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  transition: 0.35s;\n  transition-property: transform;\n  margin: 0 0 0 -100px;\n  padding: 0 0 1em 100px;\n  width: 80%;\n  max-width: 20em;\n  flex: 0 0 80%;\n  box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n  box-shadow: var(--panelShadow);\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--link;\n  color: var(--popoverText, $fallback--link);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --icon: var(--popoverIcon, $fallback--icon);\n\n  .badge {\n    margin-left: 10px;\n  }\n}\n\n.side-drawer-logo-wrapper {\n  display: flex;\n  align-items: center;\n  padding: 0.85em;\n\n  img {\n    flex: none;\n    height: 50px;\n    margin-right: 0.85em;\n  }\n\n  span {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n\n.side-drawer-click-outside-closed {\n  flex: 0 0 0;\n}\n\n.side-drawer-closed {\n  transform: translate(-100%);\n}\n\n.side-drawer-heading {\n  background: transparent;\n  flex-direction: column;\n  align-items: stretch;\n  display: flex;\n  padding: 0;\n  margin: 0;\n}\n\n.side-drawer ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.side-drawer ul:last-child {\n  border: 0;\n}\n\n.side-drawer li {\n  padding: 0;\n\n  a, button {\n    box-sizing: border-box;\n    display: block;\n    height: 3em;\n    line-height: 3em;\n    padding: 0 0.7em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuPopoverText, $fallback--text);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n    }\n  }\n}\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport UserCard from '../user_card/user_card.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport { USERNAME_ROUTES } from 'src/components/navigation/navigation.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle,\n  faCompass,\n  faList\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle,\n  faCompass,\n  faList\n)\n\nconst SideDrawer = {\n  props: ['logout'],\n  data: () => ({\n    closed: true,\n    closeGesture: undefined\n  }),\n  created () {\n    this.closeGesture = GestureService.swipeGesture(GestureService.DIRECTION_LEFT, this.toggleDrawer)\n\n    if (this.currentUser && this.currentUser.locked) {\n      this.$store.dispatch('startFetchingFollowRequests')\n    }\n  },\n  components: { UserCard },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    shout () { return this.$store.state.shout.joined },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    suggestionsEnabled () {\n      return this.$store.state.instance.suggestionsEnabled\n    },\n    logo () {\n      return this.$store.state.instance.logo\n    },\n    hideSitename () {\n      return this.$store.state.instance.hideSitename\n    },\n    sitename () {\n      return this.$store.state.instance.name\n    },\n    followRequestCount () {\n      return this.$store.state.api.followRequests.length\n    },\n    privateMode () {\n      return this.$store.state.instance.private\n    },\n    federating () {\n      return this.$store.state.instance.federating\n    },\n    timelinesRoute () {\n      let name\n      if (this.$store.state.interface.lastTimeline) {\n        name = this.$store.state.interface.lastTimeline\n      }\n      name = this.currentUser ? 'friends' : 'public-timeline'\n      if (USERNAME_ROUTES.has(name)) {\n        return { name, params: { username: this.currentUser.screen_name } }\n      } else {\n        return { name }\n      }\n    },\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,\n      supportsAnnouncements: state => state.announcements.supportsAnnouncements\n    }),\n    ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n  },\n  methods: {\n    toggleDrawer () {\n      this.closed = !this.closed\n    },\n    doLogout () {\n      this.logout()\n      this.toggleDrawer()\n    },\n    touchStart (e) {\n      GestureService.beginSwipe(e, this.closeGesture)\n    },\n    touchMove (e) {\n      GestureService.updateSwipe(e, this.closeGesture)\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=8f5a2cd2\"\nimport script from \"./side_drawer.js?vue&type=script&lang=js\"\nexport * from \"./side_drawer.js?vue&type=script&lang=js\"\n\nimport \"./side_drawer.vue?vue&type=style&index=0&id=8f5a2cd2&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { debounce } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faPen\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faPen\n)\n\nconst HIDDEN_FOR_PAGES = new Set([\n  'chats',\n  'chat',\n  'lists-edit'\n])\n\nconst MobilePostStatusButton = {\n  data () {\n    return {\n      hidden: false,\n      scrollingDown: false,\n      inputActive: false,\n      oldScrollPos: 0,\n      amountScrolled: 0\n    }\n  },\n  created () {\n    if (this.autohideFloatingPostButton) {\n      this.activateFloatingPostButtonAutohide()\n    }\n    window.addEventListener('resize', this.handleOSK)\n  },\n  unmounted () {\n    if (this.autohideFloatingPostButton) {\n      this.deactivateFloatingPostButtonAutohide()\n    }\n    window.removeEventListener('resize', this.handleOSK)\n  },\n  computed: {\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isHidden () {\n      if (HIDDEN_FOR_PAGES.has(this.$route.name)) { return true }\n\n      return this.autohideFloatingPostButton && (this.hidden || this.inputActive)\n    },\n    isPersistent () {\n      return !!this.$store.getters.mergedConfig.alwaysShowNewPostButton\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","import { render } from \"./mobile_post_status_button.vue?vue&type=template&id=2b050cd4\"\nimport script from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\nexport * from \"./mobile_post_status_button.js?vue&type=script&lang=js\"\n\nimport \"./mobile_post_status_button.vue?vue&type=style&index=0&id=2b050cd4&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    v-if=\"isLoggedIn\"\n    class=\"MobilePostButton button-default new-status-button\"\n    :class=\"{ 'hidden': isHidden, 'always-show': isPersistent }\"\n    :title=\"$t('post_status.new_status')\"\n    @click=\"openPostForm\"\n  >\n    <FAIcon icon=\"pen\" />\n  </button>\n</template>\n\n<script src=\"./mobile_post_status_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobilePostButton {\n  &.button-default {\n    width: 5em;\n    height: 5em;\n    border-radius: 100%;\n    position: fixed;\n    bottom: 1.5em;\n    right: 1.5em;\n    // TODO: this needs its own color, it has to stand out enough and link color\n    // is not very optimal for this particular use.\n    background-color: $fallback--fg;\n    background-color: var(--btn, $fallback--fg);\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3), 0px 4px 6px rgba(0, 0, 0, 0.3);\n    z-index: 10;\n\n    transition: 0.35s transform;\n    transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\n  }\n\n  &.hidden {\n    transform: translateY(150%);\n  }\n\n  svg {\n    font-size: 1.5em;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n\n@media all and (min-width: 801px) {\n  .new-status-button:not(.always-show) {\n    display: none;\n  }\n}\n\n</style>\n","<template>\n  <div\n    class=\"MobileNav\"\n  >\n    <nav\n      id=\"nav\"\n      class=\"mobile-nav\"\n      @click=\"scrollToTop()\"\n    >\n      <div class=\"item\">\n        <button\n          class=\"button-unstyled mobile-nav-button\"\n          :title=\"$t('nav.mobile_sidebar')\"\n          :aria-expanaded=\"$refs.sideDrawer && !$refs.sideDrawer.closed\"\n          @click.stop.prevent=\"toggleMobileSidebar()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bars\"\n          />\n          <div\n            v-if=\"(unreadChatCount && !chatsPinned) || unreadAnnouncementCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n        <NavigationPins class=\"pins\" />\n      </div> <div class=\"item right\">\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled mobile-nav-button\"\n          :title=\"unseenNotificationsCount ? $t('nav.mobile_notifications_unread_active') : $t('nav.mobile_notifications')\"\n          @click.stop.prevent=\"openMobileNotifications()\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"bell\"\n          />\n          <div\n            v-if=\"unseenNotificationsCount\"\n            class=\"alert-dot\"\n          />\n        </button>\n      </div>\n    </nav>\n    <aside\n      v-if=\"currentUser\"\n      class=\"mobile-notifications-drawer\"\n      :class=\"{ '-closed': !notificationsOpen }\"\n      @touchstart.stop=\"notificationsTouchStart\"\n      @touchmove.stop=\"notificationsTouchMove\"\n    >\n      <div class=\"mobile-notifications-header\">\n        <span class=\"title\">{{ $t('notifications.notifications') }}</span>\n        <span class=\"spacer\" />\n        <button\n          v-if=\"notificationsAtTop\"\n          class=\"button-unstyled mobile-nav-button\"\n          :title=\"$t('general.scroll_to_top')\"\n          @click.stop.prevent=\"scrollMobileNotificationsToTop\"\n        >\n          <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n            <FAIcon icon=\"arrow-up\" />\n            <FAIcon\n              icon=\"minus\"\n              transform=\"up-7\"\n            />\n          </FALayers>\n        </button>\n        <button\n          class=\"button-unstyled mobile-nav-button\"\n          :title=\"$t('nav.mobile_notifications_close')\"\n          @click.stop.prevent=\"closeMobileNotifications(true)\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n      <div\n        id=\"mobile-notifications\"\n        ref=\"mobileNotifications\"\n        class=\"mobile-notifications\"\n        @scroll=\"onScroll\"\n      />\n    </aside>\n    <SideDrawer\n      ref=\"sideDrawer\"\n      :logout=\"logout\"\n    />\n  </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.MobileNav {\n  z-index: var(--ZI_navbar);\n\n  .mobile-nav {\n    display: grid;\n    line-height: var(--navbar-height);\n    grid-template-rows: 50px;\n    grid-template-columns: 2fr auto;\n    width: 100%;\n    box-sizing: border-box;\n\n    a {\n      color: var(--topBarLink, $fallback--link);\n    }\n  }\n\n  .mobile-inner-nav {\n    width: 100%;\n    display: flex;\n    align-items: center;\n  }\n\n  .mobile-nav-button {\n    display: inline-block;\n    text-align: center;\n    padding: 0 1em;\n    position: relative;\n    cursor: pointer;\n  }\n\n  .site-name {\n    padding: 0 .3em;\n    display: inline-block;\n  }\n\n  .item {\n    /* moslty just to get rid of extra whitespaces */\n    display: flex;\n  }\n\n  .alert-dot {\n    border-radius: 100%;\n    height: 8px;\n    width: 8px;\n    position: absolute;\n    left: calc(50% - 4px);\n    top: calc(50% - 4px);\n    margin-left: 6px;\n    margin-top: -6px;\n    background-color: $fallback--cRed;\n    background-color: var(--badgeNotification, $fallback--cRed);\n  }\n\n  .mobile-notifications-drawer {\n    width: 100%;\n    height: 100vh;\n    overflow-x: hidden;\n    position: fixed;\n    top: 0;\n    left: 0;\n    box-shadow: 1px 1px 4px rgba(0,0,0,.6);\n    box-shadow: var(--panelShadow);\n    transition-property: transform;\n    transition-duration: 0.25s;\n    transform: translateX(0);\n    z-index: var(--ZI_navbar);\n    -webkit-overflow-scrolling: touch;\n\n    &.-closed {\n      transform: translateX(100%);\n      box-shadow: none;\n    }\n  }\n\n  .mobile-notifications-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    z-index: calc(var(--ZI_navbar) + 100);\n    width: 100%;\n    height: 50px;\n    line-height: 50px;\n    position: absolute;\n    color: var(--topBarText);\n    background-color: $fallback--fg;\n    background-color: var(--topBar, $fallback--fg);\n    box-shadow: 0px 0px 4px rgba(0,0,0,.6);\n    box-shadow: var(--topBarShadow);\n\n    .spacer {\n      flex: 1;\n    }\n\n    .title {\n      font-size: 1.3em;\n      margin-left: 0.6em;\n    }\n  }\n\n  .pins {\n    flex: 1;\n\n    .pinned-item {\n      flex-grow: 1;\n    }\n  }\n\n  .mobile-notifications {\n    margin-top: 50px;\n    width: 100vw;\n    height: calc(100vh - var(--navbar-height));\n    overflow-x: hidden;\n    overflow-y: scroll;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n\n    .notifications {\n      padding: 0;\n      border-radius: 0;\n      box-shadow: none;\n\n      .panel {\n        border-radius: 0;\n        margin: 0;\n        box-shadow: none;\n      }\n\n      .panel::after {\n        border-radius: 0;\n      }\n\n      .panel .panel-heading {\n        border-radius: 0;\n        box-shadow: none;\n      }\n    }\n  }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport { unseenNotificationsFromStore } from '../../services/notification_utils/notification_utils'\nimport GestureService from '../../services/gesture_service/gesture_service'\nimport NavigationPins from 'src/components/navigation/navigation_pins.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faBell,\n  faBars,\n  faArrowUp,\n  faMinus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faBell,\n  faBars,\n  faArrowUp,\n  faMinus\n)\n\nconst MobileNav = {\n  components: {\n    SideDrawer,\n    Notifications,\n    NavigationPins\n  },\n  data: () => ({\n    notificationsCloseGesture: undefined,\n    notificationsOpen: false,\n    notificationsAtTop: true\n  }),\n  created () {\n    this.notificationsCloseGesture = GestureService.swipeGesture(\n      GestureService.DIRECTION_RIGHT,\n      () => this.closeMobileNotifications(true),\n      50\n    )\n  },\n  computed: {\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    unseenNotificationsCount () {\n      return this.unseenNotifications.length\n    },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    sitename () { return this.$store.state.instance.name },\n    isChat () {\n      return this.$route.name === 'chat'\n    },\n    ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount']),\n    chatsPinned () {\n      return new Set(this.$store.state.serverSideStorage.prefsStorage.collections.pinnedNavItems).has('chats')\n    }\n  },\n  methods: {\n    toggleMobileSidebar () {\n      this.$refs.sideDrawer.toggleDrawer()\n    },\n    openMobileNotifications () {\n      this.notificationsOpen = true\n    },\n    closeMobileNotifications (markRead) {\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        if (markRead) {\n          this.markNotificationsAsSeen()\n        }\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    scrollMobileNotificationsToTop () {\n      this.$refs.mobileNotifications.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      this.$store.dispatch('markNotificationsAsSeen')\n    },\n    onScroll ({ target: { scrollTop, clientHeight, scrollHeight } }) {\n      this.notificationsAtTop = scrollTop > 0\n      if (scrollTop + clientHeight >= scrollHeight) {\n        this.$refs.notifications.fetchOlderNotifications()\n      }\n    }\n  },\n  watch: {\n    $route () {\n      // handles closing notificaitons when you press any router-link on the\n      // notifications.\n      this.closeMobileNotifications()\n    }\n  }\n}\n\nexport default MobileNav\n","import { render } from \"./mobile_nav.vue?vue&type=template&id=62717cd4\"\nimport script from \"./mobile_nav.js?vue&type=script&lang=js\"\nexport * from \"./mobile_nav.js?vue&type=script&lang=js\"\n\nimport \"./mobile_nav.vue?vue&type=style&index=0&id=62717cd4&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <nav\n    id=\"nav\"\n    class=\"DesktopNav\"\n    :class=\"{ '-logoLeft': logoLeft }\"\n    @click=\"scrollToTop()\"\n  >\n    <div class=\"inner-nav\">\n      <div class=\"item sitename\">\n        <router-link\n          v-if=\"!hideSitename\"\n          class=\"site-name\"\n          :to=\"{ name: 'root' }\"\n          active-class=\"home\"\n        >\n          {{ sitename }}\n        </router-link>\n      </div>\n      <router-link\n        class=\"logo\"\n        :to=\"{ name: 'root' }\"\n        :style=\"logoBgStyle\"\n      >\n        <div\n          class=\"mask\"\n          :style=\"logoMaskStyle\"\n        />\n        <img\n          :src=\"logo\"\n          :style=\"logoStyle\"\n        >\n      </router-link>\n      <div class=\"item right actions\">\n        <search-bar\n          v-if=\"currentUser || !privateMode\"\n          @toggled=\"onSearchBarToggled\"\n          @click.stop\n        />\n        <button\n          class=\"button-unstyled nav-icon\"\n          @click=\"openSettingsModal\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"cog\"\n            :title=\"$t('nav.preferences')\"\n          />\n        </button>\n        <a\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          href=\"/pleroma/admin/#/login-pleroma\"\n          class=\"nav-icon\"\n          target=\"_blank\"\n          @click.stop\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"tachometer-alt\"\n            :title=\"$t('nav.administration')\"\n          />\n        </a>\n        <span class=\"spacer\" />\n        <button\n          v-if=\"currentUser\"\n          class=\"button-unstyled nav-icon\"\n          @click.prevent=\"logout\"\n        >\n          <FAIcon\n            fixed-width\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"sign-out-alt\"\n            :title=\"$t('login.logout')\"\n          />\n        </button>\n      </div>\n    </div>\n  </nav>\n</template>\n<script src=\"./desktop_nav.js\"></script>\n\n<style src=\"./desktop_nav.scss\" lang=\"scss\"></style>\n","<template>\n  <div\n    class=\"SearchBar\"\n    :class=\"{ '-expanded': !hidden }\"\n  >\n    <button\n      v-if=\"hidden\"\n      class=\"button-unstyled nav-icon\"\n      :title=\"$t('nav.search')\"\n      type=\"button\"\n      @click.prevent.stop=\"toggleHidden\"\n    >\n      <FAIcon\n        fixed-width\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"search\"\n      />\n    </button>\n    <template v-else>\n      <input\n        id=\"search-bar-input\"\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-bar-input\"\n        :placeholder=\"$t('nav.search')\"\n        type=\"text\"\n        @keyup.enter=\"find(searchTerm)\"\n      >\n      <button\n        class=\"button-default search-button\"\n        type=\"submit\"\n        @click=\"find(searchTerm)\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"search\"\n        />\n      </button>\n      <button\n        class=\"button-unstyled cancel-search\"\n        type=\"button\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <FAIcon\n          fixed-width\n          icon=\"times\"\n          class=\"cancel-icon fa-scale-110 fa-old-padding\"\n        />\n      </button>\n      <span class=\"spacer\" />\n      <span class=\"spacer\" />\n    </template>\n  </div>\n</template>\n\n<script src=\"./search_bar.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.SearchBar {\n  display: inline-flex;\n  align-items: baseline;\n  vertical-align: baseline;\n  justify-content: flex-end;\n\n  &.-expanded {\n    width: 100%;\n  }\n\n  .search-bar-input,\n  .search-button {\n    height: 29px;\n  }\n\n  .search-bar-input {\n    flex: 1 0 auto;\n  }\n\n  .cancel-search {\n    height: 50px;\n  }\n\n  .cancel-icon {\n    color: $fallback--text;\n    color: var(--btnTopBarText, $fallback--text);\n  }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faSearch\n)\n\nconst SearchBar = {\n  data: () => ({\n    searchTerm: undefined,\n    hidden: true,\n    error: false\n  }),\n  watch: {\n    $route: function (route) {\n      if (route.name === 'search') {\n        this.searchTerm = route.query.query\n      }\n    }\n  },\n  methods: {\n    find (searchTerm) {\n      this.$router.push({ name: 'search', query: { query: searchTerm } })\n      this.$refs.searchInput.focus()\n    },\n    toggleHidden () {\n      this.hidden = !this.hidden\n      this.$emit('toggled', this.hidden)\n      this.$nextTick(() => {\n        if (!this.hidden) {\n          this.$refs.searchInput.focus()\n        }\n      })\n    }\n  }\n}\n\nexport default SearchBar\n","import { render } from \"./search_bar.vue?vue&type=template&id=4ac71253\"\nimport script from \"./search_bar.js?vue&type=script&lang=js\"\nexport * from \"./search_bar.js?vue&type=script&lang=js\"\n\nimport \"./search_bar.vue?vue&type=style&index=0&id=4ac71253&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import SearchBar from 'components/search_bar/search_bar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSignInAlt,\n  faSignOutAlt,\n  faHome,\n  faComments,\n  faBell,\n  faUserPlus,\n  faBullhorn,\n  faSearch,\n  faTachometerAlt,\n  faCog,\n  faInfoCircle\n)\n\nexport default {\n  components: {\n    SearchBar\n  },\n  data: () => ({\n    searchBarHidden: true,\n    supportsMask: window.CSS && window.CSS.supports && (\n      window.CSS.supports('mask-size', 'contain') ||\n        window.CSS.supports('-webkit-mask-size', 'contain') ||\n        window.CSS.supports('-moz-mask-size', 'contain') ||\n        window.CSS.supports('-ms-mask-size', 'contain') ||\n        window.CSS.supports('-o-mask-size', 'contain')\n    )\n  }),\n  computed: {\n    enableMask () { return this.supportsMask && this.$store.state.instance.logoMask },\n    logoStyle () {\n      return {\n        visibility: this.enableMask ? 'hidden' : 'visible'\n      }\n    },\n    logoMaskStyle () {\n      return this.enableMask\n        ? {\n            'mask-image': `url(${this.$store.state.instance.logo})`\n          }\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        ? {}\n        : {\n            'background-color': this.enableMask ? '' : 'transparent'\n          })\n    },\n    logo () { return this.$store.state.instance.logo },\n    sitename () { return this.$store.state.instance.name },\n    hideSitename () { return this.$store.state.instance.hideSitename },\n    logoLeft () { return this.$store.state.instance.logoLeft },\n    currentUser () { return this.$store.state.users.currentUser },\n    privateMode () { return this.$store.state.instance.private }\n  },\n  methods: {\n    scrollToTop () {\n      window.scrollTo(0, 0)\n    },\n    logout () {\n      this.$router.replace('/main/public')\n      this.$store.dispatch('logout')\n    },\n    onSearchBarToggled (hidden) {\n      this.searchBarHidden = hidden\n    },\n    openSettingsModal () {\n      this.$store.dispatch('openSettingsModal')\n    }\n  }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=5f30298d\"\nimport script from \"./desktop_nav.js?vue&type=script&lang=js\"\nexport * from \"./desktop_nav.js?vue&type=script&lang=js\"\n\nimport \"./desktop_nav.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isOpen\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"user-reporting-panel panel\">\n      <div class=\"panel-heading\">\n        <i18n-t\n          tag=\"div\"\n          keypath=\"user_reporting.title\"\n          class=\"title\"\n        >\n          <UserLink :user=\"user\" />\n        </i18n-t>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"user-reporting-panel-left\">\n          <div>\n            <p>{{ $t('user_reporting.add_comment_description') }}</p>\n            <textarea\n              v-model=\"comment\"\n              class=\"form-control\"\n              :placeholder=\"$t('user_reporting.additional_comments')\"\n              rows=\"1\"\n              @input=\"resize\"\n            />\n          </div>\n          <div v-if=\"!user.is_local\">\n            <p>{{ $t('user_reporting.forward_description') }}</p>\n            <Checkbox v-model=\"forward\">\n              {{ $t('user_reporting.forward_to', [remoteInstance]) }}\n            </Checkbox>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default\"\n              :disabled=\"processing\"\n              @click=\"reportUser\"\n            >\n              {{ $t('user_reporting.submit') }}\n            </button>\n            <div\n              v-if=\"error\"\n              class=\"alert error\"\n            >\n              {{ $t('user_reporting.generic_error') }}\n            </div>\n          </div>\n        </div>\n        <div class=\"user-reporting-panel-right\">\n          <List :items=\"statuses\">\n            <template #item=\"{item}\">\n              <div class=\"status-fadein user-reporting-panel-sitem\">\n                <Status\n                  :in-conversation=\"false\"\n                  :focused=\"false\"\n                  :statusoid=\"item\"\n                />\n                <Checkbox\n                  :model-value=\"isChecked(item.id)\"\n                  @update:model-value=\"checked => toggleStatus(checked, item.id)\"\n                />\n              </div>\n            </template>\n          </List>\n        </div>\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./user_reporting_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-reporting-panel {\n  width: 90vw;\n  max-width: 700px;\n  min-height: 20vh;\n  max-height: 80vh;\n\n  .panel-body {\n    display: flex;\n    flex-direction: column-reverse;\n    border-top: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    overflow: hidden;\n  }\n\n  &-left {\n    padding: 1.1em 0.7em 0.7em;\n    line-height: var(--post-line-height);\n    box-sizing: border-box;\n\n    > div {\n      margin-bottom: 1em;\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n\n    p {\n      margin-top: 0;\n    }\n\n    textarea.form-control {\n      line-height: 16px;\n      resize: none;\n      overflow: hidden;\n      transition: min-height 200ms 100ms;\n      min-height: 44px;\n      width: 100%;\n    }\n\n    .btn {\n      min-width: 10em;\n      padding: 0 2em;\n    }\n\n    .alert {\n      margin: 1em 0 0 0;\n      line-height: 1.3em;\n    }\n  }\n\n  &-right {\n    display: flex;\n    flex-direction: column;\n    overflow-y: auto;\n  }\n\n  &-sitem {\n    display: flex;\n    justify-content: space-between;\n\n    /* TODO cleanup this */\n    > .Status {\n      flex: 1;\n    }\n\n    > .checkbox {\n      margin: 0.75em;\n    }\n  }\n\n  @media all and (min-width: 801px) {\n    .panel-body {\n      flex-direction: row;\n    }\n\n    &-left {\n      width: 50%;\n      max-width: 320px;\n      border-right: 1px solid;\n      border-color: $fallback--border;\n      border-color: var(--border, $fallback--border);\n      padding: 1.1em;\n\n      > div {\n        margin-bottom: 2em;\n      }\n    }\n\n    &-right {\n      width: 50%;\n      flex: 1 1 auto;\n      margin-bottom: 12px;\n    }\n  }\n}\n</style>\n","import Status from '../status/status.vue'\nimport List from '../list/list.vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Modal from '../modal/modal.vue'\nimport UserLink from '../user_link/user_link.vue'\n\nconst UserReportingModal = {\n  components: {\n    Status,\n    List,\n    Checkbox,\n    Modal,\n    UserLink\n  },\n  data () {\n    return {\n      comment: '',\n      forward: false,\n      statusIdsToReport: [],\n      processing: false,\n      error: false\n    }\n  },\n  computed: {\n    reportModal () {\n      return this.$store.state.reports.reportModal\n    },\n    isLoggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    isOpen () {\n      return this.isLoggedIn && this.reportModal.activated\n    },\n    userId () {\n      return this.reportModal.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.reportModal.statuses\n    },\n    preTickedIds () {\n      return this.reportModal.preTickedIds\n    }\n  },\n  watch: {\n    userId: 'resetState',\n    preTickedIds (newValue) {\n      this.statusIdsToReport = newValue\n    }\n  },\n  methods: {\n    resetState () {\n      // Reset state\n      this.comment = ''\n      this.forward = false\n      this.statusIdsToReport = this.preTickedIds\n      this.processing = false\n      this.error = false\n    },\n    closeModal () {\n      this.$store.dispatch('closeUserReportingModal')\n    },\n    reportUser () {\n      this.processing = true\n      this.error = false\n      const params = {\n        userId: this.userId,\n        comment: this.comment,\n        forward: this.forward,\n        statusIds: this.statusIdsToReport\n      }\n      this.$store.state.api.backendInteractor.reportUser({ ...params })\n        .then(() => {\n          this.processing = false\n          this.resetState()\n          this.closeModal()\n        })\n        .catch(() => {\n          this.processing = false\n          this.error = true\n        })\n    },\n    clearError () {\n      this.error = false\n    },\n    isChecked (statusId) {\n      return this.statusIdsToReport.indexOf(statusId) !== -1\n    },\n    toggleStatus (checked, statusId) {\n      if (checked === this.isChecked(statusId)) {\n        return\n      }\n\n      if (checked) {\n        this.statusIdsToReport.push(statusId)\n      } else {\n        this.statusIdsToReport.splice(this.statusIdsToReport.indexOf(statusId), 1)\n      }\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n      // Auto is needed to make textbox shrink when removing lines\n      target.style.height = 'auto'\n      target.style.height = `${target.scrollHeight}px`\n      if (target.value === '') {\n        target.style.height = null\n      }\n    }\n  }\n}\n\nexport default UserReportingModal\n","import { render } from \"./user_reporting_modal.vue?vue&type=template&id=4dd8a45a\"\nimport script from \"./user_reporting_modal.js?vue&type=script&lang=js\"\nexport * from \"./user_reporting_modal.js?vue&type=script&lang=js\"\n\nimport \"./user_reporting_modal.vue?vue&type=style&index=0&id=4dd8a45a&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isFormVisible\"\n    class=\"edit-form-modal-view\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"edit-form-modal-panel panel\">\n      <div class=\"panel-heading\">\n        {{ $t('post_status.edit_status') }}\n      </div>\n      <PostStatusForm\n        class=\"panel-body\"\n        v-bind=\"params\"\n        :post-handler=\"doEditStatus\"\n        :disable-polls=\"true\"\n        :disable-visibility-selector=\"true\"\n        @posted=\"closeModal\"\n      />\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./edit_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.edit-form-modal-view {\n  align-items: flex-start;\n}\n.edit-form-modal-panel {\n  flex-shrink: 0;\n  margin-top: 25%;\n  margin-bottom: 2em;\n  width: 100%;\n  max-width: 700px;\n\n  @media (orientation: landscape) {\n    margin-top: 8%;\n  }\n\n  .form-bottom-left {\n    max-width: 6.5em;\n\n    .emoji-icon {\n      justify-content: right;\n    }\n  }\n}\n</style>\n","import PostStatusForm from '../post_status_form/post_status_form.vue'\nimport Modal from '../modal/modal.vue'\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport get from 'lodash/get'\n\nconst EditStatusModal = {\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.editStatus.modalActivated\n    },\n    isFormVisible () {\n      return this.isLoggedIn && !this.resettingForm && this.modalActivated\n    },\n    params () {\n      return this.$store.state.editStatus.params || {}\n    }\n  },\n  watch: {\n    params (newVal, oldVal) {\n      if (get(newVal, 'statusId') !== get(oldVal, 'statusId')) {\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    doEditStatus ({ status, spoilerText, sensitive, media, contentType, poll }) {\n      const params = {\n        store: this.$store,\n        statusId: this.$store.state.editStatus.params.statusId,\n        status,\n        spoilerText,\n        sensitive,\n        poll,\n        media,\n        contentType\n      }\n\n      return statusPosterService.editStatus(params)\n        .then((data) => {\n          return data\n        })\n        .catch((err) => {\n          console.error('Error editing status', err)\n          return {\n            error: err.message\n          }\n        })\n    },\n    closeModal () {\n      this.$store.dispatch('closeEditStatusModal')\n    }\n  }\n}\n\nexport default EditStatusModal\n","import { render } from \"./edit_status_modal.vue?vue&type=template&id=3dd4d50f\"\nimport script from \"./edit_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./edit_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./edit_status_modal.vue?vue&type=style&index=0&id=3dd4d50f&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"isLoggedIn && !resettingForm\"\n    :is-open=\"modalActivated\"\n    class=\"post-form-modal-view\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"post-form-modal-panel panel\">\n      <div class=\"panel-heading\">\n        {{ $t('post_status.new_status') }}\n      </div>\n      <PostStatusForm\n        class=\"panel-body\"\n        v-bind=\"params\"\n        @posted=\"closeModal\"\n      />\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./post_status_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.post-form-modal-view {\n  align-items: flex-start;\n}\n\n.post-form-modal-panel {\n  flex-shrink: 0;\n  margin-top: 25%;\n  margin-bottom: 2em;\n  width: 100%;\n  max-width: 700px;\n\n  @media (orientation: landscape) {\n    margin-top: 8%;\n  }\n}\n</style>\n","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","import { render } from \"./post_status_modal.vue?vue&type=template&id=b6b8d3a2\"\nimport script from \"./post_status_modal.js?vue&type=script&lang=js\"\nexport * from \"./post_status_modal.js?vue&type=script&lang=js\"\n\nimport \"./post_status_modal.vue?vue&type=style&index=0&id=b6b8d3a2&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Modal\n    v-if=\"modalActivated\"\n    class=\"status-history-modal-view\"\n    @backdropClicked=\"closeModal\"\n  >\n    <div class=\"status-history-modal-panel panel\">\n      <div class=\"panel-heading\">\n        {{ $t('status.status_history') }} ({{ historyCount }})\n      </div>\n      <div class=\"panel-body\">\n        <div\n          v-if=\"historyCount > 0\"\n          class=\"history-body\"\n        >\n          <status\n            v-for=\"status in history\"\n            :key=\"status.id\"\n            :statusoid=\"status\"\n            :is-preview=\"true\"\n            class=\"conversation-status status-fadein panel-body\"\n          />\n        </div>\n      </div>\n    </div>\n  </Modal>\n</template>\n\n<script src=\"./status_history_modal.js\"></script>\n\n<style lang=\"scss\">\n.modal-view.status-history-modal-view {\n  align-items: flex-start;\n}\n.status-history-modal-panel {\n  flex-shrink: 0;\n  margin-top: 25%;\n  margin-bottom: 2em;\n  width: 100%;\n  max-width: 700px;\n\n  @media (orientation: landscape) {\n    margin-top: 8%;\n  }\n}\n</style>\n","import { get } from 'lodash'\nimport Modal from '../modal/modal.vue'\nimport Status from '../status/status.vue'\n\nconst StatusHistoryModal = {\n  components: {\n    Modal,\n    Status\n  },\n  data () {\n    return {\n      statuses: []\n    }\n  },\n  computed: {\n    modalActivated () {\n      return this.$store.state.statusHistory.modalActivated\n    },\n    params () {\n      return this.$store.state.statusHistory.params\n    },\n    statusId () {\n      return this.params.id\n    },\n    historyCount () {\n      return this.statuses.length\n    },\n    history () {\n      return this.statuses\n    }\n  },\n  watch: {\n    params (newVal, oldVal) {\n      const newStatusId = get(newVal, 'id') !== get(oldVal, 'id')\n      if (newStatusId) {\n        this.resetHistory()\n      }\n\n      if (newStatusId || get(newVal, 'edited_at') !== get(oldVal, 'edited_at')) {\n        this.fetchStatusHistory()\n      }\n    }\n  },\n  methods: {\n    resetHistory () {\n      this.statuses = []\n    },\n    fetchStatusHistory () {\n      this.$store.dispatch('fetchStatusHistory', this.params)\n        .then(data => {\n          this.statuses = data\n        })\n    },\n    closeModal () {\n      this.$store.dispatch('closeStatusHistoryModal')\n    }\n  }\n}\n\nexport default StatusHistoryModal\n","import { render } from \"./status_history_modal.vue?vue&type=template&id=8f55a35a\"\nimport script from \"./status_history_modal.js?vue&type=script&lang=js\"\nexport * from \"./status_history_modal.js?vue&type=script&lang=js\"\n\nimport \"./status_history_modal.vue?vue&type=style&index=0&id=8f55a35a&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"global-notice-list\">\n    <div\n      v-for=\"(notice, index) in notices\"\n      :key=\"index\"\n      class=\"alert global-notice\"\n      :class=\"{ ['global-' + notice.level]: true }\"\n    >\n      <div class=\"notice-message\">\n        {{ $t(notice.messageKey, notice.messageArgs) }}\n      </div>\n      <button\n        class=\"button-unstyled close-notice\"\n        @click=\"closeNotice(notice)\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"times\"\n        />\n      </button>\n    </div>\n  </div>\n</template>\n\n<script src=\"./global_notice_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.global-notice-list {\n  position: fixed;\n  top: calc(var(--navbar-height) + 0.5em);\n  width: 100%;\n  pointer-events: none;\n  z-index: var(--ZI_navbar_popovers);\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n\n  .global-notice {\n    pointer-events: auto;\n    text-align: center;\n    width: 40em;\n    max-width: calc(100% - 3em);\n    display: flex;\n    padding-left: 1.5em;\n    line-height: 2;\n    margin-bottom: 0.5em;\n\n    .notice-message {\n      flex: 1 1 100%;\n    }\n  }\n\n  .global-error {\n    background-color: var(--alertPopupError, $fallback--cRed);\n    color: var(--alertPopupErrorText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupErrorText, $fallback--text);\n    }\n  }\n\n  .global-warning {\n    background-color: var(--alertPopupWarning, $fallback--cOrange);\n    color: var(--alertPopupWarningText, $fallback--text);\n\n    .svg-inline--fa {\n      color: var(--alertPopupWarningText, $fallback--text);\n    }\n  }\n\n  .global-success {\n    background-color: var(--alertPopupSuccess, $fallback--cGreen);\n    color: var(--alertPopupSuccessText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupSuccessText, $fallback--text);\n    }\n  }\n\n  .global-info {\n    background-color: var(--alertPopupNeutral, $fallback--fg);\n    color: var(--alertPopupNeutralText, $fallback--text);\n    .svg-inline--fa {\n      color: var(--alertPopupNeutralText, $fallback--text);\n    }\n  }\n\n  .close-notice {\n    padding-right: 0.2em;\n    .svg-inline--fa:hover {\n      opacity: 0.6;\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst GlobalNoticeList = {\n  computed: {\n    notices () {\n      return this.$store.state.interface.globalNotices\n    }\n  },\n  methods: {\n    closeNotice (notice) {\n      this.$store.dispatch('removeGlobalNotice', notice)\n    }\n  }\n}\n\nexport default GlobalNoticeList\n","import { render } from \"./global_notice_list.vue?vue&type=template&id=388f9032\"\nimport script from \"./global_notice_list.js?vue&type=script&lang=js\"\nexport * from \"./global_notice_list.js?vue&type=script&lang=js\"\n\nimport \"./global_notice_list.vue?vue&type=style&index=0&id=388f9032&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserPanel from './components/user_panel/user_panel.vue'\nimport NavPanel from './components/nav_panel/nav_panel.vue'\nimport InstanceSpecificPanel from './components/instance_specific_panel/instance_specific_panel.vue'\nimport FeaturesPanel from './components/features_panel/features_panel.vue'\nimport WhoToFollowPanel from './components/who_to_follow_panel/who_to_follow_panel.vue'\nimport ShoutPanel from './components/shout_panel/shout_panel.vue'\nimport MediaModal from './components/media_modal/media_modal.vue'\nimport SideDrawer from './components/side_drawer/side_drawer.vue'\nimport MobilePostStatusButton from './components/mobile_post_status_button/mobile_post_status_button.vue'\nimport MobileNav from './components/mobile_nav/mobile_nav.vue'\nimport DesktopNav from './components/desktop_nav/desktop_nav.vue'\nimport UserReportingModal from './components/user_reporting_modal/user_reporting_modal.vue'\nimport EditStatusModal from './components/edit_status_modal/edit_status_modal.vue'\nimport PostStatusModal from './components/post_status_modal/post_status_modal.vue'\nimport StatusHistoryModal from './components/status_history_modal/status_history_modal.vue'\nimport GlobalNoticeList from './components/global_notice_list/global_notice_list.vue'\nimport { windowWidth, windowHeight } from './services/window_utils/window_utils'\nimport { mapGetters } from 'vuex'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n  name: 'app',\n  components: {\n    UserPanel,\n    NavPanel,\n    Notifications: defineAsyncComponent(() => import('./components/notifications/notifications.vue')),\n    InstanceSpecificPanel,\n    FeaturesPanel,\n    WhoToFollowPanel,\n    ShoutPanel,\n    MediaModal,\n    SideDrawer,\n    MobilePostStatusButton,\n    MobileNav,\n    DesktopNav,\n    SettingsModal: defineAsyncComponent(() => import('./components/settings_modal/settings_modal.vue')),\n    UpdateNotification: defineAsyncComponent(() => import('./components/update_notification/update_notification.vue')),\n    UserReportingModal,\n    PostStatusModal,\n    EditStatusModal,\n    StatusHistoryModal,\n    GlobalNoticeList\n  },\n  data: () => ({\n    mobileActivePanel: 'timeline'\n  }),\n  created () {\n    // Load the locale from the storage\n    const val = this.$store.getters.mergedConfig.interfaceLanguage\n    this.$store.dispatch('setOption', { name: 'interfaceLanguage', value: val })\n    window.addEventListener('resize', this.updateMobileState)\n  },\n  unmounted () {\n    window.removeEventListener('resize', this.updateMobileState)\n  },\n  computed: {\n    classes () {\n      return [\n        {\n          '-reverse': this.reverseLayout,\n          '-no-sticky-headers': this.noSticky,\n          '-has-new-post-button': this.newPostButtonShown\n        },\n        '-' + this.layoutType\n      ]\n    },\n    navClasses () {\n      const { navbarColumnStretch } = this.$store.getters.mergedConfig\n      return [\n        '-' + this.layoutType,\n        ...(navbarColumnStretch ? ['-column-stretch'] : [])\n      ]\n    },\n    currentUser () { return this.$store.state.users.currentUser },\n    userBackground () { return this.currentUser.background_image },\n    instanceBackground () {\n      return this.mergedConfig.hideInstanceWallpaper\n        ? null\n        : this.$store.state.instance.background\n    },\n    background () { return this.userBackground || this.instanceBackground },\n    bgStyle () {\n      if (this.background) {\n        return {\n          '--body-background-image': `url(${this.background})`\n        }\n      }\n    },\n    shout () { return this.$store.state.shout.joined },\n    suggestionsEnabled () { return this.$store.state.instance.suggestionsEnabled },\n    showInstanceSpecificPanel () {\n      return this.$store.state.instance.showInstanceSpecificPanel &&\n        !this.$store.getters.mergedConfig.hideISP &&\n        this.$store.state.instance.instanceSpecificPanelContent\n    },\n    isChats () {\n      return this.$route.name === 'chat' || this.$route.name === 'chats'\n    },\n    isListEdit () {\n      return this.$route.name === 'lists-edit'\n    },\n    newPostButtonShown () {\n      if (this.isChats) return false\n      if (this.isListEdit) return false\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || this.layoutType === 'mobile'\n    },\n    showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },\n    editingAvailable () { return this.$store.state.instance.editingAvailable },\n    shoutboxPosition () {\n      return this.$store.getters.mergedConfig.alwaysShowNewPostButton || false\n    },\n    hideShoutbox () {\n      return this.$store.getters.mergedConfig.hideShoutbox\n    },\n    layoutType () { return this.$store.state.interface.layoutType },\n    privateMode () { return this.$store.state.instance.private },\n    reverseLayout () {\n      const { thirdColumnMode, sidebarRight: reverseSetting } = this.$store.getters.mergedConfig\n      if (this.layoutType !== 'wide') {\n        return reverseSetting\n      } else {\n        return thirdColumnMode === 'notifications' ? reverseSetting : !reverseSetting\n      }\n    },\n    noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n    showScrollbars () { return this.$store.getters.mergedConfig.showScrollbars },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    updateMobileState () {\n      this.$store.dispatch('setLayoutWidth', windowWidth())\n      this.$store.dispatch('setLayoutHeight', windowHeight())\n    }\n  }\n}\n","import { render } from \"./App.vue?vue&type=template&id=14ce6abd\"\nimport script from \"./App.js?vue&type=script&lang=js\"\nexport * from \"./App.js?vue&type=script&lang=js\"\n\nimport \"./App.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div :class=\"['Timeline', classes.root]\">\n    <div :class=\"classes.header\">\n      <TimelineMenu\n        v-if=\"!embedded\"\n        :timeline-name=\"timelineName\"\n      />\n      <div\n        v-if=\"showScrollTop && !embedded\"\n        class=\"rightside-button\"\n      >\n        <button\n          class=\"button-unstyled scroll-to-top-button\"\n          type=\"button\"\n          :title=\"$t('general.scroll_to_top')\"\n          @click=\"scrollToTop\"\n        >\n          <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n            <FAIcon icon=\"arrow-up\" />\n            <FAIcon\n              icon=\"minus\"\n              transform=\"up-7\"\n            />\n          </FALayers>\n        </button>\n      </div>\n      <template v-if=\"mobileLayout && !embedded\">\n        <div\n          v-if=\"showLoadButton\"\n          class=\"rightside-button\"\n        >\n          <button\n            class=\"button-unstyled loadmore-button\"\n            :title=\"loadButtonString\"\n            @click.prevent=\"showNewStatuses\"\n          >\n            <FAIcon\n              fixed-width\n              icon=\"circle-plus\"\n            />\n            <div class=\"alert-badge\">\n              {{ mobileLoadButtonString }}\n            </div>\n          </button>\n        </div>\n        <div\n          v-else-if=\"!embedded\"\n          class=\"loadmore-text faint veryfaint rightside-icon\"\n          :title=\"$t('timeline.up_to_date')\"\n          :aria-disabled=\"true\"\n          @click.prevent\n        >\n          <FAIcon\n            fixed-width\n            icon=\"check\"\n          />\n        </div>\n      </template>\n      <template v-else>\n        <button\n          v-if=\"showLoadButton\"\n          class=\"button-default loadmore-button\"\n          @click.prevent=\"showNewStatuses\"\n        >\n          {{ loadButtonString }}\n        </button>\n        <div\n          v-else-if=\"!embedded\"\n          class=\"loadmore-text faint\"\n          @click.prevent\n        >\n          {{ $t('timeline.up_to_date') }}\n        </div>\n      </template>\n      <QuickFilterSettings\n        v-if=\"!embedded\"\n        class=\"rightside-button\"\n      />\n      <QuickViewSettings\n        v-if=\"!embedded\"\n        class=\"rightside-button\"\n      />\n    </div>\n    <div :class=\"classes.body\">\n      <div\n        ref=\"timeline\"\n        class=\"timeline\"\n        role=\"feed\"\n      >\n        <conversation\n          v-for=\"statusId in filteredPinnedStatusIds\"\n          :key=\"statusId + '-pinned'\"\n          role=\"listitem\"\n          class=\"status-fadein\"\n          :status-id=\"statusId\"\n          :collapsable=\"true\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n        />\n        <conversation\n          v-for=\"status in filteredVisibleStatuses\"\n          :key=\"status.id\"\n          role=\"listitem\"\n          class=\"status-fadein\"\n          :status-id=\"status.id\"\n          :collapsable=\"true\"\n          :in-profile=\"inProfile\"\n          :profile-user-id=\"userId\"\n          :virtual-hidden=\"virtualScrollingEnabled && !statusesToDisplay.includes(status.id)\"\n        />\n      </div>\n    </div>\n    <div :class=\"classes.footer\">\n      <teleport\n        :to=\"footerSlipgate\"\n        :disabled=\"!embedded || !footerSlipgate\"\n      >\n        <div\n          v-if=\"count===0\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_statuses') }}\n        </div>\n        <div\n          v-else-if=\"bottomedOut\"\n          class=\"new-status-notification text-center faint\"\n        >\n          {{ $t('timeline.no_more_statuses') }}\n        </div>\n        <button\n          v-else-if=\"!timeline.loading\"\n          class=\"button-unstyled -link\"\n          @click.prevent=\"fetchOlderStatuses()\"\n        >\n          <div class=\"new-status-notification text-center\">\n            {{ $t('timeline.load_older') }}\n          </div>\n        </button>\n        <div\n          v-else\n          class=\"new-status-notification text-center\"\n        >\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"lg\"\n          />\n        </div>\n      </teleport>\n    </div>\n  </div>\n</template>\n\n<script src=\"./timeline.js\"></script>\n\n<style src=\"./timeline.scss\" lang=\"scss\"> </style>\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    :style=\"hiddenStyle\"\n    class=\"Conversation\"\n    :class=\"{ '-expanded' : isExpanded, 'panel' : isExpanded }\"\n  >\n    <div\n      v-if=\"isExpanded\"\n      class=\"panel-heading conversation-heading -sticky\"\n    >\n      <span class=\"title\"> {{ $t('timeline.conversation') }} </span>\n      <button\n        v-if=\"collapsable\"\n        class=\"button-unstyled -link\"\n        @click.prevent=\"toggleExpanded\"\n      >\n        {{ $t('timeline.collapse') }}\n      </button>\n      <QuickFilterSettings\n        v-if=\"!collapsable\"\n        :conversation=\"true\"\n        class=\"rightside-button\"\n      />\n      <QuickViewSettings\n        v-if=\"!collapsable\"\n        :conversation=\"true\"\n        class=\"rightside-button\"\n      />\n    </div>\n    <div class=\"conversation-body panel-body\">\n      <div\n        v-if=\"isTreeView\"\n        class=\"thread-body\"\n      >\n        <div\n          v-if=\"shouldShowAllConversationButton\"\n          class=\"conversation-dive-to-top-level-box\"\n        >\n          <i18n-t\n            keypath=\"status.show_all_conversation_with_icon\"\n            tag=\"button\"\n            class=\"button-unstyled -link\"\n            scope=\"global\"\n            @click.prevent=\"diveToTopLevel\"\n          >\n            <template #icon>\n              <FAIcon\n                icon=\"angle-double-left\"\n              />\n            </template>\n            <template #text>\n              <span>\n                {{ $tc('status.show_all_conversation', otherTopLevelCount, { numStatus: otherTopLevelCount }) }}\n              </span>\n            </template>\n          </i18n-t>\n        </div>\n        <div\n          v-if=\"shouldShowAncestors\"\n          class=\"thread-ancestors\"\n        >\n          <article\n            v-for=\"status in ancestorsOf(diveRoot)\"\n            :key=\"status.id\"\n            class=\"thread-ancestor\"\n            :class=\"{'thread-ancestor-has-other-replies': getReplies(status.id).length > 1, '-faded': shouldFadeAncestors}\"\n          >\n            <status\n              ref=\"statusComponent\"\n              :inline-expanded=\"collapsable && isExpanded\"\n              :statusoid=\"status\"\n              :expandable=\"!isExpanded\"\n              :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n              :focused=\"focused(status.id)\"\n              :in-conversation=\"isExpanded\"\n              :highlight=\"getHighlight()\"\n              :replies=\"getReplies(status.id)\"\n              :in-profile=\"inProfile\"\n              :profile-user-id=\"profileUserId\"\n              class=\"conversation-status status-fadein panel-body\"\n\n              :simple-tree=\"treeViewIsSimple\"\n              :toggle-thread-display=\"toggleThreadDisplay\"\n              :thread-display-status=\"threadDisplayStatus\"\n              :show-thread-recursively=\"showThreadRecursively\"\n              :total-reply-count=\"totalReplyCount\"\n              :total-reply-depth=\"totalReplyDepth\"\n              :show-other-replies-as-button=\"showOtherRepliesButtonInsideStatus\"\n              :dive=\"() => diveIntoStatus(status.id)\"\n\n              :controlled-showing-tall=\"statusContentProperties[status.id].showingTall\"\n              :controlled-expanding-subject=\"statusContentProperties[status.id].expandingSubject\"\n              :controlled-showing-long-subject=\"statusContentProperties[status.id].showingLongSubject\"\n              :controlled-replying=\"statusContentProperties[status.id].replying\"\n              :controlled-media-playing=\"statusContentProperties[status.id].mediaPlaying\"\n              :controlled-toggle-showing-tall=\"() => toggleStatusContentProperty(status.id, 'showingTall')\"\n              :controlled-toggle-expanding-subject=\"() => toggleStatusContentProperty(status.id, 'expandingSubject')\"\n              :controlled-toggle-showing-long-subject=\"() => toggleStatusContentProperty(status.id, 'showingLongSubject')\"\n              :controlled-toggle-replying=\"() => toggleStatusContentProperty(status.id, 'replying')\"\n              :controlled-set-media-playing=\"(newVal) => toggleStatusContentProperty(status.id, 'mediaPlaying', newVal)\"\n\n              @goto=\"setHighlight\"\n              @toggleExpanded=\"toggleExpanded\"\n            />\n            <div\n              v-if=\"showOtherRepliesButtonBelowStatus && getReplies(status.id).length > 1\"\n              class=\"thread-ancestor-dive-box\"\n            >\n              <div\n                class=\"thread-ancestor-dive-box-inner\"\n              >\n                <i18n-t\n                  tag=\"button\"\n                  scope=\"global\"\n                  keypath=\"status.ancestor_follow_with_icon\"\n                  class=\"button-unstyled -link thread-tree-show-replies-button\"\n                  @click.prevent=\"diveIntoStatus(status.id)\"\n                >\n                  <template #icon>\n                    <FAIcon\n                      icon=\"angle-double-right\"\n                    />\n                  </template>\n                  <template #text>\n                    <span>\n                      {{ $tc('status.ancestor_follow', getReplies(status.id).length - 1, { numReplies: getReplies(status.id).length - 1 }) }}\n                    </span>\n                  </template>\n                </i18n-t>\n              </div>\n            </div>\n          </article>\n        </div>\n        <thread-tree\n          v-for=\"status in showingTopLevel\"\n          :key=\"status.id\"\n          ref=\"statusComponent\"\n          :depth=\"0\"\n\n          :status=\"status\"\n          :in-profile=\"inProfile\"\n          :conversation=\"conversation\"\n          :collapsable=\"collapsable\"\n          :is-expanded=\"isExpanded\"\n          :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n          :profile-user-id=\"profileUserId\"\n\n          :focused=\"focused\"\n          :get-replies=\"getReplies\"\n          :highlight=\"maybeHighlight\"\n          :set-highlight=\"setHighlight\"\n          :toggle-expanded=\"toggleExpanded\"\n\n          :simple=\"treeViewIsSimple\"\n          :toggle-thread-display=\"toggleThreadDisplay\"\n          :thread-display-status=\"threadDisplayStatus\"\n          :show-thread-recursively=\"showThreadRecursively\"\n          :total-reply-count=\"totalReplyCount\"\n          :total-reply-depth=\"totalReplyDepth\"\n          :status-content-properties=\"statusContentProperties\"\n          :set-status-content-property=\"setStatusContentProperty\"\n          :toggle-status-content-property=\"toggleStatusContentProperty\"\n          :dive=\"canDive ? diveIntoStatus : undefined\"\n        />\n      </div>\n      <div\n        v-if=\"isLinearView\"\n        class=\"thread-body\"\n      >\n        <article>\n          <status\n            v-for=\"status in conversation\"\n            :key=\"status.id\"\n            ref=\"statusComponent\"\n            :inline-expanded=\"collapsable && isExpanded\"\n            :statusoid=\"status\"\n            :expandable=\"!isExpanded\"\n            :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n            :focused=\"focused(status.id)\"\n            :in-conversation=\"isExpanded\"\n            :highlight=\"getHighlight()\"\n            :replies=\"getReplies(status.id)\"\n            :in-profile=\"inProfile\"\n            :profile-user-id=\"profileUserId\"\n            class=\"conversation-status status-fadein panel-body\"\n\n            :toggle-thread-display=\"toggleThreadDisplay\"\n            :thread-display-status=\"threadDisplayStatus\"\n            :show-thread-recursively=\"showThreadRecursively\"\n            :total-reply-count=\"totalReplyCount\"\n            :total-reply-depth=\"totalReplyDepth\"\n            :status-content-properties=\"statusContentProperties\"\n            :set-status-content-property=\"setStatusContentProperty\"\n            :toggle-status-content-property=\"toggleStatusContentProperty\"\n\n            @goto=\"setHighlight\"\n            @toggleExpanded=\"toggleExpanded\"\n          />\n        </article>\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    :style=\"hiddenStyle\"\n  />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Conversation {\n  z-index: 1;\n\n  .conversation-dive-to-top-level-box {\n    padding: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    display: flex;\n    align-items: stretch;\n    flex-direction: column;\n  }\n\n  .thread-ancestors {\n    margin-left: var(--status-margin, $status-margin);\n    border-left: 2px solid var(--border, $fallback--border);\n  }\n\n  .thread-ancestor.-faded .StatusContent {\n    --link: var(--faintLink);\n    --text: var(--faint);\n    color: var(--text);\n  }\n\n  .thread-ancestor-dive-box {\n    padding-left: var(--status-margin, $status-margin);\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n    /* Make the button stretch along the whole row */\n    &, &-inner {\n      display: flex;\n      align-items: stretch;\n      flex-direction: column;\n    }\n  }\n  .thread-ancestor-dive-box-inner {\n    padding: var(--status-margin, $status-margin);\n  }\n\n  .conversation-status {\n    border-bottom-width: 1px;\n    border-bottom-style: solid;\n    border-bottom-color: var(--border, $fallback--border);\n    border-radius: 0;\n  }\n\n  .thread-ancestor-has-other-replies .conversation-status,\n  .thread-ancestor:last-child .conversation-status,\n  .thread-ancestor:last-child .thread-ancestor-dive-box,\n  &:last-child .conversation-status,\n  &.-expanded .thread-tree .conversation-status {\n    border-bottom: none;\n  }\n\n  .thread-ancestors + .thread-tree > .conversation-status {\n    border-top-width: 1px;\n    border-top-style: solid;\n    border-top-color: var(--border, $fallback--border);\n  }\n\n  /* expanded conversation in timeline */\n  &.status-fadein.-expanded .thread-body {\n    border-left-width: 4px;\n    border-left-style: solid;\n    border-left-color: $fallback--cRed;\n    border-left-color: var(--cRed, $fallback--cRed);\n    border-radius: 0 0 $fallback--panelRadius $fallback--panelRadius;\n    border-radius: 0 0 var(--panelRadius, $fallback--panelRadius) var(--panelRadius, $fallback--panelRadius);\n    border-bottom: 1px solid var(--border, $fallback--border);\n  }\n\n  &.-expanded.status-fadein {\n    margin: calc(var(--status-margin, $status-margin) / 2);\n  }\n}\n</style>\n","<template>\n  <article class=\"thread-tree\">\n    <status\n      :key=\"status.id\"\n      ref=\"statusComponent\"\n      :inline-expanded=\"collapsable && isExpanded\"\n      :statusoid=\"status\"\n      :expandable=\"!isExpanded\"\n      :show-pinned=\"pinnedStatusIdsObject && pinnedStatusIdsObject[status.id]\"\n      :focused=\"focused(status.id)\"\n      :in-conversation=\"isExpanded\"\n      :highlight=\"highlight\"\n      :replies=\"getReplies(status.id)\"\n      :in-profile=\"inProfile\"\n      :profile-user-id=\"profileUserId\"\n      class=\"conversation-status conversation-status-treeview status-fadein panel-body\"\n\n      :simple-tree=\"simple\"\n      :controlled-thread-display-status=\"threadDisplayStatus[status.id]\"\n      :controlled-toggle-thread-display=\"() => toggleThreadDisplay(status.id)\"\n\n      :controlled-showing-tall=\"currentProp.showingTall\"\n      :controlled-expanding-subject=\"currentProp.expandingSubject\"\n      :controlled-showing-long-subject=\"currentProp.showingLongSubject\"\n      :controlled-replying=\"currentProp.replying\"\n      :controlled-media-playing=\"currentProp.mediaPlaying\"\n      :controlled-toggle-showing-tall=\"() => toggleCurrentProp('showingTall')\"\n      :controlled-toggle-expanding-subject=\"() => toggleCurrentProp('expandingSubject')\"\n      :controlled-toggle-showing-long-subject=\"() => toggleCurrentProp('showingLongSubject')\"\n      :controlled-toggle-replying=\"() => toggleCurrentProp('replying')\"\n      :controlled-set-media-playing=\"(newVal) => setCurrentProp('mediaPlaying', newVal)\"\n      :dive=\"dive ? () => dive(status.id) : undefined\"\n\n      @goto=\"setHighlight\"\n      @toggleExpanded=\"toggleExpanded\"\n    />\n    <div\n      v-if=\"currentReplies.length && threadShowing\"\n      class=\"thread-tree-replies\"\n    >\n      <thread-tree\n        v-for=\"replyStatus in currentReplies\"\n        :key=\"replyStatus.id\"\n        ref=\"childComponent\"\n        :depth=\"depth + 1\"\n        :status=\"replyStatus\"\n\n        :in-profile=\"inProfile\"\n        :conversation=\"conversation\"\n        :collapsable=\"collapsable\"\n        :is-expanded=\"isExpanded\"\n        :pinned-status-ids-object=\"pinnedStatusIdsObject\"\n        :profile-user-id=\"profileUserId\"\n\n        :focused=\"focused\"\n        :get-replies=\"getReplies\"\n        :highlight=\"highlight\"\n        :set-highlight=\"setHighlight\"\n        :toggle-expanded=\"toggleExpanded\"\n\n        :simple=\"simple\"\n        :toggle-thread-display=\"toggleThreadDisplay\"\n        :thread-display-status=\"threadDisplayStatus\"\n        :show-thread-recursively=\"showThreadRecursively\"\n        :total-reply-count=\"totalReplyCount\"\n        :total-reply-depth=\"totalReplyDepth\"\n        :status-content-properties=\"statusContentProperties\"\n        :set-status-content-property=\"setStatusContentProperty\"\n        :toggle-status-content-property=\"toggleStatusContentProperty\"\n        :dive=\"dive\"\n      />\n    </div>\n    <div\n      v-if=\"currentReplies.length && !threadShowing\"\n      class=\"thread-tree-replies thread-tree-replies-hidden\"\n    >\n      <i18n-t\n        v-if=\"simple\"\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_follow_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"dive(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-right\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_follow', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n      <i18n-t\n        v-else\n        scope=\"global\"\n        tag=\"button\"\n        keypath=\"status.thread_show_full_with_icon\"\n        class=\"button-unstyled -link thread-tree-show-replies-button\"\n        @click.prevent=\"showThreadRecursively(status.id)\"\n      >\n        <template #icon>\n          <FAIcon\n            icon=\"angle-double-down\"\n          />\n        </template>\n        <template #text>\n          <span>\n            {{ $tc('status.thread_show_full', totalReplyCount[status.id], { numStatus: totalReplyCount[status.id], depth: totalReplyDepth[status.id] }) }}\n          </span>\n        </template>\n      </i18n-t>\n    </div>\n  </article>\n</template>\n\n<script src=\"./thread_tree.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.thread-tree-replies {\n  margin-left: var(--status-margin, $status-margin);\n  border-left: 2px solid var(--border, $fallback--border);\n}\n\n.thread-tree-replies-hidden {\n  padding: var(--status-margin, $status-margin);\n  /* Make the button stretch along the whole row */\n  display: flex;\n  align-items: stretch;\n  flex-direction: column;\n}\n</style>\n","import Status from '../status/status.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleRight\n)\n\nconst ThreadTree = {\n  components: {\n    Status\n  },\n  name: 'ThreadTree',\n  props: {\n    depth: Number,\n    status: Object,\n    inProfile: Boolean,\n    conversation: Array,\n    collapsable: Boolean,\n    isExpanded: Boolean,\n    pinnedStatusIdsObject: Object,\n    profileUserId: String,\n\n    focused: Function,\n    highlight: String,\n    getReplies: Function,\n    setHighlight: Function,\n    toggleExpanded: Function,\n\n    simple: Boolean,\n    // to control display of the whole thread forest\n    toggleThreadDisplay: Function,\n    threadDisplayStatus: Object,\n    showThreadRecursively: Function,\n    totalReplyCount: Object,\n    totalReplyDepth: Object,\n    statusContentProperties: Object,\n    setStatusContentProperty: Function,\n    toggleStatusContentProperty: Function,\n    dive: Function\n  },\n  computed: {\n    suspendable () {\n      const selfSuspendable = this.$refs.statusComponent ? this.$refs.statusComponent.suspendable : true\n      if (this.$refs.childComponent) {\n        return selfSuspendable && this.$refs.childComponent.every(s => s.suspendable)\n      }\n      return selfSuspendable\n    },\n    reverseLookupTable () {\n      return this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n    },\n    currentReplies () {\n      return this.getReplies(this.status.id).map(({ id }) => this.statusById(id))\n    },\n    threadShowing () {\n      return this.threadDisplayStatus[this.status.id] === 'showing'\n    },\n    currentProp () {\n      return this.statusContentProperties[this.status.id]\n    }\n  },\n  methods: {\n    statusById (id) {\n      return this.conversation[this.reverseLookupTable[id]]\n    },\n    collapseThread () {\n    },\n    showThread () {\n    },\n    showAllSubthreads () {\n    },\n    toggleCurrentProp (name) {\n      this.toggleStatusContentProperty(this.status.id, name)\n    },\n    setCurrentProp (name, newVal) {\n      this.setStatusContentProperty(this.status.id, name)\n    }\n  }\n}\n\nexport default ThreadTree\n","import { render } from \"./thread_tree.vue?vue&type=template&id=2c44ba3c\"\nimport script from \"./thread_tree.js?vue&type=script&lang=js\"\nexport * from \"./thread_tree.js?vue&type=script&lang=js\"\n\nimport \"./thread_tree.vue?vue&type=style&index=0&id=2c44ba3c&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"QuickFilterSettings\"\n    :bound-to=\"{ x: 'container' }\"\n    :trigger-attrs=\"{ title: $t('timeline.quick_filter_settings') }\"\n  >\n    <template #content>\n      <div class=\"dropdown-menu\">\n        <div v-if=\"loggedIn\">\n          <button\n            v-if=\"!conversation\"\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityAll = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n            />{{ $t('settings.reply_visibility_all') }}\n          </button>\n          <button\n            v-if=\"!conversation\"\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilityFollowing = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n            />{{ $t('settings.reply_visibility_following_short') }}\n          </button>\n          <button\n            v-if=\"!conversation\"\n            class=\"button-default dropdown-item\"\n            @click=\"replyVisibilitySelf = true\"\n          >\n            <span\n              class=\"menu-checkbox -radio\"\n              :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n            />{{ $t('settings.reply_visibility_self_short') }}\n          </button>\n          <div\n            v-if=\"!conversation\"\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n        </div>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"muteBotStatuses = !muteBotStatuses\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n          />{{ $t('settings.mute_bot_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMedia = !hideMedia\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n          />{{ $t('settings.hide_media_previews') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"hideMutedPosts = !hideMutedPosts\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n          />{{ $t('settings.hide_all_muted_posts') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('filtering')\"\n        >\n          <FAIcon icon=\"font\" />{{ $t('settings.word_filter_and_more') }}\n        </button>\n      </div>\n    </template>\n    <template #trigger>\n      <FAIcon icon=\"filter\" />\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./quick_filter_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter, faFont, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter,\n  faFont,\n  faWrench\n)\n\nconst QuickFilterSettings = {\n  props: {\n    conversation: Boolean\n  },\n  components: {\n    Popover\n  },\n  methods: {\n    setReplyVisibility (visibility) {\n      this.$store.dispatch('setOption', { name: 'replyVisibility', value: visibility })\n      this.$store.dispatch('queueFlushAll')\n    },\n    openTab (tab) {\n      this.$store.dispatch('openSettingsModalTab', tab)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    replyVisibilitySelf: {\n      get () { return this.mergedConfig.replyVisibility === 'self' },\n      set () { this.setReplyVisibility('self') }\n    },\n    replyVisibilityFollowing: {\n      get () { return this.mergedConfig.replyVisibility === 'following' },\n      set () { this.setReplyVisibility('following') }\n    },\n    replyVisibilityAll: {\n      get () { return this.mergedConfig.replyVisibility === 'all' },\n      set () { this.setReplyVisibility('all') }\n    },\n    hideMedia: {\n      get () { return this.mergedConfig.hideAttachments || this.mergedConfig.hideAttachmentsInConv },\n      set () {\n        const value = !this.hideMedia\n        this.$store.dispatch('setOption', { name: 'hideAttachments', value })\n        this.$store.dispatch('setOption', { name: 'hideAttachmentsInConv', value })\n      }\n    },\n    hideMutedPosts: {\n      get () { return this.mergedConfig.hideFilteredStatuses },\n      set () {\n        const value = !this.hideMutedPosts\n        this.$store.dispatch('setOption', { name: 'hideFilteredStatuses', value })\n      }\n    },\n    muteBotStatuses: {\n      get () { return this.mergedConfig.muteBotStatuses },\n      set () {\n        const value = !this.muteBotStatuses\n        this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n      }\n    }\n  }\n}\n\nexport default QuickFilterSettings\n","import { render } from \"./quick_filter_settings.vue?vue&type=template&id=7e6562e8\"\nimport script from \"./quick_filter_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_filter_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"QuickViewSettings\"\n    :bound-to=\"{ x: 'container' }\"\n    :trigger-attrs=\"{ title: $t('timeline.quick_view_settings') }\"\n  >\n    <template #content>\n      <div class=\"dropdown-menu\">\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"conversationDisplay = 'tree'\"\n        >\n          <span\n            class=\"menu-checkbox -radio\"\n            :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'tree' }\"\n          /><FAIcon icon=\"folder-tree\" /> {{ $t('settings.conversation_display_tree_quick') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"conversationDisplay = 'linear'\"\n        >\n          <span\n            class=\"menu-checkbox -radio\"\n            :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'linear' }\"\n          /><FAIcon icon=\"list\" /> {{ $t('settings.conversation_display_linear_quick') }}\n        </button>\n        <div\n          role=\"separator\"\n          class=\"dropdown-divider\"\n        />\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"showUserAvatars = !showUserAvatars\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': showUserAvatars }\"\n          />{{ $t('settings.mention_link_show_avatar_quick') }}\n        </button>\n        <button\n          v-if=\"!conversation\"\n          class=\"button-default dropdown-item\"\n          @click=\"autoUpdate = !autoUpdate\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': autoUpdate }\"\n          />{{ $t('settings.auto_update') }}\n        </button>\n        <button\n          v-if=\"!conversation\"\n          class=\"button-default dropdown-item\"\n          @click=\"collapseWithSubjects = !collapseWithSubjects\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': collapseWithSubjects }\"\n          />{{ $t('settings.collapse_subject') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click=\"openTab('general')\"\n        >\n          <FAIcon icon=\"wrench\" />{{ $t('settings.more_settings') }}\n        </button>\n      </div>\n    </template>\n    <template #trigger>\n      <FAIcon icon=\"bars\" />\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./quick_view_settings.js\"></script>\n","import Popover from '../popover/popover.vue'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faList, faFolderTree, faBars, faWrench } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faList,\n  faFolderTree,\n  faBars,\n  faWrench\n)\n\nconst QuickViewSettings = {\n  props: {\n    conversation: Boolean\n  },\n  components: {\n    Popover\n  },\n  methods: {\n    setConversationDisplay (visibility) {\n      this.$store.dispatch('setOption', { name: 'conversationDisplay', value: visibility })\n    },\n    openTab (tab) {\n      this.$store.dispatch('openSettingsModalTab', tab)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    conversationDisplay: {\n      get () { return this.mergedConfig.conversationDisplay },\n      set (newVal) { this.setConversationDisplay(newVal) }\n    },\n    autoUpdate: {\n      get () { return this.mergedConfig.streaming },\n      set () {\n        const value = !this.autoUpdate\n        this.$store.dispatch('setOption', { name: 'streaming', value })\n      }\n    },\n    collapseWithSubjects: {\n      get () { return this.mergedConfig.collapseMessageWithSubject },\n      set () {\n        const value = !this.collapseWithSubjects\n        this.$store.dispatch('setOption', { name: 'collapseMessageWithSubject', value })\n      }\n    },\n    showUserAvatars: {\n      get () { return this.mergedConfig.mentionLinkShowAvatar },\n      set () {\n        const value = !this.showUserAvatars\n        console.log(value)\n        this.$store.dispatch('setOption', { name: 'mentionLinkShowAvatar', value })\n      }\n    },\n    muteBotStatuses: {\n      get () { return this.mergedConfig.muteBotStatuses },\n      set () {\n        const value = !this.muteBotStatuses\n        this.$store.dispatch('setOption', { name: 'muteBotStatuses', value })\n      }\n    }\n  }\n}\n\nexport default QuickViewSettings\n","import { render } from \"./quick_view_settings.vue?vue&type=template&id=4b9187b6\"\nimport script from \"./quick_view_settings.js?vue&type=script&lang=js\"\nexport * from \"./quick_view_settings.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { reduce, filter, findIndex, clone, get } from 'lodash'\nimport Status from '../status/status.vue'\nimport ThreadTree from '../thread_tree/thread_tree.vue'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAngleDoubleDown,\n  faAngleDoubleLeft,\n  faChevronLeft\n)\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      threadDisplayStatusObject: {}, // id => 'showing' | 'hidden'\n      statusContentPropertiesObject: {},\n      inlineDivePosition: null\n    }\n  },\n  props: [\n    'statusId',\n    'collapsable',\n    'isPage',\n    'pinnedStatusIdsObject',\n    'inProfile',\n    'profileUserId',\n    'virtualHidden'\n  ],\n  created () {\n    if (this.isPage) {\n      this.fetchConversation()\n    }\n  },\n  computed: {\n    maxDepthToShowByDefault () {\n      // maxDepthInThread = max number of depths that is *visible*\n      // since our depth starts with 0 and \"showing\" means \"showing children\"\n      // there is a -2 here\n      const maxDepth = this.$store.getters.mergedConfig.maxDepthInThread - 2\n      return maxDepth >= 1 ? maxDepth : 1\n    },\n    streamingEnabled () {\n      return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n    },\n    displayStyle () {\n      return this.$store.getters.mergedConfig.conversationDisplay\n    },\n    isTreeView () {\n      return !this.isLinearView\n    },\n    treeViewIsSimple () {\n      return !this.$store.getters.mergedConfig.conversationTreeAdvanced\n    },\n    isLinearView () {\n      return this.displayStyle === 'linear'\n    },\n    shouldFadeAncestors () {\n      return this.$store.getters.mergedConfig.conversationTreeFadeAncestors\n    },\n    otherRepliesButtonPosition () {\n      return this.$store.getters.mergedConfig.conversationOtherRepliesButton\n    },\n    showOtherRepliesButtonBelowStatus () {\n      return this.otherRepliesButtonPosition === 'below'\n    },\n    showOtherRepliesButtonInsideStatus () {\n      return this.otherRepliesButtonPosition === 'inside'\n    },\n    suspendable () {\n      if (this.isTreeView) {\n        return Object.entries(this.statusContentProperties)\n          .every(([k, prop]) => !prop.replying && prop.mediaPlaying.length === 0)\n      }\n      if (this.$refs.statusComponent && this.$refs.statusComponent[0]) {\n        return this.$refs.statusComponent.every(s => s.suspendable)\n      } else {\n        return true\n      }\n    },\n    hideStatus () {\n      return this.virtualHidden && this.suspendable\n    },\n    status () {\n      return this.$store.state.statuses.allStatusesObject[this.statusId]\n    },\n    originalStatusId () {\n      if (this.status.retweeted_status) {\n        return this.status.retweeted_status.id\n      } else {\n        return this.statusId\n      }\n    },\n    conversationId () {\n      return this.getConversationId(this.statusId)\n    },\n    conversation () {\n      if (!this.status) {\n        return []\n      }\n\n      if (!this.isExpanded) {\n        return [this.status]\n      }\n\n      const conversation = clone(this.$store.state.statuses.conversationsObject[this.conversationId])\n      const statusIndex = findIndex(conversation, { id: this.originalStatusId })\n      if (statusIndex !== -1) {\n        conversation[statusIndex] = this.status\n      }\n\n      return sortAndFilterConversation(conversation, this.status)\n    },\n    statusMap () {\n      return this.conversation.reduce((res, s) => {\n        res[s.id] = s\n        return res\n      }, {})\n    },\n    threadTree () {\n      const reverseLookupTable = this.conversation.reduce((table, status, index) => {\n        table[status.id] = index\n        return table\n      }, {})\n\n      const threads = this.conversation.reduce((a, cur) => {\n        const id = cur.id\n        a.forest[id] = this.getReplies(id)\n          .map(s => s.id)\n\n        return a\n      }, {\n        forest: {}\n      })\n\n      const walk = (forest, topLevel, depth = 0, processed = {}) => topLevel.map(id => {\n        if (processed[id]) {\n          return []\n        }\n\n        processed[id] = true\n        return [{\n          status: this.conversation[reverseLookupTable[id]],\n          id,\n          depth\n        }, walk(forest, forest[id], depth + 1, processed)].reduce((a, b) => a.concat(b), [])\n      }).reduce((a, b) => a.concat(b), [])\n\n      const linearized = walk(threads.forest, this.topLevel.map(k => k.id))\n\n      return linearized\n    },\n    replyIds () {\n      return this.conversation.map(k => k.id)\n        .reduce((res, id) => {\n          res[id] = (this.replies[id] || []).map(k => k.id)\n          return res\n        }, {})\n    },\n    totalReplyCount () {\n      const sizes = {}\n      const subTreeSizeFor = (id) => {\n        if (sizes[id]) {\n          return sizes[id]\n        }\n        sizes[id] = 1 + this.replyIds[id].map(cid => subTreeSizeFor(cid)).reduce((a, b) => a + b, 0)\n        return sizes[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeSizeFor)\n      return Object.keys(sizes).reduce((res, id) => {\n        res[id] = sizes[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    totalReplyDepth () {\n      const depths = {}\n      const subTreeDepthFor = (id) => {\n        if (depths[id]) {\n          return depths[id]\n        }\n        depths[id] = 1 + this.replyIds[id].map(cid => subTreeDepthFor(cid)).reduce((a, b) => a > b ? a : b, 0)\n        return depths[id]\n      }\n      this.conversation.map(k => k.id).map(subTreeDepthFor)\n      return Object.keys(depths).reduce((res, id) => {\n        res[id] = depths[id] - 1 // exclude itself\n        return res\n      }, {})\n    },\n    depths () {\n      return this.threadTree.reduce((a, k) => {\n        a[k.id] = k.depth\n        return a\n      }, {})\n    },\n    topLevel () {\n      const topLevel = this.conversation.reduce((tl, cur) =>\n        tl.filter(k => this.getReplies(cur.id).map(v => v.id).indexOf(k.id) === -1), this.conversation)\n      return topLevel\n    },\n    otherTopLevelCount () {\n      return this.topLevel.length - 1\n    },\n    showingTopLevel () {\n      if (this.canDive && this.diveRoot) {\n        return [this.statusMap[this.diveRoot]]\n      }\n      return this.topLevel\n    },\n    diveRoot () {\n      const statusId = this.inlineDivePosition || this.statusId\n      const isTopLevel = !this.parentOf(statusId)\n      return isTopLevel ? null : statusId\n    },\n    diveDepth () {\n      return this.canDive && this.diveRoot ? this.depths[this.diveRoot] : 0\n    },\n    diveMode () {\n      return this.canDive && !!this.diveRoot\n    },\n    shouldShowAllConversationButton () {\n      // The \"show all conversation\" button tells the user that there exist\n      // other toplevel statuses, so do not show it if there is only a single root\n      return this.isTreeView && this.isExpanded && this.diveMode && this.topLevel.length > 1\n    },\n    shouldShowAncestors () {\n      return this.isTreeView && this.isExpanded && this.ancestorsOf(this.diveRoot).length\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\n          })\n        }\n        i++\n        return result\n      }, {})\n    },\n    isExpanded () {\n      return !!(this.expanded || this.isPage)\n    },\n    hiddenStyle () {\n      const height = (this.status && this.status.virtualHeight) || '120px'\n      return this.virtualHidden ? { height } : {}\n    },\n    threadDisplayStatus () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const depth = this.depths[id]\n        const status = (() => {\n          if (this.threadDisplayStatusObject[id]) {\n            return this.threadDisplayStatusObject[id]\n          }\n          if ((depth - this.diveDepth) <= this.maxDepthToShowByDefault) {\n            return 'showing'\n          } else {\n            return 'hidden'\n          }\n        })()\n\n        a[id] = status\n        return a\n      }, {})\n    },\n    statusContentProperties () {\n      return this.conversation.reduce((a, k) => {\n        const id = k.id\n        const props = (() => {\n          const def = {\n            showingTall: false,\n            expandingSubject: false,\n            showingLongSubject: false,\n            isReplying: false,\n            mediaPlaying: []\n          }\n\n          if (this.statusContentPropertiesObject[id]) {\n            return {\n              ...def,\n              ...this.statusContentPropertiesObject[id]\n            }\n          }\n          return def\n        })()\n\n        a[id] = props\n        return a\n      }, {})\n    },\n    canDive () {\n      return this.isTreeView && this.isExpanded\n    },\n    focused () {\n      return (id) => {\n        return (this.isExpanded) && id === this.highlight\n      }\n    },\n    maybeHighlight () {\n      return this.isExpanded ? this.highlight : null\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      mastoUserSocketStatus: state => state.api.mastoUserSocketStatus\n    })\n  },\n  components: {\n    Status,\n    ThreadTree,\n    QuickFilterSettings,\n    QuickViewSettings\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      } else {\n        this.resetDisplayState()\n      }\n    },\n    virtualHidden (value) {\n      this.$store.dispatch(\n        'setVirtualHeight',\n        { statusId: this.statusId, height: `${this.$el.clientHeight}px` }\n      )\n    }\n  },\n  methods: {\n    fetchConversation () {\n      if (this.status) {\n        this.$store.state.api.backendInteractor.fetchConversation({ id: this.statusId })\n          .then(({ ancestors, descendants }) => {\n            this.$store.dispatch('addNewStatuses', { statuses: ancestors })\n            this.$store.dispatch('addNewStatuses', { statuses: descendants })\n            this.setHighlight(this.originalStatusId)\n          })\n      } else {\n        this.$store.state.api.backendInteractor.fetchStatus({ id: this.statusId })\n          .then((status) => {\n            this.$store.dispatch('addNewStatuses', { statuses: [status] })\n            this.fetchConversation()\n          })\n      }\n    },\n    getReplies (id) {\n      return this.replies[id] || []\n    },\n    getHighlight () {\n      return this.isExpanded ? this.highlight : null\n    },\n    setHighlight (id) {\n      if (!id) return\n      this.highlight = id\n\n      if (!this.streamingEnabled) {\n        this.$store.dispatch('fetchStatus', id)\n      }\n\n      this.$store.dispatch('fetchFavsAndRepeats', id)\n      this.$store.dispatch('fetchEmojiReactionsBy', id)\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    setThreadDisplay (id, nextStatus) {\n      this.threadDisplayStatusObject = {\n        ...this.threadDisplayStatusObject,\n        [id]: nextStatus\n      }\n    },\n    toggleThreadDisplay (id) {\n      const curStatus = this.threadDisplayStatus[id]\n      const nextStatus = curStatus === 'showing' ? 'hidden' : 'showing'\n      this.setThreadDisplay(id, nextStatus)\n    },\n    setThreadDisplayRecursively (id, nextStatus) {\n      this.setThreadDisplay(id, nextStatus)\n      this.getReplies(id).map(k => k.id).map(id => this.setThreadDisplayRecursively(id, nextStatus))\n    },\n    showThreadRecursively (id) {\n      this.setThreadDisplayRecursively(id, 'showing')\n    },\n    setStatusContentProperty (id, name, value) {\n      this.statusContentPropertiesObject = {\n        ...this.statusContentPropertiesObject,\n        [id]: {\n          ...this.statusContentPropertiesObject[id],\n          [name]: value\n        }\n      }\n    },\n    toggleStatusContentProperty (id, name) {\n      this.setStatusContentProperty(id, name, !this.statusContentProperties[id][name])\n    },\n    leastVisibleAncestor (id) {\n      let cur = id\n      let parent = this.parentOf(cur)\n      while (cur) {\n        // if the parent is showing it means cur is visible\n        if (this.threadDisplayStatus[parent] === 'showing') {\n          return cur\n        }\n        parent = this.parentOf(parent)\n        cur = this.parentOf(cur)\n      }\n      // nothing found, fall back to toplevel\n      return this.topLevel[0] ? this.topLevel[0].id : undefined\n    },\n    diveIntoStatus (id, preventScroll) {\n      this.tryScrollTo(id)\n    },\n    diveToTopLevel () {\n      this.tryScrollTo(this.topLevelAncestorOrSelfId(this.diveRoot) || this.topLevel[0].id)\n    },\n    // only used when we are not on a page\n    undive () {\n      this.inlineDivePosition = null\n      this.setHighlight(this.statusId)\n    },\n    tryScrollTo (id) {\n      if (!id) {\n        return\n      }\n      if (this.isPage) {\n        // set statusId\n        this.$router.push({ name: 'conversation', params: { id } })\n      } else {\n        this.inlineDivePosition = id\n      }\n      // Because the conversation can be unmounted when out of sight\n      // and mounted again when it comes into sight,\n      // the `mounted` or `created` function in `status` should not\n      // contain scrolling calls, as we do not want the page to jump\n      // when we scroll with an expanded conversation.\n      //\n      // Now the method is to rely solely on the `highlight` watcher\n      // in `status` components.\n      // In linear views, all statuses are rendered at all times, but\n      // in tree views, it is possible that a change in active status\n      // removes and adds status components (e.g. an originally child\n      // status becomes an ancestor status, and thus they will be\n      // different).\n      // Here, let the components be rendered first, in order to trigger\n      // the `highlight` watcher.\n      this.$nextTick(() => {\n        this.setHighlight(id)\n      })\n    },\n    goToCurrent () {\n      this.tryScrollTo(this.diveRoot || this.topLevel[0].id)\n    },\n    statusById (id) {\n      return this.statusMap[id]\n    },\n    parentOf (id) {\n      const status = this.statusById(id)\n      if (!status) {\n        return undefined\n      }\n      const { in_reply_to_status_id: parentId } = status\n      if (!this.statusMap[parentId]) {\n        return undefined\n      }\n      return parentId\n    },\n    parentOrSelf (id) {\n      return this.parentOf(id) || id\n    },\n    // Ancestors of some status, from top to bottom\n    ancestorsOf (id) {\n      const ancestors = []\n      let cur = this.parentOf(id)\n      while (cur) {\n        ancestors.unshift(this.statusMap[cur])\n        cur = this.parentOf(cur)\n      }\n      return ancestors\n    },\n    topLevelAncestorOrSelfId (id) {\n      let cur = id\n      let parent = this.parentOf(id)\n      while (parent) {\n        cur = this.parentOf(cur)\n        parent = this.parentOf(parent)\n      }\n      return cur\n    },\n    resetDisplayState () {\n      this.undive()\n      this.threadDisplayStatusObject = {}\n    }\n  }\n}\n\nexport default conversation\n","import { render } from \"./conversation.vue?vue&type=template&id=e1fd877e\"\nimport script from \"./conversation.js?vue&type=script&lang=js\"\nexport * from \"./conversation.js?vue&type=script&lang=js\"\n\nimport \"./conversation.vue?vue&type=style&index=0&id=e1fd877e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"TimelineMenu\"\n    :class=\"{ 'open': isOpen }\"\n    :bound-to=\"{ x: 'container' }\"\n    bound-to-selector=\".Timeline\"\n    popover-class=\"timeline-menu-popover popover-default\"\n    @show=\"openMenu\"\n    @close=\"() => isOpen = false\"\n  >\n    <template #content>\n      <ListsMenuContent\n        v-if=\"useListsMenu\"\n        :show-pin=\"false\"\n        class=\"timelines\"\n      />\n      <ul v-else>\n        <NavigationEntry\n          v-for=\"item in timelinesList\"\n          :key=\"item.name\"\n          :show-pin=\"false\"\n          :item=\"item\"\n        />\n      </ul>\n    </template>\n    <template #trigger>\n      <span class=\"button-unstyled title timeline-menu-title\">\n        <span class=\"timeline-title\">{{ timelineName() }}</span>\n        <span>\n          <FAIcon\n            size=\"sm\"\n            icon=\"chevron-down\"\n          />\n        </span>\n        <span\n          class=\"click-blocker\"\n          @click=\"blockOpen\"\n        />\n      </span>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./timeline_menu.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.TimelineMenu {\n  margin-right: auto;\n  min-width: 0;\n\n  .popover-trigger-button {\n    vertical-align: bottom;\n  }\n\n  .panel::after {\n    border-top-right-radius: 0;\n    border-top-left-radius: 0;\n  }\n\n  .timeline-menu-title {\n    margin: 0;\n    cursor: pointer;\n    user-select: none;\n    width: 100%;\n    display: flex;\n\n    .timeline-menu-name {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n\n    svg {\n      margin-left: 0.6em;\n      transition: transform 100ms;\n    }\n\n    .click-blocker {\n      cursor: default;\n      flex-grow: 1;\n    }\n  }\n\n  &.open .timeline-menu-title svg {\n    color: $fallback--text;\n    color: var(--panelText, $fallback--text);\n    transform: rotate(180deg);\n  }\n\n  .panel {\n    box-shadow: var(--popoverShadow);\n  }\n\n}\n\n.timeline-menu-popover {\n  min-width: 24rem;\n  max-width: 100vw;\n  margin-top: 0.6rem;\n  font-size: 1rem;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n\n  ul {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n\n  li {\n    border-bottom: 1px solid;\n    border-color: $fallback--border;\n    border-color: var(--border, $fallback--border);\n    padding: 0;\n\n    &:last-child a {\n      border-bottom-right-radius: $fallback--panelRadius;\n      border-bottom-right-radius: var(--panelRadius, $fallback--panelRadius);\n      border-bottom-left-radius: $fallback--panelRadius;\n      border-bottom-left-radius: var(--panelRadius, $fallback--panelRadius);\n    }\n\n    &:last-child {\n      border: none;\n    }\n  }\n\n  a {\n    display: block;\n    padding: 0 0.65em;\n    height: 3.5em;\n    line-height: 3.5em;\n\n    &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuText, $fallback--link);\n      --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n    }\n\n    &.router-link-active {\n      font-weight: bolder;\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenu, $fallback--lightBg);\n      color: $fallback--text;\n      color: var(--selectedMenuText, $fallback--text); --faint: var(--selectedMenuFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuLightText, $fallback--lightText);\n      --icon: var(--selectedMenuIcon, $fallback--icon);\n\n      &:hover {\n        text-decoration: underline;\n      }\n    }\n\n    svg {\n      margin-right: 0.4em;\n      margin-left: -0.2em;\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport NavigationEntry from 'src/components/navigation/navigation_entry.vue'\nimport { mapState } from 'vuex'\nimport { ListsMenuContent } from '../lists_menu/lists_menu_content.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { TIMELINES } from 'src/components/navigation/navigation.js'\nimport { filterNavigation } from 'src/components/navigation/filter.js'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(faChevronDown)\n\n// Route -> i18n key mapping, exported and not in the computed\n// because nav panel benefits from the same information.\nexport const timelineNames = () => {\n  return {\n    friends: 'nav.home_timeline',\n    bookmarks: 'nav.bookmarks',\n    dms: 'nav.dms',\n    'public-timeline': 'nav.public_tl',\n    'public-external-timeline': 'nav.twkn'\n  }\n}\n\nconst TimelineMenu = {\n  components: {\n    Popover,\n    NavigationEntry,\n    ListsMenuContent\n  },\n  data () {\n    return {\n      isOpen: false\n    }\n  },\n  created () {\n    if (timelineNames()[this.$route.name]) {\n      this.$store.dispatch('setLastTimeline', this.$route.name)\n    }\n  },\n  computed: {\n    useListsMenu () {\n      const route = this.$route.name\n      return route === 'lists-timeline'\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      privateMode: state => state.instance.private,\n      federating: state => state.instance.federating\n    }),\n    timelinesList () {\n      return filterNavigation(\n        Object.entries(TIMELINES).map(([k, v]) => ({ ...v, name: k })),\n        {\n          hasChats: this.pleromaChatMessagesAvailable,\n          isFederating: this.federating,\n          isPrivate: this.privateMode,\n          currentUser: this.currentUser\n        }\n      )\n    }\n  },\n  methods: {\n    openMenu () {\n      // $nextTick is too fast, animation won't play back but\n      // instead starts in fully open position. Low values\n      // like 1-5 work on fast machines but not on mobile, 25\n      // seems like a good compromise that plays without significant\n      // added lag.\n      setTimeout(() => {\n        this.isOpen = true\n      }, 25)\n    },\n    blockOpen (event) {\n      // For the blank area inside the button element.\n      // Just setting @click.stop=\"\" makes unintuitive behavior when\n      // menu is open and clicking on the blank area doesn't close it.\n      if (!this.isOpen) {\n        event.stopPropagation()\n      }\n    },\n    timelineName () {\n      const route = this.$route.name\n      if (route === 'tag-timeline') {\n        return '#' + this.$route.params.tag\n      }\n      if (route === 'lists-timeline') {\n        return this.$store.getters.findListTitle(this.$route.params.id)\n      }\n      const i18nkey = timelineNames()[this.$route.name]\n      return i18nkey ? this.$t(i18nkey) : route\n    }\n  }\n}\n\nexport default TimelineMenu\n","import { render } from \"./timeline_menu.vue?vue&type=template&id=2c1d9222\"\nimport script from \"./timeline_menu.js?vue&type=script&lang=js\"\nexport * from \"./timeline_menu.js?vue&type=script&lang=js\"\n\nimport \"./timeline_menu.vue?vue&type=style&index=0&id=2c1d9222&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Status from '../status/status.vue'\nimport { mapState } from 'vuex'\nimport timelineFetcher from '../../services/timeline_fetcher/timeline_fetcher.service.js'\nimport Conversation from '../conversation/conversation.vue'\nimport TimelineMenu from '../timeline_menu/timeline_menu.vue'\nimport QuickFilterSettings from '../quick_filter_settings/quick_filter_settings.vue'\nimport QuickViewSettings from '../quick_view_settings/quick_view_settings.vue'\nimport { debounce, throttle, keyBy } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faCirclePlus, faCog, faMinus, faArrowUp, faCheck } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faCog,\n  faMinus,\n  faArrowUp,\n  faCirclePlus,\n  faCheck\n)\n\nconst Timeline = {\n  props: [\n    'timeline',\n    'timelineName',\n    'title',\n    'userId',\n    'listId',\n    'tag',\n    'embedded',\n    'count',\n    'pinnedStatusIds',\n    'inProfile',\n    'footerSlipgate' // reference to an element where we should put our footer\n  ],\n  data () {\n    return {\n      showScrollTop: false,\n      paused: false,\n      unfocused: false,\n      bottomedOut: false,\n      virtualScrollIndex: 0,\n      blockingClicks: false\n    }\n  },\n  components: {\n    Status,\n    Conversation,\n    TimelineMenu,\n    QuickFilterSettings,\n    QuickViewSettings\n  },\n  computed: {\n    filteredVisibleStatuses () {\n      return this.timeline.visibleStatuses.filter(status => this.timelineName !== 'user' || (status.id >= this.timeline.minId && status.id <= this.timeline.maxId))\n    },\n    filteredPinnedStatusIds () {\n      return (this.pinnedStatusIds || []).filter(statusId => this.timeline.statusesObject[statusId])\n    },\n    newStatusCount () {\n      return this.timeline.newStatusCount\n    },\n    showLoadButton () {\n      return this.timeline.newStatusCount > 0 || this.timeline.flushMarker !== 0\n    },\n    loadButtonString () {\n      if (this.timeline.flushMarker !== 0) {\n        return this.$t('timeline.reload')\n      } else {\n        return `${this.$t('timeline.show_new')} (${this.newStatusCount})`\n      }\n    },\n    mobileLoadButtonString () {\n      if (this.timeline.flushMarker !== 0) {\n        return '+'\n      } else {\n        return this.newStatusCount > 99 ? '∞' : this.newStatusCount\n      }\n    },\n    classes () {\n      let rootClasses = !this.embedded ? ['panel', 'panel-default'] : ['-nonpanel']\n      if (this.blockingClicks) rootClasses = rootClasses.concat(['-blocked', '_misclick-prevention'])\n      return {\n        root: rootClasses,\n        header: ['timeline-heading'].concat(!this.embedded ? ['panel-heading', '-sticky'] : []),\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    pinnedStatusIdsObject () {\n      return keyBy(this.pinnedStatusIds)\n    },\n    statusesToDisplay () {\n      const amount = this.timeline.visibleStatuses.length\n      const statusesPerSide = Math.ceil(Math.max(3, window.innerHeight / 80))\n      const nonPinnedIndex = this.virtualScrollIndex - this.filteredPinnedStatusIds.length\n      const min = Math.max(0, nonPinnedIndex - statusesPerSide)\n      const max = Math.min(amount, nonPinnedIndex + statusesPerSide)\n      return this.timeline.visibleStatuses.slice(min, max).map(_ => _.id)\n    },\n    virtualScrollingEnabled () {\n      return this.$store.getters.mergedConfig.virtualScrolling\n    },\n    ...mapState({\n      mobileLayout: state => state.interface.layoutType === 'mobile'\n    })\n  },\n  created () {\n    const store = this.$store\n    const credentials = store.state.users.currentUser.credentials\n    const showImmediately = this.timeline.visibleStatuses.length === 0\n\n    window.addEventListener('scroll', this.handleScroll)\n\n    if (store.state.api.fetchers[this.timelineName]) { return false }\n\n    timelineFetcher.fetchAndUpdate({\n      store,\n      credentials,\n      timeline: this.timelineName,\n      showImmediately,\n      userId: this.userId,\n      listId: this.listId,\n      tag: this.tag\n    })\n  },\n  mounted () {\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n      this.unfocused = document.hidden\n    }\n    window.addEventListener('keydown', this.handleShortKey)\n    setTimeout(this.determineVisibleStatuses, 250)\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('keydown', this.handleShortKey)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.commit('setLoading', { timeline: this.timelineName, value: false })\n  },\n  methods: {\n    scrollToTop () {\n      window.scrollTo({ top: this.$el.offsetTop })\n    },\n    stopBlockingClicks: debounce(function () {\n      this.blockingClicks = false\n    }, 1000),\n    blockClicksTemporarily () {\n      if (!this.blockingClicks) {\n        this.blockingClicks = true\n      }\n      this.stopBlockingClicks()\n    },\n    handleShortKey (e) {\n      // Ignore when input fields are focused\n      if (['textarea', 'input'].includes(e.target.tagName.toLowerCase())) return\n      if (e.key === '.') this.showNewStatuses()\n    },\n    showNewStatuses () {\n      if (this.timeline.flushMarker !== 0) {\n        this.$store.commit('clearTimeline', { timeline: this.timelineName, excludeUserId: true })\n        this.$store.commit('queueFlush', { timeline: this.timelineName, id: 0 })\n        this.fetchOlderStatuses()\n      } else {\n        this.blockClicksTemporarily()\n        this.$store.commit('showNewStatuses', { timeline: this.timelineName })\n        this.paused = false\n      }\n      window.scrollTo({ top: 0 })\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        listId: this.listId,\n        tag: this.tag\n      }).then(({ statuses }) => {\n        if (statuses && statuses.length === 0) {\n          this.bottomedOut = true\n        }\n      }).finally(() =>\n        store.commit('setLoading', { timeline: this.timelineName, value: false })\n      )\n    }, 1000, this),\n    determineVisibleStatuses () {\n      if (!this.$refs.timeline) return\n      if (!this.virtualScrollingEnabled) return\n\n      const statuses = this.$refs.timeline.children\n      const cappedScrollIndex = Math.max(0, Math.min(this.virtualScrollIndex, statuses.length - 1))\n\n      if (statuses.length === 0) return\n\n      const height = Math.max(document.body.offsetHeight, window.pageYOffset)\n\n      const centerOfScreen = window.pageYOffset + (window.innerHeight * 0.5)\n\n      // Start from approximating the index of some visible status by using the\n      // the center of the screen on the timeline.\n      let approxIndex = Math.floor(statuses.length * (centerOfScreen / height))\n      let err = statuses[approxIndex].getBoundingClientRect().y\n\n      // if we have a previous scroll index that can be used, test if it's\n      // closer than the previous approximation, use it if so\n\n      const virtualScrollIndexY = statuses[cappedScrollIndex].getBoundingClientRect().y\n      if (Math.abs(err) > virtualScrollIndexY) {\n        approxIndex = cappedScrollIndex\n        err = virtualScrollIndexY\n      }\n\n      // if the status is too far from viewport, check the next/previous ones if\n      // they happen to be better\n      while (err < -20 && approxIndex < statuses.length - 1) {\n        err += statuses[approxIndex].offsetHeight\n        approxIndex++\n      }\n      while (err > window.innerHeight + 100 && approxIndex > 0) {\n        approxIndex--\n        err -= statuses[approxIndex].offsetHeight\n      }\n\n      // this status is now the center point for virtual scrolling and visible\n      // statuses will be nearby statuses before and after it\n      this.virtualScrollIndex = approxIndex\n    },\n    scrollLoad (e) {\n      const bodyBRect = document.body.getBoundingClientRect()\n      const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n      if (this.timeline.loading === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)) {\n        this.fetchOlderStatuses()\n      }\n    },\n    handleScroll: throttle(function (e) {\n      this.showScrollTop = this.$el.offsetTop < window.scrollY\n      this.determineVisibleStatuses()\n      this.scrollLoad(e)\n    }, 200),\n    handleVisibilityChange () {\n      this.unfocused = document.hidden\n    }\n  },\n  watch: {\n    newStatusCount (count) {\n      if (!this.$store.getters.mergedConfig.streaming) {\n        return\n      }\n      if (count > 0) {\n        // only 'stream' them when you're scrolled to the top\n        const doc = document.documentElement\n        const top = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0)\n        if (top < 15 &&\n            !this.paused &&\n            !(this.unfocused && this.$store.getters.mergedConfig.pauseOnUnfocused)\n        ) {\n          this.showNewStatuses()\n        } else {\n          this.paused = true\n        }\n      }\n    }\n  }\n}\n\nexport default Timeline\n","import { render } from \"./timeline.vue?vue&type=template&id=79de750e\"\nimport script from \"./timeline.js?vue&type=script&lang=js\"\nexport * from \"./timeline.js?vue&type=script&lang=js\"\n\nimport \"./timeline.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'public')\n  }\n\n}\n\nexport default PublicTimeline\n","import { render } from \"./public_timeline.vue?vue&type=template&id=5f2a502e\"\nimport script from \"./public_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.public_tl')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'public'\"\n  />\n</template>\n\n<script src=\"./public_timeline.js\"></script>\n","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  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'publicAndExternal')\n  }\n}\n\nexport default PublicAndExternalTimeline\n","import { render } from \"./public_and_external_timeline.vue?vue&type=template&id=f6923484\"\nimport script from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\nexport * from \"./public_and_external_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.twkn')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'publicAndExternal'\"\n  />\n</template>\n\n<script src=\"./public_and_external_timeline.js\"></script>\n","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","import { render } from \"./friends_timeline.vue?vue&type=template&id=22490669\"\nimport script from \"./friends_timeline.js?vue&type=script&lang=js\"\nexport * from \"./friends_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.timeline')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'friends'\"\n  />\n</template>\n\n<script src=\"./friends_timeline.js\"></script>\n","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  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'tag')\n  }\n}\n\nexport default TagTimeline\n","import { render } from \"./tag_timeline.vue?vue&type=template&id=047310d3\"\nimport script from \"./tag_timeline.js?vue&type=script&lang=js\"\nexport * from \"./tag_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"tag\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'tag'\"\n    :tag=\"tag\"\n  />\n</template>\n\n<script src='./tag_timeline.js'></script>\n","import Timeline from '../timeline/timeline.vue'\n\nconst Bookmarks = {\n  computed: {\n    timeline () {\n      return this.$store.state.statuses.timelines.bookmarks\n    }\n  },\n  components: {\n    Timeline\n  },\n  unmounted () {\n    this.$store.commit('clearTimeline', { timeline: 'bookmarks' })\n  }\n}\n\nexport default Bookmarks\n","import { render } from \"./bookmark_timeline.vue?vue&type=template&id=2b9c8ba0\"\nimport script from \"./bookmark_timeline.js?vue&type=script&lang=js\"\nexport * from \"./bookmark_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.bookmarks')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'bookmarks'\"\n  />\n</template>\n\n<script src=\"./bookmark_timeline.js\"></script>\n","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","import { render } from \"./conversation-page.vue?vue&type=template&id=46654d24\"\nimport script from \"./conversation-page.js?vue&type=script&lang=js\"\nexport * from \"./conversation-page.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <conversation\n    :collapsable=\"false\"\n    is-page=\"true\"\n    :status-id=\"statusId\"\n  />\n</template>\n\n<script src=\"./conversation-page.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t(\"nav.interactions\") }}\n      </div>\n    </div>\n    <tab-switcher\n      ref=\"tabSwitcher\"\n      :on-switch=\"onModeSwitch\"\n    >\n      <span\n        key=\"mentions\"\n        :label=\"$t('nav.mentions')\"\n      />\n      <span\n        key=\"likes+repeats\"\n        :label=\"$t('interactions.favs_repeats')\"\n      />\n      <span\n        key=\"follows\"\n        :label=\"$t('interactions.follows')\"\n      />\n      <span\n        key=\"reactions\"\n        :label=\"$t('interactions.emoji_reactions')\"\n      />\n      <span\n        v-if=\"canSeeReports\"\n        key=\"reports\"\n        :label=\"$t('interactions.reports')\"\n      />\n      <span\n        v-if=\"!allowFollowingMove\"\n        key=\"moves\"\n        :label=\"$t('interactions.moves')\"\n      />\n    </tab-switcher>\n    <Notifications\n      ref=\"notifications\"\n      :no-heading=\"true\"\n      :minimal-mode=\"true\"\n      :filter-mode=\"filterMode\"\n    />\n  </div>\n</template>\n\n<script src=\"./interactions.js\"></script>\n","import Notifications from '../notifications/notifications.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\n\nconst tabModeDict = {\n  mentions: ['mention'],\n  'likes+repeats': ['repeat', 'like'],\n  follows: ['follow'],\n  reactions: ['pleroma:emoji_reaction'],\n  reports: ['pleroma:report'],\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      canSeeReports: this.$store.state.users.currentUser.privileges.includes('reports_manage_reports')\n    }\n  },\n  methods: {\n    onModeSwitch (key) {\n      this.filterMode = tabModeDict[key]\n    }\n  },\n  components: {\n    Notifications,\n    TabSwitcher\n  }\n}\n\nexport default Interactions\n","import { render } from \"./interactions.vue?vue&type=template&id=3b173532\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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","import { render } from \"./dm_timeline.vue?vue&type=template&id=294f8b6d\"\nimport script from \"./dm_timeline.js?vue&type=script&lang=js\"\nexport * from \"./dm_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    :title=\"$t('nav.dms')\"\n    :timeline=\"timeline\"\n    :timeline-name=\"'dms'\"\n  />\n</template>\n\n<script src=\"./dm_timeline.js\"></script>\n","<template>\n  <div v-if=\"isNew\">\n    <ChatNew @cancel=\"cancelNewChat\" />\n  </div>\n  <div\n    v-else\n    class=\"chat-list panel panel-default\"\n  >\n    <div class=\"panel-heading -sticky\">\n      <span class=\"title\">\n        {{ $t(\"chats.chats\") }}\n      </span>\n      <button\n        class=\"button-default\"\n        @click=\"newChat\"\n      >\n        {{ $t(\"chats.new\") }}\n      </button>\n    </div>\n    <div class=\"panel-body\">\n      <div\n        v-if=\"sortedChatList.length > 0\"\n        class=\"timeline\"\n      >\n        <List :items=\"sortedChatList\">\n          <template #item=\"{item}\">\n            <ChatListItem\n              :key=\"item.id\"\n              :compact=\"false\"\n              :chat=\"item\"\n            />\n          </template>\n        </List>\n      </div>\n      <div\n        v-else\n        class=\"emtpy-chat-list-alert\"\n      >\n        <span>{{ $t('chats.empty_chat_list_placeholder') }}</span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-list {\n  min-height: 25em;\n  margin-bottom: 0;\n}\n\n.emtpy-chat-list-alert {\n  padding: 3em;\n  font-size: 1.2em;\n  display: flex;\n  justify-content: center;\n  color: $fallback--text;\n  color: var(--faint, $fallback--text);\n}\n\n</style>\n","<template>\n  <div\n    class=\"chat-list-item\"\n    @click.capture.prevent=\"openChat\"\n  >\n    <div class=\"chat-list-item-left\">\n      <UserAvatar\n        :user=\"chat.account\"\n        height=\"48px\"\n        width=\"48px\"\n      />\n    </div>\n    <div class=\"chat-list-item-center\">\n      <div class=\"heading\">\n        <span\n          v-if=\"chat.account\"\n          class=\"name-and-account-name\"\n        >\n          <ChatTitle\n            :user=\"chat.account\"\n          />\n        </span>\n        <span class=\"heading-right\" />\n        <div class=\"time-wrapper\">\n          <Timeago\n            :time=\"chat.updated_at\"\n            :auto-update=\"60\"\n          />\n        </div>\n      </div>\n      <div class=\"chat-preview\">\n        <StatusBody\n          class=\"chat-preview-body\"\n          :status=\"messageForStatusContent\"\n          :single-line=\"true\"\n        />\n        <div\n          v-if=\"chat.unread > 0\"\n          class=\"badge badge-notification unread-chat-count\"\n        >\n          {{ chat.unread }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_list_item.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_list_item.scss';\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { defineAsyncComponent } from 'vue'\n\nexport default {\n  name: 'ChatTitle',\n  components: {\n    UserAvatar,\n    RichContent,\n    UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n  },\n  props: [\n    'user', 'withAvatar'\n  ],\n  computed: {\n    title () {\n      return this.user ? this.user.screen_name_ui : ''\n    },\n    htmlTitle () {\n      return this.user ? this.user.name_html : ''\n    }\n  }\n}\n","import { render } from \"./chat_title.vue?vue&type=template&id=09372b9a\"\nimport script from \"./chat_title.js?vue&type=script&lang=js\"\nexport * from \"./chat_title.js?vue&type=script&lang=js\"\n\nimport \"./chat_title.vue?vue&type=style&index=0&id=09372b9a&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"chat-title\"\n    :title=\"title\"\n  >\n    <UserPopover\n      v-if=\"withAvatar && user\"\n      class=\"avatar-container\"\n      :user-id=\"user.id\"\n    >\n      <UserAvatar\n        class=\"titlebar-avatar\"\n        :user=\"user\"\n      />\n    </UserPopover>\n    <RichContent\n      v-if=\"user\"\n      class=\"username\"\n      :title=\"'@'+(user && user.screen_name_ui)\"\n      :html=\"htmlTitle\"\n      :emoji=\"user.emoji || []\"\n    />\n  </div>\n</template>\n\n<script src=\"./chat_title.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.chat-title {\n  display: flex;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n\n  --emoji-size: 14px;\n\n  .username {\n    max-width: 100%;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    display: inline;\n    word-wrap: break-word;\n    overflow: hidden;\n  }\n\n  .avatar-container {\n    align-self: center;\n    line-height: 1;\n  }\n\n  .titlebar-avatar {\n    margin-right: 0.5em;\n    height: 1.5em;\n    width: 1.5em;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n\n    &.animated::before {\n      display: none;\n    }\n  }\n}\n</style>\n","import { mapState } from 'vuex'\nimport StatusBody from '../status_content/status_content.vue'\nimport fileType from 'src/services/file_type/file_type.service'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport AvatarList from '../avatar_list/avatar_list.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\n\nconst ChatListItem = {\n  name: 'ChatListItem',\n  props: [\n    'chat'\n  ],\n  components: {\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    ChatTitle,\n    StatusBody\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    attachmentInfo () {\n      if (this.chat.lastMessage.attachments.length === 0) { return }\n\n      const types = this.chat.lastMessage.attachments.map(file => fileType.fileType(file.mimetype))\n      if (types.includes('video')) {\n        return this.$t('file_type.video')\n      } else if (types.includes('audio')) {\n        return this.$t('file_type.audio')\n      } else if (types.includes('image')) {\n        return this.$t('file_type.image')\n      } else {\n        return this.$t('file_type.file')\n      }\n    },\n    messageForStatusContent () {\n      const message = this.chat.lastMessage\n      const messageEmojis = message ? message.emojis : []\n      const isYou = message && message.account_id === this.currentUser.id\n      const content = message ? (this.attachmentInfo || message.content) : ''\n      const messagePreview = isYou ? `<i>${this.$t('chats.you')}</i> ${content}` : content\n      return {\n        summary: '',\n        emojis: messageEmojis,\n        raw_html: messagePreview,\n        text: messagePreview,\n        attachments: []\n      }\n    }\n  },\n  methods: {\n    openChat (_e) {\n      if (this.chat.id) {\n        this.$router.push({\n          name: 'chat',\n          params: {\n            username: this.currentUser.screen_name,\n            recipient_id: this.chat.account.id\n          }\n        })\n      }\n    }\n  }\n}\n\nexport default ChatListItem\n","import { render } from \"./chat_list_item.vue?vue&type=template&id=0623aed7\"\nimport script from \"./chat_list_item.js?vue&type=script&lang=js\"\nexport * from \"./chat_list_item.js?vue&type=script&lang=js\"\n\nimport \"./chat_list_item.vue?vue&type=style&index=0&id=0623aed7&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"panel-default panel chat-new\"\n  >\n    <div\n      ref=\"header\"\n      class=\"panel-heading\"\n    >\n      <button\n        class=\"button-unstyled go-back-button\"\n        @click=\"goBack\"\n      >\n        <FAIcon\n          size=\"lg\"\n          icon=\"chevron-left\"\n        />\n      </button>\n    </div>\n    <div class=\"input-wrap\">\n      <div class=\"input-search\">\n        <FAIcon\n          class=\"search-icon fa-scale-110 fa-old-padding\"\n          icon=\"search\"\n        />\n      </div>\n      <input\n        ref=\"search\"\n        v-model=\"query\"\n        placeholder=\"Search people\"\n        @input=\"onInput\"\n      >\n    </div>\n    <div class=\"member-list\">\n      <div\n        v-for=\"user in availableUsers\"\n        :key=\"user.id\"\n        class=\"member\"\n      >\n        <div @click.capture.prevent=\"goToChat(user)\">\n          <BasicUserCard :user=\"user\" />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat_new.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat_new.scss';\n</style>\n","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst chatNew = {\n  components: {\n    BasicUserCard,\n    UserAvatar\n  },\n  data () {\n    return {\n      suggestions: [],\n      userIds: [],\n      loading: false,\n      query: ''\n    }\n  },\n  async created () {\n    const { chats } = await this.backendInteractor.chats()\n    chats.forEach(chat => this.suggestions.push(chat.account))\n  },\n  computed: {\n    users () {\n      return this.userIds.map(userId => this.findUser(userId))\n    },\n    availableUsers () {\n      if (this.query.length !== 0) {\n        return this.users\n      } else {\n        return this.suggestions\n      }\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser,\n      backendInteractor: state => state.api.backendInteractor\n    }),\n    ...mapGetters(['findUser'])\n  },\n  methods: {\n    goBack () {\n      this.$emit('cancel')\n    },\n    goToChat (user) {\n      this.$router.push({ name: 'chat', params: { recipient_id: user.id } })\n    },\n    onInput () {\n      this.search(this.query)\n    },\n    addUser (user) {\n      this.selectedUserIds.push(user.id)\n      this.query = ''\n    },\n    removeUser (userId) {\n      this.selectedUserIds = this.selectedUserIds.filter(id => id !== userId)\n    },\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.userIds = []\n      this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts' })\n        .then(data => {\n          this.loading = false\n          this.userIds = data.accounts.map(a => a.id)\n        })\n    }\n  }\n}\n\nexport default chatNew\n","import { render } from \"./chat_new.vue?vue&type=template&id=54e93eee\"\nimport script from \"./chat_new.js?vue&type=script&lang=js\"\nexport * from \"./chat_new.js?vue&type=script&lang=js\"\n\nimport \"./chat_new.vue?vue&type=style&index=0&id=54e93eee&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport ChatListItem from '../chat_list_item/chat_list_item.vue'\nimport ChatNew from '../chat_new/chat_new.vue'\nimport List from '../list/list.vue'\n\nconst ChatList = {\n  components: {\n    ChatListItem,\n    List,\n    ChatNew\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    ...mapGetters(['sortedChatList'])\n  },\n  data () {\n    return {\n      isNew: false\n    }\n  },\n  created () {\n    this.$store.dispatch('fetchChats', { latest: true })\n  },\n  methods: {\n    cancelNewChat () {\n      this.isNew = false\n      this.$store.dispatch('fetchChats', { latest: true })\n    },\n    newChat () {\n      this.isNew = true\n    }\n  }\n}\n\nexport default ChatList\n","import { render } from \"./chat_list.vue?vue&type=template&id=20b0f4c4\"\nimport script from \"./chat_list.js?vue&type=script&lang=js\"\nexport * from \"./chat_list.js?vue&type=script&lang=js\"\n\nimport \"./chat_list.vue?vue&type=style&index=0&id=20b0f4c4&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"chat-view\">\n    <div class=\"chat-view-inner\">\n      <div\n        ref=\"inner\"\n        class=\"panel-default panel chat-view-body\"\n      >\n        <div\n          ref=\"header\"\n          class=\"panel-heading -sticky chat-view-heading\"\n        >\n          <button\n            class=\"button-unstyled go-back-button\"\n            @click=\"goBack\"\n          >\n            <FAIcon\n              size=\"lg\"\n              icon=\"chevron-left\"\n            />\n          </button>\n          <div class=\"title text-center\">\n            <ChatTitle\n              :user=\"recipient\"\n              :with-avatar=\"true\"\n            />\n          </div>\n        </div>\n        <div\n          class=\"message-list\"\n          :style=\"{ height: scrollableContainerHeight }\"\n        >\n          <template v-if=\"!errorLoadingChat\">\n            <ChatMessage\n              v-for=\"chatViewItem in chatViewItems\"\n              :key=\"chatViewItem.id\"\n              :author=\"recipient\"\n              :chat-view-item=\"chatViewItem\"\n              :hovered-message-chain=\"chatViewItem.messageChainId === hoveredMessageChainId\"\n              @hover=\"onMessageHover\"\n            />\n          </template>\n          <div\n            v-else\n            class=\"chat-loading-error\"\n          >\n            <div class=\"alert error\">\n              {{ $t('chats.error_loading_chat') }}\n            </div>\n          </div>\n        </div>\n        <div\n          ref=\"footer\"\n          class=\"panel-body footer\"\n        >\n          <div\n            class=\"jump-to-bottom-button\"\n            :class=\"{ 'visible': jumpToBottomButtonVisible }\"\n            @click=\"scrollDown({ behavior: 'smooth' })\"\n          >\n            <span>\n              <FAIcon icon=\"chevron-down\" />\n              <div\n                v-if=\"newMessageCount\"\n                class=\"badge badge-notification unread-chat-count unread-message-count\"\n              >\n                {{ newMessageCount }}\n              </div>\n            </span>\n          </div>\n          <PostStatusForm\n            :disable-subject=\"true\"\n            :disable-scope-selector=\"true\"\n            :disable-notice=\"true\"\n            :disable-lock-warning=\"true\"\n            :disable-polls=\"true\"\n            :disable-sensitivity-checkbox=\"true\"\n            :disable-submit=\"errorLoadingChat || !currentChat\"\n            :disable-preview=\"true\"\n            :optimistic-posting=\"true\"\n            :post-handler=\"sendMessage\"\n            :submit-on-enter=\"!mobileLayout\"\n            :preserve-focus=\"!mobileLayout\"\n            :auto-focus=\"!mobileLayout\"\n            :placeholder=\"formPlaceholder\"\n            :file-limit=\"1\"\n            max-height=\"160\"\n            emoji-picker-placement=\"top\"\n            @resize=\"handleResize\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./chat.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './chat.scss';\n</style>\n","<template>\n  <div\n    v-if=\"isMessage\"\n    class=\"chat-message-wrapper\"\n    :class=\"{ 'hovered-message-chain': hoveredMessageChain }\"\n    @mouseover=\"onHover(true)\"\n    @mouseleave=\"onHover(false)\"\n  >\n    <div\n      class=\"chat-message\"\n      :class=\"[{ 'outgoing': isCurrentUser, 'incoming': !isCurrentUser }]\"\n    >\n      <div\n        v-if=\"!isCurrentUser\"\n        class=\"avatar-wrapper\"\n      >\n        <UserPopover\n          v-if=\"chatViewItem.isHead\"\n          :user-id=\"author.id\"\n        >\n          <UserAvatar\n            :compact=\"true\"\n            :better-shadow=\"betterShadow\"\n            :user=\"author\"\n          />\n        </UserPopover>\n      </div>\n      <div class=\"chat-message-inner\">\n        <div\n          class=\"status-body\"\n          :style=\"{ 'min-width': message.attachment ? '80%' : '' }\"\n        >\n          <div\n            class=\"media status\"\n            :class=\"{ 'without-attachment': !hasAttachment, 'pending': chatViewItem.data.pending, 'error': chatViewItem.data.error }\"\n            style=\"position: relative\"\n            @mouseenter=\"hovered = true\"\n            @mouseleave=\"hovered = false\"\n          >\n            <div\n              class=\"chat-message-menu\"\n              :class=\"{ 'visible': hovered || menuOpened }\"\n            >\n              <Popover\n                trigger=\"click\"\n                placement=\"top\"\n                bound-to-selector=\".chat-view-inner\"\n                :bound-to=\"{ x: 'container' }\"\n                :margin=\"popoverMarginStyle\"\n                @show=\"menuOpened = true\"\n                @close=\"menuOpened = false\"\n              >\n                <template #content>\n                  <div class=\"dropdown-menu\">\n                    <button\n                      class=\"button-default dropdown-item dropdown-item-icon\"\n                      @click=\"deleteMessage\"\n                    >\n                      <FAIcon icon=\"times\" /> {{ $t(\"chats.delete\") }}\n                    </button>\n                  </div>\n                </template>\n                <template #trigger>\n                  <button\n                    class=\"button-default menu-icon\"\n                    :title=\"$t('chats.more')\"\n                  >\n                    <FAIcon icon=\"ellipsis-h\" />\n                  </button>\n                </template>\n              </Popover>\n            </div>\n            <StatusContent\n              class=\"message-content\"\n              :status=\"messageForStatusContent\"\n              :full-content=\"true\"\n            >\n              <template #footer>\n                <span\n                  class=\"created-at\"\n                >\n                  {{ createdAt }}\n                </span>\n              </template>\n            </StatusContent>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n  <div\n    v-else\n    class=\"chat-message-date-separator\"\n  >\n    <ChatMessageDate :date=\"chatViewItem.date\" />\n  </div>\n</template>\n\n<script src=\"./chat_message.js\"></script>\n<style lang=\"scss\">\n@import './chat_message.scss';\n\n</style>\n","<template>\n  <time>\n    {{ displayDate }}\n  </time>\n</template>\n\n<script>\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['date'],\n  computed: {\n    displayDate () {\n      const today = new Date()\n      today.setHours(0, 0, 0, 0)\n\n      if (this.date.getTime() === today.getTime()) {\n        return this.$t('display_date.today')\n      } else {\n        return this.date.toLocaleDateString(localeService.internalToBrowserLocale(this.$i18n.locale), { day: 'numeric', month: 'long' })\n      }\n    }\n  }\n}\n</script>\n","import { render } from \"./chat_message_date.vue?vue&type=template&id=23377998\"\nimport script from \"./chat_message_date.vue?vue&type=script&lang=js\"\nexport * from \"./chat_message_date.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport Popover from '../popover/popover.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport ChatMessageDate from '../chat_message_date/chat_message_date.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes,\n  faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faEllipsisH\n)\n\nconst ChatMessage = {\n  name: 'ChatMessage',\n  props: [\n    'author',\n    'edited',\n    'noHeading',\n    'chatViewItem',\n    'hoveredMessageChain'\n  ],\n  emits: ['hover'],\n  components: {\n    Popover,\n    Attachment,\n    StatusContent,\n    UserAvatar,\n    Gallery,\n    LinkPreview,\n    ChatMessageDate,\n    UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n  },\n  computed: {\n    // Returns HH:MM (hours and minutes) in local time.\n    createdAt () {\n      const time = this.chatViewItem.data.created_at\n      return time.toLocaleTimeString('en', { hour: '2-digit', minute: '2-digit', hour12: false })\n    },\n    isCurrentUser () {\n      return this.message.account_id === this.currentUser.id\n    },\n    message () {\n      return this.chatViewItem.data\n    },\n    isMessage () {\n      return this.chatViewItem.type === 'message'\n    },\n    messageForStatusContent () {\n      return {\n        summary: '',\n        emojis: this.message.emojis,\n        raw_html: this.message.content || '',\n        text: this.message.content || '',\n        attachments: this.message.attachments\n      }\n    },\n    hasAttachment () {\n      return this.message.attachments.length > 0\n    },\n    ...mapState({\n      betterShadow: state => state.interface.browserSupport.cssFilter,\n      currentUser: state => state.users.currentUser,\n      restrictedNicknames: state => state.instance.restrictedNicknames\n    }),\n    popoverMarginStyle () {\n      if (this.isCurrentUser) {\n        return {}\n      } else {\n        return { left: 50 }\n      }\n    },\n    ...mapGetters(['mergedConfig', 'findUser'])\n  },\n  data () {\n    return {\n      hovered: false,\n      menuOpened: false\n    }\n  },\n  methods: {\n    onHover (bool) {\n      this.$emit('hover', { isHovered: bool, messageChainId: this.chatViewItem.messageChainId })\n    },\n    async deleteMessage () {\n      const confirmed = window.confirm(this.$t('chats.delete_confirm'))\n      if (confirmed) {\n        await this.$store.dispatch('deleteChatMessage', {\n          messageId: this.chatViewItem.data.id,\n          chatId: this.chatViewItem.data.chat_id\n        })\n      }\n      this.hovered = false\n      this.menuOpened = false\n    }\n  }\n}\n\nexport default ChatMessage\n","import { render } from \"./chat_message.vue?vue&type=template&id=659d8b68\"\nimport script from \"./chat_message.js?vue&type=script&lang=js\"\nexport * from \"./chat_message.js?vue&type=script&lang=js\"\n\nimport \"./chat_message.vue?vue&type=style&index=0&id=659d8b68&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// Captures a scroll position\nexport const getScrollPosition = () => {\n  return {\n    scrollTop: window.scrollY,\n    scrollHeight: document.documentElement.scrollHeight,\n    offsetHeight: window.innerHeight\n  }\n}\n\n// A helper function that is used to keep the scroll position fixed as the new elements are added to the top\n// Takes two scroll positions, before and after the update.\nexport const getNewTopPosition = (previousPosition, newPosition) => {\n  return previousPosition.scrollTop + (newPosition.scrollHeight - previousPosition.scrollHeight)\n}\n\nexport const isBottomedOut = (offset = 0) => {\n  const scrollHeight = window.scrollY + offset\n  const totalHeight = document.documentElement.scrollHeight - window.innerHeight\n  return totalHeight <= scrollHeight\n}\n// Returns whether or not the scrollbar is visible.\nexport const isScrollable = () => {\n  return document.documentElement.scrollHeight > window.innerHeight\n}\n","import _ from 'lodash'\nimport { WSConnectionStatus } from '../../services/api/api.service.js'\nimport { mapGetters, mapState } from 'vuex'\nimport ChatMessage from '../chat_message/chat_message.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport ChatTitle from '../chat_title/chat_title.vue'\nimport chatService from '../../services/chat_service/chat_service.js'\nimport { promiseInterval } from '../../services/promise_interval/promise_interval.js'\nimport { getScrollPosition, getNewTopPosition, isBottomedOut, isScrollable } from './chat_layout_utils.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { buildFakeMessage } from '../../services/chat_utils/chat_utils.js'\n\nlibrary.add(\n  faChevronDown,\n  faChevronLeft\n)\n\nconst BOTTOMED_OUT_OFFSET = 10\nconst JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET = 10\nconst SAFE_RESIZE_TIME_OFFSET = 100\nconst MARK_AS_READ_DELAY = 1500\nconst MAX_RETRIES = 10\n\nconst Chat = {\n  components: {\n    ChatMessage,\n    ChatTitle,\n    PostStatusForm\n  },\n  data () {\n    return {\n      jumpToBottomButtonVisible: false,\n      hoveredMessageChainId: undefined,\n      lastScrollPosition: {},\n      scrollableContainerHeight: '100%',\n      errorLoadingChat: false,\n      messageRetriers: {}\n    }\n  },\n  created () {\n    this.startFetching()\n    window.addEventListener('resize', this.handleResize)\n  },\n  mounted () {\n    window.addEventListener('scroll', this.handleScroll)\n    if (typeof document.hidden !== 'undefined') {\n      document.addEventListener('visibilitychange', this.handleVisibilityChange, false)\n    }\n\n    this.$nextTick(() => {\n      this.handleResize()\n    })\n  },\n  unmounted () {\n    window.removeEventListener('scroll', this.handleScroll)\n    window.removeEventListener('resize', this.handleResize)\n    if (typeof document.hidden !== 'undefined') document.removeEventListener('visibilitychange', this.handleVisibilityChange, false)\n    this.$store.dispatch('clearCurrentChat')\n  },\n  computed: {\n    recipient () {\n      return this.currentChat && this.currentChat.account\n    },\n    recipientId () {\n      return this.$route.params.recipient_id\n    },\n    formPlaceholder () {\n      if (this.recipient) {\n        return this.$t('chats.message_user', { nickname: this.recipient.screen_name_ui })\n      } else {\n        return ''\n      }\n    },\n    chatViewItems () {\n      return chatService.getView(this.currentChatMessageService)\n    },\n    newMessageCount () {\n      return this.currentChatMessageService && this.currentChatMessageService.newMessageCount\n    },\n    streamingEnabled () {\n      return this.mergedConfig.useStreamingApi && this.mastoUserSocketStatus === WSConnectionStatus.JOINED\n    },\n    ...mapGetters([\n      'currentChat',\n      'currentChatMessageService',\n      'findOpenedChatByRecipientId',\n      'mergedConfig'\n    ]),\n    ...mapState({\n      backendInteractor: state => state.api.backendInteractor,\n      mastoUserSocketStatus: state => state.api.mastoUserSocketStatus,\n      mobileLayout: state => state.interface.layoutType === 'mobile',\n      currentUser: state => state.users.currentUser\n    })\n  },\n  watch: {\n    chatViewItems () {\n      // We don't want to scroll to the bottom on a new message when the user is viewing older messages.\n      // Therefore we need to know whether the scroll position was at the bottom before the DOM update.\n      const bottomedOutBeforeUpdate = this.bottomedOut(BOTTOMED_OUT_OFFSET)\n      this.$nextTick(() => {\n        if (bottomedOutBeforeUpdate) {\n          this.scrollDown()\n        }\n      })\n    },\n    $route: function () {\n      this.startFetching()\n    },\n    mastoUserSocketStatus (newValue) {\n      if (newValue === WSConnectionStatus.JOINED) {\n        this.fetchChat({ isFirstFetch: true })\n      }\n    }\n  },\n  methods: {\n    // Used to animate the avatar near the first message of the message chain when any message belonging to the chain is hovered\n    onMessageHover ({ isHovered, messageChainId }) {\n      this.hoveredMessageChainId = isHovered ? messageChainId : undefined\n    },\n    onFilesDropped () {\n      this.$nextTick(() => {\n        this.handleResize()\n      })\n    },\n    handleVisibilityChange () {\n      this.$nextTick(() => {\n        if (!document.hidden && this.bottomedOut(BOTTOMED_OUT_OFFSET)) {\n          this.scrollDown({ forceRead: true })\n        }\n      })\n    },\n    // \"Sticks\" scroll to bottom instead of top, helps with OSK resizing the viewport\n    handleResize (opts = {}) {\n      const { delayed = false } = opts\n\n      if (delayed) {\n        setTimeout(() => {\n          this.handleResize({ ...opts, delayed: false })\n        }, SAFE_RESIZE_TIME_OFFSET)\n        return\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight = undefined } = getScrollPosition()\n        const diff = offsetHeight - this.lastScrollPosition.offsetHeight\n        if (diff !== 0 && !this.bottomedOut()) {\n          this.$nextTick(() => {\n            window.scrollBy({ top: -Math.trunc(diff) })\n          })\n        }\n        this.lastScrollPosition = getScrollPosition()\n      })\n    },\n    scrollDown (options = {}) {\n      const { behavior = 'auto', forceRead = false } = options\n      this.$nextTick(() => {\n        window.scrollTo({ top: document.documentElement.scrollHeight, behavior })\n      })\n      if (forceRead) {\n        this.readChat()\n      }\n    },\n    readChat () {\n      if (!(this.currentChatMessageService && this.currentChatMessageService.maxId)) { return }\n      if (document.hidden) { return }\n      const lastReadId = this.currentChatMessageService.maxId\n      this.$store.dispatch('readChat', {\n        id: this.currentChat.id,\n        lastReadId\n      })\n    },\n    bottomedOut (offset) {\n      return isBottomedOut(offset)\n    },\n    reachedTop () {\n      return window.scrollY <= 0\n    },\n    cullOlderCheck () {\n      window.setTimeout(() => {\n        if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n          this.$store.dispatch('cullOlderMessages', this.currentChatMessageService.chatId)\n        }\n      }, 5000)\n    },\n    handleScroll: _.throttle(function () {\n      this.lastScrollPosition = getScrollPosition()\n      if (!this.currentChat) { return }\n\n      if (this.reachedTop()) {\n        this.fetchChat({ maxId: this.currentChatMessageService.minId })\n      } else if (this.bottomedOut(JUMP_TO_BOTTOM_BUTTON_VISIBILITY_OFFSET)) {\n        this.jumpToBottomButtonVisible = false\n        this.cullOlderCheck()\n        if (this.newMessageCount > 0) {\n          // Use a delay before marking as read to prevent situation where new messages\n          // arrive just as you're leaving the view and messages that you didn't actually\n          // get to see get marked as read.\n          window.setTimeout(() => {\n            // Don't mark as read if the element doesn't exist, user has left chat view\n            if (this.$el) this.readChat()\n          }, MARK_AS_READ_DELAY)\n        }\n      } else {\n        this.jumpToBottomButtonVisible = true\n      }\n    }, 200),\n    handleScrollUp (positionBeforeLoading) {\n      const positionAfterLoading = getScrollPosition()\n      window.scrollTo({\n        top: getNewTopPosition(positionBeforeLoading, positionAfterLoading)\n      })\n    },\n    fetchChat ({ isFirstFetch = false, fetchLatest = false, maxId }) {\n      const chatMessageService = this.currentChatMessageService\n      if (!chatMessageService) { return }\n      if (fetchLatest && this.streamingEnabled) { return }\n\n      const chatId = chatMessageService.chatId\n      const fetchOlderMessages = !!maxId\n      const sinceId = fetchLatest && chatMessageService.maxId\n\n      return this.backendInteractor.chatMessages({ id: chatId, maxId, sinceId })\n        .then((messages) => {\n          // Clear the current chat in case we're recovering from a ws connection loss.\n          if (isFirstFetch) {\n            chatService.clear(chatMessageService)\n          }\n\n          const positionBeforeUpdate = getScrollPosition()\n          this.$store.dispatch('addChatMessages', { chatId, messages }).then(() => {\n            this.$nextTick(() => {\n              if (fetchOlderMessages) {\n                this.handleScrollUp(positionBeforeUpdate)\n              }\n\n              // In vertical screens, the first batch of fetched messages may not always take the\n              // full height of the scrollable container.\n              // If this is the case, we want to fetch the messages until the scrollable container\n              // is fully populated so that the user has the ability to scroll up and load the history.\n              if (!isScrollable() && messages.length > 0) {\n                this.fetchChat({ maxId: this.currentChatMessageService.minId })\n              }\n            })\n          })\n        })\n    },\n    async startFetching () {\n      let chat = this.findOpenedChatByRecipientId(this.recipientId)\n      if (!chat) {\n        try {\n          chat = await this.backendInteractor.getOrCreateChat({ accountId: this.recipientId })\n        } catch (e) {\n          console.error('Error creating or getting a chat', e)\n          this.errorLoadingChat = true\n        }\n      }\n      if (chat) {\n        this.$nextTick(() => {\n          this.scrollDown({ forceRead: true })\n        })\n        this.$store.dispatch('addOpenedChat', { chat })\n        this.doStartFetching()\n      }\n    },\n    doStartFetching () {\n      this.$store.dispatch('startFetchingCurrentChat', {\n        fetcher: () => promiseInterval(() => this.fetchChat({ fetchLatest: true }), 5000)\n      })\n      this.fetchChat({ isFirstFetch: true })\n    },\n    handleAttachmentPosting () {\n      this.$nextTick(() => {\n        this.handleResize()\n        // When the posting form size changes because of a media attachment, we need an extra resize\n        // to account for the potential delay in the DOM update.\n        this.scrollDown({ forceRead: true })\n      })\n    },\n    sendMessage ({ status, media, idempotencyKey }) {\n      const params = {\n        id: this.currentChat.id,\n        content: status,\n        idempotencyKey\n      }\n\n      if (media[0]) {\n        params.mediaId = media[0].id\n      }\n\n      const fakeMessage = buildFakeMessage({\n        attachments: media,\n        chatId: this.currentChat.id,\n        content: status,\n        userId: this.currentUser.id,\n        idempotencyKey\n      })\n\n      this.$store.dispatch('addChatMessages', {\n        chatId: this.currentChat.id,\n        messages: [fakeMessage]\n      }).then(() => {\n        this.handleAttachmentPosting()\n      })\n\n      return this.doSendMessage({ params, fakeMessage, retriesLeft: MAX_RETRIES })\n    },\n    doSendMessage ({ params, fakeMessage, retriesLeft = MAX_RETRIES }) {\n      if (retriesLeft <= 0) return\n\n      this.backendInteractor.sendChatMessage(params)\n        .then(data => {\n          this.$store.dispatch('addChatMessages', {\n            chatId: this.currentChat.id,\n            updateMaxId: false,\n            messages: [{ ...data, fakeId: fakeMessage.id }]\n          })\n\n          return data\n        })\n        .catch(error => {\n          console.error('Error sending message', error)\n          this.$store.dispatch('handleMessageError', {\n            chatId: this.currentChat.id,\n            fakeId: fakeMessage.id,\n            isRetry: retriesLeft !== MAX_RETRIES\n          })\n          if ((error.statusCode >= 500 && error.statusCode < 600) || error.message === 'Failed to fetch') {\n            this.messageRetriers[fakeMessage.id] = setTimeout(() => {\n              this.doSendMessage({ params, fakeMessage, retriesLeft: retriesLeft - 1 })\n            }, 1000 * (2 ** (MAX_RETRIES - retriesLeft)))\n          }\n          return {}\n        })\n\n      return Promise.resolve(fakeMessage)\n    },\n    goBack () {\n      this.$router.push({ name: 'chats', params: { username: this.currentUser.screen_name } })\n    }\n  }\n}\n\nexport default Chat\n","import { render } from \"./chat.vue?vue&type=template&id=9416a190\"\nimport script from \"./chat.js?vue&type=script&lang=js\"\nexport * from \"./chat.js?vue&type=script&lang=js\"\n\nimport \"./chat.vue?vue&type=style&index=0&id=9416a190&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <div\n      v-if=\"user\"\n      class=\"user-profile panel panel-default\"\n    >\n      <UserCard\n        :user-id=\"userId\"\n        :switcher=\"true\"\n        :selected=\"timeline.viewing\"\n        avatar-action=\"zoom\"\n        rounded=\"top\"\n        :has-note-editor=\"true\"\n      />\n      <div\n        v-if=\"user.fields_html && user.fields_html.length > 0\"\n        class=\"user-profile-fields\"\n      >\n        <dl\n          v-for=\"(field, index) in user.fields_html\"\n          :key=\"index\"\n          class=\"user-profile-field\"\n        >\n          <dt\n            :title=\"user.fields_text[index].name\"\n            class=\"user-profile-field-name\"\n          >\n            <RichContent\n              :html=\"field.name\"\n              :emoji=\"user.emoji\"\n            />\n          </dt>\n          <dd\n            :title=\"user.fields_text[index].value\"\n            class=\"user-profile-field-value\"\n          >\n            <RichContent\n              :html=\"field.value\"\n              :emoji=\"user.emoji\"\n            />\n          </dd>\n        </dl>\n      </div>\n      <tab-switcher\n        :active-tab=\"tab\"\n        :render-only-focused=\"true\"\n        :on-switch=\"onTabSwitch\"\n      >\n        <Timeline\n          key=\"statuses\"\n          :label=\"$t('user_card.statuses')\"\n          :count=\"user.statuses_count\"\n          :embedded=\"true\"\n          :title=\"$t('user_profile.timeline_title')\"\n          :timeline=\"timeline\"\n          timeline-name=\"user\"\n          :user-id=\"userId\"\n          :pinned-status-ids=\"user.pinnedStatusIds\"\n          :in-profile=\"true\"\n          :footer-slipgate=\"footerRef\"\n        />\n        <div\n          v-if=\"followsTabVisible\"\n          key=\"followees\"\n          :label=\"$t('user_card.followees')\"\n          :disabled=\"!user.friends_count\"\n        >\n          <FriendList :user-id=\"userId\">\n            <template #item=\"{item}\">\n              <FollowCard :user=\"item\" />\n            </template>\n          </FriendList>\n        </div>\n        <div\n          v-if=\"followersTabVisible\"\n          key=\"followers\"\n          :label=\"$t('user_card.followers')\"\n          :disabled=\"!user.followers_count\"\n        >\n          <FollowerList :user-id=\"userId\">\n            <template #item=\"{item}\">\n              <FollowCard\n                :user=\"item\"\n                :no-follows-you=\"isUs\"\n              />\n            </template>\n          </FollowerList>\n        </div>\n        <Timeline\n          key=\"media\"\n          :label=\"$t('user_card.media')\"\n          :disabled=\"!media.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.media')\"\n          timeline-name=\"media\"\n          :timeline=\"media\"\n          :user-id=\"userId\"\n          :in-profile=\"true\"\n          :footer-slipgate=\"footerRef\"\n        />\n        <Timeline\n          v-if=\"isUs\"\n          key=\"favorites\"\n          :label=\"$t('user_card.favorites')\"\n          :disabled=\"!favorites.visibleStatuses.length\"\n          :embedded=\"true\"\n          :title=\"$t('user_card.favorites')\"\n          timeline-name=\"favorites\"\n          :timeline=\"favorites\"\n          :in-profile=\"true\"\n          :footer-slipgate=\"footerRef\"\n        />\n      </tab-switcher>\n      <div\n        :ref=\"setFooterRef\"\n        class=\"panel-footer\"\n      />\n    </div>\n    <div\n      v-else\n      class=\"panel user-profile-placeholder\"\n    >\n      <div class=\"panel-heading\">\n        <div class=\"title\">\n          {{ $t('settings.profile_tab') }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <span v-if=\"error\">{{ error }}</span>\n        <FAIcon\n          v-else\n          spin\n          icon=\"circle-notch\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_profile.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-profile {\n  flex: 2;\n  flex-basis: 500px;\n\n  // No sticky header on user profile\n  --currentPanelStack: 1;\n\n  .user-profile-fields {\n    margin: 0 0.5em;\n\n    img {\n      object-fit: contain;\n      vertical-align: middle;\n      max-width: 100%;\n      max-height: 400px;\n\n      &.emoji {\n        width: 18px;\n        height: 18px;\n      }\n    }\n\n    .user-profile-field {\n      display: flex;\n      margin: 0.25em;\n      border: 1px solid var(--border, $fallback--border);\n      border-radius: $fallback--inputRadius;\n      border-radius: var(--inputRadius, $fallback--inputRadius);\n\n      .user-profile-field-name {\n        flex: 0 1 30%;\n        font-weight: 500;\n        text-align: right;\n        color: var(--lightText);\n        min-width: 120px;\n        border-right: 1px solid var(--border, $fallback--border);\n      }\n\n      .user-profile-field-value {\n        flex: 1 1 70%;\n        color: var(--text);\n        margin: 0 0 0 0.25em;\n      }\n\n      .user-profile-field-name, .user-profile-field-value {\n        line-height: 1.3;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        overflow: hidden;\n        padding: 0.5em 1.5em;\n        box-sizing: border-box;\n      }\n    }\n  }\n\n  .userlist-placeholder {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 2em;\n  }\n}\n.user-profile-placeholder {\n  .panel-body {\n    display: flex;\n    justify-content: center;\n    align-items: middle;\n    padding: 7em;\n  }\n}\n</style>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-card-content-container\">\n      <span\n        v-if=\"isMe || (!noFollowsYou && relationship.followed_by)\"\n        class=\"faint\"\n      >\n        {{ isMe ? $t('user_card.its_you') : $t('user_card.follows_you') }}\n      </span>\n      <template v-if=\"!loggedIn\">\n        <div\n          v-if=\"!relationship.following\"\n          class=\"follow-card-follow-button\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n      </template>\n      <template v-else-if=\"!isMe\">\n        <FollowButton\n          :relationship=\"relationship\"\n          :label-following=\"$t('user_card.follow_unfollow')\"\n          class=\"follow-card-follow-button\"\n          :user=\"user\"\n        />\n        <RemoveFollowerButton\n          v-if=\"noFollowsYou && relationship.followed_by\"\n          :relationship=\"relationship\"\n          class=\"follow-card-button\"\n        />\n      </template>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-card {\n  &-content-container {\n    flex-shrink: 0;\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    line-height: 1.5em;\n  }\n\n  &-button {\n    margin-top: 0.5em;\n    padding: 0 1.5em;\n    margin-left: 1em;\n  }\n\n  &-follow-button {\n    margin-top: 0.5em;\n    margin-left: auto;\n    width: 10em;\n  }\n}\n</style>\n","export default {\n  props: ['relationship'],\n  data () {\n    return {\n      inProgress: false\n    }\n  },\n  computed: {\n    label () {\n      if (this.inProgress) {\n        return this.$t('user_card.follow_progress')\n      } else {\n        return this.$t('user_card.remove_follower')\n      }\n    }\n  },\n  methods: {\n    onClick () {\n      this.inProgress = true\n      this.$store.dispatch('removeUserFromFollowers', this.relationship.id).then(() => {\n        this.inProgress = false\n      })\n    }\n  }\n}\n","import { render } from \"./remove_follower_button.vue?vue&type=template&id=abcc0c7a\"\nimport script from \"./remove_follower_button.js?vue&type=script&lang=js\"\nexport * from \"./remove_follower_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    class=\"btn button-default follow-button\"\n    :class=\"{ toggled: inProgress }\"\n    :disabled=\"inProgress\"\n    :title=\"$t('user_card.remove_follower')\"\n    @click=\"onClick\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script src=\"./remove_follower_button.js\"></script>\n","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'\nimport RemoveFollowerButton from '../remove_follower_button/remove_follower_button.vue'\n\nconst FollowCard = {\n  props: [\n    'user',\n    'noFollowsYou'\n  ],\n  components: {\n    BasicUserCard,\n    RemoteFollow,\n    FollowButton,\n    RemoveFollowerButton\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","import { render } from \"./follow_card.vue?vue&type=template&id=0e018ede\"\nimport script from \"./follow_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_card.vue?vue&type=style&index=0&id=0e018ede&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","// eslint-disable-next-line no-unused\nimport { h } from 'vue'\nimport isEmpty from 'lodash/isEmpty'\nimport { getComponentProps } from '../../services/component_utils/component_utils'\nimport './with_load_more.scss'\n\nimport { FontAwesomeIcon as FAIcon } from '@fortawesome/vue-fontawesome'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst withLoadMore = ({\n  fetch, // function to fetch entries and return a promise\n  select, // function to select data from store\n  unmounted, // 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 {\n    props,\n    data () {\n      return {\n        loading: false,\n        bottomedOut: false,\n        error: false,\n        entries: []\n      }\n    },\n    created () {\n      window.addEventListener('scroll', this.scrollLoad)\n      if (this.entries.length === 0) {\n        this.fetchEntries()\n      }\n    },\n    unmounted () {\n      window.removeEventListener('scroll', this.scrollLoad)\n      unmounted && unmounted(this.$props, this.$store)\n    },\n    methods: {\n      // Entries is not a computed because computed can't track the dynamic\n      // selector for changes and won't trigger after fetch.\n      updateEntries () {\n        this.entries = select(this.$props, this.$store) || []\n      },\n      fetchEntries () {\n        if (!this.loading) {\n          this.loading = true\n          this.error = false\n          fetch(this.$props, this.$store)\n            .then((newEntries) => {\n              this.loading = false\n              this.bottomedOut = isEmpty(newEntries)\n            })\n            .catch(() => {\n              this.loading = false\n              this.error = true\n            })\n            .finally(() => {\n              this.updateEntries()\n            })\n        }\n      },\n      scrollLoad (e) {\n        const bodyBRect = document.body.getBoundingClientRect()\n        const height = Math.max(bodyBRect.height, -(bodyBRect.y))\n        if (this.loading === false &&\n          this.bottomedOut === false &&\n          this.$el.offsetHeight > 0 &&\n          (window.innerHeight + window.pageYOffset) >= (height - 750)\n        ) {\n          this.fetchEntries()\n        }\n      }\n    },\n    render () {\n      const props = {\n        ...this.$props,\n        [childPropName]: this.entries\n      }\n      const children = this.$slots\n      return (\n        <div class=\"with-load-more\">\n          <WrappedComponent {...props}>\n            {children}\n          </WrappedComponent>\n          <div class=\"with-load-more-footer\">\n            {this.error &&\n              <button onClick={this.fetchEntries} class=\"button-unstyled -link -fullwidth alert error\">\n                {this.$t('general.generic_error')}\n              </button>\n            }\n            {!this.error && this.loading && <FAIcon spin icon=\"circle-notch\"/>}\n            {!this.error && !this.loading && !this.bottomedOut && <a onClick={this.fetchEntries}>{this.$t('general.more')}</a>}\n          </div>\n        </div>\n      )\n    }\n  }\n}\n\nexport default withLoadMore\n","import get from 'lodash/get'\nimport UserCard from '../user_card/user_card.vue'\nimport FollowCard from '../follow_card/follow_card.vue'\nimport Timeline from '../timeline/timeline.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport List from '../list/list.vue'\nimport withLoadMore from '../../hocs/with_load_more/with_load_more'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst FollowerList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFollowers', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'followerIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFollowers', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst FriendList = withLoadMore({\n  fetch: (props, $store) => $store.dispatch('fetchFriends', props.userId),\n  select: (props, $store) => get($store.getters.findUser(props.userId), 'friendIds', []).map(id => $store.getters.findUser(id)),\n  destroy: (props, $store) => $store.dispatch('clearFriends', props.userId),\n  childPropName: 'items',\n  additionalPropNames: ['userId']\n})(List)\n\nconst defaultTabKey = 'statuses'\n\nconst UserProfile = {\n  data () {\n    return {\n      error: false,\n      userId: null,\n      tab: defaultTabKey,\n      footerRef: null\n    }\n  },\n  created () {\n    const routeParams = this.$route.params\n    this.load({ name: routeParams.name, id: routeParams.id })\n    this.tab = get(this.$route, 'query.tab', defaultTabKey)\n  },\n  unmounted () {\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    setFooterRef (el) {\n      this.footerRef = el\n    },\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      const maybeId = userNameOrId.id\n      const maybeName = userNameOrId.name\n\n      // Check if user data is already loaded in store\n      const user = maybeId ? this.$store.getters.findUser(maybeId) : this.$store.getters.findUserByName(maybeName)\n      if (user) {\n        loadById(user.id)\n      } else {\n        (maybeId\n          ? this.$store.dispatch('fetchUser', maybeId)\n          : this.$store.dispatch('fetchUserByName', maybeName))\n          .then(({ id }) => loadById(id))\n          .catch((reason) => {\n            const errorMessage = get(reason, 'error.error')\n            if (errorMessage === 'No user with such user_id') { // Known error\n              this.error = this.$t('user_profile.profile_does_not_exist')\n            } else if (errorMessage) {\n              this.error = errorMessage\n            } else {\n              this.error = this.$t('user_profile.profile_loading_error')\n            }\n          })\n      }\n    },\n    stopFetching () {\n      this.$store.dispatch('stopFetchingTimeline', 'user')\n      this.$store.dispatch('stopFetchingTimeline', 'favorites')\n      this.$store.dispatch('stopFetchingTimeline', 'media')\n    },\n    switchUser (userNameOrId) {\n      this.stopFetching()\n      this.load(userNameOrId)\n    },\n    onTabSwitch (tab) {\n      this.tab = tab\n      this.$router.replace({ query: { tab } })\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    }\n  },\n  watch: {\n    '$route.params.id': function (newVal) {\n      if (newVal) {\n        this.switchUser({ id: newVal })\n      }\n    },\n    '$route.params.name': function (newVal) {\n      if (newVal) {\n        this.switchUser({ name: newVal })\n      }\n    },\n    '$route.query': function (newVal) {\n      this.tab = newVal.tab || defaultTabKey\n    }\n  },\n  components: {\n    UserCard,\n    Timeline,\n    FollowerList,\n    FriendList,\n    FollowCard,\n    TabSwitcher,\n    Conversation,\n    RichContent\n  }\n}\n\nexport default UserProfile\n","import { render } from \"./user_profile.vue?vue&type=template&id=1447818b\"\nimport script from \"./user_profile.js?vue&type=script&lang=js\"\nexport * from \"./user_profile.js?vue&type=script&lang=js\"\n\nimport \"./user_profile.vue?vue&type=style&index=0&id=1447818b&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.search') }}\n      </div>\n    </div>\n    <div class=\"search-input-container\">\n      <input\n        ref=\"searchInput\"\n        v-model=\"searchTerm\"\n        class=\"search-input\"\n        :placeholder=\"$t('nav.search')\"\n        @keyup.enter=\"newQuery(searchTerm)\"\n      >\n      <button\n        class=\"btn button-default search-button\"\n        type=\"submit\"\n        @click=\"newQuery(searchTerm)\"\n      >\n        <FAIcon icon=\"search\" />\n      </button>\n    </div>\n    <div\n      v-if=\"loading && statusesOffset == 0\"\n      class=\"text-center loading-icon\"\n    >\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"lg\"\n      />\n    </div>\n    <div v-else-if=\"loaded\">\n      <div class=\"search-nav-heading\">\n        <tab-switcher\n          ref=\"tabSwitcher\"\n          :on-switch=\"onResultTabSwitch\"\n          :active-tab=\"currenResultTab\"\n        >\n          <span\n            key=\"statuses\"\n            :label=\"$t('user_card.statuses') + resultCount('visibleStatuses')\"\n          />\n          <span\n            key=\"people\"\n            :label=\"$t('search.people') + resultCount('users')\"\n          />\n          <span\n            key=\"hashtags\"\n            :label=\"$t('search.hashtags') + resultCount('hashtags')\"\n          />\n        </tab-switcher>\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <div v-if=\"currenResultTab === 'statuses'\">\n        <Status\n          v-for=\"status in visibleStatuses\"\n          :key=\"status.id\"\n          :collapsable=\"false\"\n          :expandable=\"false\"\n          :compact=\"false\"\n          class=\"search-result\"\n          :statusoid=\"status\"\n          :no-heading=\"false\"\n        />\n        <button\n          v-if=\"!loading && loaded && lastStatusFetchCount > 0\"\n          class=\"more-statuses-button button-unstyled -link -fullwidth\"\n          @click.prevent=\"search(searchTerm, 'statuses')\"\n        >\n          <div class=\"new-status-notification text-center\">\n            {{ $t('search.load_more') }}\n          </div>\n        </button>\n        <div\n          v-else-if=\"loading && statusesOffset > 0\"\n          class=\"text-center loading-icon\"\n        >\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"lg\"\n          />\n        </div>\n        <div\n          v-if=\"(visibleStatuses.length === 0 || lastStatusFetchCount === 0) && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>\n            {{ visibleStatuses.length === 0 ? $t('search.no_results') : $t('search.no_more_results') }}\n          </h4>\n        </div>\n      </div>\n      <div v-else-if=\"currenResultTab === 'people'\">\n        <div\n          v-if=\"users.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <FollowCard\n          v-for=\"user in users\"\n          :key=\"user.id\"\n          :user=\"user\"\n          class=\"list-item search-result\"\n        />\n      </div>\n      <div v-else-if=\"currenResultTab === 'hashtags'\">\n        <div\n          v-if=\"hashtags.length === 0 && !loading && loaded\"\n          class=\"search-result-heading\"\n        >\n          <h4>{{ $t('search.no_results') }}</h4>\n        </div>\n        <div\n          v-for=\"hashtag in hashtags\"\n          :key=\"hashtag.url\"\n          class=\"status trend search-result\"\n        >\n          <div class=\"hashtag\">\n            <router-link :to=\"{ name: 'tag-timeline', params: { tag: hashtag.name } }\">\n              #{{ hashtag.name }}\n            </router-link>\n            <div v-if=\"lastHistoryRecord(hashtag)\">\n              <span v-if=\"lastHistoryRecord(hashtag).accounts == 1\">\n                {{ $t('search.person_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n              <span v-else>\n                {{ $t('search.people_talking', { count: lastHistoryRecord(hashtag).accounts }) }}\n              </span>\n            </div>\n          </div>\n          <div\n            v-if=\"lastHistoryRecord(hashtag)\"\n            class=\"count\"\n          >\n            {{ lastHistoryRecord(hashtag).uses }}\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class=\"search-result-footer text-center panel-footer faint\" />\n  </div>\n</template>\n\n<script src=\"./search.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.search-result-heading {\n  color: $fallback--faint;\n  color: var(--faint, $fallback--faint);\n  padding: 0.75rem;\n  text-align: center;\n}\n\n@media all and (max-width: 800px) {\n  .search-nav-heading {\n    .tab-switcher .tabs .tab-wrapper {\n      display: block;\n      justify-content: center;\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n}\n\n.search-result {\n  box-sizing: border-box;\n  border-bottom: 1px solid;\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n\n.search-result-footer {\n  border-width: 1px 0 0 0;\n  border-style: solid;\n  border-color: var(--border, $fallback--border);\n  padding: 10px;\n  background-color: $fallback--fg;\n  background-color: var(--panel, $fallback--fg);\n}\n\n.search-input-container {\n  padding: 0.8rem;\n  display: flex;\n  justify-content: center;\n\n  .search-input {\n    width: 100%;\n    line-height: 1.125rem;\n    font-size: 1rem;\n    padding: 0.5rem;\n    box-sizing: border-box;\n  }\n\n  .search-button {\n    margin-left: 0.5em;\n  }\n}\n\n.loading-icon {\n  padding: 1em;\n}\n\n.trend {\n  display: flex;\n  align-items: center;\n\n  .hashtag {\n    flex: 1 1 auto;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .count {\n    flex: 0 0 auto;\n    width: 2rem;\n    font-size: 1.5rem;\n    line-height: 2.25rem;\n    font-weight: 500;\n    text-align: center;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n  }\n\n  .more-statuses-button {\n    height: 3.5em;\n    line-height: 3.5em;\n  }\n\n</style>\n","import FollowCard from '../follow_card/follow_card.vue'\nimport Conversation from '../conversation/conversation.vue'\nimport Status from '../status/status.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport map from 'lodash/map'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faSearch\n} from '@fortawesome/free-solid-svg-icons'\nimport { uniqBy } from 'lodash'\n\nlibrary.add(\n  faCircleNotch,\n  faSearch\n)\n\nconst Search = {\n  components: {\n    FollowCard,\n    Conversation,\n    Status,\n    TabSwitcher\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      statusesOffset: 0,\n      lastStatusFetchCount: 0,\n      lastQuery: ''\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, searchType = null) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.$refs.searchInput.blur()\n      if (this.lastQuery !== query) {\n        this.userIds = []\n        this.hashtags = []\n        this.statuses = []\n\n        this.statusesOffset = 0\n        this.lastStatusFetchCount = 0\n      }\n\n      this.$store.dispatch('search', { q: query, resolve: true, offset: this.statusesOffset, type: searchType })\n        .then(data => {\n          this.loading = false\n\n          const oldLength = this.statuses.length\n\n          // Always append to old results. If new results are empty, this doesn't change anything\n          this.userIds = this.userIds.concat(map(data.accounts, 'id'))\n          this.statuses = uniqBy(this.statuses.concat(data.statuses), 'id')\n          this.hashtags = this.hashtags.concat(data.hashtags)\n\n          this.currenResultTab = this.getActiveTab()\n          this.loaded = true\n\n          // Offset from whatever we already have\n          this.statusesOffset = this.statuses.length\n          // Because the amount of new statuses can actually be zero, compare to old lenght instead\n          this.lastStatusFetchCount = this.statuses.length - oldLength\n          this.lastQuery = query\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","import { render } from \"./search.vue?vue&type=template&id=126b6dad\"\nimport script from \"./search.js?vue&type=script&lang=js\"\nexport * from \"./search.js?vue&type=script&lang=js\"\n\nimport \"./search.vue?vue&type=style&index=0&id=126b6dad&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('registration.registration') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"registration-form\"\n        @submit.prevent=\"submit(user)\"\n      >\n        <div class=\"container\">\n          <div class=\"text-fields\">\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.username.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-username\"\n              >{{ $t('login.username') }}</label>\n              <input\n                id=\"sign-up-username\"\n                v-model.trim=\"v$.user.username.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :aria-required=\"true\"\n                :placeholder=\"$t('registration.username_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.username.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.username.required\">\n                  <span>{{ $t('registration.validations.username_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.fullname.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-fullname\"\n              >{{ $t('registration.fullname') }}</label>\n              <input\n                id=\"sign-up-fullname\"\n                v-model.trim=\"v$.user.fullname.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :aria-required=\"true\"\n                :placeholder=\"$t('registration.fullname_placeholder')\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.fullname.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.fullname.required\">\n                  <span>{{ $t('registration.validations.fullname_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.email.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"email\"\n              >{{ accountActivationRequired ? $t('registration.email') : $t('registration.email_optional') }}</label>\n              <input\n                id=\"email\"\n                v-model=\"v$.user.email.$model\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"email\"\n                :aria-required=\"accountActivationRequired\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.email.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.email.required\">\n                  <span>{{ $t('registration.validations.email_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div class=\"form-group\">\n              <label\n                class=\"form--label\"\n                for=\"bio\"\n              >{{ $t('registration.bio_optional') }}</label>\n              <textarea\n                id=\"bio\"\n                v-model=\"user.bio\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"bioPlaceholder\"\n              />\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.password.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password\"\n              >{{ $t('login.password') }}</label>\n              <input\n                id=\"sign-up-password\"\n                v-model=\"user.password\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n                :aria-required=\"true\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.password.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"!v$.user.password.required\">\n                  <span>{{ $t('registration.validations.password_required') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.confirm.$error }\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"sign-up-password-confirmation\"\n              >{{ $t('registration.password_confirm') }}</label>\n              <input\n                id=\"sign-up-password-confirmation\"\n                v-model=\"user.confirm\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                type=\"password\"\n                :aria-required=\"true\"\n              >\n            </div>\n            <div\n              v-if=\"v$.user.confirm.$dirty\"\n              class=\"form-error\"\n            >\n              <ul>\n                <li v-if=\"v$.user.confirm.required.$invalid\">\n                  <span>{{ $t('registration.validations.password_confirmation_required') }}</span>\n                </li>\n                <li v-if=\"v$.user.confirm.sameAs.$invalid\">\n                  <span>{{ $t('registration.validations.password_confirmation_match') }}</span>\n                </li>\n              </ul>\n            </div>\n\n            <div\n              class=\"form-group\"\n              :class=\"{ 'form-group--error': v$.user.language.$error }\"\n            >\n              <interface-language-switcher\n                for=\"email-language\"\n                :prompt-text=\"$t('registration.email_language')\"\n                :language=\"v$.user.language.$model\"\n                :set-language=\"val => v$.user.language.$model = val\"\n              />\n            </div>\n\n            <div\n              v-if=\"accountApprovalRequired\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"reason\"\n              >{{ $t('registration.reason') }}</label>\n              <textarea\n                id=\"reason\"\n                v-model=\"user.reason\"\n                :disabled=\"isPending\"\n                class=\"form-control\"\n                :placeholder=\"reasonPlaceholder\"\n              />\n            </div>\n\n            <div\n              v-if=\"captcha.type != 'none'\"\n              id=\"captcha-group\"\n              class=\"form-group\"\n            >\n              <label\n                class=\"form--label\"\n                for=\"captcha-label\"\n              >{{ $t('registration.captcha') }}</label>\n\n              <template v-if=\"['kocaptcha', 'native'].includes(captcha.type)\">\n                <img\n                  :src=\"captcha.url\"\n                  @click=\"setCaptcha\"\n                >\n\n                <sub>{{ $t('registration.new_captcha') }}</sub>\n\n                <input\n                  id=\"captcha-answer\"\n                  v-model=\"captcha.solution\"\n                  :disabled=\"isPending\"\n                  class=\"form-control\"\n                  type=\"text\"\n                  autocomplete=\"off\"\n                  autocorrect=\"off\"\n                  autocapitalize=\"off\"\n                  spellcheck=\"false\"\n                >\n              </template>\n            </div>\n\n            <div\n              v-if=\"token\"\n              class=\"form-group\"\n            >\n              <label for=\"token\">{{ $t('registration.token') }}</label>\n              <input\n                id=\"token\"\n                v-model=\"token\"\n                disabled=\"true\"\n                class=\"form-control\"\n                type=\"text\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default\"\n              >\n                {{ $t('registration.register') }}\n              </button>\n            </div>\n          </div>\n\n          <!-- eslint-disable vue/no-v-html -->\n          <div\n            class=\"terms-of-service\"\n            v-html=\"termsOfService\"\n          />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n        <div\n          v-if=\"serverValidationErrors.length\"\n          class=\"form-group\"\n        >\n          <div class=\"alert error\">\n            <span\n              v-for=\"error in serverValidationErrors\"\n              :key=\"error\"\n            >{{ error }}</span>\n          </div>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n$validations-cRed: #f04124;\n\n.registration-form {\n  display: flex;\n  flex-direction: column;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex-direction: row;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .terms-of-service {\n    flex: 0 1 50%;\n    margin: 0.8em;\n  }\n\n  .text-fields {\n    margin-top: 0.6em;\n    flex: 1 0;\n    display: flex;\n    flex-direction: column;\n  }\n\n  textarea {\n    min-height: 100px;\n    resize: vertical;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.3em 0;\n    line-height: 2;\n    margin-bottom: 1em;\n  }\n\n  .form-group--error {\n    animation-name: shakeError;\n    animation-duration: .6s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .form-group--error .form--label {\n    color: $validations-cRed;\n    color: var(--cRed, $validations-cRed);\n  }\n\n  .form-error {\n    margin-top: -0.7em;\n    text-align: left;\n\n    span {\n      font-size: 0.85em;\n    }\n  }\n\n  .form-error ul {\n    list-style: none;\n    padding: 0 0 0 5px;\n    margin-top: 0;\n\n    li::before {\n      content: \"• \";\n    }\n  }\n\n  form textarea {\n    line-height:16px;\n    resize: vertical;\n  }\n\n  .captcha {\n    max-width: 350px;\n    margin-bottom: 0.4em;\n  }\n\n  .btn {\n    margin-top: 0.6em;\n    height: 2em;\n  }\n\n  .error {\n    text-align: center;\n  }\n}\n\n@media all and (max-width: 800px) {\n  .registration-form .container {\n    flex-direction: column-reverse;\n  }\n}\n</style>\n","import useVuelidate from '@vuelidate/core'\nimport { required, requiredIf, sameAs } from '@vuelidate/validators'\nimport { mapActions, mapState } from 'vuex'\nimport InterfaceLanguageSwitcher from '../interface_language_switcher/interface_language_switcher.vue'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst registration = {\n  setup () { return { v$: useVuelidate() } },\n  data: () => ({\n    user: {\n      email: '',\n      fullname: '',\n      username: '',\n      password: '',\n      confirm: '',\n      reason: '',\n      language: ''\n    },\n    captcha: {}\n  }),\n  components: {\n    InterfaceLanguageSwitcher\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          sameAs: sameAs(this.user.password)\n        },\n        reason: { required: requiredIf(() => this.accountApprovalRequired) },\n        language: {}\n      }\n    }\n  },\n  created () {\n    if ((!this.registrationOpen && !this.token) || this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n\n    this.setCaptcha()\n  },\n  computed: {\n    token () { return this.$route.params.token },\n    bioPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.bio_placeholder'))\n    },\n    reasonPlaceholder () {\n      return this.replaceNewlines(this.$t('registration.reason_placeholder'))\n    },\n    ...mapState({\n      registrationOpen: (state) => state.instance.registrationOpen,\n      signedIn: (state) => !!state.users.currentUser,\n      isPending: (state) => state.users.signUpPending,\n      serverValidationErrors: (state) => state.users.signUpErrors,\n      termsOfService: (state) => state.instance.tos,\n      accountActivationRequired: (state) => state.instance.accountActivationRequired,\n      accountApprovalRequired: (state) => state.instance.accountApprovalRequired\n    })\n  },\n  methods: {\n    ...mapActions(['signUp', 'getCaptcha']),\n    async submit () {\n      this.user.nickname = this.user.username\n      this.user.token = this.token\n\n      this.user.captcha_solution = this.captcha.solution\n      this.user.captcha_token = this.captcha.token\n      this.user.captcha_answer_data = this.captcha.answer_data\n      if (this.user.language) {\n        this.user.language = localeService.internalToBackendLocale(this.user.language)\n      }\n\n      this.v$.$touch()\n\n      if (!this.v$.$invalid) {\n        try {\n          await this.signUp(this.user)\n          this.$router.push({ name: 'friends' })\n        } catch (error) {\n          console.warn('Registration failed: ', error)\n          this.setCaptcha()\n        }\n      }\n    },\n    setCaptcha () {\n      this.getCaptcha().then(cpt => { this.captcha = cpt })\n    },\n    replaceNewlines (str) {\n      return str.replace(/\\s*\\n\\s*/g, ' \\n')\n    }\n  }\n}\n\nexport default registration\n","import { render } from \"./registration.vue?vue&type=template&id=93824558\"\nimport script from \"./registration.js?vue&type=script&lang=js\"\nexport * from \"./registration.js?vue&type=script&lang=js\"\n\nimport \"./registration.vue?vue&type=style&index=0&id=93824558&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('password_reset.password_reset') }}\n    </div>\n    <div class=\"panel-body\">\n      <form\n        class=\"password-reset-form\"\n        @submit.prevent=\"submit\"\n      >\n        <div class=\"container\">\n          <div v-if=\"!mailerEnabled\">\n            <p v-if=\"passwordResetRequested\">\n              {{ $t('password_reset.password_reset_required_but_mailer_is_disabled') }}\n            </p>\n            <p v-else>\n              {{ $t('password_reset.password_reset_disabled') }}\n            </p>\n          </div>\n          <div v-else-if=\"success || throttled\">\n            <p v-if=\"success\">\n              {{ $t('password_reset.check_email') }}\n            </p>\n            <div class=\"form-group text-center\">\n              <router-link :to=\"{name: 'root'}\">\n                {{ $t('password_reset.return_home') }}\n              </router-link>\n            </div>\n          </div>\n          <div v-else>\n            <p\n              v-if=\"passwordResetRequested\"\n              class=\"password-reset-required error\"\n            >\n              {{ $t('password_reset.password_reset_required') }}\n            </p>\n            <p>\n              {{ $t('password_reset.instruction') }}\n            </p>\n            <div class=\"form-group\">\n              <input\n                ref=\"email\"\n                v-model=\"user.email\"\n                :disabled=\"isPending\"\n                :placeholder=\"$t('password_reset.placeholder')\"\n                class=\"form-control\"\n                type=\"input\"\n              >\n            </div>\n            <div class=\"form-group\">\n              <button\n                :disabled=\"isPending\"\n                type=\"submit\"\n                class=\"btn button-default btn-block\"\n              >\n                {{ $t('settings.save') }}\n              </button>\n            </div>\n          </div>\n          <p\n            v-if=\"error\"\n            class=\"alert error notice-dismissible\"\n          >\n            <span>{{ error }}</span>\n            <a\n              class=\"fa-scale-110 fa-old-padding dismiss\"\n              @click.prevent=\"dismissError()\"\n            >\n              <FAIcon icon=\"times\" />\n            </a>\n          </p>\n        </div>\n      </form>\n    </div>\n  </div>\n</template>\n\n<script src=\"./password_reset.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.password-reset-form {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  margin: 0.6em;\n\n  .container {\n    display: flex;\n    flex: 1 0;\n    flex-direction: column;\n    margin-top: 0.6em;\n    max-width: 18rem;\n\n    > * {\n      min-width: 0;\n    }\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    margin-bottom: 1em;\n    padding: 0.3em 0;\n    line-height: 1.85em;\n  }\n\n  .error {\n    text-align: center;\n    animation-name: shakeError;\n    animation-duration: 0.4s;\n    animation-timing-function: ease-in-out;\n  }\n\n  .alert {\n    padding: 0.5em;\n    margin: 0.3em 0 1em;\n  }\n\n  .password-reset-required {\n    background-color: var(--alertError, $fallback--alertError);\n    padding: 10px 0;\n  }\n\n  .notice-dismissible {\n    padding-right: 2rem;\n  }\n\n  .dismiss {\n    cursor: pointer;\n  }\n}\n\n</style>\n","import { mapState } from 'vuex'\nimport passwordResetApi from '../../services/new_api/password_reset.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes\n)\n\nconst passwordReset = {\n  data: () => ({\n    user: {\n      email: ''\n    },\n    isPending: false,\n    success: false,\n    throttled: false,\n    error: null\n  }),\n  computed: {\n    ...mapState({\n      signedIn: (state) => !!state.users.currentUser,\n      instance: state => state.instance\n    }),\n    mailerEnabled () {\n      return this.instance.mailerEnabled\n    }\n  },\n  created () {\n    if (this.signedIn) {\n      this.$router.push({ name: 'root' })\n    }\n  },\n  props: {\n    passwordResetRequested: {\n      default: false,\n      type: Boolean\n    }\n  },\n  methods: {\n    dismissError () {\n      this.error = null\n    },\n    submit () {\n      this.isPending = true\n      const email = this.user.email\n      const instance = this.instance.server\n\n      passwordResetApi({ instance, email }).then(({ status }) => {\n        this.isPending = false\n        this.user.email = ''\n\n        if (status === 204) {\n          this.success = true\n          this.error = null\n        } else if (status === 429) {\n          this.throttled = true\n          this.error = this.$t('password_reset.too_many_requests')\n        }\n      }).catch(() => {\n        this.isPending = false\n        this.user.email = ''\n        this.error = this.$t('general.generic_error')\n      })\n    }\n  }\n}\n\nexport default passwordReset\n","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 { render } from \"./password_reset.vue?vue&type=template&id=3a677309\"\nimport script from \"./password_reset.js?vue&type=script&lang=js\"\nexport * from \"./password_reset.js?vue&type=script&lang=js\"\n\nimport \"./password_reset.vue?vue&type=style&index=0&id=3a677309&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"settings panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('nav.friend_requests') }}\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <FollowRequestCard\n        v-for=\"request in requests\"\n        :key=\"request.id\"\n        :user=\"request\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./follow_requests.js\"></script>\n","<template>\n  <basic-user-card :user=\"user\">\n    <div class=\"follow-request-card-content-container\">\n      <button\n        class=\"btn button-default\"\n        @click=\"approveUser\"\n      >\n        {{ $t('user_card.approve') }}\n      </button>\n      <button\n        class=\"btn button-default\"\n        @click=\"denyUser\"\n      >\n        {{ $t('user_card.deny') }}\n      </button>\n    </div>\n  </basic-user-card>\n</template>\n\n<script src=\"./follow_request_card.js\"></script>\n\n<style lang=\"scss\">\n.follow-request-card-content-container {\n  display: flex;\n  flex-direction: row;\n  flex-wrap: wrap;\n  button {\n    margin-top: 0.5em;\n    margin-right: 0.5em;\n    flex: 1 1;\n    max-width: 12em;\n    min-width: 8em;\n\n    &:last-child {\n      margin-right: 0;\n    }\n  }\n}\n</style>\n","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","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","import { render } from \"./follow_request_card.vue?vue&type=template&id=84be1288\"\nimport script from \"./follow_request_card.js?vue&type=script&lang=js\"\nexport * from \"./follow_request_card.js?vue&type=script&lang=js\"\n\nimport \"./follow_request_card.vue?vue&type=style&index=0&id=84be1288&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./follow_requests.vue?vue&type=template&id=62e19784\"\nimport script from \"./follow_requests.js?vue&type=script&lang=js\"\nexport * from \"./follow_requests.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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","import { render } from \"./oauth_callback.vue?vue&type=template&id=f514124c\"\nimport script from \"./oauth_callback.js?vue&type=script&lang=js\"\nexport * from \"./oauth_callback.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <h1>...</h1>\n</template>\n\n<script src=\"./oauth_callback.js\"></script>\n","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('who_to_follow.who_to_follow') }}\n    </div>\n    <div class=\"panel-body\">\n      <FollowCard\n        v-for=\"user in users\"\n        :key=\"user.id\"\n        :user=\"user\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./who_to_follow.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","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 })\n          .then((reply) => {\n            this.showWhoToFollow(reply)\n          })\n      }\n    }\n  }\n}\n\nexport default WhoToFollow\n","import { render } from \"./who_to_follow.vue?vue&type=template&id=4f8c3288\"\nimport script from \"./who_to_follow.js?vue&type=script&lang=js\"\nexport * from \"./who_to_follow.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"column-inner\">\n    <instance-specific-panel v-if=\"showInstanceSpecificPanel\" />\n    <staff-panel />\n    <terms-of-service-panel />\n    <MRFTransparencyPanel />\n    <features-panel v-if=\"showFeaturesPanel\" />\n  </div>\n</template>\n\n<script src=\"./about.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","<template>\n  <div>\n    <div class=\"panel panel-default\">\n      <div class=\"panel-body\">\n        <!-- eslint-disable vue/no-v-html -->\n        <div\n          class=\"tos-content\"\n          v-html=\"content\"\n        />\n      <!-- eslint-enable vue/no-v-html -->\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./terms_of_service_panel.js\"></script>\n\n<style lang=\"scss\">\n.tos-content {\n  margin: 1em\n}\n</style>\n","const TermsOfServicePanel = {\n  computed: {\n    content () {\n      return this.$store.state.instance.tos\n    }\n  }\n}\n\nexport default TermsOfServicePanel\n","import { render } from \"./terms_of_service_panel.vue?vue&type=template&id=d59fafc6\"\nimport script from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\nexport * from \"./terms_of_service_panel.js?vue&type=script&lang=js\"\n\nimport \"./terms_of_service_panel.vue?vue&type=style&index=0&id=d59fafc6&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"staff-panel\">\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.staff\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div\n          v-for=\"group in groupedStaffAccounts\"\n          :key=\"group.role\"\n          class=\"staff-group\"\n        >\n          <h4>{{ $t('general.role.' + group.role) }}</h4>\n          <basic-user-card\n            v-for=\"user in group.users\"\n            :key=\"user.screen_name\"\n            :user=\"user\"\n          />\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./staff_panel.js\"></script>\n\n<style lang=\"scss\">\n\n.staff-group {\n  padding-left: 1em;\n  padding-top: 1em;\n\n  .basic-user-card {\n    padding-left: 0;\n  }\n}\n\n</style>\n","import map from 'lodash/map'\nimport groupBy from 'lodash/groupBy'\nimport { mapGetters, mapState } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\n\nconst StaffPanel = {\n  created () {\n    const nicknames = this.$store.state.instance.staffAccounts\n    nicknames.forEach(nickname => this.$store.dispatch('fetchUserIfMissing', nickname))\n  },\n  components: {\n    BasicUserCard\n  },\n  computed: {\n    groupedStaffAccounts () {\n      const staffAccounts = map(this.staffAccounts, this.findUserByName).filter(_ => _)\n      const groupedStaffAccounts = groupBy(staffAccounts, 'role')\n\n      return [\n        { role: 'admin', users: groupedStaffAccounts.admin },\n        { role: 'moderator', users: groupedStaffAccounts.moderator }\n      ].filter(group => group.users)\n    },\n    ...mapGetters([\n      'findUserByName'\n    ]),\n    ...mapState({\n      staffAccounts: state => state.instance.staffAccounts\n    })\n  }\n}\n\nexport default StaffPanel\n","import { render } from \"./staff_panel.vue?vue&type=template&id=a0d4ae68\"\nimport script from \"./staff_panel.js?vue&type=script&lang=js\"\nexport * from \"./staff_panel.js?vue&type=script&lang=js\"\n\nimport \"./staff_panel.vue?vue&type=style&index=0&id=a0d4ae68&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"federationPolicy\"\n    class=\"mrf-transparency-panel\"\n  >\n    <div class=\"panel panel-default base01-background\">\n      <div class=\"panel-heading timeline-heading base02-background\">\n        <div class=\"title\">\n          {{ $t(\"about.mrf.federation\") }}\n        </div>\n      </div>\n      <div class=\"panel-body\">\n        <div class=\"mrf-section\">\n          <h2>{{ $t(\"about.mrf.mrf_policies\") }}</h2>\n          <p>{{ $t(\"about.mrf.mrf_policies_desc\") }}</p>\n\n          <ul>\n            <li\n              v-for=\"policy in mrfPolicies\"\n              :key=\"policy\"\n              v-text=\"policy\"\n            />\n          </ul>\n\n          <h2 v-if=\"hasInstanceSpecificPolicies\">\n            {{ $t(\"about.mrf.simple.simple_policies\") }}\n          </h2>\n\n          <div v-if=\"acceptInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.accept\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.accept_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in acceptInstances\"\n                :key=\"entry.instance + '_accept'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"rejectInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.reject\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.reject_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in rejectInstances\"\n                :key=\"entry.instance + '_reject'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"quarantineInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.quarantine\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.quarantine_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in quarantineInstances\"\n                :key=\"entry.instance + '_quarantine'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"ftlRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.ftl_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.ftl_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in ftlRemovalInstances\"\n                :key=\"entry.instance + '_ftl_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaNsfwInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_nsfw\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_nsfw_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaNsfwInstances\"\n                :key=\"entry.instance + '_media_nsfw'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <div v-if=\"mediaRemovalInstances.length\">\n            <h4>{{ $t(\"about.mrf.simple.media_removal\") }}</h4>\n\n            <p>{{ $t(\"about.mrf.simple.media_removal_desc\") }}</p>\n\n            <table>\n              <tr>\n                <th>{{ $t(\"about.mrf.simple.instance\") }}</th>\n                <th>{{ $t(\"about.mrf.simple.reason\") }}</th>\n              </tr>\n              <tr\n                v-for=\"entry in mediaRemovalInstances\"\n                :key=\"entry.instance + '_media_removal'\"\n              >\n                <td>{{ entry.instance }}</td>\n                <td v-if=\"entry.reason === ''\">\n                  {{ $t(\"about.mrf.simple.not_applicable\") }}\n                </td>\n                <td v-else>\n                  {{ entry.reason }}\n                </td>\n              </tr>\n            </table>\n          </div>\n\n          <h2 v-if=\"hasKeywordPolicies\">\n            {{ $t(\"about.mrf.keyword.keyword_policies\") }}\n          </h2>\n\n          <div v-if=\"keywordsFtlRemoval.length\">\n            <h4>{{ $t(\"about.mrf.keyword.ftl_removal\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsFtlRemoval\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReject.length\">\n            <h4>{{ $t(\"about.mrf.keyword.reject\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReject\"\n                :key=\"keyword\"\n                v-text=\"keyword\"\n              />\n            </ul>\n          </div>\n\n          <div v-if=\"keywordsReplace.length\">\n            <h4>{{ $t(\"about.mrf.keyword.replace\") }}</h4>\n\n            <ul>\n              <li\n                v-for=\"keyword in keywordsReplace\"\n                :key=\"keyword\"\n              >\n                {{ keyword.pattern }}\n                {{ $t(\"about.mrf.keyword.is_replaced_by\") }}\n                {{ keyword.replacement }}\n              </li>\n            </ul>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./mrf_transparency_panel.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import './mrf_transparency_panel.scss';\n</style>\n","import { mapState } from 'vuex'\nimport { get } from 'lodash'\n\n/**\n * This is for backwards compatibility. We originally didn't recieve\n * extra info like a reason why an instance was rejected/quarantined/etc.\n * Because we didn't want to break backwards compatibility it was decided\n * to add an extra \"info\" key.\n */\nconst toInstanceReasonObject = (instances, info, key) => {\n  return instances.map(instance => {\n    if (info[key] && info[key][instance] && info[key][instance].reason) {\n      return { instance, reason: info[key][instance].reason }\n    }\n    return { instance, reason: '' }\n  })\n}\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 => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.quarantined_instances', []),\n        get(state, 'instance.federationPolicy.quarantined_instances_info', []),\n        'quarantined_instances'\n      ),\n      acceptInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.accept', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'accept'\n      ),\n      rejectInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.reject', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'reject'\n      ),\n      ftlRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.federated_timeline_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'federated_timeline_removal'\n      ),\n      mediaNsfwInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_nsfw', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_nsfw'\n      ),\n      mediaRemovalInstances: state => toInstanceReasonObject(\n        get(state, 'instance.federationPolicy.mrf_simple.media_removal', []),\n        get(state, 'instance.federationPolicy.mrf_simple_info', []),\n        'media_removal'\n      ),\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","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","import { render } from \"./mrf_transparency_panel.vue?vue&type=template&id=7f2ca562\"\nimport script from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\nexport * from \"./mrf_transparency_panel.js?vue&type=script&lang=js\"\n\nimport \"./mrf_transparency_panel.vue?vue&type=style&index=0&id=7f2ca562&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./about.vue?vue&type=template&id=1fedeaa2\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default\">\n    <div class=\"panel-heading\">\n      {{ $t('remote_user_resolver.remote_user_resolver') }}\n    </div>\n    <div class=\"panel-body\">\n      <p>\n        {{ $t('remote_user_resolver.searching_for') }} @{{ $route.params.username }}@{{ $route.params.hostname }}\n      </p>\n      <p v-if=\"error\">\n        {{ $t('remote_user_resolver.error') }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./remote_user_resolver.js\"></script>\n\n<style lang=\"scss\">\n</style>\n","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","import { render } from \"./remote_user_resolver.vue?vue&type=template&id=198402c4\"\nimport script from \"./remote_user_resolver.js?vue&type=script&lang=js\"\nexport * from \"./remote_user_resolver.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"Lists panel panel-default\">\n    <div class=\"panel-heading\">\n      <div class=\"title\">\n        {{ $t('lists.lists') }}\n      </div>\n      <router-link\n        :to=\"{ name: 'lists-new' }\"\n        class=\"button-default btn new-list-button\"\n      >\n        {{ $t(\"lists.new\") }}\n      </router-link>\n    </div>\n    <div class=\"panel-body\">\n      <ListsCard\n        v-for=\"list in lists.slice().reverse()\"\n        :key=\"list\"\n        :list=\"list\"\n        class=\"list-item\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./lists.js\"></script>\n\n<style lang=\"scss\">\n.Lists {\n  .new-list-button {\n    padding: 0 0.5em;\n  }\n}\n</style>\n","<template>\n  <div class=\"list-card\">\n    <router-link\n      :to=\"{ name: 'lists-timeline', params: { id: list.id } }\"\n      class=\"list-name\"\n    >\n      {{ list.title }}\n    </router-link>\n    <router-link\n      :to=\"{ name: 'lists-edit', params: { id: list.id } }\"\n      class=\"button-list-edit\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"ellipsis-h\"\n      />\n    </router-link>\n  </div>\n</template>\n\n<script src=\"./lists_card.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.list-card {\n  display: flex;\n}\n\n.list-name,\n.button-list-edit {\n  margin: 0;\n  padding: 1em;\n  color: $fallback--link;\n  color: var(--link, $fallback--link);\n\n  &:hover {\n    background-color: $fallback--lightBg;\n    background-color: var(--selectedMenu, $fallback--lightBg);\n    color: $fallback--link;\n    color: var(--selectedMenuText, $fallback--link);\n    --faint: var(--selectedMenuFaintText, $fallback--faint);\n    --faintLink: var(--selectedMenuFaintLink, $fallback--faint);\n    --lightText: var(--selectedMenuLightText, $fallback--lightText);\n  }\n}\n\n.list-name {\n  flex-grow: 1;\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEllipsisH\n)\n\nconst ListsCard = {\n  props: [\n    'list'\n  ]\n}\n\nexport default ListsCard\n","import ListsCard from '../lists_card/lists_card.vue'\n\nconst Lists = {\n  data () {\n    return {\n      isNew: false\n    }\n  },\n  components: {\n    ListsCard\n  },\n  computed: {\n    lists () {\n      return this.$store.state.lists.allLists\n    }\n  },\n  methods: {\n    cancelNewList () {\n      this.isNew = false\n    },\n    newList () {\n      this.isNew = true\n    }\n  }\n}\n\nexport default Lists\n","import { render } from \"./lists_card.vue?vue&type=template&id=88e30e48\"\nimport script from \"./lists_card.js?vue&type=script&lang=js\"\nexport * from \"./lists_card.js?vue&type=script&lang=js\"\n\nimport \"./lists_card.vue?vue&type=style&index=0&id=88e30e48&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./lists.vue?vue&type=template&id=273aca3d\"\nimport script from \"./lists.js?vue&type=script&lang=js\"\nexport * from \"./lists.js?vue&type=script&lang=js\"\n\nimport \"./lists.vue?vue&type=style&index=0&id=273aca3d&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Timeline from '../timeline/timeline.vue'\nconst ListsTimeline = {\n  data () {\n    return {\n      listId: null\n    }\n  },\n  components: {\n    Timeline\n  },\n  computed: {\n    timeline () { return this.$store.state.statuses.timelines.list }\n  },\n  watch: {\n    $route: function (route) {\n      if (route.name === 'lists-timeline' && route.params.id !== this.listId) {\n        this.listId = route.params.id\n        this.$store.dispatch('stopFetchingTimeline', 'list')\n        this.$store.commit('clearTimeline', { timeline: 'list' })\n        this.$store.dispatch('fetchList', { listId: this.listId })\n        this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n      }\n    }\n  },\n  created () {\n    this.listId = this.$route.params.id\n    this.$store.dispatch('fetchList', { listId: this.listId })\n    this.$store.dispatch('startFetchingTimeline', { timeline: 'list', listId: this.listId })\n  },\n  unmounted () {\n    this.$store.dispatch('stopFetchingTimeline', 'list')\n    this.$store.commit('clearTimeline', { timeline: 'list' })\n  }\n}\n\nexport default ListsTimeline\n","import { render } from \"./lists_timeline.vue?vue&type=template&id=464584d8\"\nimport script from \"./lists_timeline.js?vue&type=script&lang=js\"\nexport * from \"./lists_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Timeline\n    title=\"list.name\"\n    :timeline=\"timeline\"\n    :list-id=\"listId\"\n    timeline-name=\"list\"\n  />\n</template>\n\n<script src=\"./lists_timeline.js\"></script>\n","<template>\n  <div class=\"panel-default panel ListEdit\">\n    <div\n      ref=\"header\"\n      class=\"panel-heading list-edit-heading\"\n    >\n      <button\n        class=\"button-unstyled go-back-button\"\n        @click=\"$router.back\"\n      >\n        <FAIcon\n          size=\"lg\"\n          icon=\"chevron-left\"\n        />\n      </button>\n      <div class=\"title\">\n        <i18n-t\n          v-if=\"id\"\n          keypath=\"lists.editing_list\"\n        >\n          <template #listTitle>\n            {{ title }}\n          </template>\n        </i18n-t>\n        <i18n-t\n          v-else\n          keypath=\"lists.creating_list\"\n        />\n      </div>\n    </div>\n    <div class=\"panel-body\">\n      <div class=\"input-wrap\">\n        <label for=\"list-edit-title\">{{ $t('lists.title') }}</label>\n        {{ ' ' }}\n        <input\n          id=\"list-edit-title\"\n          ref=\"title\"\n          v-model=\"titleDraft\"\n        >\n        <button\n          v-if=\"id\"\n          class=\"btn button-default follow-button\"\n          @click=\"updateListTitle\"\n        >\n          {{ $t('lists.update_title') }}\n        </button>\n      </div>\n      <tab-switcher\n        class=\"list-member-management\"\n        :scrollable-tabs=\"true\"\n      >\n        <div\n          v-if=\"id || addedUserIds.size > 0\"\n          :label=\"$t('lists.manage_members')\"\n          class=\"members-list\"\n        >\n          <div class=\"users-list\">\n            <div\n              v-for=\"user in membersUsers\"\n              :key=\"user.id\"\n              class=\"member\"\n            >\n              <BasicUserCard\n                :user=\"user\"\n              >\n                <button\n                  class=\"btn button-default follow-button\"\n                  @click=\"toggleRemoveMember(user)\"\n                >\n                  {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n                </button>\n              </BasicUserCard>\n            </div>\n          </div>\n        </div>\n\n        <div\n          class=\"search-list\"\n          :label=\"$t('lists.add_members')\"\n        >\n          <ListsUserSearch\n            @results=\"onSearchResults\"\n            @loading=\"onSearchLoading\"\n            @loadingDone=\"onSearchLoadingDone\"\n          />\n          <div\n            v-if=\"searchLoading\"\n            class=\"loading\"\n          >\n            <PanelLoading />\n          </div>\n          <div\n            v-else\n            class=\"users-list\"\n          >\n            <div\n              v-for=\"user in searchUsers\"\n              :key=\"user.id\"\n              class=\"member\"\n            >\n              <BasicUserCard\n                :user=\"user\"\n              >\n                <span\n                  v-if=\"membersUserIds.includes(user.id)\"\n                >\n                  {{ $t('lists.is_in_list') }}\n                </span>\n                <button\n                  v-if=\"!membersUserIds.includes(user.id)\"\n                  class=\"btn button-default follow-button\"\n                  @click=\"toggleAddFromSearch(user)\"\n                >\n                  {{ isAdded(user) ? $t('general.undo') : $t('lists.add_to_list') }}\n                </button>\n                <button\n                  v-else\n                  class=\"btn button-default follow-button\"\n                  @click=\"toggleRemoveMember(user)\"\n                >\n                  {{ isRemoved(user) ? $t('general.undo') : $t('lists.remove_from_list') }}\n                </button>\n              </BasicUserCard>\n            </div>\n          </div>\n        </div>\n      </tab-switcher>\n    </div>\n    <div class=\"panel-footer\">\n      <span class=\"spacer\" />\n      <button\n        v-if=\"!id\"\n        class=\"btn button-default footer-button\"\n        @click=\"createList\"\n      >\n        {{ $t('lists.create') }}\n      </button>\n      <button\n        v-else-if=\"!reallyDelete\"\n        class=\"btn button-default footer-button\"\n        @click=\"reallyDelete = true\"\n      >\n        {{ $t('lists.delete') }}\n      </button>\n      <template v-else>\n        {{ $t('lists.really_delete') }}\n        <button\n          class=\"btn button-default footer-button\"\n          @click=\"deleteList\"\n        >\n          {{ $t('general.yes') }}\n        </button>\n        <button\n          class=\"btn button-default footer-button\"\n          @click=\"reallyDelete = false\"\n        >\n          {{ $t('general.no') }}\n        </button>\n      </template>\n    </div>\n  </div>\n</template>\n\n<script src=\"./lists_edit.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ListEdit {\n  --panel-body-padding: 0.5em;\n\n  height: calc(100vh - var(--navbar-height));\n  overflow: hidden;\n  display: flex;\n  flex-direction: column;\n\n  .list-edit-heading {\n    grid-template-columns: auto minmax(50%, 1fr);\n  }\n\n  .panel-body {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    overflow: hidden;\n  }\n\n  .list-member-management {\n    flex: 1 0 auto;\n  }\n\n  .search-icon {\n    margin-right: 0.3em;\n  }\n\n  .users-list {\n    padding-bottom: 0.7rem;\n    overflow-y: auto;\n  }\n\n  & .search-list,\n  & .members-list {\n    overflow: hidden;\n    flex-direction: column;\n    min-height: 0;\n  }\n\n  .go-back-button {\n    text-align: center;\n    line-height: 1;\n    height: 100%;\n    align-self: start;\n    width: var(--__panel-heading-height-inner);\n  }\n\n  .btn {\n    margin: 0 0.5em;\n  }\n\n  .panel-footer {\n    grid-template-columns: minmax(10%, 1fr);\n\n    .footer-button {\n      min-width: 9em;\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"ListsUserSearch\">\n    <div class=\"input-wrap\">\n      <div class=\"input-search\">\n        <FAIcon\n          class=\"search-icon fa-scale-110 fa-old-padding\"\n          icon=\"search\"\n        />\n      </div>\n      <input\n        ref=\"search\"\n        v-model=\"query\"\n        :placeholder=\"$t('lists.search')\"\n        @input=\"onInput\"\n      >\n    </div>\n    <div class=\"input-wrap\">\n      <Checkbox\n        v-model=\"followingOnly\"\n        @change=\"onInput\"\n      >\n        {{ $t('lists.following_only') }}\n      </Checkbox>\n    </div>\n  </div>\n</template>\n\n<script src=\"./lists_user_search.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ListsUserSearch {\n  .input-wrap {\n    display: flex;\n    margin: 0.7em 0.5em 0.7em 0.5em;\n\n    input {\n      width: 100%;\n    }\n  }\n\n  .search-icon {\n    margin-right: 0.3em;\n  }\n}\n\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce } from 'lodash'\nimport Checkbox from '../checkbox/checkbox.vue'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst ListsUserSearch = {\n  components: {\n    Checkbox\n  },\n  emits: ['loading', 'loadingDone', 'results'],\n  data () {\n    return {\n      loading: false,\n      query: '',\n      followingOnly: true\n    }\n  },\n  methods: {\n    onInput: debounce(function () {\n      this.search(this.query)\n    }, 2000),\n    search (query) {\n      if (!query) {\n        this.loading = false\n        return\n      }\n\n      this.loading = true\n      this.$emit('loading')\n      this.userIds = []\n      this.$store.dispatch('search', { q: query, resolve: true, type: 'accounts', following: this.followingOnly })\n        .then(data => {\n          this.$emit('results', data.accounts.map(a => a.id))\n        })\n        .finally(() => {\n          this.loading = false\n          this.$emit('loadingDone')\n        })\n    }\n  }\n}\n\nexport default ListsUserSearch\n","import { render } from \"./lists_user_search.vue?vue&type=template&id=1ec327b3\"\nimport script from \"./lists_user_search.js?vue&type=script&lang=js\"\nexport * from \"./lists_user_search.js?vue&type=script&lang=js\"\n\nimport \"./lists_user_search.vue?vue&type=style&index=0&id=1ec327b3&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState, mapGetters } from 'vuex'\nimport BasicUserCard from '../basic_user_card/basic_user_card.vue'\nimport ListsUserSearch from '../lists_user_search/lists_user_search.vue'\nimport PanelLoading from 'src/components/panel_loading/panel_loading.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport TabSwitcher from 'src/components/tab_switcher/tab_switcher.jsx'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSearch,\n  faChevronLeft\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSearch,\n  faChevronLeft\n)\n\nconst ListsNew = {\n  components: {\n    BasicUserCard,\n    UserAvatar,\n    ListsUserSearch,\n    TabSwitcher,\n    PanelLoading\n  },\n  data () {\n    return {\n      title: '',\n      titleDraft: '',\n      membersUserIds: [],\n      removedUserIds: new Set([]), // users we added for members, to undo\n      searchUserIds: [],\n      addedUserIds: new Set([]), // users we added from search, to undo\n      searchLoading: false,\n      reallyDelete: false\n    }\n  },\n  created () {\n    if (!this.id) return\n    this.$store.dispatch('fetchList', { listId: this.id })\n      .then(() => {\n        this.title = this.findListTitle(this.id)\n        this.titleDraft = this.title\n      })\n    this.$store.dispatch('fetchListAccounts', { listId: this.id })\n      .then(() => {\n        this.membersUserIds = this.findListAccounts(this.id)\n        this.membersUserIds.forEach(userId => {\n          this.$store.dispatch('fetchUserIfMissing', userId)\n        })\n      })\n  },\n  computed: {\n    id () {\n      return this.$route.params.id\n    },\n    membersUsers () {\n      return [...this.membersUserIds, ...this.addedUserIds]\n        .map(userId => this.findUser(userId)).filter(user => user)\n    },\n    searchUsers () {\n      return this.searchUserIds.map(userId => this.findUser(userId)).filter(user => user)\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    ...mapGetters(['findUser', 'findListTitle', 'findListAccounts'])\n  },\n  methods: {\n    onInput () {\n      this.search(this.query)\n    },\n    toggleRemoveMember (user) {\n      if (this.removedUserIds.has(user.id)) {\n        this.id && this.addUser(user)\n        this.removedUserIds.delete(user.id)\n      } else {\n        this.id && this.removeUser(user.id)\n        this.removedUserIds.add(user.id)\n      }\n    },\n    toggleAddFromSearch (user) {\n      if (this.addedUserIds.has(user.id)) {\n        this.id && this.removeUser(user.id)\n        this.addedUserIds.delete(user.id)\n      } else {\n        this.id && this.addUser(user)\n        this.addedUserIds.add(user.id)\n      }\n    },\n    isRemoved (user) {\n      return this.removedUserIds.has(user.id)\n    },\n    isAdded (user) {\n      return this.addedUserIds.has(user.id)\n    },\n    addUser (user) {\n      this.$store.dispatch('addListAccount', { accountId: this.user.id, listId: this.id })\n    },\n    removeUser (userId) {\n      this.$store.dispatch('removeListAccount', { accountId: this.user.id, listId: this.id })\n    },\n    onSearchLoading (results) {\n      this.searchLoading = true\n    },\n    onSearchLoadingDone (results) {\n      this.searchLoading = false\n    },\n    onSearchResults (results) {\n      this.searchLoading = false\n      this.searchUserIds = results\n    },\n    updateListTitle () {\n      this.$store.dispatch('setList', { listId: this.id, title: this.titleDraft })\n        .then(() => {\n          this.title = this.findListTitle(this.id)\n        })\n    },\n    createList () {\n      this.$store.dispatch('createList', { title: this.titleDraft })\n        .then((list) => {\n          return this\n            .$store\n            .dispatch('setListAccounts', { listId: list.id, accountIds: [...this.addedUserIds] })\n            .then(() => list.id)\n        })\n        .then((listId) => {\n          this.$router.push({ name: 'lists-timeline', params: { id: listId } })\n        })\n        .catch((e) => {\n          this.$store.dispatch('pushGlobalNotice', {\n            messageKey: 'lists.error',\n            messageArgs: [e.message],\n            level: 'error'\n          })\n        })\n    },\n    deleteList () {\n      this.$store.dispatch('deleteList', { listId: this.id })\n      this.$router.push({ name: 'lists' })\n    }\n  }\n}\n\nexport default ListsNew\n","import { render } from \"./lists_edit.vue?vue&type=template&id=41e8e8ef\"\nimport script from \"./lists_edit.js?vue&type=script&lang=js\"\nexport * from \"./lists_edit.js?vue&type=script&lang=js\"\n\nimport \"./lists_edit.vue?vue&type=style&index=0&id=41e8e8ef&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel panel-default announcements-page\">\n    <div class=\"panel-heading\">\n      <span>\n        {{ $t('announcements.page_header') }}\n      </span>\n    </div>\n    <div class=\"panel-body\">\n      <section\n        v-if=\"currentUser && currentUser.role === 'admin'\"\n      >\n        <div class=\"post-form\">\n          <div class=\"heading\">\n            <h4>{{ $t('announcements.post_form_header') }}</h4>\n          </div>\n          <div class=\"body\">\n            <announcement-editor\n              :announcement=\"newAnnouncement\"\n              :disabled=\"posting\"\n            />\n          </div>\n          <div class=\"footer\">\n            <button\n              class=\"btn button-default post-button\"\n              :disabled=\"posting\"\n              @click.prevent=\"postAnnouncement\"\n            >\n              {{ $t('announcements.post_action') }}\n            </button>\n            <div\n              v-if=\"error\"\n              class=\"alert error\"\n            >\n              {{ $t('announcements.post_error', { error }) }}\n              <button\n                class=\"button-unstyled\"\n                @click=\"clearError\"\n              >\n                <FAIcon\n                  class=\"fa-scale-110 fa-old-padding\"\n                  icon=\"times\"\n                  :title=\"$t('announcements.close_error')\"\n                />\n              </button>\n            </div>\n          </div>\n        </div>\n      </section>\n      <section\n        v-for=\"announcement in announcements\"\n        :key=\"announcement.id\"\n      >\n        <announcement\n          :announcement=\"announcement\"\n        />\n      </section>\n    </div>\n  </div>\n</template>\n\n<script src=\"./announcements_page.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcements-page {\n  .post-form {\n    padding: var(--status-margin, $status-margin);\n\n    .heading, .body {\n      margin-bottom: var(--status-margin, $status-margin);\n    }\n\n    .post-button {\n      min-width: 10em;\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"announcement\">\n    <div class=\"heading\">\n      <h4>{{ $t('announcements.title') }}</h4>\n    </div>\n    <div class=\"body\">\n      <rich-content\n        v-if=\"!editing\"\n        :html=\"content\"\n        :emoji=\"announcement.emojis\"\n        :handle-links=\"true\"\n      />\n      <announcement-editor\n        v-else\n        :announcement=\"editedAnnouncement\"\n      />\n    </div>\n    <div class=\"footer\">\n      <div\n        v-if=\"!editing\"\n        class=\"times\"\n      >\n        <span v-if=\"publishedAt\">\n          {{ $t('announcements.published_time_display', { time: publishedAt }) }}\n        </span>\n        <span v-if=\"startsAt\">\n          {{ $t('announcements.start_time_display', { time: startsAt }) }}\n        </span>\n        <span v-if=\"endsAt\">\n          {{ $t('announcements.end_time_display', { time: endsAt }) }}\n        </span>\n      </div>\n      <div\n        v-if=\"!editing\"\n        class=\"actions\"\n      >\n        <button\n          v-if=\"currentUser\"\n          class=\"btn button-default\"\n          :class=\"{ toggled: isRead }\"\n          :disabled=\"inactive\"\n          :title=\"inactive ? $t('announcements.inactive_message') : ''\"\n          @click=\"markAsRead\"\n        >\n          {{ $t('announcements.mark_as_read_action') }}\n        </button>\n        <button\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          class=\"btn button-default\"\n          @click=\"enterEditMode\"\n        >\n          {{ $t('announcements.edit_action') }}\n        </button>\n        <button\n          v-if=\"currentUser && currentUser.role === 'admin'\"\n          class=\"btn button-default\"\n          @click=\"deleteAnnouncement\"\n        >\n          {{ $t('announcements.delete_action') }}\n        </button>\n      </div>\n      <div\n        v-else\n        class=\"actions\"\n      >\n        <button\n          class=\"btn button-default\"\n          @click=\"submitEdit\"\n        >\n          {{ $t('announcements.submit_edit_action') }}\n        </button>\n        <button\n          class=\"btn button-default\"\n          @click=\"cancelEdit\"\n        >\n          {{ $t('announcements.cancel_edit_action') }}\n        </button>\n        <div\n          v-if=\"editing && editError\"\n          class=\"alert error\"\n        >\n          {{ $t('announcements.edit_error', { error }) }}\n          <button\n            class=\"button-unstyled\"\n            @click=\"clearError\"\n          >\n            <FAIcon\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"times\"\n              :title=\"$t('announcements.close_error')\"\n            />\n          </button>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./announcement.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../variables\";\n\n.announcement {\n  border-bottom-width: 1px;\n  border-bottom-style: solid;\n  border-bottom-color: var(--border, $fallback--border);\n  border-radius: 0;\n  padding: var(--status-margin, $status-margin);\n\n  .heading, .body {\n    margin-bottom: var(--status-margin, $status-margin);\n  }\n\n  .footer {\n    display: flex;\n    flex-direction: column;\n    .times {\n      display: flex;\n      flex-direction: column;\n    }\n  }\n\n  .footer .actions {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-evenly;\n\n    .btn {\n      flex: 1;\n      margin: 1em;\n      max-width: 10em;\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"announcement-editor\">\n    <textarea\n      ref=\"textarea\"\n      v-model=\"announcement.content\"\n      class=\"post-textarea\"\n      rows=\"1\"\n      cols=\"1\"\n      :placeholder=\"$t('announcements.post_placeholder')\"\n      :disabled=\"disabled\"\n    />\n    <span class=\"announcement-metadata\">\n      <label for=\"announcement-start-time\">{{ $t('announcements.start_time_prompt') }}</label>\n      <input\n        id=\"announcement-start-time\"\n        v-model=\"announcement.startsAt\"\n        :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n        :disabled=\"disabled\"\n      >\n    </span>\n    <span class=\"announcement-metadata\">\n      <label for=\"announcement-end-time\">{{ $t('announcements.end_time_prompt') }}</label>\n      <input\n        id=\"announcement-end-time\"\n        v-model=\"announcement.endsAt\"\n        :type=\"announcement.allDay ? 'date' : 'datetime-local'\"\n        :disabled=\"disabled\"\n      >\n    </span>\n    <span class=\"announcement-metadata\">\n      <Checkbox\n        id=\"announcement-all-day\"\n        v-model=\"announcement.allDay\"\n        :disabled=\"disabled\"\n      />\n      <label for=\"announcement-all-day\">{{ $t('announcements.all_day_prompt') }}</label>\n    </span>\n  </div>\n</template>\n\n<script src=\"./announcement_editor.js\"></script>\n\n<style lang=\"scss\">\n.announcement-editor {\n  display: flex;\n  align-items: stretch;\n  flex-direction: column;\n\n  .announcement-metadata {\n    margin-top: 0.5em;\n  }\n\n  .post-textarea {\n    resize: vertical;\n    height: 10em;\n    overflow: none;\n    box-sizing: content-box;\n  }\n}\n</style>\n","import Checkbox from '../checkbox/checkbox.vue'\n\nconst AnnouncementEditor = {\n  components: {\n    Checkbox\n  },\n  props: {\n    announcement: Object,\n    disabled: Boolean\n  }\n}\n\nexport default AnnouncementEditor\n","import { render } from \"./announcement_editor.vue?vue&type=template&id=357f0d7c\"\nimport script from \"./announcement_editor.js?vue&type=script&lang=js\"\nexport * from \"./announcement_editor.js?vue&type=script&lang=js\"\n\nimport \"./announcement_editor.vue?vue&type=style&index=0&id=357f0d7c&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\nimport RichContent from '../rich_content/rich_content.jsx'\nimport localeService from '../../services/locale/locale.service.js'\n\nconst Announcement = {\n  components: {\n    AnnouncementEditor,\n    RichContent\n  },\n  data () {\n    return {\n      editing: false,\n      editedAnnouncement: {\n        content: '',\n        startsAt: undefined,\n        endsAt: undefined,\n        allDay: undefined\n      },\n      editError: ''\n    }\n  },\n  props: {\n    announcement: Object\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    content () {\n      return this.announcement.content\n    },\n    isRead () {\n      return this.announcement.read\n    },\n    publishedAt () {\n      const time = this.announcement.published_at\n      if (!time) {\n        return\n      }\n\n      return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n    },\n    startsAt () {\n      const time = this.announcement.starts_at\n      if (!time) {\n        return\n      }\n\n      return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n    },\n    endsAt () {\n      const time = this.announcement.ends_at\n      if (!time) {\n        return\n      }\n\n      return this.formatTimeOrDate(time, localeService.internalToBrowserLocale(this.$i18n.locale))\n    },\n    inactive () {\n      return this.announcement.inactive\n    }\n  },\n  methods: {\n    markAsRead () {\n      if (!this.isRead) {\n        return this.$store.dispatch('markAnnouncementAsRead', this.announcement.id)\n      }\n    },\n    deleteAnnouncement () {\n      return this.$store.dispatch('deleteAnnouncement', this.announcement.id)\n    },\n    formatTimeOrDate (time, locale) {\n      const d = new Date(time)\n      return this.announcement.all_day ? d.toLocaleDateString(locale) : d.toLocaleString(locale)\n    },\n    enterEditMode () {\n      this.editedAnnouncement.content = this.announcement.pleroma.raw_content\n      this.editedAnnouncement.startsAt = this.announcement.starts_at\n      this.editedAnnouncement.endsAt = this.announcement.ends_at\n      this.editedAnnouncement.allDay = this.announcement.all_day\n      this.editing = true\n    },\n    submitEdit () {\n      this.$store.dispatch('editAnnouncement', {\n        id: this.announcement.id,\n        ...this.editedAnnouncement\n      })\n        .then(() => {\n          this.editing = false\n        })\n        .catch(error => {\n          this.editError = error.error\n        })\n    },\n    cancelEdit () {\n      this.editing = false\n    },\n    clearError () {\n      this.editError = undefined\n    }\n  }\n}\n\nexport default Announcement\n","import { mapState } from 'vuex'\nimport Announcement from '../announcement/announcement.vue'\nimport AnnouncementEditor from '../announcement_editor/announcement_editor.vue'\n\nconst AnnouncementsPage = {\n  components: {\n    Announcement,\n    AnnouncementEditor\n  },\n  data () {\n    return {\n      newAnnouncement: {\n        content: '',\n        startsAt: undefined,\n        endsAt: undefined,\n        allDay: false\n      },\n      posting: false,\n      error: undefined\n    }\n  },\n  mounted () {\n    this.$store.dispatch('fetchAnnouncements')\n  },\n  computed: {\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    }),\n    announcements () {\n      return this.$store.state.announcements.announcements\n    }\n  },\n  methods: {\n    postAnnouncement () {\n      this.posting = true\n      this.$store.dispatch('postAnnouncement', this.newAnnouncement)\n        .then(() => {\n          this.newAnnouncement.content = ''\n          this.startsAt = undefined\n          this.endsAt = undefined\n        })\n        .catch(error => {\n          this.error = error.error\n        })\n        .finally(() => {\n          this.posting = false\n        })\n    },\n    clearError () {\n      this.error = undefined\n    }\n  }\n}\n\nexport default AnnouncementsPage\n","import { render } from \"./announcement.vue?vue&type=template&id=642035b3\"\nimport script from \"./announcement.js?vue&type=script&lang=js\"\nexport * from \"./announcement.js?vue&type=script&lang=js\"\n\nimport \"./announcement.vue?vue&type=style&index=0&id=642035b3&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { render } from \"./announcements_page.vue?vue&type=template&id=6f373623\"\nimport script from \"./announcements_page.js?vue&type=script&lang=js\"\nexport * from \"./announcements_page.js?vue&type=script&lang=js\"\n\nimport \"./announcements_page.vue?vue&type=style&index=0&id=6f373623&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import PublicTimeline from 'components/public_timeline/public_timeline.vue'\nimport PublicAndExternalTimeline from 'components/public_and_external_timeline/public_and_external_timeline.vue'\nimport FriendsTimeline from 'components/friends_timeline/friends_timeline.vue'\nimport TagTimeline from 'components/tag_timeline/tag_timeline.vue'\nimport BookmarkTimeline from 'components/bookmark_timeline/bookmark_timeline.vue'\nimport ConversationPage from 'components/conversation-page/conversation-page.vue'\nimport Interactions from 'components/interactions/interactions.vue'\nimport DMs from 'components/dm_timeline/dm_timeline.vue'\nimport ChatList from 'components/chat_list/chat_list.vue'\nimport Chat from 'components/chat/chat.vue'\nimport UserProfile from 'components/user_profile/user_profile.vue'\nimport Search from 'components/search/search.vue'\nimport Registration from 'components/registration/registration.vue'\nimport PasswordReset from 'components/password_reset/password_reset.vue'\nimport FollowRequests from 'components/follow_requests/follow_requests.vue'\nimport OAuthCallback from 'components/oauth_callback/oauth_callback.vue'\nimport Notifications from 'components/notifications/notifications.vue'\nimport AuthForm from 'components/auth_form/auth_form.js'\nimport ShoutPanel from 'components/shout_panel/shout_panel.vue'\nimport WhoToFollow from 'components/who_to_follow/who_to_follow.vue'\nimport About from 'components/about/about.vue'\nimport RemoteUserResolver from 'components/remote_user_resolver/remote_user_resolver.vue'\nimport Lists from 'components/lists/lists.vue'\nimport ListsTimeline from 'components/lists_timeline/lists_timeline.vue'\nimport ListsEdit from 'components/lists_edit/lists_edit.vue'\nimport NavPanel from 'src/components/nav_panel/nav_panel.vue'\nimport AnnouncementsPage from 'components/announcements_page/announcements_page.vue'\n\nexport default (store) => {\n  const validateAuthenticatedRoute = (to, from, next) => {\n    if (store.state.users.currentUser) {\n      next()\n    } else {\n      next(store.state.instance.redirectRootNoLogin || '/main/all')\n    }\n  }\n\n  let routes = [\n    {\n      name: 'root',\n      path: '/',\n      redirect: _to => {\n        return (store.state.users.currentUser\n          ? store.state.instance.redirectRootLogin\n          : store.state.instance.redirectRootNoLogin) || '/main/all'\n      }\n    },\n    { name: 'public-external-timeline', path: '/main/all', component: PublicAndExternalTimeline },\n    { name: 'public-timeline', path: '/main/public', component: PublicTimeline },\n    { name: 'friends', path: '/main/friends', component: FriendsTimeline, beforeEnter: validateAuthenticatedRoute },\n    { name: 'tag-timeline', path: '/tag/:tag', component: TagTimeline },\n    { name: 'bookmarks', path: '/bookmarks', component: BookmarkTimeline },\n    { name: 'conversation', path: '/notice/:id', component: ConversationPage, meta: { dontScroll: true } },\n    {\n      name: 'remote-user-profile-acct',\n      path: '/remote-users/:_(@)?:username([^/@]+)@:hostname([^/@]+)',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    {\n      name: 'remote-user-profile',\n      path: '/remote-users/:hostname/:username',\n      component: RemoteUserResolver,\n      beforeEnter: validateAuthenticatedRoute\n    },\n    { name: 'external-user-profile', path: '/users/$:id', component: UserProfile },\n    { name: 'interactions', path: '/users/:username/interactions', component: Interactions, beforeEnter: validateAuthenticatedRoute },\n    { name: 'dms', path: '/users/:username/dms', component: DMs, beforeEnter: validateAuthenticatedRoute },\n    { name: 'registration', path: '/registration', component: Registration },\n    { name: 'password-reset', path: '/password-reset', component: PasswordReset, props: true },\n    { name: 'registration-token', path: '/registration/:token', component: Registration },\n    { name: 'friend-requests', path: '/friend-requests', component: FollowRequests, beforeEnter: validateAuthenticatedRoute },\n    { name: 'notifications', path: '/:username/notifications', component: Notifications, props: () => ({ disableTeleport: true }), beforeEnter: validateAuthenticatedRoute },\n    { name: 'login', path: '/login', component: AuthForm },\n    { name: 'shout-panel', path: '/shout-panel', component: ShoutPanel, props: () => ({ floating: false }) },\n    { name: 'oauth-callback', path: '/oauth-callback', component: OAuthCallback, props: (route) => ({ code: route.query.code }) },\n    { name: 'search', path: '/search', component: Search, props: (route) => ({ query: route.query.query }) },\n    { name: 'who-to-follow', path: '/who-to-follow', component: WhoToFollow, beforeEnter: validateAuthenticatedRoute },\n    { name: 'about', path: '/about', component: About },\n    { name: 'announcements', path: '/announcements', component: AnnouncementsPage },\n    { name: 'user-profile', path: '/users/:name', component: UserProfile },\n    { name: 'legacy-user-profile', path: '/:name', component: UserProfile },\n    { name: 'lists', path: '/lists', component: Lists },\n    { name: 'lists-timeline', path: '/lists/:id', component: ListsTimeline },\n    { name: 'lists-edit', path: '/lists/:id/edit', component: ListsEdit },\n    { name: 'lists-new', path: '/lists/new', component: ListsEdit },\n    { name: 'edit-navigation', path: '/nav-edit', component: NavPanel, props: () => ({ forceExpand: true, forceEditMode: true }), beforeEnter: validateAuthenticatedRoute }\n  ]\n\n  if (store.state.instance.pleromaChatMessagesAvailable) {\n    routes = routes.concat([\n      { name: 'chat', path: '/users/:username/chats/:recipient_id', component: Chat, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute },\n      { name: 'chats', path: '/users/:username/chats', component: ChatList, meta: { dontScroll: false }, beforeEnter: validateAuthenticatedRoute }\n    ])\n  }\n\n  return routes\n}\n","import * 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  mounted: (el, binding) => {\n    if (binding.value) {\n      disableBodyScroll(el)\n    }\n  },\n  updated: (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  unmounted: (el) => {\n    enableBodyScroll(el)\n  }\n}\n\nexport default (Vue) => {\n  Vue.directive('body-scroll-lock', directive)\n}\n","import { createApp } from 'vue'\nimport { createRouter, createWebHistory } from 'vue-router'\nimport vClickOutside from 'click-outside-vue3'\n\nimport { FontAwesomeIcon, FontAwesomeLayers } from '@fortawesome/vue-fontawesome'\n\nimport App from '../App.vue'\nimport routes from './routes'\nimport VBodyScrollLock from 'src/directives/body_scroll_lock'\n\nimport { windowWidth, windowHeight } 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, applyConfig } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\n\nlet staticInitialResults = null\n\nconst parsedInitialResults = () => {\n  if (!document.getElementById('initial-results')) {\n    return null\n  }\n  if (!staticInitialResults) {\n    staticInitialResults = JSON.parse(document.getElementById('initial-results').textContent)\n  }\n  return staticInitialResults\n}\n\nconst decodeUTF8Base64 = (data) => {\n  const rawData = atob(data)\n  const array = Uint8Array.from([...rawData].map((char) => char.charCodeAt(0)))\n  const text = new TextDecoder().decode(array)\n  return text\n}\n\nconst preloadFetch = async (request) => {\n  const data = parsedInitialResults()\n  if (!data || !data[request]) {\n    return window.fetch(request)\n  }\n  const decoded = decodeUTF8Base64(data[request])\n  const requestData = JSON.parse(decoded)\n  return {\n    ok: true,\n    json: () => requestData,\n    text: () => requestData\n  }\n}\n\nconst getInstanceConfig = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/api/v1/instance')\n    if (res.ok) {\n      const data = await res.json()\n      const textlimit = data.max_toot_chars\n      const vapidPublicKey = data.pleroma.vapid_public_key\n\n      store.dispatch('setInstanceOption', { name: 'textlimit', value: textlimit })\n      store.dispatch('setInstanceOption', { name: 'accountApprovalRequired', value: data.approval_required })\n\n      if (vapidPublicKey) {\n        store.dispatch('setInstanceOption', { name: 'vapidPublicKey', value: vapidPublicKey })\n      }\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load instance config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getBackendProvidedConfig = async ({ store }) => {\n  try {\n    const res = await window.fetch('/api/pleroma/frontend_configurations')\n    if (res.ok) {\n      const data = await res.json()\n      return data.pleroma_fe\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.error('Could not load backend-provided frontend config, potentially fatal')\n    console.error(error)\n  }\n}\n\nconst getStaticConfig = async () => {\n  try {\n    const res = await window.fetch('/static/config.json')\n    if (res.ok) {\n      return res.json()\n    } else {\n      throw (res)\n    }\n  } catch (error) {\n    console.warn('Failed to load static/config.json, continuing without it.')\n    console.warn(error)\n    return {}\n  }\n}\n\nconst setSettings = async ({ apiConfig, staticConfig, store }) => {\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const env = window.___pleromafe_mode.NODE_ENV\n\n  // This takes static config and overrides properties that are present in apiConfig\n  let config = {}\n  if (overrides.staticConfigPreference && env === 'development') {\n    console.warn('OVERRIDING API CONFIG WITH STATIC CONFIG')\n    config = Object.assign({}, apiConfig, staticConfig)\n  } else {\n    config = Object.assign({}, staticConfig, apiConfig)\n  }\n\n  const copyInstanceOption = (name) => {\n    store.dispatch('setInstanceOption', { name, value: config[name] })\n  }\n\n  copyInstanceOption('nsfwCensorImage')\n  copyInstanceOption('background')\n  copyInstanceOption('hidePostStats')\n  copyInstanceOption('hideBotIndication')\n  copyInstanceOption('hideUserStats')\n  copyInstanceOption('hideFilteredStatuses')\n  copyInstanceOption('logo')\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMask',\n    value: typeof config.logoMask === 'undefined'\n      ? true\n      : config.logoMask\n  })\n\n  store.dispatch('setInstanceOption', {\n    name: 'logoMargin',\n    value: typeof config.logoMargin === 'undefined'\n      ? 0\n      : config.logoMargin\n  })\n  copyInstanceOption('logoLeft')\n  store.commit('authFlow/setInitialStrategy', config.loginMethod)\n\n  copyInstanceOption('redirectRootNoLogin')\n  copyInstanceOption('redirectRootLogin')\n  copyInstanceOption('showInstanceSpecificPanel')\n  copyInstanceOption('minimalScopesMode')\n  copyInstanceOption('hideMutedPosts')\n  copyInstanceOption('collapseMessageWithSubject')\n  copyInstanceOption('scopeCopy')\n  copyInstanceOption('subjectLineBehavior')\n  copyInstanceOption('postContentType')\n  copyInstanceOption('alwaysShowSubjectInput')\n  copyInstanceOption('showFeaturesPanel')\n  copyInstanceOption('hideSitename')\n  copyInstanceOption('sidebarRight')\n\n  return store.dispatch('setTheme', config.theme)\n}\n\nconst getTOS = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/terms-of-service.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'tos', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load TOS\")\n    console.warn(e)\n  }\n}\n\nconst getInstancePanel = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/instance/panel.html')\n    if (res.ok) {\n      const html = await res.text()\n      store.dispatch('setInstanceOption', { name: 'instanceSpecificPanelContent', value: html })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load instance panel\")\n    console.warn(e)\n  }\n}\n\nconst getStickers = async ({ store }) => {\n  try {\n    const res = await window.fetch('/static/stickers.json')\n    if (res.ok) {\n      const values = await res.json()\n      const stickers = (await Promise.all(\n        Object.entries(values).map(async ([name, path]) => {\n          const resPack = await window.fetch(path + 'pack.json')\n          let meta = {}\n          if (resPack.ok) {\n            meta = await resPack.json()\n          }\n          return {\n            pack: name,\n            path,\n            meta\n          }\n        })\n      )).sort((a, b) => {\n        return a.meta.title.localeCompare(b.meta.title)\n      })\n      store.dispatch('setInstanceOption', { name: 'stickers', value: stickers })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn(\"Can't load stickers\")\n    console.warn(e)\n  }\n}\n\nconst getAppSecret = async ({ store }) => {\n  const { state, commit } = store\n  const { oauth, instance } = state\n  return getOrCreateApp({ ...oauth, instance: instance.server, commit })\n    .then((app) => getClientToken({ ...app, instance: instance.server }))\n    .then((token) => {\n      commit('setAppToken', token.access_token)\n      commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))\n    })\n}\n\nconst resolveStaffAccounts = ({ store, accounts }) => {\n  const nicknames = accounts.map(uri => uri.split('/').pop())\n  store.dispatch('setInstanceOption', { name: 'staffAccounts', value: nicknames })\n}\n\nconst getNodeInfo = async ({ store }) => {\n  try {\n    const res = await preloadFetch('/nodeinfo/2.0.json')\n    if (res.ok) {\n      const data = await res.json()\n      const metadata = data.metadata\n      const features = metadata.features\n      store.dispatch('setInstanceOption', { name: 'name', value: metadata.nodeName })\n      store.dispatch('setInstanceOption', { name: 'registrationOpen', value: data.openRegistrations })\n      store.dispatch('setInstanceOption', { name: 'mediaProxyAvailable', value: features.includes('media_proxy') })\n      store.dispatch('setInstanceOption', { name: 'safeDM', value: features.includes('safe_dm_mentions') })\n      store.dispatch('setInstanceOption', { name: 'shoutAvailable', value: features.includes('chat') })\n      store.dispatch('setInstanceOption', { name: 'pleromaChatMessagesAvailable', value: features.includes('pleroma_chat_messages') })\n      store.dispatch('setInstanceOption', { name: 'gopherAvailable', value: features.includes('gopher') })\n      store.dispatch('setInstanceOption', { name: 'pollsAvailable', value: features.includes('polls') })\n      store.dispatch('setInstanceOption', { name: 'editingAvailable', value: features.includes('editing') })\n      store.dispatch('setInstanceOption', { name: 'pollLimits', value: metadata.pollLimits })\n      store.dispatch('setInstanceOption', { name: 'mailerEnabled', value: metadata.mailerEnabled })\n\n      const uploadLimits = metadata.uploadLimits\n      store.dispatch('setInstanceOption', { name: 'uploadlimit', value: parseInt(uploadLimits.general) })\n      store.dispatch('setInstanceOption', { name: 'avatarlimit', value: parseInt(uploadLimits.avatar) })\n      store.dispatch('setInstanceOption', { name: 'backgroundlimit', value: parseInt(uploadLimits.background) })\n      store.dispatch('setInstanceOption', { name: 'bannerlimit', value: parseInt(uploadLimits.banner) })\n      store.dispatch('setInstanceOption', { name: 'fieldsLimits', value: metadata.fieldsLimits })\n\n      store.dispatch('setInstanceOption', { name: 'restrictedNicknames', value: metadata.restrictedNicknames })\n      store.dispatch('setInstanceOption', { name: 'postFormats', value: metadata.postFormats })\n\n      const suggestions = metadata.suggestions\n      store.dispatch('setInstanceOption', { name: 'suggestionsEnabled', value: suggestions.enabled })\n      store.dispatch('setInstanceOption', { name: 'suggestionsWeb', value: suggestions.web })\n\n      const software = data.software\n      store.dispatch('setInstanceOption', { name: 'backendVersion', value: software.version })\n      store.dispatch('setInstanceOption', { name: 'pleromaBackend', value: software.name === 'pleroma' })\n\n      const priv = metadata.private\n      store.dispatch('setInstanceOption', { name: 'private', value: priv })\n\n      const frontendVersion = window.___pleromafe_commit_hash\n      store.dispatch('setInstanceOption', { name: 'frontendVersion', value: frontendVersion })\n\n      const federation = metadata.federation\n\n      store.dispatch('setInstanceOption', {\n        name: 'tagPolicyAvailable',\n        value: typeof federation.mrf_policies === 'undefined'\n          ? false\n          : metadata.federation.mrf_policies.includes('TagPolicy')\n      })\n\n      store.dispatch('setInstanceOption', { name: 'federationPolicy', value: federation })\n      store.dispatch('setInstanceOption', {\n        name: 'federating',\n        value: typeof federation.enabled === 'undefined'\n          ? true\n          : federation.enabled\n      })\n\n      const accountActivationRequired = metadata.accountActivationRequired\n      store.dispatch('setInstanceOption', { name: 'accountActivationRequired', value: accountActivationRequired })\n\n      const accounts = metadata.staffAccounts\n      resolveStaffAccounts({ store, accounts })\n    } else {\n      throw (res)\n    }\n  } catch (e) {\n    console.warn('Could not load nodeinfo')\n    console.warn(e)\n  }\n}\n\nconst setConfig = async ({ store }) => {\n  // apiConfig, staticConfig\n  const configInfos = await Promise.all([getBackendProvidedConfig({ store }), getStaticConfig()])\n  const apiConfig = configInfos[0]\n  const staticConfig = configInfos[1]\n\n  await setSettings({ store, apiConfig, staticConfig }).then(getAppSecret({ store }))\n}\n\nconst checkOAuthToken = async ({ store }) => {\n  // eslint-disable-next-line no-async-promise-executor\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  store.dispatch('setLayoutWidth', windowWidth())\n  store.dispatch('setLayoutHeight', windowHeight())\n\n  FaviconService.initFaviconService()\n\n  const overrides = window.___pleromafe_dev_overrides || {}\n  const server = (typeof overrides.target !== 'undefined') ? overrides.target : window.location.origin\n  store.dispatch('setInstanceOption', { name: 'server', value: server })\n\n  await setConfig({ store })\n\n  const { customTheme, customThemeSource } = store.state.config\n  const { theme } = store.state.instance\n  const customThemePresent = customThemeSource || customTheme\n\n  if (customThemePresent) {\n    if (customThemeSource && customThemeSource.themeEngineVersion === CURRENT_VERSION) {\n      applyTheme(customThemeSource)\n    } else {\n      applyTheme(customTheme)\n    }\n  } else if (theme) {\n    // do nothing, it will load asynchronously\n  } else {\n    console.error('Failed to load any theme!')\n  }\n\n  applyConfig(store.state.config)\n\n  // Now we can try getting the server settings and logging in\n  // Most of these are preloaded into the index.html so blocking is minimized\n  await Promise.all([\n    checkOAuthToken({ store }),\n    getInstancePanel({ store }),\n    getNodeInfo({ store }),\n    getInstanceConfig({ store })\n  ])\n\n  // Start fetching things that don't need to block the UI\n  store.dispatch('fetchMutes')\n  store.dispatch('startFetchingAnnouncements')\n  getTOS({ store })\n  getStickers({ store })\n\n  const router = createRouter({\n    history: createWebHistory(),\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 || { left: 0, top: 0 }\n    }\n  })\n\n  const app = createApp(App)\n\n  app.use(router)\n  app.use(store)\n  app.use(i18n)\n\n  app.use(vClickOutside)\n  app.use(VBodyScrollLock)\n\n  app.component('FAIcon', FontAwesomeIcon)\n  app.component('FALayers', FontAwesomeLayers)\n\n  // remove after vue 3.3\n  app.config.unwrapInjectedRef = true\n\n  app.mount('#app')\n\n  return app\n}\n\nexport default afterStoreSetup\n","import { createStore } 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 listsModule from './modules/lists.js'\nimport usersModule from './modules/users.js'\nimport apiModule from './modules/api.js'\nimport configModule from './modules/config.js'\nimport serverSideConfigModule from './modules/serverSideConfig.js'\nimport serverSideStorageModule from './modules/serverSideStorage.js'\nimport shoutModule from './modules/shout.js'\nimport oauthModule from './modules/oauth.js'\nimport authFlowModule from './modules/auth_flow.js'\nimport mediaViewerModule from './modules/media_viewer.js'\nimport oauthTokensModule from './modules/oauth_tokens.js'\nimport reportsModule from './modules/reports.js'\nimport pollsModule from './modules/polls.js'\nimport postStatusModule from './modules/postStatus.js'\nimport editStatusModule from './modules/editStatus.js'\nimport statusHistoryModule from './modules/statusHistory.js'\n\nimport chatsModule from './modules/chats.js'\nimport announcementsModule from './modules/announcements.js'\n\nimport { createI18n } 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 afterStoreSetup from './boot/after_store.js'\n\nconst currentLocale = (window.navigator.language || 'en').split('-')[0]\n\nconst i18n = createI18n({\n  // By default, use the browser locale, we will update it if neccessary\n  locale: 'en',\n  fallbackLocale: 'en',\n  messages: messages.default\n})\n\nmessages.setLanguage(i18n, currentLocale)\n\nconst persistedStateOptions = {\n  paths: [\n    'serverSideStorage.cache',\n    'config',\n    'users.lastLoginName',\n    'oauth'\n  ]\n};\n\n(async () => {\n  let storageError = false\n  const plugins = [pushNotifications]\n  try {\n    const persistedState = await createPersistedState(persistedStateOptions)\n    plugins.push(persistedState)\n  } catch (e) {\n    console.error(e)\n    storageError = true\n  }\n  const store = createStore({\n    modules: {\n      i18n: {\n        getters: {\n          i18n: () => i18n.global\n        }\n      },\n      interface: interfaceModule,\n      instance: instanceModule,\n      // TODO refactor users/statuses modules, they depend on each other\n      users: usersModule,\n      statuses: statusesModule,\n      lists: listsModule,\n      api: apiModule,\n      config: configModule,\n      serverSideConfig: serverSideConfigModule,\n      serverSideStorage: serverSideStorageModule,\n      shout: shoutModule,\n      oauth: oauthModule,\n      authFlow: authFlowModule,\n      mediaViewer: mediaViewerModule,\n      oauthTokens: oauthTokensModule,\n      reports: reportsModule,\n      polls: pollsModule,\n      postStatus: postStatusModule,\n      editStatus: editStatusModule,\n      statusHistory: statusHistoryModule,\n      chats: chatsModule,\n      announcements: announcementsModule\n    },\n    plugins,\n    strict: false // Socket modifies itself, let's ignore this for now.\n    // strict: process.env.NODE_ENV !== 'production'\n  })\n  if (storageError) {\n    store.dispatch('pushGlobalNotice', { messageKey: 'errors.storage_unavailable', level: 'error' })\n  }\n  afterStoreSetup({ store, i18n })\n})()\n\n// These are inlined by webpack's DefinePlugin\n/* eslint-disable */\nwindow.___pleromafe_mode = process.env\nwindow.___pleromafe_commit_hash = COMMIT_HASH\nwindow.___pleromafe_dev_overrides = DEV_OVERRIDES\n","import Cookies from 'js-cookie'\nimport { setPreset, applyTheme, applyConfig } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\n\nconst browserLocale = (window.navigator.language || 'en').split('-')[0]\n\n/* TODO this is a bit messy.\n * We need to declare settings with their types and also deal with\n * instance-default settings in some way, hopefully try to avoid copy-pasta\n * in general.\n */\nexport const multiChoiceProperties = [\n  'postContentType',\n  'subjectLineBehavior',\n  'conversationDisplay', // tree | linear\n  'conversationOtherRepliesButton', // below | inside\n  'mentionLinkDisplay', // short | full_for_remote | full\n  'userPopoverAvatarAction' // close | zoom | open\n]\n\nexport const defaultState = {\n  expertLevel: 0, // used to track which settings to show and hide\n  colors: {},\n  theme: undefined,\n  customTheme: undefined,\n  customThemeSource: undefined,\n  hideISP: false,\n  hideInstanceWallpaper: false,\n  hideShoutbox: false,\n  // bad name: actually hides posts of muted USERS\n  hideMutedPosts: undefined, // instance default\n  hideMutedThreads: undefined, // instance default\n  hideWordFilteredPosts: undefined, // instance default\n  muteBotStatuses: undefined, // instance default\n  collapseMessageWithSubject: undefined, // instance default\n  padEmoji: true,\n  hideAttachments: false,\n  hideAttachmentsInConv: false,\n  maxThumbnails: 16,\n  hideNsfw: true,\n  preloadImage: true,\n  loopVideo: true,\n  loopVideoSilentOnly: true,\n  streaming: false,\n  emojiReactionsOnTimeline: true,\n  alwaysShowNewPostButton: false,\n  autohideFloatingPostButton: false,\n  pauseOnUnfocused: true,\n  stopGifs: true,\n  replyVisibility: 'all',\n  thirdColumnMode: 'notifications',\n  notificationVisibility: {\n    follows: true,\n    mentions: true,\n    likes: true,\n    repeats: true,\n    moves: true,\n    emojiReactions: true,\n    followRequest: true,\n    reports: true,\n    chatMention: true,\n    polls: true\n  },\n  webPushNotifications: false,\n  muteWords: [],\n  highlight: {},\n  interfaceLanguage: browserLocale,\n  hideScopeNotice: false,\n  useStreamingApi: false,\n  sidebarRight: undefined, // instance default\n  scopeCopy: undefined, // instance default\n  subjectLineBehavior: undefined, // instance default\n  alwaysShowSubjectInput: undefined, // instance default\n  postContentType: undefined, // instance default\n  minimalScopesMode: undefined, // instance default\n  // This hides statuses filtered via a word filter\n  hideFilteredStatuses: undefined, // instance default\n  playVideosInModal: false,\n  useOneClickNsfw: false,\n  useContainFit: true,\n  disableStickyHeaders: false,\n  showScrollbars: false,\n  userPopoverAvatarAction: 'open',\n  userPopoverOverlay: false,\n  sidebarColumnWidth: '25rem',\n  contentColumnWidth: '45rem',\n  notifsColumnWidth: '25rem',\n  navbarColumnStretch: false,\n  greentext: undefined, // instance default\n  useAtIcon: undefined, // instance default\n  mentionLinkDisplay: undefined, // instance default\n  mentionLinkShowTooltip: undefined, // instance default\n  mentionLinkShowAvatar: undefined, // instance default\n  mentionLinkFadeDomain: undefined, // instance default\n  mentionLinkShowYous: undefined, // instance default\n  mentionLinkBoldenYou: undefined, // instance default\n  hidePostStats: undefined, // instance default\n  hideBotIndication: undefined, // instance default\n  hideUserStats: undefined, // instance default\n  virtualScrolling: undefined, // instance default\n  sensitiveByDefault: undefined, // instance default\n  conversationDisplay: undefined, // instance default\n  conversationTreeAdvanced: undefined, // instance default\n  conversationOtherRepliesButton: undefined, // instance default\n  conversationTreeFadeAncestors: undefined, // instance default\n  maxDepthInThread: undefined // instance default\n}\n\n// caching the instance default properties\nexport const instanceDefaultProperties = Object.entries(defaultState)\n  .filter(([key, value]) => value === undefined)\n  .map(([key, value]) => key)\n\nconst config = {\n  state: { ...defaultState },\n  getters: {\n    defaultConfig (state, getters, rootState, rootGetters) {\n      const { instance } = rootState\n      return {\n        ...defaultState,\n        ...Object.fromEntries(\n          instanceDefaultProperties.map(key => [key, instance[key]])\n        )\n      }\n    },\n    mergedConfig (state, getters, rootState, rootGetters) {\n      const { defaultConfig } = rootGetters\n      return {\n        ...defaultConfig,\n        // Do not override with undefined\n        ...Object.fromEntries(Object.entries(state).filter(([k, v]) => v !== undefined))\n      }\n    }\n  },\n  mutations: {\n    setOption (state, { name, value }) {\n      state[name] = value\n    },\n    setHighlight (state, { user, color, type }) {\n      const data = this.state.config.highlight[user]\n      if (color || type) {\n        state.highlight[user] = { color: color || data.color, type: type || data.type }\n      } else {\n        delete state.highlight[user]\n      }\n    }\n  },\n  actions: {\n    loadSettings ({ dispatch }, data) {\n      const knownKeys = new Set(Object.keys(defaultState))\n      const presentKeys = new Set(Object.keys(data))\n      const intersection = new Set()\n      for (const elem of presentKeys) {\n        if (knownKeys.has(elem)) {\n          intersection.add(elem)\n        }\n      }\n\n      intersection.forEach(\n        name => dispatch('setOption', { name, value: data[name] })\n      )\n    },\n    setHighlight ({ commit, dispatch }, { user, color, type }) {\n      commit('setHighlight', { user, color, type })\n    },\n    setOption ({ commit, dispatch, state }, { name, value }) {\n      commit('setOption', { name, value })\n      switch (name) {\n        case 'theme':\n          setPreset(value)\n          break\n        case 'sidebarColumnWidth':\n        case 'contentColumnWidth':\n        case 'notifsColumnWidth':\n          applyConfig(state)\n          break\n        case 'customTheme':\n        case 'customThemeSource':\n          applyTheme(value)\n          break\n        case 'interfaceLanguage':\n          messages.setLanguage(this.getters.i18n, value)\n          dispatch('loadUnicodeEmojiData', value)\n          Cookies.set(BACKEND_LANGUAGE_COOKIE_NAME, localeService.internalToBackendLocale(value))\n          break\n        case 'thirdColumnMode':\n          dispatch('setLayoutWidth', undefined)\n          break\n      }\n    }\n  }\n}\n\nexport default config\n","import { get, set } from 'lodash'\n\nconst defaultApi = ({ rootState, commit }, { path, value }) => {\n  const params = {}\n  set(params, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateProfile({ params })\n    .then(result => {\n      commit('addNewUsers', [result])\n      commit('setCurrentUser', result)\n    })\n}\n\nconst notificationsApi = ({ rootState, commit }, { path, value, oldValue }) => {\n  const settings = {}\n  set(settings, path, value)\n  return rootState\n    .api\n    .backendInteractor\n    .updateNotificationSettings({ settings })\n    .then(result => {\n      if (result.status === 'success') {\n        commit('confirmServerSideOption', { name, value })\n      } else {\n        commit('confirmServerSideOption', { name, value: oldValue })\n      }\n    })\n}\n\n/**\n * Map that stores relation between path for reading (from user profile),\n * for writing (into API) an what API to use.\n *\n * Shorthand - instead of { get, set, api? } object it's possible to use string\n * in case default api is used and get = set\n *\n * If no api is specified, defaultApi is used (see above)\n */\nexport const settingsMap = {\n  defaultScope: 'source.privacy',\n  defaultNSFW: 'source.sensitive', // BROKEN: pleroma/pleroma#2837\n  stripRichContent: {\n    get: 'source.pleroma.no_rich_text',\n    set: 'no_rich_text'\n  },\n  // Privacy\n  locked: 'locked',\n  acceptChatMessages: {\n    get: 'pleroma.accepts_chat_messages',\n    set: 'accepts_chat_messages'\n  },\n  allowFollowingMove: {\n    get: 'pleroma.allow_following_move',\n    set: 'allow_following_move'\n  },\n  discoverable: {\n    get: 'source.pleroma.discoverable',\n    set: 'discoverable'\n  },\n  hideFavorites: {\n    get: 'pleroma.hide_favorites',\n    set: 'hide_favorites'\n  },\n  hideFollowers: {\n    get: 'pleroma.hide_followers',\n    set: 'hide_followers'\n  },\n  hideFollows: {\n    get: 'pleroma.hide_follows',\n    set: 'hide_follows'\n  },\n  hideFollowersCount: {\n    get: 'pleroma.hide_followers_count',\n    set: 'hide_followers_count'\n  },\n  hideFollowsCount: {\n    get: 'pleroma.hide_follows_count',\n    set: 'hide_follows_count'\n  },\n  // NotificationSettingsAPIs\n  webPushHideContents: {\n    get: 'pleroma.notification_settings.hide_notification_contents',\n    set: 'hide_notification_contents',\n    api: notificationsApi\n  },\n  blockNotificationsFromStrangers: {\n    get: 'pleroma.notification_settings.block_from_strangers',\n    set: 'block_from_strangers',\n    api: notificationsApi\n  }\n}\n\nexport const defaultState = Object.fromEntries(Object.keys(settingsMap).map(key => [key, null]))\n\nconst serverSideConfig = {\n  state: { ...defaultState },\n  mutations: {\n    confirmServerSideOption (state, { name, value }) {\n      set(state, name, value)\n    },\n    wipeServerSideOption (state, { name }) {\n      set(state, name, null)\n    },\n    wipeAllServerSideOptions (state) {\n      Object.keys(settingsMap).forEach(key => {\n        set(state, key, null)\n      })\n    },\n    // Set the settings based on their path location\n    setCurrentUser (state, user) {\n      Object.entries(settingsMap).forEach((map) => {\n        const [name, value] = map\n        const { get: path = value } = value\n        set(state, name, get(user._original, path))\n      })\n    }\n  },\n  actions: {\n    setServerSideOption ({ rootState, state, commit, dispatch }, { name, value }) {\n      const oldValue = get(state, name)\n      const map = settingsMap[name]\n      if (!map) throw new Error('Invalid server-side setting')\n      const { set: path = map, api = defaultApi } = map\n      commit('wipeServerSideOption', { name })\n\n      api({ rootState, commit }, { path, value, oldValue })\n        .catch((e) => {\n          console.warn('Error setting server-side option:', e)\n          commit('confirmServerSideOption', { name, value: oldValue })\n        })\n    },\n    logout ({ commit }) {\n      commit('wipeAllServerSideOptions')\n    }\n  }\n}\n\nexport default serverSideConfig\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        // eslint-disable-next-line\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    const message = val.reduce((acc, message) => {\n      const 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, parseSource, parseUser, parseNotification, parseAttachment, parseChat, parseLinkHeaderPagination } from '../entity_normalizer/entity_normalizer.service.js'\nimport { RegistrationError, StatusCodeError } from '../errors/errors'\n\n/* eslint-env browser */\nconst MUTES_IMPORT_URL = '/api/pleroma/mutes_import'\nconst BLOCKS_IMPORT_URL = '/api/pleroma/blocks_import'\nconst FOLLOW_IMPORT_URL = '/api/pleroma/follow_import'\nconst DELETE_ACCOUNT_URL = '/api/pleroma/delete_account'\nconst CHANGE_EMAIL_URL = '/api/pleroma/change_email'\nconst CHANGE_PASSWORD_URL = '/api/pleroma/change_password'\nconst MOVE_ACCOUNT_URL = '/api/pleroma/move_account'\nconst ALIASES_URL = '/api/pleroma/aliases'\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_STATUS_SOURCE_URL = id => `/api/v1/statuses/${id}/source`\nconst MASTODON_STATUS_HISTORY_URL = id => `/api/v1/statuses/${id}/history`\nconst MASTODON_USER_URL = '/api/v1/accounts'\nconst MASTODON_USER_LOOKUP_URL = '/api/v1/accounts/lookup'\nconst MASTODON_USER_RELATIONSHIPS_URL = '/api/v1/accounts/relationships'\nconst MASTODON_USER_TIMELINE_URL = id => `/api/v1/accounts/${id}/statuses`\nconst MASTODON_USER_IN_LISTS = id => `/api/v1/accounts/${id}/lists`\nconst MASTODON_LIST_URL = id => `/api/v1/lists/${id}`\nconst MASTODON_LIST_TIMELINE_URL = id => `/api/v1/timelines/list/${id}`\nconst MASTODON_LIST_ACCOUNTS_URL = id => `/api/v1/lists/${id}/accounts`\nconst MASTODON_TAG_TIMELINE_URL = tag => `/api/v1/timelines/tag/${tag}`\nconst MASTODON_BOOKMARK_TIMELINE_URL = '/api/v1/bookmarks'\nconst MASTODON_USER_BLOCKS_URL = '/api/v1/blocks/'\nconst MASTODON_USER_MUTES_URL = '/api/v1/mutes/'\nconst MASTODON_BLOCK_USER_URL = id => `/api/v1/accounts/${id}/block`\nconst MASTODON_UNBLOCK_USER_URL = id => `/api/v1/accounts/${id}/unblock`\nconst MASTODON_MUTE_USER_URL = id => `/api/v1/accounts/${id}/mute`\nconst MASTODON_UNMUTE_USER_URL = id => `/api/v1/accounts/${id}/unmute`\nconst MASTODON_REMOVE_USER_FROM_FOLLOWERS = id => `/api/v1/accounts/${id}/remove_from_followers`\nconst MASTODON_SUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/subscribe`\nconst MASTODON_UNSUBSCRIBE_USER = id => `/api/v1/pleroma/accounts/${id}/unsubscribe`\nconst MASTODON_USER_NOTE_URL = id => `/api/v1/accounts/${id}/note`\nconst MASTODON_BOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/bookmark`\nconst MASTODON_UNBOOKMARK_STATUS_URL = id => `/api/v1/statuses/${id}/unbookmark`\nconst MASTODON_POST_STATUS_URL = '/api/v1/statuses'\nconst MASTODON_MEDIA_UPLOAD_URL = '/api/v1/media'\nconst MASTODON_VOTE_URL = id => `/api/v1/polls/${id}/votes`\nconst MASTODON_POLL_URL = id => `/api/v1/polls/${id}`\nconst MASTODON_STATUS_FAVORITEDBY_URL = id => `/api/v1/statuses/${id}/favourited_by`\nconst MASTODON_STATUS_REBLOGGEDBY_URL = id => `/api/v1/statuses/${id}/reblogged_by`\nconst MASTODON_PROFILE_UPDATE_URL = '/api/v1/accounts/update_credentials'\nconst MASTODON_REPORT_USER_URL = '/api/v1/reports'\nconst MASTODON_PIN_OWN_STATUS = id => `/api/v1/statuses/${id}/pin`\nconst MASTODON_UNPIN_OWN_STATUS = id => `/api/v1/statuses/${id}/unpin`\nconst MASTODON_MUTE_CONVERSATION = id => `/api/v1/statuses/${id}/mute`\nconst MASTODON_UNMUTE_CONVERSATION = id => `/api/v1/statuses/${id}/unmute`\nconst MASTODON_SEARCH_2 = '/api/v2/search'\nconst MASTODON_USER_SEARCH_URL = '/api/v1/accounts/search'\nconst MASTODON_DOMAIN_BLOCKS_URL = '/api/v1/domain_blocks'\nconst MASTODON_LISTS_URL = '/api/v1/lists'\nconst MASTODON_STREAMING = '/api/v1/streaming'\nconst MASTODON_KNOWN_DOMAIN_LIST_URL = '/api/v1/instance/peers'\nconst MASTODON_ANNOUNCEMENTS_URL = '/api/v1/announcements'\nconst MASTODON_ANNOUNCEMENTS_DISMISS_URL = id => `/api/v1/announcements/${id}/dismiss`\nconst PLEROMA_EMOJI_REACTIONS_URL = id => `/api/v1/pleroma/statuses/${id}/reactions`\nconst PLEROMA_EMOJI_REACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_EMOJI_UNREACT_URL = (id, emoji) => `/api/v1/pleroma/statuses/${id}/reactions/${emoji}`\nconst PLEROMA_CHATS_URL = '/api/v1/pleroma/chats'\nconst PLEROMA_CHAT_URL = id => `/api/v1/pleroma/chats/by-account-id/${id}`\nconst PLEROMA_CHAT_MESSAGES_URL = id => `/api/v1/pleroma/chats/${id}/messages`\nconst PLEROMA_CHAT_READ_URL = id => `/api/v1/pleroma/chats/${id}/read`\nconst PLEROMA_DELETE_CHAT_MESSAGE_URL = (chatId, messageId) => `/api/v1/pleroma/chats/${chatId}/messages/${messageId}`\nconst PLEROMA_ADMIN_REPORTS = '/api/pleroma/admin/reports'\nconst PLEROMA_BACKUP_URL = '/api/v1/pleroma/backups'\nconst PLEROMA_ANNOUNCEMENTS_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_POST_ANNOUNCEMENT_URL = '/api/v1/pleroma/admin/announcements'\nconst PLEROMA_EDIT_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\nconst PLEROMA_DELETE_ANNOUNCEMENT_URL = id => `/api/v1/pleroma/admin/announcements/${id}`\n\nconst oldfetch = window.fetch\n\nconst fetch = (url, options) => {\n  options = options || {}\n  const baseUrl = ''\n  const fullUrl = baseUrl + url\n  options.credentials = 'same-origin'\n  return oldfetch(fullUrl, options)\n}\n\nconst promisedRequest = ({ method, url, params, payload, credentials, headers = {} }) => {\n  const options = {\n    method,\n    headers: {\n      Accept: 'application/json',\n      'Content-Type': 'application/json',\n      ...headers\n    }\n  }\n  if (params) {\n    url += '?' + Object.entries(params)\n      .map(([key, value]) => encodeURIComponent(key) + '=' + encodeURIComponent(value))\n      .join('&')\n  }\n  if (payload) {\n    options.body = JSON.stringify(payload)\n  }\n  if (credentials) {\n    options.headers = {\n      ...options.headers,\n      ...authHeaders(credentials)\n    }\n  }\n  return fetch(url, options)\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url, options }, response))\n          }\n          return resolve(json)\n        })\n        .catch((error) => {\n          return reject(new StatusCodeError(response.status, error, { url, options }, response))\n        })\n      )\n    })\n}\n\nconst updateNotificationSettings = ({ credentials, settings }) => {\n  const form = new FormData()\n\n  each(settings, (value, key) => {\n    form.append(key, value)\n  })\n\n  return fetch(NOTIFICATION_SETTINGS_URL, {\n    headers: authHeaders(credentials),\n    method: 'PUT',\n    body: form\n  }).then((data) => data.json())\n}\n\nconst updateProfileImages = ({ credentials, avatar = null, avatarName = null, banner = null, background = null }) => {\n  const form = new FormData()\n  if (avatar !== null) {\n    if (avatarName !== null) {\n      form.append('avatar', avatar, avatarName)\n    } else {\n      form.append('avatar', avatar)\n    }\n  }\n  if (banner !== null) form.append('header', banner)\n  if (background !== null) form.append('pleroma_background_image', background)\n  return fetch(MASTODON_PROFILE_UPDATE_URL, {\n    headers: authHeaders(credentials),\n    method: 'PATCH',\n    body: form\n  })\n    .then((data) => data.json())\n    .then((data) => {\n      if (data.error) {\n        throw new Error(data.error)\n      }\n      return parseUser(data)\n    })\n}\n\nconst updateProfile = ({ credentials, params }) => {\n  return promisedRequest({\n    url: MASTODON_PROFILE_UPDATE_URL,\n    method: 'PATCH',\n    payload: params,\n    credentials\n  }).then((data) => parseUser(data))\n}\n\n// Params needed:\n// nickname\n// email\n// fullname\n// password\n// password_confirm\n//\n// Optional\n// bio\n// homepage\n// location\n// token\n// language\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  const 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  const url = MASTODON_UNFOLLOW_URL(id)\n  return fetch(url, {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst fetchUserInLists = ({ id, credentials }) => {\n  const url = MASTODON_USER_IN_LISTS(id)\n  return fetch(url, {\n    headers: authHeaders(credentials)\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 removeUserFromFollowers = ({ id, credentials }) => {\n  return fetch(MASTODON_REMOVE_USER_FROM_FOLLOWERS(id), {\n    headers: authHeaders(credentials),\n    method: 'POST'\n  }).then((data) => data.json())\n}\n\nconst editUserNote = ({ id, credentials, comment }) => {\n  return promisedRequest({\n    url: MASTODON_USER_NOTE_URL(id),\n    credentials,\n    payload: {\n      comment\n    },\n    method: 'POST'\n  })\n}\n\nconst approveUser = ({ id, credentials }) => {\n  const 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  const 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  const url = `${MASTODON_USER_URL}/${id}`\n  return promisedRequest({ url, credentials })\n    .then((data) => parseUser(data))\n}\n\nconst fetchUserByName = ({ name, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_USER_LOOKUP_URL,\n    credentials,\n    params: { acct: name }\n  })\n    .then(data => data.id)\n    .catch(error => {\n      if (error && error.statusCode === 404) {\n        // Either the backend does not support lookup endpoint,\n        // or there is no user with such name. Fallback and treat name as id.\n        return name\n      } else {\n        throw error\n      }\n    })\n    .then(id => fetchUser({ id, credentials }))\n}\n\nconst fetchUserRelationship = ({ id, credentials }) => {\n  const url = `${MASTODON_USER_RELATIONSHIPS_URL}/?id=${id}`\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((response) => {\n      return new Promise((resolve, reject) => response.json()\n        .then((json) => {\n          if (!response.ok) {\n            return reject(new StatusCodeError(response.status, json, { url }, response))\n          }\n          return resolve(json)\n        }))\n    })\n}\n\nconst fetchFriends = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWING_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    'with_relationships=true'\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst exportFriends = ({ id, credentials }) => {\n  // eslint-disable-next-line no-async-promise-executor\n  return new Promise(async (resolve, reject) => {\n    try {\n      let friends = []\n      let more = true\n      while (more) {\n        const maxId = friends.length > 0 ? last(friends).id : undefined\n        const users = await fetchFriends({ id, maxId, credentials })\n        friends = concat(friends, users)\n        if (users.length === 0) {\n          more = false\n        }\n      }\n      resolve(friends)\n    } catch (err) {\n      reject(err)\n    }\n  })\n}\n\nconst fetchFollowers = ({ id, maxId, sinceId, limit = 20, credentials }) => {\n  let url = MASTODON_FOLLOWERS_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`,\n    'with_relationships=true'\n  ].filter(_ => _).join('&')\n\n  url += args ? '?' + args : ''\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchFollowRequests = ({ credentials }) => {\n  const url = MASTODON_FOLLOW_REQUESTS_URL\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(parseUser))\n}\n\nconst fetchLists = ({ credentials }) => {\n  const url = MASTODON_LISTS_URL\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n}\n\nconst createList = ({ title, credentials }) => {\n  const url = MASTODON_LISTS_URL\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(url, {\n    headers,\n    method: 'POST',\n    body: JSON.stringify({ title })\n  }).then((data) => data.json())\n}\n\nconst getList = ({ listId, credentials }) => {\n  const url = MASTODON_LIST_URL(listId)\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n}\n\nconst updateList = ({ listId, title, credentials }) => {\n  const url = MASTODON_LIST_URL(listId)\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(url, {\n    headers,\n    method: 'PUT',\n    body: JSON.stringify({ title })\n  })\n}\n\nconst getListAccounts = ({ listId, credentials }) => {\n  const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => data.map(({ id }) => id))\n}\n\nconst addAccountsToList = ({ listId, accountIds, credentials }) => {\n  const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(url, {\n    headers,\n    method: 'POST',\n    body: JSON.stringify({ account_ids: accountIds })\n  })\n}\n\nconst removeAccountsFromList = ({ listId, accountIds, credentials }) => {\n  const url = MASTODON_LIST_ACCOUNTS_URL(listId)\n  const headers = authHeaders(credentials)\n  headers['Content-Type'] = 'application/json'\n\n  return fetch(url, {\n    headers,\n    method: 'DELETE',\n    body: JSON.stringify({ account_ids: accountIds })\n  })\n}\n\nconst deleteList = ({ listId, credentials }) => {\n  const url = MASTODON_LIST_URL(listId)\n  return fetch(url, {\n    method: 'DELETE',\n    headers: authHeaders(credentials)\n  })\n}\n\nconst fetchConversation = ({ id, credentials }) => {\n  const 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  const 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 fetchStatusSource = ({ id, credentials }) => {\n  const url = MASTODON_STATUS_SOURCE_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 source', data)\n    })\n    .then((data) => data.json())\n    .then((data) => parseSource(data))\n}\n\nconst fetchStatusHistory = ({ status, credentials }) => {\n  const url = MASTODON_STATUS_HISTORY_URL(status.id)\n  return promisedRequest({ url, credentials })\n    .then((data) => {\n      data.reverse()\n      return data.map((item) => {\n        item.originalStatus = status\n        return parseStatus(item)\n      })\n    })\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,\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,\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\n  })\n}\n\nconst fetchTimeline = ({\n  timeline,\n  credentials,\n  since = false,\n  until = false,\n  userId = false,\n  listId = false,\n  tag = false,\n  withMuted = false,\n  replyVisibility = 'all',\n  includeTypes = []\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    list: MASTODON_LIST_TIMELINE_URL,\n    favorites: MASTODON_USER_FAVORITES_TIMELINE_URL,\n    tag: MASTODON_TAG_TIMELINE_URL,\n    bookmarks: MASTODON_BOOKMARK_TIMELINE_URL\n  }\n  const isNotifications = timeline === 'notifications'\n  const params = []\n\n  let url = timelineUrls[timeline]\n\n  if (timeline === 'user' || timeline === 'media') {\n    url = url(userId)\n  }\n\n  if (timeline === 'list') {\n    url = url(listId)\n  }\n\n  if (since) {\n    params.push(['since_id', since])\n  }\n  if (until) {\n    params.push(['max_id', until])\n  }\n  if (tag) {\n    url = url(tag)\n  }\n  if (timeline === 'media') {\n    params.push(['only_media', 1])\n  }\n  if (timeline === 'public') {\n    params.push(['local', true])\n  }\n  if (timeline === 'public' || timeline === 'publicAndExternal') {\n    params.push(['only_media', false])\n  }\n  if (timeline !== 'favorites' && timeline !== 'bookmarks') {\n    params.push(['with_muted', withMuted])\n  }\n  if (replyVisibility !== 'all') {\n    params.push(['reply_visibility', replyVisibility])\n  }\n  if (includeTypes.length > 0) {\n    includeTypes.forEach(type => {\n      params.push(['include_types[]', type])\n    })\n  }\n\n  params.push(['limit', 20])\n\n  const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  let status = ''\n  let statusText = ''\n\n  let pagination = {}\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      status = data.status\n      statusText = data.statusText\n      pagination = parseLinkHeaderPagination(data.headers.get('Link'), {\n        flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n      })\n      return data\n    })\n    .then((data) => data.json())\n    .then((data) => {\n      if (!data.errors) {\n        return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n      } else {\n        data.status = status\n        data.statusText = statusText\n        return data\n      }\n    })\n}\n\nconst fetchPinnedStatuses = ({ id, credentials }) => {\n  const url = MASTODON_USER_TIMELINE_URL(id) + '?pinned=true'\n  return promisedRequest({ url, credentials })\n    .then((data) => data.map(parseStatus))\n}\n\nconst verifyCredentials = (user) => {\n  return fetch(MASTODON_LOGIN_URL, {\n    headers: authHeaders(user)\n  })\n    .then((response) => {\n      if (response.ok) {\n        return response.json()\n      } else {\n        return {\n          error: response\n        }\n      }\n    })\n    .then((data) => data.error ? data : parseUser(data))\n}\n\nconst favorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_FAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unfavorite = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNFAVORITE_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst retweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst unretweet = ({ id, credentials }) => {\n  return promisedRequest({ url: MASTODON_UNRETWEET_URL(id), method: 'POST', credentials })\n    .then((data) => parseStatus(data))\n}\n\nconst bookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_BOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst unbookmarkStatus = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_UNBOOKMARK_STATUS_URL(id),\n    headers: authHeaders(credentials),\n    method: 'POST'\n  })\n}\n\nconst postStatus = ({\n  credentials,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  mediaIds = [],\n  inReplyToStatusId,\n  contentType,\n  preview,\n  idempotencyKey\n}) => {\n  const form = new FormData()\n  const pollOptions = poll.options || []\n\n  form.append('status', status)\n  form.append('source', 'Pleroma FE')\n  if (spoilerText) form.append('spoiler_text', spoilerText)\n  if (visibility) form.append('visibility', visibility)\n  if (sensitive) form.append('sensitive', sensitive)\n  if (contentType) form.append('content_type', contentType)\n  mediaIds.forEach(val => {\n    form.append('media_ids[]', val)\n  })\n  if (pollOptions.some(option => option !== '')) {\n    const normalizedPoll = {\n      expires_in: poll.expiresIn,\n      multiple: poll.multiple\n    }\n    Object.keys(normalizedPoll).forEach(key => {\n      form.append(`poll[${key}]`, normalizedPoll[key])\n    })\n\n    pollOptions.forEach(option => {\n      form.append('poll[options][]', option)\n    })\n  }\n  if (inReplyToStatusId) {\n    form.append('in_reply_to_id', inReplyToStatusId)\n  }\n  if (preview) {\n    form.append('preview', 'true')\n  }\n\n  const postHeaders = authHeaders(credentials)\n  if (idempotencyKey) {\n    postHeaders['idempotency-key'] = idempotencyKey\n  }\n\n  return fetch(MASTODON_POST_STATUS_URL, {\n    body: form,\n    method: 'POST',\n    headers: postHeaders\n  })\n    .then((response) => {\n      return response.json()\n    })\n    .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst editStatus = ({\n  id,\n  credentials,\n  status,\n  spoilerText,\n  sensitive,\n  poll,\n  mediaIds = [],\n  contentType\n}) => {\n  const form = new FormData()\n  const pollOptions = poll.options || []\n\n  form.append('status', status)\n  if (spoilerText) form.append('spoiler_text', spoilerText)\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\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\n  const putHeaders = authHeaders(credentials)\n\n  return fetch(MASTODON_STATUS_URL(id), {\n    body: form,\n    method: 'PUT',\n    headers: putHeaders\n  })\n    .then((response) => {\n      return response.json()\n    })\n    .then((data) => data.error ? data : parseStatus(data))\n}\n\nconst deleteStatus = ({ id, credentials }) => {\n  return fetch(MASTODON_DELETE_URL(id), {\n    headers: authHeaders(credentials),\n    method: 'DELETE'\n  })\n}\n\nconst uploadMedia = ({ formData, credentials }) => {\n  return fetch(MASTODON_MEDIA_UPLOAD_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((data) => data.json())\n    .then((data) => parseAttachment(data))\n}\n\nconst setMediaDescription = ({ id, description, credentials }) => {\n  return promisedRequest({\n    url: `${MASTODON_MEDIA_UPLOAD_URL}/${id}`,\n    method: 'PUT',\n    headers: authHeaders(credentials),\n    payload: {\n      description\n    }\n  }).then((data) => parseAttachment(data))\n}\n\nconst importMutes = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(MUTES_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importBlocks = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(BLOCKS_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst importFollows = ({ file, credentials }) => {\n  const formData = new FormData()\n  formData.append('list', file)\n  return fetch(FOLLOW_IMPORT_URL, {\n    body: formData,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.ok)\n}\n\nconst deleteAccount = ({ credentials, password }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n\n  return fetch(DELETE_ACCOUNT_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst changeEmail = ({ credentials, email, password }) => {\n  const form = new FormData()\n\n  form.append('email', email)\n  form.append('password', password)\n\n  return fetch(CHANGE_EMAIL_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst moveAccount = ({ credentials, password, targetAccount }) => {\n  const form = new FormData()\n\n  form.append('password', password)\n  form.append('target_account', targetAccount)\n\n  return fetch(MOVE_ACCOUNT_URL, {\n    body: form,\n    method: 'POST',\n    headers: authHeaders(credentials)\n  })\n    .then((response) => response.json())\n}\n\nconst addAlias = ({ credentials, alias }) => {\n  return promisedRequest({\n    url: ALIASES_URL,\n    method: 'PUT',\n    credentials,\n    payload: { alias }\n  })\n}\n\nconst deleteAlias = ({ credentials, alias }) => {\n  return promisedRequest({\n    url: ALIASES_URL,\n    method: 'DELETE',\n    credentials,\n    payload: { alias }\n  })\n}\n\nconst listAliases = ({ credentials }) => {\n  return promisedRequest({\n    url: ALIASES_URL,\n    method: 'GET',\n    credentials,\n    params: {\n      _cacheBooster: (new Date()).getTime()\n    }\n  })\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 addBackup = ({ credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_BACKUP_URL,\n    method: 'POST',\n    credentials\n  })\n}\n\nconst listBackups = ({ credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_BACKUP_URL,\n    method: 'GET',\n    credentials,\n    params: {\n      _cacheBooster: (new Date()).getTime()\n    }\n  })\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\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, type }) => {\n  let url = MASTODON_SEARCH_2\n  const 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  if (type) {\n    params.push(['following', type])\n  }\n\n  params.push(['with_relationships', true])\n\n  const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n  url += `?${queryString}`\n\n  return fetch(url, { headers: authHeaders(credentials) })\n    .then((data) => {\n      if (data.ok) {\n        return data\n      }\n      throw new Error('Error fetching search result', data)\n    })\n    .then((data) => { return data.json() })\n    .then((data) => {\n      data.accounts = data.accounts.slice(0, limit).map(u => parseUser(u))\n      data.statuses = data.statuses.slice(0, limit).map(s => parseStatus(s))\n      return data\n    })\n}\n\nconst fetchKnownDomains = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_KNOWN_DOMAIN_LIST_URL, credentials })\n}\n\nconst fetchDomainMutes = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_DOMAIN_BLOCKS_URL, credentials })\n}\n\nconst muteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'POST',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst unmuteDomain = ({ domain, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_DOMAIN_BLOCKS_URL,\n    method: 'DELETE',\n    payload: { domain },\n    credentials\n  })\n}\n\nconst dismissNotification = ({ credentials, id }) => {\n  return promisedRequest({\n    url: MASTODON_DISMISS_NOTIFICATION_URL(id),\n    method: 'POST',\n    payload: { id },\n    credentials\n  })\n}\n\nconst adminFetchAnnouncements = ({ credentials }) => {\n  return promisedRequest({ url: PLEROMA_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst fetchAnnouncements = ({ credentials }) => {\n  return promisedRequest({ url: MASTODON_ANNOUNCEMENTS_URL, credentials })\n}\n\nconst dismissAnnouncement = ({ id, credentials }) => {\n  return promisedRequest({\n    url: MASTODON_ANNOUNCEMENTS_DISMISS_URL(id),\n    credentials,\n    method: 'POST'\n  })\n}\n\nconst announcementToPayload = ({ content, startsAt, endsAt, allDay }) => {\n  const payload = { content }\n\n  if (typeof startsAt !== 'undefined') {\n    payload.starts_at = startsAt ? new Date(startsAt).toISOString() : null\n  }\n\n  if (typeof endsAt !== 'undefined') {\n    payload.ends_at = endsAt ? new Date(endsAt).toISOString() : null\n  }\n\n  if (typeof allDay !== 'undefined') {\n    payload.all_day = allDay\n  }\n\n  return payload\n}\n\nconst postAnnouncement = ({ credentials, content, startsAt, endsAt, allDay }) => {\n  return promisedRequest({\n    url: PLEROMA_POST_ANNOUNCEMENT_URL,\n    credentials,\n    method: 'POST',\n    payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n  })\n}\n\nconst editAnnouncement = ({ id, credentials, content, startsAt, endsAt, allDay }) => {\n  return promisedRequest({\n    url: PLEROMA_EDIT_ANNOUNCEMENT_URL(id),\n    credentials,\n    method: 'PATCH',\n    payload: announcementToPayload({ content, startsAt, endsAt, allDay })\n  })\n}\n\nconst deleteAnnouncement = ({ id, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_DELETE_ANNOUNCEMENT_URL(id),\n    credentials,\n    method: 'DELETE'\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  'status.update'\n])\n\nconst PLEROMA_STREAMING_EVENTS = new Set([\n  'pleroma:chat_update'\n])\n\n// A thin wrapper around WebSocket API that allows adding a pre-processor to it\n// Uses EventTarget and a CustomEvent to proxy events\nexport const ProcessedWS = ({\n  url,\n  preprocessor = handleMastoWS,\n  id = 'Unknown'\n}) => {\n  const eventTarget = new EventTarget()\n  const socket = new WebSocket(url)\n  if (!socket) throw new Error(`Failed to create socket ${id}`)\n  const proxy = (original, eventName, processor = a => a) => {\n    original.addEventListener(eventName, (eventData) => {\n      eventTarget.dispatchEvent(new CustomEvent(\n        eventName,\n        { detail: processor(eventData) }\n      ))\n    })\n  }\n  socket.addEventListener('open', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket connected`, wsEvent)\n  })\n  socket.addEventListener('error', (wsEvent) => {\n    console.debug(`[WS][${id}] Socket errored`, wsEvent)\n  })\n  socket.addEventListener('close', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Socket disconnected with code ${wsEvent.code}`,\n      wsEvent\n    )\n  })\n  // Commented code reason: very spammy, uncomment to enable message debug logging\n  /*\n  socket.addEventListener('message', (wsEvent) => {\n    console.debug(\n      `[WS][${id}] Message received`,\n      wsEvent\n    )\n  })\n  /**/\n\n  proxy(socket, 'open')\n  proxy(socket, 'close')\n  proxy(socket, 'message', preprocessor)\n  proxy(socket, 'error')\n\n  // 1000 = Normal Closure\n  eventTarget.close = () => { socket.close(1000, 'Shutting down socket') }\n  eventTarget.getState = () => socket.readyState\n\n  return eventTarget\n}\n\nexport const handleMastoWS = (wsEvent) => {\n  const { data } = wsEvent\n  if (!data) return\n  const parsedEvent = JSON.parse(data)\n  const { event, payload } = parsedEvent\n  if (MASTODON_STREAMING_EVENTS.has(event) || PLEROMA_STREAMING_EVENTS.has(event)) {\n    // MastoBE and PleromaBE both send payload for delete as a PLAIN string\n    if (event === 'delete') {\n      return { event, id: payload }\n    }\n    const data = payload ? JSON.parse(payload) : null\n    if (event === 'update') {\n      return { event, status: parseStatus(data) }\n    } else if (event === 'status.update') {\n      return { event, status: parseStatus(data) }\n    } else if (event === 'notification') {\n      return { event, notification: parseNotification(data) }\n    } else if (event === 'pleroma:chat_update') {\n      return { event, chatUpdate: parseChat(data) }\n    }\n  } else {\n    console.warn('Unknown event', wsEvent)\n    return null\n  }\n}\n\nexport const WSConnectionStatus = Object.freeze({\n  JOINED: 1,\n  CLOSED: 2,\n  ERROR: 3,\n  DISABLED: 4,\n  STARTING: 5,\n  STARTING_INITIAL: 6\n})\n\nconst chats = ({ credentials }) => {\n  return fetch(PLEROMA_CHATS_URL, { headers: authHeaders(credentials) })\n    .then((data) => data.json())\n    .then((data) => {\n      return { chats: data.map(parseChat).filter(c => c) }\n    })\n}\n\nconst getOrCreateChat = ({ accountId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_URL(accountId),\n    method: 'POST',\n    credentials\n  })\n}\n\nconst chatMessages = ({ id, credentials, maxId, sinceId, limit = 20 }) => {\n  let url = PLEROMA_CHAT_MESSAGES_URL(id)\n  const args = [\n    maxId && `max_id=${maxId}`,\n    sinceId && `since_id=${sinceId}`,\n    limit && `limit=${limit}`\n  ].filter(_ => _).join('&')\n\n  url = url + (args ? '?' + args : '')\n\n  return promisedRequest({\n    url,\n    method: 'GET',\n    credentials\n  })\n}\n\nconst sendChatMessage = ({ id, content, mediaId = null, idempotencyKey, credentials }) => {\n  const payload = {\n    content\n  }\n\n  if (mediaId) {\n    payload.media_id = mediaId\n  }\n\n  const headers = {}\n\n  if (idempotencyKey) {\n    headers['idempotency-key'] = idempotencyKey\n  }\n\n  return promisedRequest({\n    url: PLEROMA_CHAT_MESSAGES_URL(id),\n    method: 'POST',\n    payload,\n    credentials,\n    headers\n  })\n}\n\nconst readChat = ({ id, lastReadId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_CHAT_READ_URL(id),\n    method: 'POST',\n    payload: {\n      last_read_id: lastReadId\n    },\n    credentials\n  })\n}\n\nconst deleteChatMessage = ({ chatId, messageId, credentials }) => {\n  return promisedRequest({\n    url: PLEROMA_DELETE_CHAT_MESSAGE_URL(chatId, messageId),\n    method: 'DELETE',\n    credentials\n  })\n}\n\nconst setReportState = ({ id, state, credentials }) => {\n  // TODO: Can't use promisedRequest because on OK this does not return json\n  // See https://git.pleroma.social/pleroma/pleroma-fe/-/merge_requests/1322\n  return fetch(PLEROMA_ADMIN_REPORTS, {\n    headers: {\n      ...authHeaders(credentials),\n      Accept: 'application/json',\n      'Content-Type': 'application/json'\n    },\n    method: 'PATCH',\n    body: JSON.stringify({\n      reports: [{\n        id,\n        state\n      }]\n    })\n  })\n    .then(data => {\n      if (data.status >= 500) {\n        throw Error(data.statusText)\n      } else if (data.status >= 400) {\n        return data.json()\n      }\n      return data\n    })\n    .then(data => {\n      if (data.errors) {\n        throw Error(data.errors[0].message)\n      }\n    })\n}\n\nconst apiService = {\n  verifyCredentials,\n  fetchTimeline,\n  fetchPinnedStatuses,\n  fetchConversation,\n  fetchStatus,\n  fetchStatusSource,\n  fetchStatusHistory,\n  fetchFriends,\n  exportFriends,\n  fetchFollowers,\n  followUser,\n  unfollowUser,\n  pinOwnStatus,\n  unpinOwnStatus,\n  muteConversation,\n  unmuteConversation,\n  blockUser,\n  unblockUser,\n  removeUserFromFollowers,\n  editUserNote,\n  fetchUser,\n  fetchUserByName,\n  fetchUserRelationship,\n  favorite,\n  unfavorite,\n  retweet,\n  unretweet,\n  bookmarkStatus,\n  unbookmarkStatus,\n  postStatus,\n  editStatus,\n  deleteStatus,\n  uploadMedia,\n  setMediaDescription,\n  fetchMutes,\n  muteUser,\n  unmuteUser,\n  subscribeUser,\n  unsubscribeUser,\n  fetchBlocks,\n  fetchOAuthTokens,\n  revokeOAuthToken,\n  tagUser,\n  untagUser,\n  deleteUser,\n  addRight,\n  deleteRight,\n  activateUser,\n  deactivateUser,\n  register,\n  getCaptcha,\n  updateProfileImages,\n  updateProfile,\n  importMutes,\n  importBlocks,\n  importFollows,\n  deleteAccount,\n  changeEmail,\n  moveAccount,\n  addAlias,\n  deleteAlias,\n  listAliases,\n  changePassword,\n  settingsMFA,\n  mfaDisableOTP,\n  generateMfaBackupCodes,\n  mfaSetupOTP,\n  mfaConfirmOTP,\n  addBackup,\n  listBackups,\n  fetchFollowRequests,\n  fetchLists,\n  createList,\n  getList,\n  updateList,\n  getListAccounts,\n  addAccountsToList,\n  removeAccountsFromList,\n  deleteList,\n  approveUser,\n  denyUser,\n  suggestions,\n  markNotificationsAsSeen,\n  dismissNotification,\n  vote,\n  fetchPoll,\n  fetchFavoritedByUsers,\n  fetchRebloggedByUsers,\n  fetchEmojiReactions,\n  reactWithEmoji,\n  unreactWithEmoji,\n  reportUser,\n  updateNotificationSettings,\n  search2,\n  searchUsers,\n  fetchKnownDomains,\n  fetchDomainMutes,\n  muteDomain,\n  unmuteDomain,\n  chats,\n  getOrCreateChat,\n  chatMessages,\n  sendChatMessage,\n  readChat,\n  deleteChatMessage,\n  setReportState,\n  fetchUserInLists,\n  fetchAnnouncements,\n  dismissAnnouncement,\n  postAnnouncement,\n  editAnnouncement,\n  deleteAnnouncement,\n  adminFetchAnnouncements\n}\n\nexport default apiService\n","import { invertLightness, contrastRatio } from 'chromatism'\n\n// useful for visualizing color when debugging\nexport const consoleColor = (color) => console.log('%c##########', 'background: ' + color + '; color: ' + color)\n\n/**\n * Convert r, g, b values into hex notation. All components are [0-255]\n *\n * @param {Number|String|Object} r - Either red component, {r,g,b} object, or hex string\n * @param {Number} [g] - Green component\n * @param {Number} [b] - Blue component\n */\nexport const rgb2hex = (r, g, b) => {\n  if (r === null || typeof r === 'undefined') {\n    return undefined\n  }\n  // TODO: clean up this mess\n  if (r[0] === '#' || r === 'transparent') {\n    return r\n  }\n  if (typeof r === 'object') {\n    ({ r, g, b } = r)\n  }\n  [r, g, b] = [r, g, b].map(val => {\n    val = Math.ceil(val)\n    val = val < 0 ? 0 : val\n    val = val > 255 ? 255 : val\n    return val\n  })\n  return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`\n}\n\n/**\n * Converts 8-bit RGB component into linear component\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n * https://en.wikipedia.org/wiki/SRGB#The_reverse_transformation\n *\n * @param {Number} bit - color component [0..255]\n * @returns {Number} linear component [0..1]\n */\nconst c2linear = (bit) => {\n  // W3C gives 0.03928 while wikipedia states 0.04045\n  // what those magical numbers mean - I don't know.\n  // something about gamma-correction, i suppose.\n  // Sticking with W3C example.\n  const c = bit / 255\n  if (c < 0.03928) {\n    return c / 12.92\n  } else {\n    return Math.pow((c + 0.055) / 1.055, 2.4)\n  }\n}\n\n/**\n * Converts sRGB into linear RGB\n * @param {Object} srgb - sRGB color\n * @returns {Object} linear rgb color\n */\nconst srgbToLinear = (srgb) => {\n  return 'rgb'.split('').reduce((acc, c) => { acc[c] = c2linear(srgb[c]); return acc }, {})\n}\n\n/**\n * Calculates relative luminance for given color\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/relative-luminance.xml\n *\n * @param {Object} srgb - sRGB color\n * @returns {Number} relative luminance\n */\nexport const relativeLuminance = (srgb) => {\n  const { r, g, b } = srgbToLinear(srgb)\n  return 0.2126 * r + 0.7152 * g + 0.0722 * b\n}\n\n/**\n * Generates color ratio between two colors. Order is unimporant\n * https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\n *\n * @param {Object} a - sRGB color\n * @param {Object} b - sRGB color\n * @returns {Number} color ratio\n */\nexport const getContrastRatio = (a, b) => {\n  const la = relativeLuminance(a)\n  const lb = relativeLuminance(b)\n  const [l1, l2] = la > lb ? [la, lb] : [lb, la]\n\n  return (l1 + 0.05) / (l2 + 0.05)\n}\n\n/**\n * Same as `getContrastRatio` but for multiple layers in-between\n *\n * @param {Object} text - text color (topmost layer)\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n * @param {Object} bedrock - layer at the very bottom\n */\nexport const getContrastRatioLayers = (text, layers, bedrock) => {\n  return getContrastRatio(alphaBlendLayers(bedrock, layers), text)\n}\n\n/**\n * This performs alpha blending between solid background and semi-transparent foreground\n *\n * @param {Object} fg - top layer color\n * @param {Number} fga - top layer's alpha\n * @param {Object} bg - bottom layer color\n * @returns {Object} sRGB of resulting color\n */\nexport const alphaBlend = (fg, fga, bg) => {\n  if (fga === 1 || typeof fga === 'undefined') return fg\n  return 'rgb'.split('').reduce((acc, c) => {\n    // Simplified https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending\n    // for opaque bg and transparent fg\n    acc[c] = (fg[c] * fga + bg[c] * (1 - fga))\n    return acc\n  }, {})\n}\n\n/**\n * Same as `alphaBlend` but for multiple layers in-between\n *\n * @param {Object} bedrock - layer at the very bottom\n * @param {[Object, Number]} layers[] - layers between text and bedrock\n */\nexport const alphaBlendLayers = (bedrock, layers) => layers.reduce((acc, [color, opacity]) => {\n  return alphaBlend(color, opacity, acc)\n}, bedrock)\n\nexport const invert = (rgb) => {\n  return 'rgb'.split('').reduce((acc, c) => {\n    acc[c] = 255 - rgb[c]\n    return acc\n  }, {})\n}\n\n/**\n * Converts #rrggbb hex notation into an {r, g, b} object\n *\n * @param {String} hex - #rrggbb string\n * @returns {Object} rgb representation of the color, values are 0-255\n */\nexport const hex2rgb = (hex) => {\n  const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n  return result\n    ? {\n        r: parseInt(result[1], 16),\n        g: parseInt(result[2], 16),\n        b: parseInt(result[3], 16)\n      }\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 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","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  const r = { num: round(d / YEAR), key: 'time.unit.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.unit.seconds'\n  } else if (d < HOUR) {\n    r.num = round(d / MINUTE)\n    r.key = 'time.unit.minutes'\n  } else if (d < DAY) {\n    r.num = round(d / HOUR)\n    r.key = 'time.unit.hours'\n  } else if (d < WEEK) {\n    r.num = round(d / DAY)\n    r.key = 'time.unit.days'\n  } else if (d < MONTH) {\n    r.num = round(d / WEEK)\n    r.key = 'time.unit.weeks'\n  } else if (d < YEAR) {\n    r.num = round(d / MONTH)\n    r.key = 'time.unit.months'\n  }\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","export const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n  if (!('Notification' in window && window.Notification.permission === 'granted')) return\n  if (rootState.statuses.notifications.desktopNotificationSilence) { return }\n\n  const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n  // Chrome is known for not closing notifications automatically\n  // according to MDN, anyway.\n  setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n}\n","import escape from 'escape-html'\nimport parseLinkHeader from 'parse-link-header'\nimport { isStatusNotification } from '../notification_utils/notification_utils.js'\nimport punycode from 'punycode.js'\n\n/** NOTICE! **\n * Do not initialize UI-generated data here.\n * It will override existing data.\n *\n * i.e. user.pinnedStatusIds was set to [] here\n * UI code would update it with data but upon next user fetch\n * it would be reverted back to []\n */\n\nconst qvitterStatusType = (status) => {\n  if (status.is_post_verb) {\n    return 'status'\n  }\n\n  if (status.retweeted_status) {\n    return 'retweet'\n  }\n\n  if ((typeof status.uri === 'string' && status.uri.match(/(fave|objectType=Favourite)/)) ||\n      (typeof status.text === 'string' && status.text.match(/favorited/))) {\n    return 'favorite'\n  }\n\n  if (status.text.match(/deleted notice {{tag/) || status.qvitter_delete_notice) {\n    return 'deletion'\n  }\n\n  if (status.text.match(/started following/) || status.activity_type === 'follow') {\n    return 'follow'\n  }\n\n  return 'unknown'\n}\n\nexport const parseUser = (data) => {\n  const output = {}\n  const masto = Object.prototype.hasOwnProperty.call(data, 'acct')\n  // case for users in \"mentions\" property for statuses in MastoAPI\n  const mastoShort = masto && !Object.prototype.hasOwnProperty.call(data, 'avatar')\n\n  output.inLists = null\n  output.id = String(data.id)\n  output._original = data // used for server-side settings\n\n  if (masto) {\n    output.screen_name = data.acct\n    output.fqn = data.fqn\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.emoji = data.emojis\n    output.name = escape(data.display_name)\n    output.name_html = output.name\n    output.name_unescaped = data.display_name\n\n    output.description = data.note\n    // TODO cleanup this shit, output.description is overriden with source data\n    output.description_html = data.note\n\n    output.fields = data.fields\n    output.fields_html = data.fields.map(field => {\n      return {\n        name: escape(field.name),\n        value: field.value\n      }\n    })\n    output.fields_text = data.fields.map(field => {\n      return {\n        name: unescape(field.name.replace(/<[^>]*>/g, '')),\n        value: unescape(field.value.replace(/<[^>]*>/g, ''))\n      }\n    })\n\n    // Utilize avatar_static for gif avatars?\n    output.profile_image_url = data.avatar\n    output.profile_image_url_original = data.avatar\n\n    // Same, utilize header_static?\n    output.cover_photo = data.header\n\n    output.friends_count = data.following_count\n\n    output.bot = data.bot\n\n    if (data.pleroma) {\n      if (data.pleroma.settings_store) {\n        output.storage = data.pleroma.settings_store['pleroma-fe']\n      }\n      const relationship = data.pleroma.relationship\n\n      output.background_image = data.pleroma.background_image\n      output.favicon = data.pleroma.favicon\n      output.token = data.pleroma.chat_token\n\n      if (relationship) {\n        output.relationship = relationship\n      }\n\n      output.allow_following_move = data.pleroma.allow_following_move\n\n      output.hide_follows = data.pleroma.hide_follows\n      output.hide_followers = data.pleroma.hide_followers\n      output.hide_follows_count = data.pleroma.hide_follows_count\n      output.hide_followers_count = data.pleroma.hide_followers_count\n\n      output.rights = {\n        moderator: data.pleroma.is_moderator,\n        admin: data.pleroma.is_admin\n      }\n      // TODO: Clean up in UI? This is duplication from what BE does for qvitterapi\n      if (output.rights.admin) {\n        output.role = 'admin'\n      } else if (output.rights.moderator) {\n        output.role = 'moderator'\n      } else {\n        output.role = 'member'\n      }\n\n      if (data.pleroma.privileges) {\n        output.privileges = data.pleroma.privileges\n      } else if (data.pleroma.is_admin) {\n        output.privileges = [\n          'users_read',\n          'users_manage_invites',\n          'users_manage_activation_state',\n          'users_manage_tags',\n          'users_manage_credentials',\n          'users_delete',\n          'messages_read',\n          'messages_delete',\n          'instances_delete',\n          'reports_manage_reports',\n          'moderation_log_read',\n          'announcements_manage_announcements',\n          'emoji_manage_emoji',\n          'statistics_read'\n        ]\n      } else if (data.pleroma.is_moderator) {\n        output.privileges = [\n          'messages_delete',\n          'reports_manage_reports'\n        ]\n      } else {\n        output.privileges = []\n      }\n    }\n\n    if (data.source) {\n      output.description = data.source.note\n      output.default_scope = data.source.privacy\n      output.fields = data.source.fields\n      if (data.source.pleroma) {\n        output.no_rich_text = data.source.pleroma.no_rich_text\n        output.show_role = data.source.pleroma.show_role\n        output.discoverable = data.source.pleroma.discoverable\n      }\n    }\n\n    // TODO: handle is_local\n    output.is_local = !output.screen_name.includes('@')\n  } else {\n    output.screen_name = data.screen_name\n\n    output.name = data.name\n    output.name_html = data.name_html\n\n    output.description = data.description\n    output.description_html = data.description_html\n\n    output.profile_image_url = data.profile_image_url\n    output.profile_image_url_original = data.profile_image_url_original\n\n    output.cover_photo = data.cover_photo\n\n    output.friends_count = data.friends_count\n\n    // output.bot = ??? missing\n\n    output.statusnet_profile_url = data.statusnet_profile_url\n\n    output.is_local = data.is_local\n    output.role = data.role\n    output.show_role = data.show_role\n\n    if (data.rights) {\n      output.rights = {\n        moderator: data.rights.delete_others_notice,\n        admin: data.rights.admin\n      }\n    }\n    output.no_rich_text = data.no_rich_text\n    output.default_scope = data.default_scope\n    output.hide_follows = data.hide_follows\n    output.hide_followers = data.hide_followers\n    output.hide_follows_count = data.hide_follows_count\n    output.hide_followers_count = data.hide_followers_count\n    output.background_image = data.background_image\n    // Websocket token\n    output.token = data.token\n\n    // Convert relationsip data to expected format\n    output.relationship = {\n      muting: data.muted,\n      blocking: data.statusnet_blocking,\n      followed_by: data.follows_you,\n      following: data.following\n    }\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.locked = data.locked\n  output.followers_count = data.followers_count\n  output.statuses_count = data.statuses_count\n\n  if (data.pleroma) {\n    output.follow_request_count = data.pleroma.follow_request_count\n\n    output.tags = data.pleroma.tags\n\n    // deactivated was changed to is_active in Pleroma 2.3.0\n    // so check if is_active is present\n    output.deactivated = typeof data.pleroma.is_active !== 'undefined'\n      ? !data.pleroma.is_active // new backend\n      : data.pleroma.deactivated // old backend\n\n    output.notification_settings = data.pleroma.notification_settings\n    output.unread_chat_count = data.pleroma.unread_chat_count\n  }\n\n  output.tags = output.tags || []\n  output.rights = output.rights || {}\n  output.notification_settings = output.notification_settings || {}\n\n  // Convert punycode to unicode for UI\n  output.screen_name_ui = output.screen_name\n  if (output.screen_name && output.screen_name.includes('@')) {\n    const parts = output.screen_name.split('@')\n    const unicodeDomain = punycode.toUnicode(parts[1])\n    if (unicodeDomain !== parts[1]) {\n      // Add some identifier so users can potentially spot spoofing attempts:\n      // lain.com and xn--lin-6cd.com would appear identical otherwise.\n      output.screen_name_ui_contains_non_ascii = true\n      output.screen_name_ui = [parts[0], unicodeDomain].join('@')\n    } else {\n      output.screen_name_ui_contains_non_ascii = false\n    }\n  }\n\n  return output\n}\n\nexport const parseAttachment = (data) => {\n  const output = {}\n  const masto = !Object.prototype.hasOwnProperty.call(data, 'oembed')\n\n  if (masto) {\n    // Not exactly same...\n    output.mimetype = data.pleroma ? data.pleroma.mime_type : data.type\n    output.meta = data.meta // not present in BE yet\n    output.id = data.id\n  } else {\n    output.mimetype = data.mimetype\n    // output.meta = ??? missing\n  }\n\n  output.url = data.url\n  output.large_thumb_url = data.preview_url\n  output.description = data.description\n\n  return output\n}\n\nexport const parseSource = (data) => {\n  const output = {}\n\n  output.text = data.text\n  output.spoiler_text = data.spoiler_text\n  output.content_type = data.content_type\n\n  return output\n}\n\nexport const parseStatus = (data) => {\n  const output = {}\n  const masto = Object.prototype.hasOwnProperty.call(data, 'account')\n\n  if (masto) {\n    output.favorited = data.favourited\n    output.fave_num = data.favourites_count\n\n    output.repeated = data.reblogged\n    output.repeat_num = data.reblogs_count\n\n    output.bookmarked = data.bookmarked\n\n    output.type = data.reblog ? 'retweet' : 'status'\n    output.nsfw = data.sensitive\n\n    output.raw_html = data.content\n    output.emojis = data.emojis\n\n    output.tags = data.tags\n\n    output.edited_at = data.edited_at\n\n    if (data.pleroma) {\n      const { pleroma } = data\n      output.text = pleroma.content ? data.pleroma.content['text/plain'] : data.content\n      output.summary = pleroma.spoiler_text ? data.pleroma.spoiler_text['text/plain'] : data.spoiler_text\n      output.statusnet_conversation_id = data.pleroma.conversation_id\n      output.is_local = pleroma.local\n      output.in_reply_to_screen_name = data.pleroma.in_reply_to_account_acct\n      output.thread_muted = pleroma.thread_muted\n      output.emoji_reactions = pleroma.emoji_reactions\n      output.parent_visible = pleroma.parent_visible === undefined ? true : pleroma.parent_visible\n    } else {\n      output.text = data.content\n      output.summary = data.spoiler_text\n    }\n\n    output.in_reply_to_status_id = data.in_reply_to_id\n    output.in_reply_to_user_id = data.in_reply_to_account_id\n    output.replies_count = data.replies_count\n\n    if (output.type === 'retweet') {\n      output.retweeted_status = parseStatus(data.reblog)\n    }\n\n    output.summary_raw_html = escape(data.spoiler_text)\n    output.external_url = data.url\n    output.poll = data.poll\n    if (output.poll) {\n      output.poll.options = (output.poll.options || []).map(field => ({\n        ...field,\n        title_html: escape(field.title)\n      }))\n    }\n    output.pinned = data.pinned\n    output.muted = data.muted\n  } else {\n    output.favorited = data.favorited\n    output.fave_num = data.fave_num\n\n    output.repeated = data.repeated\n    output.repeat_num = data.repeat_num\n\n    // catchall, temporary\n    // Object.assign(output, data)\n\n    output.type = qvitterStatusType(data)\n\n    if (data.nsfw === undefined) {\n      output.nsfw = isNsfw(data)\n      if (data.retweeted_status) {\n        output.nsfw = data.retweeted_status.nsfw\n      }\n    } else {\n      output.nsfw = data.nsfw\n    }\n\n    output.raw_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  if (Object.prototype.hasOwnProperty.call(data, 'originalStatus')) {\n    Object.assign(output, data.originalStatus)\n  }\n\n  return output\n}\n\nexport const parseNotification = (data) => {\n  const mastoDict = {\n    favourite: 'like',\n    reblog: 'repeat'\n  }\n  const masto = !Object.prototype.hasOwnProperty.call(data, '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    if (data.report) {\n      output.report = data.report\n      output.report.content = data.report.content\n      output.report.acct = parseUser(data.report.account)\n      output.report.actor = parseUser(data.report.actor)\n      output.report.statuses = data.report.statuses.map(parseStatus)\n    }\n  } else {\n    const parsedNotice = parseStatus(data.notice)\n    output.type = data.ntype\n    output.seen = Boolean(data.is_seen)\n    output.status = output.type === 'like'\n      ? parseStatus(data.notice.favorited_status)\n      : parsedNotice\n    output.action = parsedNotice\n    output.from_profile = output.type === 'pleroma:chat_mention' ? parseUser(data.account) : parseUser(data.from_profile)\n  }\n\n  output.created_at = new Date(data.created_at)\n  output.id = parseInt(data.id)\n\n  return output\n}\n\nconst isNsfw = (status) => {\n  const nsfwRegex = /#nsfw/i\n  return (status.tags || []).includes('nsfw') || !!(status.text || '').match(nsfwRegex)\n}\n\nexport const parseLinkHeaderPagination = (linkHeader, opts = {}) => {\n  const flakeId = opts.flakeId\n  const parsedLinkHeader = parseLinkHeader(linkHeader)\n  if (!parsedLinkHeader) return\n  const maxId = parsedLinkHeader.next.max_id\n  const minId = parsedLinkHeader.prev.min_id\n\n  return {\n    maxId: flakeId ? maxId : parseInt(maxId, 10),\n    minId: flakeId ? minId : parseInt(minId, 10)\n  }\n}\n\nexport const parseChat = (chat) => {\n  const output = {}\n  output.id = chat.id\n  output.account = parseUser(chat.account)\n  output.unread = chat.unread\n  output.lastMessage = parseChatMessage(chat.last_message)\n  output.updated_at = new Date(chat.updated_at)\n  return output\n}\n\nexport const parseChatMessage = (message) => {\n  if (!message) { return }\n  if (message.isNormalized) { return message }\n  const output = message\n  output.id = message.id\n  output.created_at = new Date(message.created_at)\n  output.chat_id = message.chat_id\n  output.emojis = message.emojis\n  output.content = message.content\n  if (message.attachment) {\n    output.attachments = [parseAttachment(message.attachment)]\n  } else {\n    output.attachments = []\n  }\n  output.pending = !!message.pending\n  output.error = false\n  output.idempotency_key = message.idempotency_key\n  output.isNormalized = true\n  return output\n}\n","const createFaviconService = () => {\n  const favicons = []\n  const faviconWidth = 128\n  const faviconHeight = 128\n  const badgeRadius = 32\n\n  const initFaviconService = () => {\n    const nodes = document.querySelectorAll('link[rel=\"icon\"]')\n    nodes.forEach(favicon => {\n      if (favicon) {\n        const favcanvas = document.createElement('canvas')\n        favcanvas.width = faviconWidth\n        favcanvas.height = faviconHeight\n        const favimg = new Image()\n        favimg.crossOrigin = 'anonymous'\n        favimg.src = favicon.href\n        const favcontext = favcanvas.getContext('2d')\n        favicons.push({ favcanvas, favimg, favcontext, favicon })\n      }\n    })\n  }\n\n  const isImageLoaded = (img) => img.complete && img.naturalHeight !== 0\n\n  const clearFaviconBadge = () => {\n    if (favicons.length === 0) return\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favicon) return\n\n      favcontext.clearRect(0, 0, faviconWidth, faviconHeight)\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  const drawFaviconBadge = () => {\n    if (favicons.length === 0) return\n    clearFaviconBadge()\n    favicons.forEach(({ favimg, favcanvas, favcontext, favicon }) => {\n      if (!favimg || !favcontext || !favcontext) return\n\n      const style = getComputedStyle(document.body)\n      const badgeColor = `${style.getPropertyValue('--badgeNotification') || 'rgb(240, 100, 100)'}`\n\n      if (isImageLoaded(favimg)) {\n        favcontext.drawImage(favimg, 0, 0, favimg.width, favimg.height, 0, 0, faviconWidth, faviconHeight)\n      }\n      favcontext.fillStyle = badgeColor\n      favcontext.beginPath()\n      favcontext.arc(faviconWidth - badgeRadius, badgeRadius, badgeRadius, 0, 2 * Math.PI, false)\n      favcontext.fill()\n      favicon.href = favcanvas.toDataURL('image/png')\n    })\n  }\n\n  return {\n    initFaviconService,\n    clearFaviconBadge,\n    drawFaviconBadge\n  }\n}\n\nconst FaviconService = createFaviconService()\n\nexport default FaviconService\n","const fileSizeFormat = (numArg) => {\n  const units = ['B', 'KiB', 'MiB', 'GiB', 'TiB']\n  let num = numArg\n  if (num < 1) {\n    return num + ' ' + units[0]\n  }\n\n  const 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  const unit = units[exponent]\n  return { num, unit }\n}\nconst fileSizeFormatService = {\n  fileSizeFormat\n}\nexport default fileSizeFormatService\n","// TODO this func might as well take the entire file and use its mimetype\n// or the entire service could be just mimetype service that only operates\n// on mimetypes and not files. Currently the naming is confusing.\nconst fileType = mimetype => {\n  if (mimetype.match(/flash/)) {\n    return 'flash'\n  }\n\n  if (mimetype.match(/text\\/html/)) {\n    return 'html'\n  }\n\n  if (mimetype.match(/image/)) {\n    return 'image'\n  }\n\n  if (mimetype.match(/video/)) {\n    return 'video'\n  }\n\n  if (mimetype.match(/audio/)) {\n    return 'audio'\n  }\n\n  return 'unknown'\n}\n\nconst fileMatchesSomeType = (types, file) =>\n  types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n  fileType,\n  fileMatchesSomeType\n}\n\nexport default fileTypeService\n","import languagesObject from '../../i18n/messages'\nimport ISO6391 from 'iso-639-1'\nimport _ from 'lodash'\n\nconst specialLanguageCodes = {\n  ja_easy: 'ja',\n  zh_Hant: 'zh-HANT',\n  zh: 'zh-Hans'\n}\n\nconst internalToBrowserLocale = code => specialLanguageCodes[code] || code\n\nconst internalToBackendLocale = code => internalToBrowserLocale(code).replace('_', '-')\n\nconst getLanguageName = (code) => {\n  const specialLanguageNames = {\n    ja_easy: 'やさしいにほんご',\n    zh: '简体中文',\n    zh_Hant: '繁體中文'\n  }\n  const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)\n  const browserLocale = internalToBrowserLocale(code)\n  return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)\n}\n\nconst languages = _.map(languagesObject.languages, (code) => ({ code, name: getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))\n\nconst localeService = {\n  internalToBrowserLocale,\n  internalToBackendLocale,\n  languages,\n  getLanguageName\n}\n\nexport default localeService\n","import { filter, sortBy, includes } from 'lodash'\nimport { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nexport const notificationsFromStore = store => store.state.statuses.notifications.data\n\nexport const visibleTypes = store => {\n  const rootState = store.rootState || store.state\n\n  return ([\n    rootState.config.notificationVisibility.likes && 'like',\n    rootState.config.notificationVisibility.mentions && 'mention',\n    rootState.config.notificationVisibility.repeats && 'repeat',\n    rootState.config.notificationVisibility.follows && 'follow',\n    rootState.config.notificationVisibility.followRequest && 'follow_request',\n    rootState.config.notificationVisibility.moves && 'move',\n    rootState.config.notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n    rootState.config.notificationVisibility.reports && 'pleroma:report',\n    rootState.config.notificationVisibility.polls && 'poll'\n  ].filter(_ => _))\n}\n\nconst statusNotifications = ['like', 'mention', 'repeat', 'pleroma:emoji_reaction', 'poll']\n\nexport const isStatusNotification = (type) => includes(statusNotifications, type)\n\nexport const isValidNotification = (notification) => {\n  if (isStatusNotification(notification.type) && !notification.status) {\n    return false\n  }\n  return true\n}\n\nconst sortById = (a, b) => {\n  const seqA = Number(a.id)\n  const seqB = Number(b.id)\n  const isSeqA = !Number.isNaN(seqA)\n  const isSeqB = !Number.isNaN(seqB)\n  if (isSeqA && isSeqB) {\n    return seqA > seqB ? -1 : 1\n  } else if (isSeqA && !isSeqB) {\n    return 1\n  } else if (!isSeqA && isSeqB) {\n    return -1\n  } else {\n    return a.id > b.id ? -1 : 1\n  }\n}\n\nconst isMutedNotification = (store, notification) => {\n  if (!notification.status) return\n  return notification.status.muted || muteWordHits(notification.status, store.rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n  const rootState = store.rootState || store.state\n\n  if (notification.seen) return\n  if (!visibleTypes(store).includes(notification.type)) return\n  if (notification.type === 'mention' && isMutedNotification(store, notification)) return\n\n  const notificationObject = prepareNotificationObject(notification, store.rootGetters.i18n)\n  showDesktopNotification(rootState, notificationObject)\n}\n\nexport const filteredNotificationsFromStore = (store, types) => {\n  // map is just to clone the array since sort mutates it and it causes some issues\n  let sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n  sortedNotifications = sortBy(sortedNotifications, 'seen')\n  return sortedNotifications.filter(\n    (notification) => (types || visibleTypes(store)).includes(notification.type)\n  )\n}\n\nexport const unseenNotificationsFromStore = store =>\n  filter(filteredNotificationsFromStore(store), ({ seen }) => !seen)\n\nexport const prepareNotificationObject = (notification, i18n) => {\n  const notifObj = {\n    tag: notification.id\n  }\n  const status = notification.status\n  const title = notification.from_profile.name\n  notifObj.title = title\n  notifObj.icon = notification.from_profile.profile_image_url\n  let i18nString\n  switch (notification.type) {\n    case 'like':\n      i18nString = 'favorited_you'\n      break\n    case 'repeat':\n      i18nString = 'repeated_you'\n      break\n    case 'follow':\n      i18nString = 'followed_you'\n      break\n    case 'move':\n      i18nString = 'migrated_to'\n      break\n    case 'follow_request':\n      i18nString = 'follow_request'\n      break\n    case 'pleroma:report':\n      i18nString = 'submitted_report'\n      break\n    case 'poll':\n      i18nString = 'poll_ended'\n      break\n  }\n\n  if (notification.type === 'pleroma:emoji_reaction') {\n    notifObj.body = i18n.t('notifications.reacted_with', [notification.emoji])\n  } else if (i18nString) {\n    notifObj.body = i18n.t('notifications.' + i18nString)\n  } else if (isStatusNotification(notification.type)) {\n    notifObj.body = notification.status.text\n  }\n\n  // Shows first attached non-nsfw image, if any. Should add configuration for this somehow...\n  if (status && status.attachments && status.attachments.length > 0 && !status.nsfw &&\n    status.attachments[0].mimetype.startsWith('image/')) {\n    notifObj.image = status.attachments[0].url\n  }\n\n  return notifObj\n}\n","import apiService from '../api/api.service.js'\nimport { promiseInterval } from '../promise_interval/promise_interval.js'\n\n// For using include_types when fetching notifications.\n// Note: chat_mention excluded as pleroma-fe polls them separately\nconst mastoApiNotificationTypes = [\n  'mention',\n  'favourite',\n  'reblog',\n  'follow',\n  'move',\n  'pleroma:emoji_reaction',\n  'pleroma:report'\n]\n\nconst update = ({ store, notifications, older }) => {\n  store.dispatch('addNewNotifications', { notifications, older })\n}\n\nconst fetchAndUpdate = ({ store, credentials, older = false, since }) => {\n  const args = { credentials }\n  const { getters } = store\n  const rootState = store.rootState || store.state\n  const timelineData = rootState.statuses.notifications\n  const hideMutedPosts = getters.mergedConfig.hideMutedPosts\n\n  args.includeTypes = mastoApiNotificationTypes\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 (since === undefined && timelineData.maxId !== Number.POSITIVE_INFINITY) {\n      args.since = timelineData.maxId\n    } else if (since !== null) {\n      args.since = since\n    }\n    const result = fetchNotifications({ store, args, older })\n\n    // If there's any unread notifications, try fetch notifications since\n    // the newest read notification to check if any of the unread notifs\n    // have changed their 'seen' state (marked as read in another session), so\n    // we can update the state in this session to mark them as read as well.\n    // The normal maxId-check does not tell if older notifications have changed\n    const notifications = timelineData.data\n    const readNotifsIds = notifications.filter(n => n.seen).map(n => n.id)\n    const numUnseenNotifs = notifications.length - readNotifsIds.length\n    if (numUnseenNotifs > 0 && readNotifsIds.length > 0) {\n      args.since = Math.max(...readNotifsIds)\n      fetchNotifications({ store, args, older })\n    }\n\n    return result\n  }\n}\n\nconst fetchNotifications = ({ store, args, older }) => {\n  return apiService.fetchTimeline(args)\n    .then((response) => {\n      if (response.errors) {\n        throw new Error(`${response.status} ${response.statusText}`)\n      }\n      const notifications = response.data\n      update({ store, notifications, older })\n      return notifications\n    })\n    .catch((error) => {\n      store.dispatch('pushGlobalNotice', {\n        level: 'error',\n        messageKey: 'notifications.error',\n        messageArgs: [error.message],\n        timeout: 5000\n      })\n      console.error(error)\n    })\n}\n\nconst startFetching = ({ credentials, store }) => {\n  // Initially there's set flag to silence all desktop notifications so\n  // that there won't spam of them when user just opened up the FE we\n  // reset that flag after a while to show new notifications once again.\n  setTimeout(() => store.dispatch('setNotificationsSilence', false), 10000)\n  const boundFetchAndUpdate = () => fetchAndUpdate({ credentials, store })\n  boundFetchAndUpdate()\n  return promiseInterval(boundFetchAndUpdate, 10000)\n}\n\nconst notificationsFetcher = {\n  fetchAndUpdate,\n  startFetching\n}\n\nexport default notificationsFetcher\n","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 && window.getComputedStyle(child.offsetParent).position !== 'sticky' && (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","\n// promiseInterval - replacement for setInterval for promises, starts counting\n// the interval only after a promise is done instead of immediately.\n// - promiseCall is a function that returns a promise, it's called the first\n// time after the first interval.\n// - interval is the interval delay in ms.\n\nexport const promiseInterval = (promiseCall, interval) => {\n  let stopped = false\n  let timeout = null\n\n  const func = () => {\n    const promise = promiseCall()\n    // something unexpected happened and promiseCall did not\n    // return a promise, abort the loop.\n    if (!(promise && promise.finally)) {\n      console.warn('promiseInterval: promise call did not return a promise, stopping interval.')\n      return\n    }\n    promise.finally(() => {\n      if (stopped) return\n      timeout = window.setTimeout(func, interval)\n    })\n  }\n\n  const stopFetcher = () => {\n    stopped = true\n    window.clearTimeout(timeout)\n  }\n\n  timeout = window.setTimeout(func, interval)\n\n  return { stop: stopFetcher }\n}\n","import { filter } from 'lodash'\n\nexport const muteWordHits = (status, muteWords) => {\n  const statusText = status.text.toLowerCase()\n  const statusSummary = status.summary.toLowerCase()\n  const hits = filter(muteWords, (muteWord) => {\n    return statusText.includes(muteWord.toLowerCase()) || statusSummary.includes(muteWord.toLowerCase())\n  })\n\n  return hits\n}\n","import { map } from 'lodash'\nimport apiService from '../api/api.service.js'\n\nconst postStatus = ({\n  store,\n  status,\n  spoilerText,\n  visibility,\n  sensitive,\n  poll,\n  media = [],\n  inReplyToStatusId = undefined,\n  contentType = 'text/plain',\n  preview = false,\n  idempotencyKey = ''\n}) => {\n  const mediaIds = map(media, 'id')\n\n  return apiService.postStatus({\n    credentials: store.state.users.currentUser.credentials,\n    status,\n    spoilerText,\n    visibility,\n    sensitive,\n    mediaIds,\n    inReplyToStatusId,\n    contentType,\n    poll,\n    preview,\n    idempotencyKey\n  })\n    .then((data) => {\n      if (!data.error && !preview) {\n        store.dispatch('addNewStatuses', {\n          statuses: [data],\n          timeline: 'friends',\n          showImmediately: true,\n          noIdUpdate: true // To prevent missing notices on next pull.\n        })\n      }\n      return data\n    })\n    .catch((err) => {\n      return {\n        error: err.message\n      }\n    })\n}\n\nconst editStatus = ({\n  store,\n  statusId,\n  status,\n  spoilerText,\n  sensitive,\n  poll,\n  media = [],\n  contentType = 'text/plain'\n}) => {\n  const mediaIds = map(media, 'id')\n\n  return apiService.editStatus({\n    id: statusId,\n    credentials: store.state.users.currentUser.credentials,\n    status,\n    spoilerText,\n    sensitive,\n    poll,\n    mediaIds,\n    contentType\n  })\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      console.error('Error editing status', err)\n      return {\n        error: err.message\n      }\n    })\n}\n\nconst uploadMedia = ({ store, formData }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.uploadMedia({ credentials, formData })\n}\n\nconst setMediaDescription = ({ store, id, description }) => {\n  const credentials = store.state.users.currentUser.credentials\n  return apiService.setMediaDescription({ credentials, id, description })\n}\n\nconst statusPosterService = {\n  postStatus,\n  editStatus,\n  uploadMedia,\n  setMediaDescription\n}\n\nexport default statusPosterService\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'\nimport { defaultState } from '../../modules/config.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(`:root { ${rules.radii} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.colors} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.shadows} }`, 'index-max')\n  styleSheet.insertRule(`:root { ${rules.fonts} }`, 'index-max')\n  body.classList.remove('hidden')\n}\n\nconst configColumns = ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth }) =>\n  ({ sidebarColumnWidth, contentColumnWidth, notifsColumnWidth })\n\nconst defaultConfigColumns = configColumns(defaultState)\n\nexport const applyConfig = (config) => {\n  const columns = configColumns(config)\n\n  if (columns === defaultConfigColumns) {\n    return\n  }\n\n  const head = document.head\n  const body = document.body\n  body.classList.add('hidden')\n\n  const rules = Object\n    .entries(columns)\n    .filter(([k, v]) => v)\n    .map(([k, v]) => `--${k}: ${v}`).join(';')\n\n  const styleEl = document.createElement('style')\n  head.appendChild(styleEl)\n  const styleSheet = styleEl.sheet\n\n  styleSheet.toString()\n  styleSheet.insertRule(`:root { ${rules} }`, 'index-max')\n  body.classList.remove('hidden')\n}\n\nexport const getCssShadow = (input, usesDropShadow) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n    .filter(_ => usesDropShadow ? _.inset : _)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      shad.blur,\n      shad.spread\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha),\n      shad.inset ? 'inset' : ''\n    ]).join(' ')).join(', ')\n}\n\nconst getCssShadowFilter = (input) => {\n  if (input.length === 0) {\n    return 'none'\n  }\n\n  return input\n  // drop-shadow doesn't support inset or spread\n    .filter((shad) => !shad.inset && Number(shad.spread) === 0)\n    .map((shad) => [\n      shad.x,\n      shad.y,\n      // drop-shadow's blur is twice as strong compared to box-shadow\n      shad.blur / 2\n    ].map(_ => _ + 'px').concat([\n      getCssColor(shad.color, shad.alpha)\n    ]).join(' '))\n    .map(_ => `drop-shadow(${_})`)\n    .join(' ')\n}\n\nexport const generateColors = (themeData) => {\n  const sourceColors = !themeData.themeEngineVersion\n    ? colors2to3(themeData.colors || themeData)\n    : themeData.colors || themeData\n\n  const { colors, opacity } = getColors(sourceColors, themeData.opacity || {})\n\n  const htmlColors = Object.entries(colors)\n    .reduce((acc, [k, v]) => {\n      if (!v) return acc\n      acc.solid[k] = rgb2hex(v)\n      acc.complete[k] = typeof v.a === 'undefined' ? rgb2hex(v) : rgba2css(v)\n      return acc\n    }, { complete: {}, solid: {} })\n  return {\n    rules: {\n      colors: Object.entries(htmlColors.complete)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}: ${v}`)\n        .join(';')\n    },\n    theme: {\n      colors: htmlColors.solid,\n      opacity\n    }\n  }\n}\n\nexport const generateRadii = (input) => {\n  let inputRadii = input.radii || {}\n  // v1 -> v2\n  if (typeof input.btnRadius !== 'undefined') {\n    inputRadii = Object\n      .entries(input)\n      .filter(([k, v]) => k.endsWith('Radius'))\n      .reduce((acc, e) => { acc[e[0].split('Radius')[0]] = e[1]; return acc }, {})\n  }\n  const radii = Object.entries(inputRadii).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = v\n    return acc\n  }, {\n    btn: 4,\n    input: 4,\n    checkbox: 2,\n    panel: 10,\n    avatar: 5,\n    avatarAlt: 50,\n    tooltip: 2,\n    attachment: 5,\n    chatMessage: inputRadii.panel\n  })\n\n  return {\n    rules: {\n      radii: Object.entries(radii).filter(([k, v]) => v).map(([k, v]) => `--${k}Radius: ${v}px`).join(';')\n    },\n    theme: {\n      radii\n    }\n  }\n}\n\nexport const generateFonts = (input) => {\n  const fonts = Object.entries(input.fonts || {}).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n    acc[k] = Object.entries(v).filter(([k, v]) => v).reduce((acc, [k, v]) => {\n      acc[k] = v\n      return acc\n    }, acc[k])\n    return acc\n  }, {\n    interface: {\n      family: 'sans-serif'\n    },\n    input: {\n      family: 'inherit'\n    },\n    post: {\n      family: 'inherit'\n    },\n    postCode: {\n      family: 'monospace'\n    }\n  })\n\n  return {\n    rules: {\n      fonts: Object\n        .entries(fonts)\n        .filter(([k, v]) => v)\n        .map(([k, v]) => `--${k}Font: ${v.family}`).join(';')\n    },\n    theme: {\n      fonts\n    }\n  }\n}\n\nconst border = (top, shadow) => ({\n  x: 0,\n  y: top ? 1 : -1,\n  blur: 0,\n  spread: 0,\n  color: shadow ? '#000000' : '#FFFFFF',\n  alpha: 0.2,\n  inset: true\n})\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst hoverGlow = {\n  x: 0,\n  y: 0,\n  blur: 4,\n  spread: 0,\n  color: '--faint',\n  alpha: 1\n}\n\nexport const DEFAULT_SHADOWS = {\n  panel: [{\n    x: 1,\n    y: 1,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  topBar: [{\n    x: 0,\n    y: 0,\n    blur: 4,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.6\n  }],\n  popup: [{\n    x: 2,\n    y: 2,\n    blur: 3,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.5\n  }],\n  avatar: [{\n    x: 0,\n    y: 1,\n    blur: 8,\n    spread: 0,\n    color: '#000000',\n    alpha: 0.7\n  }],\n  avatarStatus: [],\n  panelHeader: [],\n  button: [{\n    x: 0,\n    y: 0,\n    blur: 2,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }, ...buttonInsetFakeBorders],\n  buttonHover: [hoverGlow, ...buttonInsetFakeBorders],\n  buttonPressed: [hoverGlow, ...inputInsetFakeBorders],\n  input: [...inputInsetFakeBorders, {\n    x: 0,\n    y: 0,\n    blur: 2,\n    inset: true,\n    spread: 0,\n    color: '#000000',\n    alpha: 1\n  }]\n}\nexport const generateShadows = (input, colors) => {\n  // TODO this is a small hack for `mod` to work with shadows\n  // this is used to get the \"context\" of shadow, i.e. for `mod` properly depend on background color of element\n  const hackContextDict = {\n    button: 'btn',\n    panel: 'bg',\n    top: 'topBar',\n    popup: 'popover',\n    avatar: 'bg',\n    panelHeader: 'panel',\n    input: 'input'\n  }\n\n  const cleanInputShadows = Object.fromEntries(\n    Object.entries(input.shadows || {})\n      .map(([name, shadowSlot]) => [\n        name,\n        // defaulting color to black to avoid potential problems\n        shadowSlot.map(shadowDef => ({ color: '#000000', ...shadowDef }))\n      ])\n  )\n  const inputShadows = cleanInputShadows && !input.themeEngineVersion\n    ? shadows2to3(cleanInputShadows, input.opacity)\n    : cleanInputShadows || {}\n  const shadows = Object.entries({\n    ...DEFAULT_SHADOWS,\n    ...inputShadows\n  }).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const slotFirstWord = slotName.replace(/[A-Z].*$/, '')\n    const colorSlotName = hackContextDict[slotFirstWord]\n    const isLightOnDark = relativeLuminance(convert(colors[colorSlotName]).rgb) < 0.5\n    const mod = isLightOnDark ? 1 : -1\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        color: rgb2hex(computeDynamicColor(\n          def.color,\n          (variableSlot) => convert(colors[variableSlot]).rgb,\n          mod\n        ))\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n\n  return {\n    rules: {\n      shadows: Object\n        .entries(shadows)\n      // TODO for v2.2: if shadow doesn't have non-inset shadows with spread > 0 - optionally\n      // convert all non-inset shadows into filter: drop-shadow() to boost performance\n        .map(([k, v]) => [\n          `--${k}Shadow: ${getCssShadow(v)}`,\n          `--${k}ShadowFilter: ${getCssShadowFilter(v)}`,\n          `--${k}ShadowInset: ${getCssShadow(v, true)}`\n        ].join(';'))\n        .join(';')\n    },\n    theme: {\n      shadows\n    }\n  }\n}\n\nexport const composePreset = (colors, radii, shadows, fonts) => {\n  return {\n    rules: {\n      ...shadows.rules,\n      ...colors.rules,\n      ...radii.rules,\n      ...fonts.rules\n    },\n    theme: {\n      ...shadows.theme,\n      ...colors.theme,\n      ...radii.theme,\n      ...fonts.theme\n    }\n  }\n}\n\nexport const generatePreset = (input) => {\n  const colors = generateColors(input)\n  return composePreset(\n    colors,\n    generateRadii(input),\n    generateShadows(input, colors.theme.colors, colors.mod),\n    generateFonts(input)\n  )\n}\n\nexport const getThemes = () => {\n  const cache = 'no-store'\n\n  return window.fetch('/static/styles.json', { cache })\n    .then((data) => data.json())\n    .then((themes) => {\n      return Object.entries(themes).map(([k, v]) => {\n        let promise = null\n        if (typeof v === 'object') {\n          promise = Promise.resolve(v)\n        } else if (typeof v === 'string') {\n          promise = window.fetch(v, { cache })\n            .then((data) => data.json())\n            .catch((e) => {\n              console.error(e)\n              return null\n            })\n        }\n        return [k, promise]\n      })\n    })\n    .then((promises) => {\n      return promises\n        .reduce((acc, [k, v]) => {\n          acc[k] = v\n          return acc\n        }, {})\n    })\n}\nexport const colors2to3 = (colors) => {\n  return Object.entries(colors).reduce((acc, [slotName, color]) => {\n    const btnPositions = ['', 'Panel', 'TopBar']\n    switch (slotName) {\n      case 'lightBg':\n        return { ...acc, highlight: color }\n      case 'btnText':\n        return {\n          ...acc,\n          ...btnPositions\n            .reduce(\n              (statePositionAcc, position) =>\n                ({ ...statePositionAcc, ['btn' + position + 'Text']: color })\n              , {}\n            )\n        }\n      default:\n        return { ...acc, [slotName]: color }\n    }\n  }, {})\n}\n\n/**\n * This handles compatibility issues when importing v2 theme's shadows to current format\n *\n * Back in v2 shadows allowed you to use dynamic colors however those used pure CSS3 variables\n */\nexport const shadows2to3 = (shadows, opacity) => {\n  return Object.entries(shadows).reduce((shadowsAcc, [slotName, shadowDefs]) => {\n    const isDynamic = ({ color = '#000000' }) => color.startsWith('--')\n    const getOpacity = ({ color }) => opacity[getOpacitySlot(color.substring(2).split(',')[0])]\n    const newShadow = shadowDefs.reduce((shadowAcc, def) => [\n      ...shadowAcc,\n      {\n        ...def,\n        alpha: isDynamic(def) ? getOpacity(def) || 1 : def.alpha\n      }\n    ], [])\n    return { ...shadowsAcc, [slotName]: newShadow }\n  }, {})\n}\n\nexport const getPreset = (val) => {\n  return getThemes()\n    .then((themes) => themes[val] ? themes[val] : themes['pleroma-dark'])\n    .then((theme) => {\n      const isV1 = Array.isArray(theme)\n      const data = isV1 ? {} : theme.theme\n\n      if (isV1) {\n        const bg = hex2rgb(theme[1])\n        const fg = hex2rgb(theme[2])\n        const text = hex2rgb(theme[3])\n        const link = hex2rgb(theme[4])\n\n        const cRed = hex2rgb(theme[5] || '#FF0000')\n        const cGreen = hex2rgb(theme[6] || '#00FF00')\n        const cBlue = hex2rgb(theme[7] || '#0000FF')\n        const cOrange = hex2rgb(theme[8] || '#E3FF00')\n\n        data.colors = { bg, fg, text, link, cRed, cBlue, cGreen, cOrange }\n      }\n\n      return { theme: data, source: theme.source }\n    })\n}\n\nexport const setPreset = (val) => getPreset(val).then(data => applyTheme(data.theme))\n","import { invertLightness, brightness } from 'chromatism'\nimport { alphaBlend, mixrgb } from '../color_convert/color_convert.js'\n/* This is a definition of all layer combinations\n * each key is a topmost layer, each value represents layer underneath\n * this is essentially a simplified tree\n */\nexport const LAYERS = {\n  undelay: null, // root\n  topBar: null, // no transparency support\n  badge: null, //  no transparency support\n  profileTint: null, // doesn't matter\n  fg: null,\n  bg: 'underlay',\n  highlight: 'bg',\n  panel: 'bg',\n  popover: 'bg',\n  selectedMenu: 'popover',\n  btn: 'bg',\n  btnPanel: 'panel',\n  btnTopBar: 'topBar',\n  input: 'bg',\n  inputPanel: 'panel',\n  inputTopBar: 'topBar',\n  alert: 'bg',\n  alertPanel: 'panel',\n  poll: 'bg',\n  chatBg: 'underlay',\n  chatMessage: 'chatBg'\n}\n\n/* By default opacity slots have 1 as default opacity\n * this allows redefining it to something else\n */\nexport const DEFAULT_OPACITY = {\n  profileTint: 0.5,\n  alert: 0.5,\n  input: 0.5,\n  faint: 0.5,\n  underlay: 0.15,\n  alertPopup: 0.95\n}\n\n/**  SUBJECT TO CHANGE IN THE FUTURE, this is all beta\n * Color and opacity slots definitions. Each key represents a slot.\n *\n * Short-hands:\n * String beginning with `--` - value after dashes treated as sole\n *     dependency - i.e. `--value` equivalent to { depends: ['value']}\n * String beginning with `#` - value would be treated as solid color\n *     defined in hexadecimal representation (i.e. #FFFFFF) and will be\n *     used as default. `#FFFFFF` is equivalent to { default: '#FFFFFF'}\n *\n * Full definition:\n * @property {String[]} depends - color slot names this color depends ones.\n *   cyclic dependencies are supported to some extent but not recommended.\n * @property {String} [opacity] - opacity slot used by this color slot.\n *   opacity is inherited from parents. To break inheritance graph use null\n * @property {Number} [priority] - EXPERIMENTAL. used to pre-sort slots so\n *   that slots with higher priority come earlier\n * @property {Function(mod, ...colors)} [color] - function that will be\n *   used to determine the color. By default it just copies first color in\n *   dependency list.\n * @argument {Number} mod - `1` (light-on-dark) or `-1` (dark-on-light)\n *   depending on background color (for textColor)/given color.\n * @argument {...Object} deps - each argument after mod represents each\n *   color from `depends` array. All colors take user customizations into\n *   account and represented by { r, g, b } objects.\n * @returns {Object} resulting color, should be in { r, g, b } form\n *\n * @property {Boolean|String} [textColor] - true to mark color slot as text\n *   color. This enables automatic text color generation for the slot. Use\n *   'preserve' string if you don't want text color to fall back to\n *   black/white. Use 'bw' to only ever use black or white. This also makes\n *   following properties required:\n * @property {String} [layer] - which layer the text sit on top on - used\n *   to account for transparency in text color calculation\n *   layer is inherited from parents. To break inheritance graph use null\n * @property {String} [variant] - which color slot is background (same as\n *   above, used to account for transparency)\n */\nexport const SLOT_INHERITANCE = {\n  bg: {\n    depends: [],\n    opacity: 'bg',\n    priority: 1\n  },\n  wallpaper: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(-2 * mod, bg).rgb\n  },\n  fg: {\n    depends: [],\n    priority: 1\n  },\n  text: {\n    depends: [],\n    layer: 'bg',\n    opacity: null,\n    priority: 1\n  },\n  underlay: {\n    default: '#000000',\n    opacity: 'underlay'\n  },\n  link: {\n    depends: ['accent'],\n    priority: 1\n  },\n  accent: {\n    depends: ['link'],\n    priority: 1\n  },\n  faint: {\n    depends: ['text'],\n    opacity: 'faint'\n  },\n  faintLink: {\n    depends: ['link'],\n    opacity: 'faint'\n  },\n  postFaintLink: {\n    depends: ['postLink'],\n    opacity: 'faint'\n  },\n\n  cBlue: '#0000ff',\n  cRed: '#FF0000',\n  cGreen: '#00FF00',\n  cOrange: '#E3FF00',\n\n  profileBg: {\n    depends: ['bg'],\n    color: (mod, bg) => ({\n      r: Math.floor(bg.r * 0.53),\n      g: Math.floor(bg.g * 0.56),\n      b: Math.floor(bg.b * 0.59)\n    })\n  },\n  profileTint: {\n    depends: ['bg'],\n    layer: 'profileTint',\n    opacity: 'profileTint'\n  },\n\n  highlight: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  highlightLightText: {\n    depends: ['lightText'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightPostLink: {\n    depends: ['postLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightFaintText: {\n    depends: ['faint'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightFaintLink: {\n    depends: ['faintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightText: {\n    depends: ['text'],\n    layer: 'highlight',\n    textColor: true\n  },\n  highlightLink: {\n    depends: ['link'],\n    layer: 'highlight',\n    textColor: 'preserve'\n  },\n  highlightIcon: {\n    depends: ['highlight', 'highlightText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  popover: {\n    depends: ['bg'],\n    opacity: 'popover'\n  },\n  popoverLightText: {\n    depends: ['lightText'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverPostLink: {\n    depends: ['postLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverFaintText: {\n    depends: ['faint'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverFaintLink: {\n    depends: ['faintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverPostFaintLink: {\n    depends: ['postFaintLink'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverText: {\n    depends: ['text'],\n    layer: 'popover',\n    textColor: true\n  },\n  popoverLink: {\n    depends: ['link'],\n    layer: 'popover',\n    textColor: 'preserve'\n  },\n  popoverIcon: {\n    depends: ['popover', 'popoverText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedPost: '--highlight',\n  selectedPostFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLightText: {\n    depends: ['highlightLightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostPostLink: {\n    depends: ['highlightPostLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostText: {\n    depends: ['highlightText'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: true\n  },\n  selectedPostLink: {\n    depends: ['highlightLink'],\n    layer: 'highlight',\n    variant: 'selectedPost',\n    textColor: 'preserve'\n  },\n  selectedPostIcon: {\n    depends: ['selectedPost', 'selectedPostText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenu: {\n    depends: ['bg'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuLightText: {\n    depends: ['highlightLightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintText: {\n    depends: ['highlightFaintText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuFaintLink: {\n    depends: ['highlightFaintLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuText: {\n    depends: ['highlightText'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: true\n  },\n  selectedMenuLink: {\n    depends: ['highlightLink'],\n    layer: 'selectedMenu',\n    variant: 'selectedMenu',\n    textColor: 'preserve'\n  },\n  selectedMenuIcon: {\n    depends: ['selectedMenu', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  selectedMenuPopover: {\n    depends: ['popover'],\n    color: (mod, bg) => brightness(5 * mod, bg).rgb\n  },\n  selectedMenuPopoverLightText: {\n    depends: ['selectedMenuLightText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintText: {\n    depends: ['selectedMenuFaintText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverFaintLink: {\n    depends: ['selectedMenuFaintLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverText: {\n    depends: ['selectedMenuText'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: true\n  },\n  selectedMenuPopoverLink: {\n    depends: ['selectedMenuLink'],\n    layer: 'selectedMenuPopover',\n    variant: 'selectedMenuPopover',\n    textColor: 'preserve'\n  },\n  selectedMenuPopoverIcon: {\n    depends: ['selectedMenuPopover', 'selectedMenuText'],\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  lightText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: 'preserve',\n    color: (mod, text) => brightness(20 * mod, text).rgb\n  },\n\n  postLink: {\n    depends: ['link'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postGreentext: {\n    depends: ['cGreen'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  postCyantext: {\n    depends: ['cBlue'],\n    layer: 'bg',\n    textColor: 'preserve'\n  },\n\n  border: {\n    depends: ['fg'],\n    opacity: 'border',\n    color: (mod, fg) => brightness(2 * mod, fg).rgb\n  },\n\n  poll: {\n    depends: ['accent', 'bg'],\n    copacity: 'poll',\n    color: (mod, accent, bg) => alphaBlend(accent, 0.4, bg)\n  },\n  pollText: {\n    depends: ['text'],\n    layer: 'poll',\n    textColor: true\n  },\n\n  icon: {\n    depends: ['bg', 'text'],\n    inheritsOpacity: false,\n    color: (mod, bg, text) => mixrgb(bg, text)\n  },\n\n  // Foreground\n  fgText: {\n    depends: ['text'],\n    layer: 'fg',\n    textColor: true\n  },\n  fgLink: {\n    depends: ['link'],\n    layer: 'fg',\n    textColor: 'preserve'\n  },\n\n  // Panel header\n  panel: {\n    depends: ['fg'],\n    opacity: 'panel'\n  },\n  panelText: {\n    depends: ['text'],\n    layer: 'panel',\n    textColor: true\n  },\n  panelFaint: {\n    depends: ['fgText'],\n    layer: 'panel',\n    opacity: 'faint',\n    textColor: true\n  },\n  panelLink: {\n    depends: ['fgLink'],\n    layer: 'panel',\n    textColor: 'preserve'\n  },\n\n  // Top bar\n  topBar: '--fg',\n  topBarText: {\n    depends: ['fgText'],\n    layer: 'topBar',\n    textColor: true\n  },\n  topBarLink: {\n    depends: ['fgLink'],\n    layer: 'topBar',\n    textColor: 'preserve'\n  },\n\n  // Tabs\n  tab: {\n    depends: ['btn']\n  },\n  tabText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    textColor: true\n  },\n  tabActiveText: {\n    depends: ['text'],\n    layer: 'bg',\n    textColor: true\n  },\n\n  // Buttons\n  btn: {\n    depends: ['fg'],\n    variant: 'btn',\n    opacity: 'btn'\n  },\n  btnText: {\n    depends: ['fgText'],\n    layer: 'btn',\n    textColor: true\n  },\n  btnPanelText: {\n    depends: ['btnText'],\n    layer: 'btnPanel',\n    variant: 'btn',\n    textColor: true\n  },\n  btnTopBarText: {\n    depends: ['btnText'],\n    layer: 'btnTopBar',\n    variant: 'btn',\n    textColor: true\n  },\n\n  // Buttons: pressed\n  btnPressed: {\n    depends: ['btn'],\n    layer: 'btn'\n  },\n  btnPressedText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedPanel: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnPressed',\n    textColor: true\n  },\n  btnPressedTopBar: {\n    depends: ['btnPressed'],\n    layer: 'btn'\n  },\n  btnPressedTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnPressed',\n    textColor: true\n  },\n\n  // Buttons: toggled\n  btnToggled: {\n    depends: ['btn'],\n    layer: 'btn',\n    color: (mod, btn) => brightness(mod * 20, btn).rgb\n  },\n  btnToggledText: {\n    depends: ['btnText'],\n    layer: 'btn',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledPanelText: {\n    depends: ['btnPanelText'],\n    layer: 'btnPanel',\n    variant: 'btnToggled',\n    textColor: true\n  },\n  btnToggledTopBarText: {\n    depends: ['btnTopBarText'],\n    layer: 'btnTopBar',\n    variant: 'btnToggled',\n    textColor: true\n  },\n\n  // Buttons: disabled\n  btnDisabled: {\n    depends: ['btn', 'bg'],\n    color: (mod, btn, bg) => alphaBlend(btn, 0.25, bg)\n  },\n  btnDisabledText: {\n    depends: ['btnText', 'btnDisabled'],\n    layer: 'btn',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledPanelText: {\n    depends: ['btnPanelText', 'btnDisabled'],\n    layer: 'btnPanel',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n  btnDisabledTopBarText: {\n    depends: ['btnTopBarText', 'btnDisabled'],\n    layer: 'btnTopBar',\n    variant: 'btnDisabled',\n    color: (mod, text, btn) => alphaBlend(text, 0.25, btn)\n  },\n\n  // Input fields\n  input: {\n    depends: ['fg'],\n    opacity: 'input'\n  },\n  inputText: {\n    depends: ['text'],\n    layer: 'input',\n    textColor: true\n  },\n  inputPanelText: {\n    depends: ['panelText'],\n    layer: 'inputPanel',\n    variant: 'input',\n    textColor: true\n  },\n  inputTopbarText: {\n    depends: ['topBarText'],\n    layer: 'inputTopBar',\n    variant: 'input',\n    textColor: true\n  },\n\n  alertError: {\n    depends: ['cRed'],\n    opacity: 'alert'\n  },\n  alertErrorText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertError',\n    textColor: true\n  },\n  alertErrorPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertError',\n    textColor: true\n  },\n\n  alertWarning: {\n    depends: ['cOrange'],\n    opacity: 'alert'\n  },\n  alertWarningText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertWarning',\n    textColor: true\n  },\n  alertWarningPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertWarning',\n    textColor: true\n  },\n\n  alertSuccess: {\n    depends: ['cGreen'],\n    opacity: 'alert'\n  },\n  alertSuccessText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n  alertSuccessPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertSuccess',\n    textColor: true\n  },\n\n  alertNeutral: {\n    depends: ['text'],\n    opacity: 'alert'\n  },\n  alertNeutralText: {\n    depends: ['text'],\n    layer: 'alert',\n    variant: 'alertNeutral',\n    color: (mod, text) => invertLightness(text).rgb,\n    textColor: true\n  },\n  alertNeutralPanelText: {\n    depends: ['panelText'],\n    layer: 'alertPanel',\n    variant: 'alertNeutral',\n    textColor: true\n  },\n\n  alertPopupError: {\n    depends: ['alertError'],\n    opacity: 'alertPopup'\n  },\n  alertPopupErrorText: {\n    depends: ['alertErrorText'],\n    layer: 'popover',\n    variant: 'alertPopupError',\n    textColor: true\n  },\n\n  alertPopupWarning: {\n    depends: ['alertWarning'],\n    opacity: 'alertPopup'\n  },\n  alertPopupWarningText: {\n    depends: ['alertWarningText'],\n    layer: 'popover',\n    variant: 'alertPopupWarning',\n    textColor: true\n  },\n\n  alertPopupSuccess: {\n    depends: ['alertSuccess'],\n    opacity: 'alertPopup'\n  },\n  alertPopupSuccessText: {\n    depends: ['alertSuccessText'],\n    layer: 'popover',\n    variant: 'alertPopupSuccess',\n    textColor: true\n  },\n\n  alertPopupNeutral: {\n    depends: ['alertNeutral'],\n    opacity: 'alertPopup'\n  },\n  alertPopupNeutralText: {\n    depends: ['alertNeutralText'],\n    layer: 'popover',\n    variant: 'alertPopupNeutral',\n    textColor: true\n  },\n\n  badgeNotification: '--cRed',\n  badgeNotificationText: {\n    depends: ['text', 'badgeNotification'],\n    layer: 'badge',\n    variant: 'badgeNotification',\n    textColor: 'bw'\n  },\n\n  badgeNeutral: '--cGreen',\n  badgeNeutralText: {\n    depends: ['text', 'badgeNeutral'],\n    layer: 'badge',\n    variant: 'badgeNeutral',\n    textColor: 'bw'\n  },\n\n  chatBg: {\n    depends: ['bg']\n  },\n\n  chatMessageIncomingBg: {\n    depends: ['chatBg']\n  },\n\n  chatMessageIncomingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: true\n  },\n\n  chatMessageIncomingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageIncomingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageIncomingBorder: {\n    depends: ['border'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  },\n\n  chatMessageOutgoingBg: {\n    depends: ['chatMessageIncomingBg'],\n    color: (mod, chatMessage) => brightness(5 * mod, chatMessage).rgb\n  },\n\n  chatMessageOutgoingText: {\n    depends: ['text'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: true\n  },\n\n  chatMessageOutgoingLink: {\n    depends: ['link'],\n    layer: 'chatMessage',\n    variant: 'chatMessageOutgoingBg',\n    textColor: 'preserve'\n  },\n\n  chatMessageOutgoingBorder: {\n    depends: ['chatMessageOutgoingBg'],\n    opacity: 'border',\n    color: (mod, border) => brightness(2 * mod, border).rgb\n  }\n}\n","import { convert, 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  const array = [layer]\n  let parent = data[layer]\n  while (parent) {\n    array.unshift(parent)\n    parent = data[parent]\n  }\n  return array\n}\n\nexport const getLayers = (layer, variant = layer, opacitySlot, colors, opacity) => {\n  return getLayersArray(layer).map((currentLayer) => ([\n    currentLayer === layer\n      ? colors[variant]\n      : colors[currentLayer],\n    currentLayer === layer\n      ? opacity[opacitySlot] || 1\n      : opacity[currentLayer]\n  ]))\n}\n\nconst getDependencies = (key, inheritance) => {\n  const data = inheritance[key]\n  if (typeof data === 'string' && data.startsWith('--')) {\n    return [data.substring(2)]\n  } else {\n    if (data === null) return []\n    const { depends, layer, variant } = data\n    const layerDeps = layer\n      ? getLayersArray(layer).map(currentLayer => {\n        return currentLayer === layer\n          ? variant || layer\n          : currentLayer\n      })\n      : []\n    if (Array.isArray(depends)) {\n      return [...depends, ...layerDeps]\n    } else {\n      return [...layerDeps]\n    }\n  }\n}\n\n/**\n * Sorts inheritance object topologically - dependant slots come after\n * dependencies\n *\n * @property {Object} inheritance - object defining the nodes\n * @property {Function} getDeps - function that returns dependencies for\n *   given value and inheritance object.\n * @returns {String[]} keys of inheritance object, sorted in topological\n *   order. Additionally, dependency-less nodes will always be first in line\n */\nexport const topoSort = (\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  // This is an implementation of https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n  const allKeys = Object.keys(inheritance)\n  const whites = new Set(allKeys)\n  const grays = new Set()\n  const blacks = new Set()\n  const unprocessed = [...allKeys]\n  const output = []\n\n  const step = (node) => {\n    if (whites.has(node)) {\n      // Make node \"gray\"\n      whites.delete(node)\n      grays.add(node)\n      // Do step for each node connected to it (one way)\n      getDeps(node, inheritance).forEach(step)\n      // Make node \"black\"\n      grays.delete(node)\n      blacks.add(node)\n      // Put it into the output list\n      output.push(node)\n    } else if (grays.has(node)) {\n      console.debug('Cyclic depenency in topoSort, ignoring')\n      output.push(node)\n    } else if (blacks.has(node)) {\n      // do nothing\n    } else {\n      throw new Error('Unintended condition in topoSort!')\n    }\n  }\n  while (unprocessed.length > 0) {\n    step(unprocessed.pop())\n  }\n\n  // The index thing is to make sorting stable on browsers\n  // where Array.sort() isn't stable\n  return output.map((data, index) => ({ data, index })).sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n    const depsA = getDeps(a, inheritance).length\n    const depsB = getDeps(b, inheritance).length\n\n    if (depsA === depsB || (depsB !== 0 && depsA !== 0)) return ai - bi\n    if (depsA === 0 && depsB !== 0) return -1\n    if (depsB === 0 && depsA !== 0) return 1\n    return 0 // failsafe, shouldn't happen?\n  }).map(({ data }) => data)\n}\n\nconst expandSlotValue = (value) => {\n  if (typeof value === 'object') return value\n  return {\n    depends: value.startsWith('--') ? [value.substring(2)] : [],\n    default: value.startsWith('#') ? value : undefined\n  }\n}\n/**\n * retrieves opacity slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * TODO refactor this\n */\nexport const getOpacitySlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (value.opacity === null) return\n  if (value.opacity) return value.opacity\n  const findInheritedOpacity = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.opacity || dependency === null) {\n      return dependency.opacity\n    } else if (dependency.depends && visited.includes(depSlot)) {\n      return findInheritedOpacity(depSlot, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedOpacity(k)\n  }\n}\n\n/**\n * retrieves layer slot for given slot. This goes up the depenency graph\n * to find which parent has opacity slot defined for it.\n * this is basically copypaste of getOpacitySlot except it checks if key is\n * in LAYERS\n * TODO refactor this\n */\nexport const getLayerSlot = (\n  k,\n  inheritance = SLOT_INHERITANCE,\n  getDeps = getDependencies\n) => {\n  const value = expandSlotValue(inheritance[k])\n  if (LAYERS[k]) return k\n  if (value.layer === null) return\n  if (value.layer) return value.layer\n  const findInheritedLayer = (key, visited = [k]) => {\n    const depSlot = getDeps(key, inheritance)[0]\n    if (depSlot === undefined) return\n    const dependency = inheritance[depSlot]\n    if (dependency === undefined) return\n    if (dependency.layer || dependency === null) {\n      return dependency.layer\n    } else if (dependency.depends) {\n      return findInheritedLayer(dependency, [...visited, depSlot])\n    } else {\n      return null\n    }\n  }\n  if (value.depends) {\n    return findInheritedLayer(k)\n  }\n}\n\n/**\n * topologically sorted SLOT_INHERITANCE\n */\nexport const SLOT_ORDERED = topoSort(\n  Object.entries(SLOT_INHERITANCE)\n    .sort(([aK, aV], [bK, bV]) => ((aV && aV.priority) || 0) - ((bV && bV.priority) || 0))\n    .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n)\n\n/**\n * All opacity slots used in color slots, their default values and affected\n * color slots.\n */\nexport const OPACITIES = Object.entries(SLOT_INHERITANCE).reduce((acc, [k, v]) => {\n  const opacity = getOpacitySlot(k, SLOT_INHERITANCE, getDependencies)\n  if (opacity) {\n    return {\n      ...acc,\n      [opacity]: {\n        defaultValue: DEFAULT_OPACITY[opacity] || 1,\n        affectedSlots: [...((acc[opacity] && acc[opacity].affectedSlots) || []), k]\n      }\n    }\n  } else {\n    return acc\n  }\n}, {})\n\n/**\n * Handle dynamic color\n */\nexport const computeDynamicColor = (sourceColor, getColor, mod) => {\n  if (typeof sourceColor !== 'string' || !sourceColor.startsWith('--')) return sourceColor\n  let targetColor = null\n  // Color references other color\n  const [variable, modifier] = sourceColor.split(/,/g).map(str => str.trim())\n  const variableSlot = variable.substring(2)\n  targetColor = getColor(variableSlot)\n  if (modifier) {\n    targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n  }\n  return targetColor\n}\n\n/**\n * THE function you want to use. Takes provided colors and opacities\n * value and uses inheritance data to figure out color needed for the slot.\n */\nexport const getColors = (sourceColors, sourceOpacity) => SLOT_ORDERED.reduce(({ colors, opacity }, key) => {\n  const sourceColor = sourceColors[key]\n  const value = expandSlotValue(SLOT_INHERITANCE[key])\n  const deps = getDependencies(key, SLOT_INHERITANCE)\n  const isTextColor = !!value.textColor\n  const variant = value.variant || value.layer\n\n  let backgroundColor = null\n\n  if (isTextColor) {\n    backgroundColor = alphaBlendLayers(\n      { ...(colors[deps[0]] || convert(sourceColors[key] || '#FF00FF').rgb) },\n      getLayers(\n        getLayerSlot(key) || 'bg',\n        variant || 'bg',\n        getOpacitySlot(variant),\n        colors,\n        opacity\n      )\n    )\n  } else if (variant && variant !== key) {\n    backgroundColor = colors[variant] || convert(sourceColors[variant]).rgb\n  } else {\n    backgroundColor = colors.bg || convert(sourceColors.bg)\n  }\n\n  const isLightOnDark = relativeLuminance(backgroundColor) < 0.5\n  const mod = isLightOnDark ? 1 : -1\n\n  let outputColor = null\n  if (sourceColor) {\n    // Color is defined in source color\n    let targetColor = sourceColor\n    if (targetColor === 'transparent') {\n      // We take only layers below current one\n      const layers = getLayers(\n        getLayerSlot(key),\n        key,\n        getOpacitySlot(key) || key,\n        colors,\n        opacity\n      ).slice(0, -1)\n      targetColor = {\n        ...alphaBlendLayers(\n          convert('#FF00FF').rgb,\n          layers\n        ),\n        a: 0\n      }\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('--')) {\n      targetColor = computeDynamicColor(\n        sourceColor,\n        variableSlot => colors[variableSlot] || sourceColors[variableSlot],\n        mod\n      )\n    } else if (typeof sourceColor === 'string' && sourceColor.startsWith('#')) {\n      targetColor = convert(targetColor).rgb\n    }\n    outputColor = { ...targetColor }\n  } else if (value.default) {\n    // same as above except in object form\n    outputColor = convert(value.default).rgb\n  } else {\n    // calculate color\n    const defaultColorFunc = (mod, dep) => ({ ...dep })\n    const colorFunc = value.color || defaultColorFunc\n\n    if (value.textColor) {\n      if (value.textColor === 'bw') {\n        outputColor = contrastRatio(backgroundColor).rgb\n      } else {\n        let color = { ...colors[deps[0]] }\n        if (value.color) {\n          color = colorFunc(mod, ...deps.map((dep) => ({ ...colors[dep] })))\n        }\n        outputColor = getTextColor(\n          backgroundColor,\n          { ...color },\n          value.textColor === 'preserve'\n        )\n      }\n    } else {\n      // background color case\n      outputColor = colorFunc(\n        mod,\n        ...deps.map((dep) => ({ ...colors[dep] }))\n      )\n    }\n  }\n  if (!outputColor) {\n    throw new Error('Couldn\\'t generate color for ' + key)\n  }\n\n  const opacitySlot = value.opacity || getOpacitySlot(key)\n  const ownOpacitySlot = value.opacity\n\n  if (ownOpacitySlot === null) {\n    outputColor.a = 1\n  } else if (sourceColor === 'transparent') {\n    outputColor.a = 0\n  } else {\n    const opacityOverriden = ownOpacitySlot && sourceOpacity[opacitySlot] !== undefined\n\n    const dependencySlot = deps[0]\n    const dependencyColor = dependencySlot && colors[dependencySlot]\n\n    if (!ownOpacitySlot && dependencyColor && !value.textColor && ownOpacitySlot !== null) {\n      // Inheriting color from dependency (weird, i know)\n      // except if it's a text color or opacity slot is set to 'null'\n      outputColor.a = dependencyColor.a\n    } else if (!dependencyColor && !opacitySlot) {\n      // Remove any alpha channel if no dependency and no opacitySlot found\n      delete outputColor.a\n    } else {\n      // Otherwise try to assign opacity\n      if (dependencyColor && dependencyColor.a === 0) {\n        // transparent dependency shall make dependents transparent too\n        outputColor.a = 0\n      } else {\n        // Otherwise check if opacity is overriden and use that or default value instead\n        outputColor.a = Number(\n          opacityOverriden\n            ? sourceOpacity[opacitySlot]\n            : (OPACITIES[opacitySlot] || {}).defaultValue\n        )\n      }\n    }\n  }\n\n  if (Number.isNaN(outputColor.a) || outputColor.a === undefined) {\n    outputColor.a = 1\n  }\n\n  if (opacitySlot) {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity: { ...opacity, [opacitySlot]: outputColor.a }\n    }\n  } else {\n    return {\n      colors: { ...colors, [key]: outputColor },\n      opacity\n    }\n  }\n}, { colors: {}, opacity: {} })\n","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  const customProps = {\n    '--____highlight-solidColor': solidColor,\n    '--____highlight-tintColor': tintColor,\n    '--____highlight-tintColor2': tintColor2\n  }\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      ...customProps\n    }\n  } else if (type === 'solid') {\n    return {\n      backgroundColor: tintColor2,\n      ...customProps\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      ...customProps\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 { 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","<template>\n  <button\n    v-if=\"usePlaceholder\"\n    class=\"Attachment -placeholder button-unstyled\"\n    :class=\"classNames\"\n    @click=\"openModal\"\n  >\n    <a\n      v-if=\"type !== 'html'\"\n      class=\"placeholder\"\n      target=\"_blank\"\n      :href=\"attachment.url\"\n      :alt=\"attachment.description\"\n      :title=\"attachment.description\"\n      @click.prevent\n    >\n      <FAIcon :icon=\"placeholderIconClass\" />\n      <b>{{ nsfw ? \"NSFW / \" : \"\" }}</b>{{ edit ? '' : placeholderName }}\n    </a>\n    <div\n      v-if=\"edit || remove\"\n      class=\"attachment-buttons\"\n    >\n      <button\n        v-if=\"remove\"\n        class=\"button-unstyled attachment-button\"\n        @click.prevent=\"onRemove\"\n      >\n        <FAIcon icon=\"trash-alt\" />\n      </button>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || localDescription || showDescription)\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </button>\n  <div\n    v-else\n    class=\"Attachment\"\n    :class=\"classNames\"\n  >\n    <div\n      v-show=\"!isEmpty\"\n      class=\"attachment-wrapper\"\n    >\n      <a\n        v-if=\"hidden\"\n        class=\"image-container\"\n        :href=\"attachment.url\"\n        :alt=\"attachment.description\"\n        :title=\"attachment.description\"\n        @click.prevent.stop=\"toggleHidden\"\n      >\n        <img\n          :key=\"nsfwImage\"\n          class=\"nsfw\"\n          :src=\"nsfwImage\"\n        >\n        <FAIcon\n          v-if=\"type === 'video'\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </a>\n      <div\n        v-if=\"!hidden\"\n        class=\"attachment-buttons\"\n      >\n        <button\n          v-if=\"type === 'flash' && flashLoaded\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.attachment_stop_flash')\"\n          @click.prevent=\"stopFlash\"\n        >\n          <FAIcon icon=\"stop\" />\n        </button>\n        <button\n          v-if=\"attachment.description && size !== 'small' && !edit && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_description')\"\n          @click.prevent=\"toggleDescription\"\n        >\n          <FAIcon icon=\"align-right\" />\n        </button>\n        <button\n          v-if=\"!useModal && type !== 'unknown'\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.show_attachment_in_modal')\"\n          @click.prevent=\"openModalForce\"\n        >\n          <FAIcon icon=\"search-plus\" />\n        </button>\n        <button\n          v-if=\"nsfw && hideNsfwLocal\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.hide_attachment')\"\n          @click.prevent=\"toggleHidden\"\n        >\n          <FAIcon icon=\"times\" />\n        </button>\n        <button\n          v-if=\"shiftUp\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_up')\"\n          @click.prevent=\"onShiftUp\"\n        >\n          <FAIcon icon=\"chevron-left\" />\n        </button>\n        <button\n          v-if=\"shiftDn\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.move_down')\"\n          @click.prevent=\"onShiftDn\"\n        >\n          <FAIcon icon=\"chevron-right\" />\n        </button>\n        <button\n          v-if=\"remove\"\n          class=\"button-unstyled attachment-button\"\n          :title=\"$t('status.remove_attachment')\"\n          @click.prevent=\"onRemove\"\n        >\n          <FAIcon icon=\"trash-alt\" />\n        </button>\n      </div>\n\n      <a\n        v-if=\"type === 'image' && (!hidden || preloadImage)\"\n        class=\"image-container\"\n        :class=\"{'-hidden': hidden && preloadImage }\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <StillImage\n          class=\"image\"\n          :referrerpolicy=\"referrerpolicy\"\n          :mimetype=\"attachment.mimetype\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          :image-load-handler=\"onImageLoad\"\n          :alt=\"attachment.description\"\n        />\n      </a>\n\n      <a\n        v-if=\"type === 'unknown' && !hidden\"\n        class=\"placeholder-container\"\n        :href=\"attachment.url\"\n        target=\"_blank\"\n      >\n        <FAIcon\n          size=\"5x\"\n          :icon=\"placeholderIconClass\"\n        />\n        <p>\n          {{ localDescription }}\n        </p>\n      </a>\n\n      <component\n        :is=\"videoTag\"\n        v-if=\"type === 'video' && !hidden\"\n        class=\"video-container\"\n        :class=\"{ 'button-unstyled': 'isModal' }\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <VideoAttachment\n          class=\"video\"\n          :attachment=\"attachment\"\n          :controls=\"!useModal\"\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n        <FAIcon\n          v-if=\"useModal\"\n          class=\"play-icon\"\n          icon=\"play-circle\"\n        />\n      </component>\n\n      <span\n        v-if=\"type === 'audio' && !hidden\"\n        class=\"audio-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <audio\n          v-if=\"type === 'audio'\"\n          :src=\"attachment.url\"\n          :alt=\"attachment.description\"\n          :title=\"attachment.description\"\n          controls\n          @play=\"$emit('play')\"\n          @pause=\"$emit('pause')\"\n        />\n      </span>\n\n      <div\n        v-if=\"type === 'html' && attachment.oembed\"\n        class=\"oembed-container\"\n        @click.prevent=\"linkClicked\"\n      >\n        <div\n          v-if=\"attachment.thumb_url\"\n          class=\"image\"\n        >\n          <img :src=\"attachment.thumb_url\">\n        </div>\n        <div class=\"text\">\n          <!-- eslint-disable vue/no-v-html -->\n          <h1><a :href=\"attachment.url\">{{ attachment.oembed.title }}</a></h1>\n          <div v-html=\"attachment.oembed.oembedHTML\" />\n          <!-- eslint-enable vue/no-v-html -->\n        </div>\n      </div>\n\n      <span\n        v-if=\"type === 'flash' && !hidden\"\n        class=\"flash-container\"\n        :href=\"attachment.url\"\n        @click.stop.prevent=\"openModal\"\n      >\n        <Flash\n          ref=\"flash\"\n          class=\"flash\"\n          :src=\"attachment.large_thumb_url || attachment.url\"\n          @playerOpened=\"setFlashLoaded(true)\"\n          @playerClosed=\"setFlashLoaded(false)\"\n        />\n      </span>\n    </div>\n    <div\n      v-if=\"size !== 'hide' && !hideDescription && (edit || (localDescription && showDescription))\"\n      class=\"description-container\"\n      :class=\"{ '-static': !edit }\"\n    >\n      <input\n        v-if=\"edit\"\n        v-model=\"localDescription\"\n        type=\"text\"\n        class=\"description-field\"\n        :placeholder=\"$t('post_status.media_description')\"\n        @keydown.enter.prevent=\"\"\n      >\n      <p v-else>\n        {{ localDescription }}\n      </p>\n    </div>\n  </div>\n</template>\n\n<script src=\"./attachment.js\"></script>\n\n<style src=\"./attachment.scss\" lang=\"scss\"></style>\n","import StillImage from '../still-image/still-image.vue'\nimport Flash from '../flash/flash.vue'\nimport VideoAttachment from '../video_attachment/video_attachment.vue'\nimport nsfwImage from '../../assets/nsfw.png'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faVideo,\n  faPlayCircle,\n  faTimes,\n  faStop,\n  faSearchPlus,\n  faTrashAlt,\n  faPencilAlt,\n  faAlignRight\n)\n\nconst Attachment = {\n  props: [\n    'attachment',\n    'description',\n    'hideDescription',\n    'nsfw',\n    'size',\n    'setMedia',\n    'remove',\n    'shiftUp',\n    'shiftDn',\n    'edit'\n  ],\n  data () {\n    return {\n      localDescription: this.description || this.attachment.description,\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      flashLoaded: false,\n      showDescription: false\n    }\n  },\n  components: {\n    Flash,\n    StillImage,\n    VideoAttachment\n  },\n  computed: {\n    classNames () {\n      return [\n        {\n          '-loading': this.loading,\n          '-nsfw-placeholder': this.hidden,\n          '-editable': this.edit !== undefined\n        },\n        '-type-' + this.type,\n        this.size && '-size-' + this.size,\n        `-${this.useContainFit ? 'contain' : 'cover'}-fit`\n      ]\n    },\n    usePlaceholder () {\n      return this.size === 'hide'\n    },\n    useContainFit () {\n      return this.$store.getters.mergedConfig.useContainFit\n    },\n    placeholderName () {\n      if (this.attachment.description === '' || !this.attachment.description) {\n        return this.type.toUpperCase()\n      }\n      return this.attachment.description\n    },\n    placeholderIconClass () {\n      if (this.type === 'image') return 'image'\n      if (this.type === 'video') return 'video'\n      if (this.type === 'audio') return 'music'\n      return 'file'\n    },\n    referrerpolicy () {\n      return this.$store.state.instance.mediaProxyAvailable ? '' : 'no-referrer'\n    },\n    type () {\n      return fileTypeService.fileType(this.attachment.mimetype)\n    },\n    hidden () {\n      return this.nsfw && this.hideNsfwLocal && !this.showHidden\n    },\n    isEmpty () {\n      return (this.type === 'html' && !this.attachment.oembed)\n    },\n    useModal () {\n      let modalTypes = []\n      switch (this.size) {\n        case 'hide':\n        case 'small':\n          modalTypes = ['image', 'video', 'audio', 'flash']\n          break\n        default:\n          modalTypes = this.mergedConfig.playVideosInModal\n            ? ['image', 'video', 'flash']\n            : ['image']\n          break\n      }\n      return modalTypes.includes(this.type)\n    },\n    videoTag () {\n      return this.useModal ? 'button' : 'span'\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  watch: {\n    'attachment.description' (newVal) {\n      this.localDescription = newVal\n    },\n    localDescription (newVal) {\n      this.onEdit(newVal)\n    }\n  },\n  methods: {\n    linkClicked ({ target }) {\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    openModal (event) {\n      if (this.useModal) {\n        this.$emit('setMedia')\n        this.$store.dispatch('setCurrentMedia', this.attachment)\n      } else if (this.type === 'unknown') {\n        window.open(this.attachment.url)\n      }\n    },\n    openModalForce (event) {\n      this.$emit('setMedia')\n      this.$store.dispatch('setCurrentMedia', this.attachment)\n    },\n    onEdit (event) {\n      this.edit && this.edit(this.attachment, event)\n    },\n    onRemove () {\n      this.remove && this.remove(this.attachment)\n    },\n    onShiftUp () {\n      this.shiftUp && this.shiftUp(this.attachment)\n    },\n    onShiftDn () {\n      this.shiftDn && this.shiftDn(this.attachment)\n    },\n    stopFlash () {\n      this.$refs.flash.closePlayer()\n    },\n    setFlashLoaded (event) {\n      this.flashLoaded = event\n    },\n    toggleDescription () {\n      this.showDescription = !this.showDescription\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.$emit('naturalSizeLoad', { id: this.attachment.id, width, height })\n    }\n  }\n}\n\nexport default Attachment\n","import { render } from \"./attachment.vue?vue&type=template&id=1177e21f\"\nimport script from \"./attachment.js?vue&type=script&lang=js\"\nexport * from \"./attachment.js?vue&type=script&lang=js\"\n\nimport \"./attachment.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"avatars\">\n    <router-link\n      v-for=\"user in slicedUsers\"\n      :key=\"user.id\"\n      :to=\"userProfileLink(user)\"\n      class=\"avatars-item\"\n    >\n      <UserAvatar\n        :user=\"user\"\n        class=\"avatar-small\"\n      />\n    </router-link>\n  </div>\n</template>\n\n<script src=\"./avatar_list.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.avatars {\n  display: flex;\n  margin: 0;\n  padding: 0;\n\n  // For hiding overflowing elements\n  flex-wrap: wrap;\n  height: 24px;\n\n  .avatars-item {\n    margin: 0 0 5px 5px;\n\n    &:first-child {\n      padding-left: 5px;\n    }\n\n    .avatar-small {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n      height: 24px;\n      width: 24px;\n    }\n  }\n}\n</style>\n","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","import { render } from \"./avatar_list.vue?vue&type=template&id=6ba9433e\"\nimport script from \"./avatar_list.js?vue&type=script&lang=js\"\nexport * from \"./avatar_list.js?vue&type=script&lang=js\"\n\nimport \"./avatar_list.vue?vue&type=style&index=0&id=6ba9433e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"basic-user-card\">\n    <router-link\n      :to=\"userProfileLink(user)\"\n      @click.prevent\n    >\n      <UserPopover\n        :user-id=\"user.id\"\n        :overlay-centers=\"true\"\n        overlay-centers-selector=\".avatar\"\n      >\n        <UserAvatar\n          class=\"user-avatar avatar\"\n          :user=\"user\"\n          @click.prevent\n        />\n      </UserPopover>\n    </router-link>\n    <div\n      class=\"basic-user-card-collapsed-content\"\n    >\n      <div\n        :title=\"user.name\"\n        class=\"basic-user-card-user-name\"\n      >\n        <RichContent\n          class=\"basic-user-card-user-name-value\"\n          :html=\"user.name\"\n          :emoji=\"user.emoji\"\n        />\n      </div>\n      <div>\n        <user-link\n          class=\"basic-user-card-screen-name\"\n          :user=\"user\"\n        />\n      </div>\n      <slot />\n    </div>\n  </div>\n</template>\n\n<script src=\"./basic_user_card.js\"></script>\n\n<style lang=\"scss\">\n.basic-user-card {\n  display: flex;\n  flex: 1 0;\n  margin: 0;\n  padding: 0.6em 1em;\n\n   --emoji-size: 14px;\n\n  &-collapsed-content {\n    margin-left: 0.7em;\n    text-align: left;\n    flex: 1;\n    min-width: 0;\n  }\n\n  &-user-name {\n    img {\n      object-fit: contain;\n      height: 16px;\n      width: 16px;\n      vertical-align: middle;\n    }\n  }\n\n  &-user-name-value,\n  &-screen-name {\n    display: inline-block;\n    max-width: 100%;\n    overflow: hidden;\n    white-space: nowrap;\n    text-overflow: ellipsis;\n  }\n\n  &-expanded-content {\n    flex: 1;\n    margin-left: 0.7em;\n    min-width: 0;\n  }\n}\n</style>\n","import UserPopover from '../user_popover/user_popover.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst BasicUserCard = {\n  props: [\n    'user'\n  ],\n  components: {\n    UserPopover,\n    UserAvatar,\n    RichContent,\n    UserLink\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 BasicUserCard\n","import { render } from \"./basic_user_card.vue?vue&type=template&id=2b92940e\"\nimport script from \"./basic_user_card.js?vue&type=script&lang=js\"\nexport * from \"./basic_user_card.js?vue&type=script&lang=js\"\n\nimport \"./basic_user_card.vue?vue&type=style&index=0&id=2b92940e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"checkbox\"\n    :class=\"{ disabled, indeterminate }\"\n  >\n    <input\n      type=\"checkbox\"\n      :disabled=\"disabled\"\n      :checked=\"modelValue\"\n      :indeterminate=\"indeterminate\"\n      @change=\"$emit('update:modelValue', $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  props: [\n    'modelValue',\n    'indeterminate',\n    'disabled'\n  ],\n  emits: ['update:modelValue']\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","import { render } from \"./checkbox.vue?vue&type=template&id=48a4f44d\"\nimport script from \"./checkbox.vue?vue&type=script&lang=js\"\nexport * from \"./checkbox.vue?vue&type=script&lang=js\"\n\nimport \"./checkbox.vue?vue&type=style&index=0&id=48a4f44d&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    ref=\"root\"\n    class=\"emoji-input\"\n    :class=\"{ 'with-picker': !hideEmojiButton }\"\n  >\n    <slot />\n    <!-- TODO: make the 'x' disappear if at the end maybe? -->\n    <div\n      ref=\"hiddenOverlay\"\n      class=\"hidden-overlay\"\n      :style=\"overlayStyle\"\n    >\n      <span>{{ preText }}</span>\n      <span\n        ref=\"hiddenOverlayCaret\"\n        class=\"caret\"\n      >x</span>\n      <span>{{ postText }}</span>\n    </div>\n    <template v-if=\"enableEmojiPicker\">\n      <button\n        v-if=\"!hideEmojiButton\"\n        class=\"button-unstyled emoji-picker-icon\"\n        type=\"button\"\n        @click.prevent=\"togglePicker\"\n      >\n        <FAIcon :icon=\"['far', 'smile-beam']\" />\n      </button>\n      <EmojiPicker\n        v-if=\"enableEmojiPicker\"\n        ref=\"picker\"\n        :enable-sticker-picker=\"enableStickerPicker\"\n        class=\"emoji-picker-panel\"\n        @emoji=\"insert\"\n        @sticker-uploaded=\"onStickerUploaded\"\n        @sticker-upload-failed=\"onStickerUploadFailed\"\n        @show=\"onPickerShown\"\n        @close=\"onPickerClosed\"\n      />\n    </template>\n    <Popover\n      ref=\"suggestorPopover\"\n      class=\"autocomplete-panel\"\n      placement=\"bottom\"\n    >\n      <template #content>\n        <div\n          ref=\"panel-body\"\n          class=\"autocomplete-panel-body\"\n        >\n          <div\n            v-for=\"(suggestion, index) in suggestions\"\n            :key=\"index\"\n            class=\"autocomplete-item\"\n            :class=\"{ highlighted: index === highlighted }\"\n            @click.stop.prevent=\"onClick($event, suggestion)\"\n          >\n            <span class=\"image\">\n              <img\n                v-if=\"suggestion.img\"\n                :src=\"suggestion.img\"\n              >\n              <span v-else>{{ suggestion.replacement }}</span>\n            </span>\n            <div class=\"label\">\n              <span\n                v-if=\"suggestion.user\"\n                class=\"displayText\"\n              >\n                {{ suggestion.displayText }}<UnicodeDomainIndicator\n                  :user=\"suggestion.user\"\n                  :at=\"false\"\n                />\n              </span>\n              <span\n                v-if=\"!suggestion.user\"\n                class=\"displayText\"\n              >\n                {{ maybeLocalizedEmojiName(suggestion) }}\n              </span>\n              <span class=\"detailText\">{{ suggestion.detailText }}</span>\n            </div>\n          </div>\n        </div>\n      </template>\n    </Popover>\n  </div>\n</template>\n\n<script src=\"./emoji_input.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.emoji-input {\n  display: flex;\n  flex-direction: column;\n  position: relative;\n\n  &.with-picker input {\n    padding-right: 30px;\n  }\n\n  .emoji-picker-icon {\n    position: absolute;\n    top: 0;\n    right: 0;\n    margin: .2em .25em;\n    font-size: 1.3em;\n    cursor: pointer;\n    line-height: 24px;\n\n    &:hover i {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n  }\n\n  .emoji-picker-panel {\n    position: absolute;\n    z-index: 20;\n    margin-top: 2px;\n\n    &.hide {\n      display: none\n    }\n  }\n\n  input, textarea {\n    flex: 1 0 auto;\n  }\n\n  .hidden-overlay {\n    opacity: 0;\n    pointer-events: none;\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 0;\n    left: 0;\n    overflow: hidden;\n    /* DEBUG STUFF */\n    color: red;\n    /* set opacity to non-zero to see the overlay */\n\n    .caret {\n      width: 0;\n      margin-right: calc(-1ch - 1px);\n      border: 1px solid red;\n    }\n  }\n}\n.autocomplete {\n  &-panel {\n    position: absolute;\n  }\n\n  &-item {\n    display: flex;\n    cursor: pointer;\n    padding: 0.2em 0.4em;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n    height: 32px;\n\n    .image {\n      width: 32px;\n      height: 32px;\n      line-height: 32px;\n      text-align: center;\n      font-size: 32px;\n\n      margin-right: 4px;\n\n      img {\n        width: 32px;\n        height: 32px;\n        object-fit: contain;\n      }\n    }\n\n    .label {\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      margin: 0 0.1em 0 0.2em;\n\n      .displayText {\n        line-height: 1.5;\n      }\n\n      .detailText {\n        font-size: 9px;\n        line-height: 9px;\n      }\n    }\n\n    &.highlighted {\n      background-color: $fallback--fg;\n      background-color: var(--selectedMenuPopover, $fallback--fg);\n      color: var(--selectedMenuPopoverText, $fallback--text);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n    }\n  }\n}\n</style>\n","import { reduce, find } from 'lodash'\n\nexport const replaceWord = (str, toReplace, replacement) => {\n  return str.slice(0, toReplace.start) + replacement + str.slice(toReplace.end)\n}\n\nexport const wordAtPosition = (str, pos) => {\n  const words = splitByWhitespaceBoundary(str)\n  const wordsWithPosition = addPositionToWords(words)\n\n  return find(wordsWithPosition, ({ start, end }) => start <= pos && end > pos)\n}\n\nexport const addPositionToWords = (words) => {\n  return reduce(words, (result, word) => {\n    const data = {\n      word,\n      start: 0,\n      end: word.length\n    }\n\n    if (result.length > 0) {\n      const previous = result.pop()\n\n      data.start += previous.end\n      data.end += previous.end\n\n      result.push(previous)\n    }\n\n    result.push(data)\n\n    return result\n  }, [])\n}\n\nexport const splitByWhitespaceBoundary = (str) => {\n  const result = []\n  let currentWord = ''\n  for (let i = 0; i < str.length; i++) {\n    const currentChar = str[i]\n    // Starting a new word\n    if (!currentWord) {\n      currentWord = currentChar\n      continue\n    }\n    // current character is whitespace while word isn't, or vice versa:\n    // add our current word to results, start over the current word.\n    if (!!currentChar.trim() !== !!currentWord.trim()) {\n      result.push(currentWord)\n      currentWord = currentChar\n      continue\n    }\n    currentWord += currentChar\n  }\n  // Add the last word we were working on\n  if (currentWord) {\n    result.push(currentWord)\n  }\n  return result\n}\n\nconst completion = {\n  wordAtPosition,\n  addPositionToWords,\n  splitByWhitespaceBoundary,\n  replaceWord\n}\n\nexport default completion\n","<template>\n  <Popover\n    ref=\"popover\"\n    trigger=\"click\"\n    popover-class=\"emoji-picker popover-default\"\n    @show=\"onPopoverShown\"\n    @close=\"onPopoverClosed\"\n  >\n    <template #content>\n      <div class=\"heading\">\n        <span\n          ref=\"header\"\n          class=\"emoji-tabs\"\n        >\n          <span\n            v-for=\"group in filteredEmojiGroups\"\n            :ref=\"setGroupRef('group-header-' + group.id)\"\n            :key=\"group.id\"\n            class=\"emoji-tabs-item\"\n            :class=\"{\n              active: activeGroupView === group.id\n            }\"\n            :title=\"group.text\"\n            @click.prevent=\"highlight(group.id)\"\n          >\n            <span\n              v-if=\"group.image\"\n              class=\"emoji-picker-header-image\"\n            >\n              <still-image\n                :alt=\"group.text\"\n                :src=\"group.image\"\n              />\n            </span>\n            <FAIcon\n              v-else\n              :icon=\"group.icon\"\n              fixed-width\n            />\n          </span>\n        </span>\n        <span\n          v-if=\"stickerPickerEnabled\"\n          class=\"additional-tabs\"\n        >\n          <span\n            class=\"stickers-tab-icon additional-tabs-item\"\n            :class=\"{active: showingStickers}\"\n            :title=\"$t('emoji.stickers')\"\n            @click.prevent=\"toggleStickers\"\n          >\n            <FAIcon\n              icon=\"sticky-note\"\n              fixed-width\n            />\n          </span>\n        </span>\n      </div>\n      <div\n        v-if=\"contentLoaded\"\n        class=\"content\"\n      >\n        <div\n          class=\"emoji-content\"\n          :class=\"{hidden: showingStickers}\"\n        >\n          <div class=\"emoji-search\">\n            <input\n              ref=\"search\"\n              v-model=\"keyword\"\n              type=\"text\"\n              class=\"form-control\"\n              :placeholder=\"$t('emoji.search_emoji')\"\n              @input=\"$event.target.composing = false\"\n            >\n          </div>\n          <div\n            ref=\"emoji-groups\"\n            class=\"emoji-groups\"\n            :class=\"groupsScrolledClass\"\n            @scroll=\"onScroll\"\n          >\n            <div\n              v-for=\"group in filteredEmojiGroups\"\n              :key=\"group.id\"\n              class=\"emoji-group\"\n            >\n              <h6\n                :ref=\"setGroupRef('group-' + group.id)\"\n                class=\"emoji-group-title\"\n              >\n                {{ group.text }}\n              </h6>\n              <span\n                v-for=\"emoji in group.emojis\"\n                :key=\"group.id + emoji.displayText\"\n                :title=\"maybeLocalizedEmojiName(emoji)\"\n                class=\"emoji-item\"\n                @click.stop.prevent=\"onEmoji(emoji)\"\n              >\n                <span\n                  v-if=\"!emoji.imageUrl\"\n                  class=\"emoji-picker-emoji -unicode\"\n                >{{ emoji.replacement }}</span>\n                <still-image\n                  v-else\n                  :ref=\"setEmojiRef(group.id + emoji.displayText)\"\n                  class=\"emoji-picker-emoji -custom\"\n                  :data-src=\"emoji.imageUrl\"\n                  :data-emoji-name=\"group.id + emoji.displayText\"\n                />\n              </span>\n              <span :ref=\"setGroupRef('group-end-' + group.id)\" />\n            </div>\n          </div>\n          <div class=\"keep-open\">\n            <Checkbox v-model=\"keepOpen\">\n              {{ $t('emoji.keep_open') }}\n            </Checkbox>\n          </div>\n        </div>\n        <div\n          v-if=\"showingStickers\"\n          class=\"stickers-content\"\n        >\n          <sticker-picker\n            @uploaded=\"onStickerUploaded\"\n            @upload-failed=\"onStickerUploadFailed\"\n          />\n        </div>\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./emoji_picker.js\"></script>\n<style lang=\"scss\" src=\"./emoji_picker.scss\"></style>\n","import { defineAsyncComponent } from 'vue'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport StillImage from '../still-image/still-image.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport lozad from 'lozad'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam,\n  faSmile,\n  faUser,\n  faPaw,\n  faIceCream,\n  faBus,\n  faBasketballBall,\n  faLightbulb,\n  faCode,\n  faFlag\n} from '@fortawesome/free-solid-svg-icons'\nimport { debounce, trim } from 'lodash'\n\nlibrary.add(\n  faBoxOpen,\n  faStickyNote,\n  faSmileBeam,\n  faSmile,\n  faUser,\n  faPaw,\n  faIceCream,\n  faBus,\n  faBasketballBall,\n  faLightbulb,\n  faCode,\n  faFlag\n)\n\nconst UNICODE_EMOJI_GROUP_ICON = {\n  'smileys-and-emotion': 'smile',\n  'people-and-body': 'user',\n  'animals-and-nature': 'paw',\n  'food-and-drink': 'ice-cream',\n  'travel-and-places': 'bus',\n  activities: 'basketball-ball',\n  objects: 'lightbulb',\n  symbols: 'code',\n  flags: 'flag'\n}\n\nconst maybeLocalizedKeywords = (emoji, languages, nameLocalizer) => {\n  const res = [emoji.displayText, nameLocalizer(emoji)]\n  if (emoji.annotations) {\n    languages.forEach(lang => {\n      const keywords = emoji.annotations[lang]?.keywords || []\n      const name = emoji.annotations[lang]?.name\n      res.push(...(keywords.concat([name]).filter(k => k)))\n    })\n  }\n  return res\n}\n\nconst filterByKeyword = (list, keyword = '', languages, nameLocalizer) => {\n  if (keyword === '') return list\n\n  const keywordLowercase = keyword.toLowerCase()\n  const orderedEmojiList = []\n  for (const emoji of list) {\n    const indices = maybeLocalizedKeywords(emoji, languages, nameLocalizer)\n      .map(k => k.toLowerCase().indexOf(keywordLowercase))\n      .filter(k => k > -1)\n\n    const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n    if (indexOfKeyword > -1) {\n      if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n        orderedEmojiList[indexOfKeyword] = []\n      }\n      orderedEmojiList[indexOfKeyword].push(emoji)\n    }\n  }\n  return orderedEmojiList.flat()\n}\n\nconst EmojiPicker = {\n  props: {\n    enableStickerPicker: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      keyword: '',\n      activeGroup: 'custom',\n      showingStickers: false,\n      groupsScrolledClass: 'scrolled-top',\n      keepOpen: false,\n      customEmojiTimeout: null,\n      // Lazy-load only after the first time `showing` becomes true.\n      contentLoaded: false,\n      groupRefs: {},\n      emojiRefs: {},\n      filteredEmojiGroups: []\n    }\n  },\n  components: {\n    StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n    Checkbox,\n    StillImage,\n    Popover\n  },\n  methods: {\n    showPicker () {\n      this.$refs.popover.showPopover()\n      this.onShowing()\n    },\n    hidePicker () {\n      this.$refs.popover.hidePopover()\n    },\n    setAnchorEl (el) {\n      this.$refs.popover.setAnchorEl(el)\n    },\n    setGroupRef (name) {\n      return el => { this.groupRefs[name] = el }\n    },\n    setEmojiRef (name) {\n      return el => { this.emojiRefs[name] = el }\n    },\n    onPopoverShown () {\n      this.$emit('show')\n    },\n    onPopoverClosed () {\n      this.$emit('close')\n    },\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      if (!this.keepOpen) {\n        this.$refs.popover.hidePopover()\n      }\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    },\n    scrolledGroup (target) {\n      const top = target.scrollTop + 5\n      this.$nextTick(() => {\n        this.allEmojiGroups.forEach(group => {\n          const ref = this.groupRefs['group-' + group.id]\n          if (ref && ref.offsetTop <= top) {\n            this.activeGroup = group.id\n          }\n        })\n        this.scrollHeader()\n      })\n    },\n    scrollHeader () {\n      // Scroll the active tab's header into view\n      const headerRef = this.groupRefs['group-header-' + this.activeGroup]\n      const left = headerRef.offsetLeft\n      const right = left + headerRef.offsetWidth\n      const headerCont = this.$refs.header\n      const currentScroll = headerCont.scrollLeft\n      const currentScrollRight = currentScroll + headerCont.clientWidth\n      const setScroll = s => { headerCont.scrollLeft = s }\n\n      const margin = 7 // .emoji-tabs-item: padding\n      if (left - margin < currentScroll) {\n        setScroll(left - margin)\n      } else if (right + margin > currentScrollRight) {\n        setScroll(right + margin - headerCont.clientWidth)\n      }\n    },\n    highlight (key) {\n      const ref = this.groupRefs['group-' + key]\n      const top = ref.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    toggleStickers () {\n      this.showingStickers = !this.showingStickers\n    },\n    setShowStickers (value) {\n      this.showingStickers = value\n    },\n    filterByKeyword (list, keyword) {\n      return filterByKeyword(list, keyword, this.languages, this.maybeLocalizedEmojiName)\n    },\n    initializeLazyLoad () {\n      this.destroyLazyLoad()\n      this.$nextTick(() => {\n        this.$lozad = lozad('.still-image.emoji-picker-emoji', {\n          load: el => {\n            const name = el.getAttribute('data-emoji-name')\n            const vn = this.emojiRefs[name]\n            if (!vn) {\n              return\n            }\n\n            vn.loadLazy()\n          }\n        })\n        this.$lozad.observe()\n      })\n    },\n    waitForDomAndInitializeLazyLoad () {\n      this.$nextTick(() => this.initializeLazyLoad())\n    },\n    destroyLazyLoad () {\n      if (this.$lozad) {\n        if (this.$lozad.observer) {\n          this.$lozad.observer.disconnect()\n        }\n        if (this.$lozad.mutationObserver) {\n          this.$lozad.mutationObserver.disconnect()\n        }\n      }\n    },\n    onShowing () {\n      const oldContentLoaded = this.contentLoaded\n      this.$nextTick(() => {\n        this.$refs.search.focus()\n      })\n      this.contentLoaded = true\n      this.waitForDomAndInitializeLazyLoad()\n      this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n      if (!oldContentLoaded) {\n        this.$nextTick(() => {\n          if (this.defaultGroup) {\n            this.highlight(this.defaultGroup)\n          }\n        })\n      }\n    },\n    getFilteredEmojiGroups () {\n      return this.allEmojiGroups\n        .map(group => ({\n          ...group,\n          emojis: this.filterByKeyword(group.emojis, trim(this.keyword))\n        }))\n        .filter(group => group.emojis.length > 0)\n    }\n  },\n  watch: {\n    keyword () {\n      this.onScroll()\n      this.debouncedHandleKeywordChange()\n    },\n    allCustomGroups () {\n      this.waitForDomAndInitializeLazyLoad()\n      this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n    }\n  },\n  destroyed () {\n    this.destroyLazyLoad()\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    allCustomGroups () {\n      return this.$store.getters.groupedCustomEmojis\n    },\n    defaultGroup () {\n      return Object.keys(this.allCustomGroups)[0]\n    },\n    unicodeEmojiGroups () {\n      return this.$store.getters.standardEmojiGroupList.map(group => ({\n        id: `standard-${group.id}`,\n        text: this.$t(`emoji.unicode_groups.${group.id}`),\n        icon: UNICODE_EMOJI_GROUP_ICON[group.id],\n        emojis: group.emojis\n      }))\n    },\n    allEmojiGroups () {\n      return Object.entries(this.allCustomGroups)\n        .map(([_, v]) => v)\n        .concat(this.unicodeEmojiGroups)\n    },\n    stickerPickerEnabled () {\n      return (this.$store.state.instance.stickers || []).length !== 0\n    },\n    debouncedHandleKeywordChange () {\n      return debounce(() => {\n        this.waitForDomAndInitializeLazyLoad()\n        this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n      }, 500)\n    },\n    languages () {\n      return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n    },\n    maybeLocalizedEmojiName () {\n      return emoji => {\n        if (!emoji.annotations) {\n          return emoji.displayText\n        }\n\n        if (emoji.displayTextI18n) {\n          return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n        }\n\n        for (const lang of this.languages) {\n          if (emoji.annotations[lang]?.name) {\n            return emoji.annotations[lang].name\n          }\n        }\n\n        return emoji.displayText\n      }\n    }\n  }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=e29fe6d4\"\nimport script from \"./emoji_picker.js?vue&type=script&lang=js\"\nexport * from \"./emoji_picker.js?vue&type=script&lang=js\"\n\nimport \"./emoji_picker.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Completion from '../../services/completion/completion.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { take } from 'lodash'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faSmileBeam\n)\n\n/**\n * EmojiInput - augmented inputs for emoji and autocomplete support in inputs\n * without having to give up the comfort of <input/> and <textarea/> elements\n *\n * Intended usage is:\n * <EmojiInput v-model=\"something\">\n *   <input v-model=\"something\"/>\n * </EmojiInput>\n *\n * Works only with <input> and <textarea>. Intended to use with only one nested\n * input. It will find first input or textarea and work with that, multiple\n * nested children not tested. You HAVE TO duplicate v-model for both\n * <emoji-input> and <input>/<textarea> otherwise it will not work.\n *\n * Be prepared for CSS troubles though because it still wraps component in a div\n * while TRYING to make it look like nothing happened, but it could break stuff.\n */\n\nconst EmojiInput = {\n  emits: ['update:modelValue', 'shown'],\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    modelValue: {\n      /**\n       * Used for v-model\n       */\n      required: true,\n      type: String\n    },\n    enableEmojiPicker: {\n      /**\n       * Enables emoji picker support, this implies that custom emoji are supported\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    hideEmojiButton: {\n      /**\n       * intended to use with external picker trigger, i.e. you have a button outside\n       * input that will open up the picker, see triggerShowPicker()\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    enableStickerPicker: {\n      /**\n       * Enables sticker picker support, only makes sense when enableEmojiPicker=true\n       */\n      required: false,\n      type: Boolean,\n      default: false\n    },\n    placement: {\n      /**\n       * Forces the panel to take a specific position relative to the input element.\n       * The 'auto' placement chooses either bottom or top depending on which has the available space (when both have available space, bottom is preferred).\n       */\n      required: false,\n      type: String, // 'auto', 'top', 'bottom'\n      default: 'auto'\n    },\n    newlineOnCtrlEnter: {\n      required: false,\n      type: Boolean,\n      default: false\n    }\n  },\n  data () {\n    return {\n      input: undefined,\n      caretEl: undefined,\n      highlighted: 0,\n      caret: 0,\n      focused: false,\n      blurTimeout: null,\n      temporarilyHideSuggestions: false,\n      disableClickOutside: false,\n      suggestions: [],\n      overlayStyle: {},\n      pickerShown: false\n    }\n  },\n  components: {\n    Popover,\n    EmojiPicker,\n    UnicodeDomainIndicator\n  },\n  computed: {\n    padEmoji () {\n      return this.$store.getters.mergedConfig.padEmoji\n    },\n    preText () {\n      return this.modelValue.slice(0, this.caret)\n    },\n    postText () {\n      return this.modelValue.slice(this.caret)\n    },\n    showSuggestions () {\n      return this.focused &&\n        this.suggestions &&\n        this.suggestions.length > 0 &&\n        !this.pickerShown &&\n        !this.temporarilyHideSuggestions\n    },\n    textAtCaret () {\n      return this.wordAtCaret?.word\n    },\n    wordAtCaret () {\n      if (this.modelValue && this.caret) {\n        const word = Completion.wordAtPosition(this.modelValue, this.caret - 1) || {}\n        return word\n      }\n    },\n    languages () {\n      return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n    },\n    maybeLocalizedEmojiNamesAndKeywords () {\n      return emoji => {\n        const names = [emoji.displayText]\n        const keywords = []\n\n        if (emoji.displayTextI18n) {\n          names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n        }\n\n        if (emoji.annotations) {\n          this.languages.forEach(lang => {\n            names.push(emoji.annotations[lang]?.name)\n\n            keywords.push(...(emoji.annotations[lang]?.keywords || []))\n          })\n        }\n\n        return {\n          names: names.filter(k => k),\n          keywords: keywords.filter(k => k)\n        }\n      }\n    },\n    maybeLocalizedEmojiName () {\n      return emoji => {\n        if (!emoji.annotations) {\n          return emoji.displayText\n        }\n\n        if (emoji.displayTextI18n) {\n          return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n        }\n\n        for (const lang of this.languages) {\n          if (emoji.annotations[lang]?.name) {\n            return emoji.annotations[lang].name\n          }\n        }\n\n        return emoji.displayText\n      }\n    },\n    onInputScroll () {\n      this.$refs.hiddenOverlay.scrollTo({\n        top: this.input.scrollTop,\n        left: this.input.scrollLeft\n      })\n    }\n  },\n  mounted () {\n    const { root, hiddenOverlayCaret, suggestorPopover } = this.$refs\n    const input = root.querySelector('.emoji-input > input') || root.querySelector('.emoji-input > textarea')\n    if (!input) return\n    this.input = input\n    this.caretEl = hiddenOverlayCaret\n    if (suggestorPopover.setAnchorEl) {\n      suggestorPopover.setAnchorEl(this.caretEl) // unit test compat\n      this.$refs.picker.setAnchorEl(this.caretEl)\n    } else {\n      console.warn('setAnchorEl not found, are we in a unit test?')\n    }\n    const style = getComputedStyle(this.input)\n    this.overlayStyle.padding = style.padding\n    this.overlayStyle.border = style.border\n    this.overlayStyle.margin = style.margin\n    this.overlayStyle.lineHeight = style.lineHeight\n    this.overlayStyle.fontFamily = style.fontFamily\n    this.overlayStyle.fontSize = style.fontSize\n    this.overlayStyle.wordWrap = style.wordWrap\n    this.overlayStyle.whiteSpace = style.whiteSpace\n    this.resize()\n    input.addEventListener('blur', this.onBlur)\n    input.addEventListener('focus', this.onFocus)\n    input.addEventListener('paste', this.onPaste)\n    input.addEventListener('keyup', this.onKeyUp)\n    input.addEventListener('keydown', this.onKeyDown)\n    input.addEventListener('click', this.onClickInput)\n    input.addEventListener('transitionend', this.onTransition)\n    input.addEventListener('input', this.onInput)\n    input.addEventListener('scroll', this.onInputScroll)\n  },\n  unmounted () {\n    const { input } = this\n    if (input) {\n      input.removeEventListener('blur', this.onBlur)\n      input.removeEventListener('focus', this.onFocus)\n      input.removeEventListener('paste', this.onPaste)\n      input.removeEventListener('keyup', this.onKeyUp)\n      input.removeEventListener('keydown', this.onKeyDown)\n      input.removeEventListener('click', this.onClickInput)\n      input.removeEventListener('transitionend', this.onTransition)\n      input.removeEventListener('input', this.onInput)\n      input.removeEventListener('scroll', this.onInputScroll)\n    }\n  },\n  watch: {\n    showSuggestions: function (newValue, oldValue) {\n      this.$emit('shown', newValue)\n      if (newValue) {\n        this.$refs.suggestorPopover.showPopover()\n      } else {\n        this.$refs.suggestorPopover.hidePopover()\n      }\n    },\n    textAtCaret: async function (newWord) {\n      if (newWord === undefined) return\n      const firstchar = newWord.charAt(0)\n      if (newWord === firstchar) {\n        this.suggestions = []\n        return\n      }\n      const matchedSuggestions = await this.suggest(newWord, this.maybeLocalizedEmojiNamesAndKeywords)\n      // Async: cancel if textAtCaret has changed during wait\n      if (this.textAtCaret !== newWord || matchedSuggestions.length <= 0) {\n        this.suggestions = []\n        return\n      }\n      this.suggestions = take(matchedSuggestions, 5)\n        .map(({ imageUrl, ...rest }) => ({\n          ...rest,\n          img: imageUrl || ''\n        }))\n    }\n  },\n  methods: {\n    triggerShowPicker () {\n      this.$nextTick(() => {\n        this.$refs.picker.showPicker()\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.focus()\n      if (!this.pickerShown) {\n        this.scrollIntoView()\n        this.$refs.picker.showPicker()\n        this.$refs.picker.startEmojiLoad()\n      } else {\n        this.$refs.picker.hidePicker()\n      }\n    },\n    replace (replacement) {\n      const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n      this.$emit('update:modelValue', newValue)\n      this.caret = 0\n    },\n    insert ({ insertion, keepOpen, surroundingSpace = true }) {\n      const before = this.modelValue.substring(0, this.caret) || ''\n      const after = this.modelValue.substring(this.caret) || ''\n\n      /* Using a bit more smart approach to padding emojis with spaces:\n       * - put a space before cursor if there isn't one already, unless we\n       *   are at the beginning of post or in spam mode\n       * - put a space after emoji if there isn't one already unless we are\n       *   in spam mode\n       *\n       * The idea is that when you put a cursor somewhere in between sentence\n       * inserting just ' :emoji: ' will add more spaces to post which might\n       * break the flow/spacing, as well as the case where user ends sentence\n       * with a space before adding emoji.\n       *\n       * Spam mode is intended for creating multi-part emojis and overall spamming\n       * them, masto seem to be rendering :emoji::emoji: correctly now so why not\n       */\n      const isSpaceRegex = /\\s/\n      const spaceBefore = (surroundingSpace && !isSpaceRegex.exec(before.slice(-1)) && before.length && this.padEmoji > 0) ? ' ' : ''\n      const spaceAfter = (surroundingSpace && !isSpaceRegex.exec(after[0]) && this.padEmoji) ? ' ' : ''\n\n      const newValue = [\n        before,\n        spaceBefore,\n        insertion,\n        spaceAfter,\n        after\n      ].join('')\n      this.$emit('update:modelValue', newValue)\n      const position = this.caret + (insertion + spaceAfter + spaceBefore).length\n      if (!keepOpen) {\n        this.input.focus()\n      }\n\n      this.$nextTick(function () {\n        // Re-focus inputbox after clicking suggestion\n        // Set selection right after the replacement instead of the very end\n        this.input.setSelectionRange(position, position)\n        this.caret = position\n      })\n    },\n    replaceText (e, suggestion) {\n      const len = this.suggestions.length || 0\n      if (this.textAtCaret.length === 1) { return }\n      if (len > 0 || suggestion) {\n        const chosenSuggestion = suggestion || this.suggestions[this.highlighted]\n        const replacement = chosenSuggestion.replacement\n        const newValue = Completion.replaceWord(this.modelValue, this.wordAtCaret, replacement)\n        this.$emit('update:modelValue', newValue)\n        this.highlighted = 0\n        const position = this.wordAtCaret.start + replacement.length\n\n        this.$nextTick(function () {\n          // Re-focus inputbox after clicking suggestion\n          this.input.focus()\n          // Set selection right after the replacement instead of the very end\n          this.input.setSelectionRange(position, position)\n          this.caret = position\n        })\n        e.preventDefault()\n      }\n    },\n    cycleBackward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted -= 1\n        if (this.highlighted < 0) {\n          this.highlighted = this.suggestions.length - 1\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    cycleForward (e) {\n      const len = this.suggestions.length || 0\n      if (len > 1) {\n        this.highlighted += 1\n        if (this.highlighted >= len) {\n          this.highlighted = 0\n        }\n        e.preventDefault()\n      } else {\n        this.highlighted = 0\n      }\n    },\n    scrollIntoView () {\n      const rootRef = this.$refs.picker.$el\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const scrollerRef = this.$el.closest('.sidebar-scroller') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n      // We check where the bottom border of root element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const rootBottomBorder = rootRef.offsetHeight + findOffset(rootRef, scrollerRef).top\n\n      const bottomDelta = Math.max(0, rootBottomBorder - scrollerBottomBorder)\n      // could also check top delta but there's no case for it\n      const targetScroll = currentScroll + bottomDelta\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n\n      this.$nextTick(() => {\n        const { offsetHeight } = this.input\n        const { picker } = this.$refs\n        const pickerBottom = picker.$el.getBoundingClientRect().bottom\n        if (pickerBottom > window.innerHeight) {\n          picker.$el.style.top = 'auto'\n          picker.$el.style.bottom = offsetHeight + 'px'\n        }\n      })\n    },\n    onPickerShown () {\n      this.pickerShown = true\n    },\n    onPickerClosed () {\n      this.pickerShown = false\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      }, 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      this.focused = true\n      this.setCaret(e)\n      this.temporarilyHideSuggestions = false\n    },\n    onKeyUp (e) {\n      const { key } = e\n      this.setCaret(e)\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    },\n    onKeyDown (e) {\n      const { ctrlKey, shiftKey, key } = e\n      if (this.newlineOnCtrlEnter && ctrlKey && key === 'Enter') {\n        this.insert({ insertion: '\\n', surroundingSpace: false })\n        // Ensure only one new line is added on macos\n        e.stopPropagation()\n        e.preventDefault()\n\n        // Scroll the input element to the position of the cursor\n        this.$nextTick(() => {\n          this.input.blur()\n          this.input.focus()\n        })\n      }\n      // Disable suggestions hotkeys if suggestions are hidden\n      if (!this.temporarilyHideSuggestions) {\n        if (key === 'Tab') {\n          if (shiftKey) {\n            this.cycleBackward(e)\n          } else {\n            this.cycleForward(e)\n          }\n        }\n        if (key === 'ArrowUp') {\n          this.cycleBackward(e)\n        } else if (key === 'ArrowDown') {\n          this.cycleForward(e)\n        }\n        if (key === 'Enter') {\n          if (!ctrlKey) {\n            this.replaceText(e)\n          }\n        }\n      }\n      // Probably add optional keyboard controls for emoji picker?\n\n      // Escape hides suggestions, if suggestions are hidden it\n      // de-focuses the element (i.e. default browser behavior)\n      if (key === 'Escape') {\n        if (!this.temporarilyHideSuggestions) {\n          this.input.focus()\n        }\n      }\n    },\n    onInput (e) {\n      this.setCaret(e)\n      this.$emit('update:modelValue', e.target.value)\n    },\n    onStickerUploaded (e) {\n      this.$emit('sticker-uploaded', e)\n    },\n    onStickerUploadFailed (e) {\n      this.$emit('sticker-upload-Failed', e)\n    },\n    setCaret ({ target: { selectionStart } }) {\n      this.caret = selectionStart\n      this.$nextTick(() => {\n        this.$refs.suggestorPopover.updateStyles()\n      })\n    },\n    resize () {\n    }\n  }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=5fc70400\"\nimport script from \"./emoji_input.js?vue&type=script&lang=js\"\nexport * from \"./emoji_input.js?vue&type=script&lang=js\"\n\nimport \"./emoji_input.vue?vue&type=style&index=0&id=5fc70400&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const createRuffleService = () => {\n  let ruffleInstance = null\n\n  const getRuffle = () => new Promise((resolve, reject) => {\n    if (ruffleInstance) {\n      resolve(ruffleInstance)\n      return\n    }\n    // Ruffle needs these to be set before it's loaded\n    // https://github.com/ruffle-rs/ruffle/issues/3952\n    window.RufflePlayer = {}\n    window.RufflePlayer.config = {\n      polyfills: false,\n      publicPath: '/static/ruffle'\n    }\n\n    // Currently it's seems like a better way of loading ruffle\n    // because it needs the wasm publically accessible, but it needs path to it\n    // and filename of wasm seems to be pseudo-randomly generated (is it a hash?)\n    const script = document.createElement('script')\n    // see webpack config, using CopyPlugin to copy it from node_modules\n    // provided via ruffle-mirror\n    script.src = '/static/ruffle/ruffle.js'\n    script.type = 'text/javascript'\n    script.onerror = (e) => { reject(e) }\n    script.onabort = (e) => { reject(e) }\n    script.oncancel = (e) => { reject(e) }\n    script.onload = () => {\n      ruffleInstance = window.RufflePlayer\n      resolve(ruffleInstance)\n    }\n    document.body.appendChild(script)\n  })\n\n  return { getRuffle }\n}\n\nconst RuffleService = createRuffleService()\n\nexport default RuffleService\n","<template>\n  <div class=\"Flash\">\n    <div\n      v-if=\"player === true || player === 'hidden'\"\n      ref=\"container\"\n      class=\"player\"\n      :class=\"{ hidden: player === 'hidden' }\"\n    />\n    <button\n      v-if=\"player !== true\"\n      class=\"button-unstyled placeholder\"\n      @click=\"openPlayer\"\n    >\n      <span\n        v-if=\"player === 'hidden'\"\n        class=\"label\"\n      >\n        {{ $t('general.loading') }}\n      </span>\n      <span\n        v-if=\"player === 'error'\"\n        class=\"label\"\n      >\n        {{ $t('general.flash_fail') }}\n      </span>\n      <span\n        v-else\n        class=\"label\"\n      >\n        <p>\n          {{ $t('general.flash_content') }}\n        </p>\n        <p>\n          <FAIcon icon=\"exclamation-triangle\" />\n          {{ $t('general.flash_security') }}\n        </p>\n      </span>\n    </button>\n  </div>\n</template>\n\n<script src=\"./flash.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.Flash {\n  display: inline-block;\n  width: 100%;\n  height: 100%;\n  position: relative;\n\n  .player {\n    height: 100%;\n    width: 100%;\n  }\n\n  .placeholder {\n    height: 100%;\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: var(--bg);\n    color: var(--link);\n  }\n\n  .hider {\n    top: 0;\n  }\n\n  .label {\n    text-align: center;\n    flex: 1 1 0;\n    line-height: 1.2;\n    white-space: normal;\n    word-wrap: normal;\n  }\n\n  .hidden {\n    display: none;\n    visibility: 'hidden';\n  }\n}\n</style>\n","import RuffleService from '../../services/ruffle_service/ruffle_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faStop,\n  faExclamationTriangle\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faStop,\n  faExclamationTriangle\n)\n\nconst Flash = {\n  props: ['src'],\n  data () {\n    return {\n      player: false, // can be true, \"hidden\", false. hidden = element exists\n      loaded: false,\n      ruffleInstance: null\n    }\n  },\n  methods: {\n    openPlayer () {\n      if (this.player) return // prevent double-loading, or re-loading on failure\n      this.player = 'hidden'\n      RuffleService.getRuffle().then((ruffle) => {\n        const player = ruffle.newest().createPlayer()\n        player.config = {\n          letterbox: 'on'\n        }\n        const container = this.$refs.container\n        container.appendChild(player)\n        player.style.width = '100%'\n        player.style.height = '100%'\n        player.load(this.src).then(() => {\n          this.player = true\n        }).catch((e) => {\n          console.error('Error loading ruffle', e)\n          this.player = 'error'\n        })\n        this.ruffleInstance = player\n        this.$emit('playerOpened')\n      })\n    },\n    closePlayer () {\n      this.ruffleInstance && this.ruffleInstance.remove()\n      this.player = false\n      this.$emit('playerClosed')\n    }\n  }\n}\n\nexport default Flash\n","import { render } from \"./flash.vue?vue&type=template&id=0dec384a\"\nimport script from \"./flash.js?vue&type=script&lang=js\"\nexport * from \"./flash.js?vue&type=script&lang=js\"\n\nimport \"./flash.vue?vue&type=style&index=0&id=0dec384a&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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', 'user', '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_cancel')\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    disabled () {\n      return this.inProgress || this.user.deactivated\n    }\n  },\n  methods: {\n    onClick () {\n      this.relationship.following || this.relationship.requested ? 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","import { render } from \"./follow_button.vue?vue&type=template&id=2c877477\"\nimport script from \"./follow_button.js?vue&type=script&lang=js\"\nexport * from \"./follow_button.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <button\n    class=\"btn button-default follow-button\"\n    :class=\"{ toggled: isPressed }\"\n    :disabled=\"disabled\"\n    :title=\"title\"\n    @click=\"onClick\"\n  >\n    {{ label }}\n  </button>\n</template>\n\n<script src=\"./follow_button.js\"></script>\n","<template>\n  <div\n    ref=\"galleryContainer\"\n    class=\"Gallery\"\n    :class=\"{ '-long': tooManyAttachments && hidingLong }\"\n  >\n    <div class=\"gallery-rows\">\n      <div\n        v-for=\"(row, rowIndex) in rows\"\n        :key=\"rowIndex\"\n        class=\"gallery-row\"\n        :style=\"rowStyle(row)\"\n        :class=\"{ '-audio': row.audio, '-minimal': row.minimal, '-grid': grid }\"\n      >\n        <div\n          class=\"gallery-row-inner\"\n          :class=\"{ '-grid': grid }\"\n        >\n          <Attachment\n            v-for=\"(attachment, attachmentIndex) in row.items\"\n            :key=\"attachment.id\"\n            class=\"gallery-item\"\n            :nsfw=\"nsfw\"\n            :attachment=\"attachment\"\n            :size=\"size\"\n            :editable=\"editable\"\n            :remove=\"removeAttachment\"\n            :shift-up=\"!(attachmentIndex === 0 && rowIndex === 0) && shiftUpAttachment\"\n            :shift-dn=\"!(attachmentIndex === row.items.length - 1 && rowIndex === rows.length - 1) && shiftDnAttachment\"\n            :edit=\"editAttachment\"\n            :description=\"descriptions && descriptions[attachment.id]\"\n            :hide-description=\"size === 'small' || tooManyAttachments && hidingLong\"\n            :style=\"itemStyle(attachment.id, row.items)\"\n            @setMedia=\"onMedia\"\n            @naturalSizeLoad=\"onNaturalSizeLoad\"\n          />\n        </div>\n      </div>\n    </div>\n    <div\n      v-if=\"tooManyAttachments\"\n      class=\"many-attachments\"\n    >\n      <div class=\"many-attachments-text\">\n        {{ $t(\"status.many_attachments\", { number: attachments.length }) }}\n      </div>\n      <div class=\"many-attachments-buttons\">\n        <span\n          v-if=\"!hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(true)\"\n          >\n            {{ $t(\"status.collapse_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"toggleHidingLong(false)\"\n          >\n            {{ $t(\"status.show_all_attachments\") }}\n          </button>\n        </span>\n        <span\n          v-if=\"hidingLong\"\n          class=\"many-attachments-button\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openGallery\"\n          >\n            {{ $t(\"status.open_gallery\") }}\n          </button>\n        </span>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src='./gallery.js'></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Gallery {\n  .gallery-rows {\n    display: flex;\n    flex-direction: column;\n  }\n\n  .gallery-row {\n    position: relative;\n    height: 0;\n    width: 100%;\n    flex-grow: 1;\n\n    &:not(:first-child) {\n      margin-top: 0.5em;\n    }\n  }\n\n  &.-long {\n    .gallery-rows {\n      max-height: 25em;\n      overflow: hidden;\n      mask:\n        linear-gradient(to top, white, transparent) bottom/100% 70px no-repeat,\n        linear-gradient(to top, white, white);\n\n      /* Autoprefixed seem to ignore this one, and also syntax is different */\n      -webkit-mask-composite: xor;\n      mask-composite: exclude;\n    }\n  }\n\n  .many-attachments-text {\n    text-align: center;\n    line-height: 2;\n  }\n\n  .many-attachments-buttons {\n    display: flex;\n  }\n\n  .many-attachments-button {\n    display: flex;\n    flex: 1;\n    justify-content: center;\n    line-height: 2;\n\n    button {\n      padding: 0 2em;\n    }\n  }\n\n  .gallery-row {\n    &.-grid,\n    &.-minimal {\n      height: auto;\n      .gallery-row-inner {\n        position: relative;\n      }\n    }\n  }\n\n  .gallery-row-inner {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    display: flex;\n    flex-direction: row;\n    flex-wrap: nowrap;\n    align-content: stretch;\n\n    &.-grid {\n      width: 100%;\n      height: auto;\n      position: relative;\n      display: grid;\n      grid-column-gap: 0.5em;\n      grid-row-gap: 0.5em;\n      grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));\n\n      .gallery-item {\n        margin: 0;\n        height: 200px;\n      }\n    }\n  }\n\n  .gallery-item {\n    margin: 0 0.5em 0 0;\n    flex-grow: 1;\n    height: 100%;\n    box-sizing: border-box;\n    // to make failed images a bit more noticeable on chromium\n    min-width: 2em;\n    &:last-child {\n      margin: 0;\n    }\n  }\n}\n</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n  props: [\n    'attachments',\n    'limitRows',\n    'descriptions',\n    'limit',\n    'nsfw',\n    'setMedia',\n    'size',\n    'editable',\n    'removeAttachment',\n    'shiftUpAttachment',\n    'shiftDnAttachment',\n    'editAttachment',\n    'grid'\n  ],\n  data () {\n    return {\n      sizes: {},\n      hidingLong: true\n    }\n  },\n  components: { Attachment },\n  computed: {\n    rows () {\n      if (!this.attachments) {\n        return []\n      }\n      const attachments = this.limit > 0\n        ? this.attachments.slice(0, this.limit)\n        : this.attachments\n      if (this.size === 'hide') {\n        return attachments.map(item => ({ minimal: true, items: [item] }))\n      }\n      const rows = this.grid\n        ? [{ grid: true, items: attachments }]\n        : attachments.reduce((acc, attachment, i) => {\n          if (attachment.mimetype.includes('audio')) {\n            return [...acc, { audio: true, items: [attachment] }, { items: [] }]\n          }\n          if (!(\n            attachment.mimetype.includes('image') ||\n              attachment.mimetype.includes('video') ||\n              attachment.mimetype.includes('flash')\n          )) {\n            return [...acc, { minimal: true, items: [attachment] }, { items: [] }]\n          }\n          const maxPerRow = 3\n          const attachmentsRemaining = this.attachments.length - i + 1\n          const currentRow = acc[acc.length - 1].items\n          currentRow.push(attachment)\n          if (currentRow.length >= maxPerRow && attachmentsRemaining > maxPerRow) {\n            return [...acc, { items: [] }]\n          } else {\n            return acc\n          }\n        }, [{ items: [] }]).filter(_ => _.items.length > 0)\n      return rows\n    },\n    attachmentsDimensionalScore () {\n      return this.rows.reduce((acc, row) => {\n        let size = 0\n        if (row.minimal) {\n          size += 1 / 8\n        } else if (row.audio) {\n          size += 1 / 4\n        } else {\n          size += 1 / (row.items.length + 0.6)\n        }\n        return acc + size\n      }, 0)\n    },\n    tooManyAttachments () {\n      if (this.editable || this.size === 'small') {\n        return false\n      } else if (this.size === 'hide') {\n        return this.attachments.length > 8\n      } else {\n        return this.attachmentsDimensionalScore > 1\n      }\n    }\n  },\n  methods: {\n    onNaturalSizeLoad ({ id, width, height }) {\n      set(this.sizes, id, { width, height })\n    },\n    rowStyle (row) {\n      if (row.audio) {\n        return { 'padding-bottom': '25%' } // fixed reduced height for audio\n      } else if (!row.minimal && !row.grid) {\n        return { 'padding-bottom': `${(100 / (row.items.length + 0.6))}%` }\n      }\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    toggleHidingLong (event) {\n      this.hidingLong = event\n    },\n    openGallery () {\n      this.$store.dispatch('setMedia', this.attachments)\n      this.$store.dispatch('setCurrentMedia', this.attachments[0])\n    },\n    onMedia () {\n      this.$store.dispatch('setMedia', this.attachments)\n    }\n  }\n}\n\nexport default Gallery\n","import { render } from \"./gallery.vue?vue&type=template&id=2bf4ca36\"\nimport script from \"./gallery.js?vue&type=script&lang=js\"\nexport * from \"./gallery.js?vue&type=script&lang=js\"\n\nimport \"./gallery.vue?vue&type=style&index=0&id=2bf4ca36&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <label for=\"interface-language-switcher\">\n      {{ promptText }}\n    </label>\n    {{ ' ' }}\n    <Select\n      id=\"interface-language-switcher\"\n      v-model=\"controlledLanguage\"\n    >\n      <option\n        v-for=\"lang in languages\"\n        :key=\"lang.code\"\n        :value=\"lang.code\"\n      >\n        {{ lang.name }}\n      </option>\n    </Select>\n  </div>\n</template>\n\n<script>\nimport localeService from '../../services/locale/locale.service.js'\nimport Select from '../select/select.vue'\n\nexport default {\n  components: {\n    // eslint-disable-next-line vue/no-reserved-component-names\n    Select\n  },\n  props: {\n    promptText: {\n      type: String,\n      required: true\n    },\n    language: {\n      type: String,\n      required: true\n    },\n    setLanguage: {\n      type: Function,\n      required: true\n    }\n  },\n  computed: {\n    languages () {\n      return localeService.languages\n    },\n\n    controlledLanguage: {\n      get: function () { return this.language },\n      set: function (val) {\n        this.setLanguage(val)\n      }\n    }\n  },\n\n  methods: {\n    getLanguageName (code) {\n      return localeService.getLanguageName(code)\n    }\n  }\n}\n</script>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=b439ea12\"\nimport script from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\nexport * from \"./interface_language_switcher.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div>\n    <a\n      class=\"link-preview-card\"\n      :href=\"card.url\"\n      target=\"_blank\"\n      rel=\"noopener\"\n    >\n      <div\n        v-if=\"useImage && imageLoaded\"\n        class=\"card-image\"\n      >\n        <img :src=\"card.image\">\n      </div>\n      <div class=\"card-content\">\n        <span class=\"card-host faint\">\n          <span\n            v-if=\"censored\"\n            class=\"nsfw-alert alert warning\"\n          >{{ $t('status.nsfw') }}</span>\n          {{ card.provider_name }}\n        </span>\n        <h4 class=\"card-title\">{{ card.title }}</h4>\n        <p\n          v-if=\"useDescription\"\n          class=\"card-description\"\n        >{{ card.description }}</p>\n      </div>\n    </a>\n  </div>\n</template>\n\n<script src=\"./link-preview.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.link-preview-card {\n  display: flex;\n  flex-direction: row;\n  cursor: pointer;\n  overflow: hidden;\n  margin-top: 0.5em;\n\n  .card-image {\n    flex-shrink: 0;\n    width: 120px;\n    max-width: 25%;\n    img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      border-radius: $fallback--attachmentRadius;\n      border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n    }\n  }\n\n  .card-content {\n    max-height: 100%;\n    margin: 0.5em;\n    display: flex;\n    flex-direction: column;\n  }\n\n  .card-host {\n    font-size: 0.85em;\n  }\n\n  .card-description {\n    margin: 0.5em 0 0 0;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    word-break: break-word;\n    line-height: 1.2em;\n    // cap description at 3 lines, the 1px is to clean up some stray pixels\n    // TODO: fancier fade-out at the bottom to show off that it's too long?\n    max-height: calc(1.2em * 3 - 1px);\n  }\n\n  .nsfw-alert {\n    margin: 2em 0;\n  }\n\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--attachmentRadius;\n  border-radius: var(--attachmentRadius, $fallback--attachmentRadius);\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nconst LinkPreview = {\n  name: 'LinkPreview',\n  props: [\n    'card',\n    'size',\n    'nsfw'\n  ],\n  data () {\n    return {\n      imageLoaded: false\n    }\n  },\n  computed: {\n    useImage () {\n      // Currently BE shoudn't give cards if tagged NSFW, this is a bit paranoid\n      // as it makes sure to hide the image if somehow NSFW tagged preview can\n      // exist.\n      return this.card.image && !this.censored && this.size !== 'hide'\n    },\n    censored () {\n      return this.nsfw && this.hideNsfwConfig\n    },\n    useDescription () {\n      return this.card.description && /\\S/.test(this.card.description)\n    },\n    hideNsfwConfig () {\n      return this.mergedConfig.hideNsfw\n    },\n    ...mapGetters([\n      'mergedConfig'\n    ])\n  },\n  created () {\n    if (this.useImage) {\n      const newImg = new Image()\n      newImg.onload = () => {\n        this.imageLoaded = true\n      }\n      newImg.src = this.card.image\n    }\n  }\n}\n\nexport default LinkPreview\n","import { render } from \"./link-preview.vue?vue&type=template&id=03087feb\"\nimport script from \"./link-preview.js?vue&type=script&lang=js\"\nexport * from \"./link-preview.js?vue&type=script&lang=js\"\n\nimport \"./link-preview.vue?vue&type=style&index=0&id=03087feb&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<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","import { render } from \"./list.vue?vue&type=template&id=c1790f52\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport \"./list.vue?vue&type=style&index=0&id=c1790f52&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"MentionLink\"\n  >\n    <!-- eslint-disable vue/no-v-html -->\n    <a\n      v-if=\"!user\"\n      :href=\"url\"\n      class=\"original\"\n      target=\"_blank\"\n      v-html=\"content\"\n    /><!-- eslint-enable vue/no-v-html -->\n    <UserPopover\n      v-else\n      :user-id=\"user.id\"\n      :disabled=\"!shouldShowTooltip\"\n    >\n      <span\n        v-if=\"user\"\n        class=\"new\"\n        :style=\"style\"\n        :class=\"classnames\"\n      >\n        <a\n          class=\"short button-unstyled\"\n          :class=\"{ '-with-tooltip': shouldShowTooltip }\"\n          :href=\"url\"\n          @click.prevent=\"onClick\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          <UserAvatar\n            v-if=\"shouldShowAvatar\"\n            class=\"mention-avatar\"\n            :user=\"user\"\n          /><span\n            class=\"shortName\"\n          ><FAIcon\n            v-if=\"useAtIcon\"\n            size=\"sm\"\n            icon=\"at\"\n            class=\"at\"\n          />{{ !useAtIcon ? '@' : '' }}<span\n            class=\"userName\"\n            v-html=\"userName\"\n          /><span\n            v-if=\"shouldShowFullUserName\"\n            class=\"serverName\"\n            :class=\"{ '-faded': shouldFadeDomain }\"\n            v-html=\"'@' + serverName\"\n          /><UnicodeDomainIndicator\n            v-if=\"shouldShowFullUserName\"\n            :user=\"user\"\n          />\n          </span>\n          <span\n            v-if=\"isYou && shouldShowYous\"\n            :class=\"{ '-you': shouldBoldenYou }\"\n          > {{ ' ' + $t('status.you') }}</span>\n          <!-- eslint-enable vue/no-v-html -->\n        </a><span\n          ref=\"full\"\n          class=\"full\"\n        >\n          <!-- eslint-disable vue/no-v-html -->\n          @<span v-html=\"userName\" /><span v-html=\"'@' + serverName\" />\n          <!-- eslint-enable vue/no-v-html -->\n        </span>\n      </span>\n    </UserPopover>\n  </span>\n</template>\n\n<script src=\"./mention_link.js\" />\n\n<style lang=\"scss\" src=\"./mention_link.scss\" />\n","import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters, mapState } from 'vuex'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport { defineAsyncComponent } from 'vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faAt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faAt\n)\n\nconst MentionLink = {\n  name: 'MentionLink',\n  components: {\n    UserAvatar,\n    UnicodeDomainIndicator,\n    UserPopover: defineAsyncComponent(() => import('../user_popover/user_popover.vue'))\n  },\n  props: {\n    url: {\n      required: true,\n      type: String\n    },\n    content: {\n      required: true,\n      type: String\n    },\n    userId: {\n      required: false,\n      type: String\n    },\n    userScreenName: {\n      required: false,\n      type: String\n    }\n  },\n  data () {\n    return {\n      hasSelection: false\n    }\n  },\n  methods: {\n    onClick () {\n      if (this.shouldShowTooltip) return\n      const link = generateProfileLink(\n        this.userId || this.user.id,\n        this.userScreenName || this.user.screen_name\n      )\n      this.$router.push(link)\n    },\n    handleSelection () {\n      this.hasSelection = document.getSelection().containsNode(this.$refs.full, true)\n    }\n  },\n  mounted () {\n    document.addEventListener('selectionchange', this.handleSelection)\n  },\n  unmounted () {\n    document.removeEventListener('selectionchange', this.handleSelection)\n  },\n  computed: {\n    user () {\n      return this.url && this.$store && this.$store.getters.findUserByUrl(this.url)\n    },\n    isYou () {\n      // FIXME why user !== currentUser???\n      return this.user && this.user.id === this.currentUser.id\n    },\n    userName () {\n      return this.user && this.userNameFullUi.split('@')[0]\n    },\n    serverName () {\n      // XXX assumed that domain does not contain @\n      return this.user && (this.userNameFullUi.split('@')[1] || this.$store.getters.instanceDomain)\n    },\n    userNameFull () {\n      return this.user && this.user.screen_name\n    },\n    userNameFullUi () {\n      return this.user && this.user.screen_name_ui\n    },\n    highlight () {\n      return this.user && this.mergedConfig.highlight[this.user.screen_name]\n    },\n    highlightType () {\n      return this.highlight && ('-' + this.highlight.type)\n    },\n    highlightClass () {\n      if (this.highlight) return highlightClass(this.user)\n    },\n    style () {\n      if (this.highlight) {\n        const {\n          backgroundColor,\n          backgroundPosition,\n          backgroundImage,\n          ...rest\n        } = highlightStyle(this.highlight)\n        return rest\n      }\n    },\n    classnames () {\n      return [\n        {\n          '-you': this.isYou && this.shouldBoldenYou,\n          '-highlighted': this.highlight,\n          '-has-selection': this.hasSelection\n        },\n        this.highlightType\n      ]\n    },\n    useAtIcon () {\n      return this.mergedConfig.useAtIcon\n    },\n    isRemote () {\n      return this.userName !== this.userNameFull\n    },\n    shouldShowFullUserName () {\n      const conf = this.mergedConfig.mentionLinkDisplay\n      if (conf === 'short') {\n        return false\n      } else if (conf === 'full') {\n        return true\n      } else { // full_for_remote\n        return this.isRemote\n      }\n    },\n    shouldShowTooltip () {\n      return this.mergedConfig.mentionLinkShowTooltip\n    },\n    shouldShowAvatar () {\n      return this.mergedConfig.mentionLinkShowAvatar\n    },\n    shouldShowYous () {\n      return this.mergedConfig.mentionLinkShowYous\n    },\n    shouldBoldenYou () {\n      return this.mergedConfig.mentionLinkBoldenYou\n    },\n    shouldFadeDomain () {\n      return this.mergedConfig.mentionLinkFadeDomain\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default MentionLink\n","import { render } from \"./mention_link.vue?vue&type=template&id=11ab9a6c\"\nimport script from \"./mention_link.js?vue&type=script&lang=js\"\nexport * from \"./mention_link.js?vue&type=script&lang=js\"\n\nimport \"./mention_link.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span class=\"MentionsLine\">\n    <MentionLink\n      v-for=\"mention in mentionsComputed\"\n      :key=\"mention.index\"\n      class=\"mention-link\"\n      :content=\"mention.content\"\n      :url=\"mention.url\"\n    /><span\n      v-if=\"manyMentions\"\n      class=\"extraMentions\"\n    >\n      <span\n        v-if=\"expanded\"\n        class=\"fullExtraMentions\"\n      >{{ ' ' }}<MentionLink\n        v-for=\"mention in extraMentions\"\n        :key=\"mention.index\"\n        class=\"mention-link\"\n        :content=\"mention.content\"\n        :url=\"mention.url\"\n      />\n      </span><button\n        v-if=\"!expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('status.plus_more', { number: extraMentions.length }) }}\n      </button><button\n        v-if=\"expanded\"\n        class=\"button-unstyled showMoreLess\"\n        @click=\"toggleShowMore\"\n      >\n        {{ $t('general.show_less') }}\n      </button>\n    </span>\n  </span>\n</template>\n<script src=\"./mentions_line.js\"></script>\n<style lang=\"scss\" src=\"./mentions_line.scss\" />\n","import MentionLink from 'src/components/mention_link/mention_link.vue'\nimport { mapGetters } from 'vuex'\n\nexport const MENTIONS_LIMIT = 5\n\nconst MentionsLine = {\n  name: 'MentionsLine',\n  props: {\n    mentions: {\n      required: true,\n      type: Array\n    }\n  },\n  data: () => ({ expanded: false }),\n  components: {\n    MentionLink\n  },\n  computed: {\n    mentionsComputed () {\n      return this.mentions.slice(0, MENTIONS_LIMIT)\n    },\n    extraMentions () {\n      return this.mentions.slice(MENTIONS_LIMIT)\n    },\n    manyMentions () {\n      return this.extraMentions.length > 0\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  methods: {\n    toggleShowMore () {\n      this.expanded = !this.expanded\n    }\n  }\n}\n\nexport default MentionsLine\n","import { render } from \"./mentions_line.vue?vue&type=template&id=0e41a1da\"\nimport script from \"./mentions_line.js?vue&type=script&lang=js\"\nexport * from \"./mentions_line.js?vue&type=script&lang=js\"\n\nimport \"./mentions_line.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-show=\"isOpen\"\n    v-body-scroll-lock=\"isOpen && !noBackground\"\n    class=\"modal-view\"\n    :class=\"classes\"\n    @click.self=\"$emit('backdropClicked')\"\n  >\n    <slot />\n  </div>\n</template>\n\n<script>\nexport default {\n  provide: {\n    popoversZLayer: 'modals'\n  },\n  props: {\n    isOpen: {\n      type: Boolean,\n      default: true\n    },\n    noBackground: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    classes () {\n      return {\n        'modal-background': !this.noBackground,\n        open: this.isOpen\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n.modal-view {\n  z-index: var(--ZI_modals);\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  overflow: auto;\n  pointer-events: none;\n  animation-duration: 0.2s;\n  animation-name: modal-background-fadein;\n  opacity: 0;\n\n  > * {\n    pointer-events: initial;\n  }\n\n  &.modal-background {\n    pointer-events: initial;\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n\n  &.open {\n    opacity: 1;\n  }\n}\n\n@keyframes modal-background-fadein {\n  from {\n    background-color: rgba(0, 0, 0, 0);\n  }\n  to {\n    background-color: rgba(0, 0, 0, 0.5);\n  }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=b3e803fa\"\nimport script from \"./modal.vue?vue&type=script&lang=js\"\nexport * from \"./modal.vue?vue&type=script&lang=js\"\n\nimport \"./modal.vue?vue&type=style&index=0&id=b3e803fa&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <teleport\n    :disabled=\"minimalMode || disableTeleport\"\n    :to=\"teleportTarget\"\n  >\n    <component\n      :is=\"noHeading ? 'div' : 'aside'\"\n      ref=\"root\"\n      :class=\"{ minimal: minimalMode }\"\n      class=\"Notifications\"\n    >\n      <div :class=\"mainClass\">\n        <div\n          v-if=\"!noHeading\"\n          class=\"notifications-heading panel-heading -sticky\"\n        >\n          <div class=\"title\">\n            {{ $t('notifications.notifications') }}\n            <span\n              v-if=\"unseenCount\"\n              class=\"badge badge-notification unseen-count\"\n            >{{ unseenCount }}</span>\n          </div>\n          <div\n            v-if=\"showScrollTop\"\n            class=\"rightside-button\"\n          >\n            <button\n              class=\"button-unstyled scroll-to-top-button\"\n              type=\"button\"\n              :title=\"$t('general.scroll_to_top')\"\n              @click=\"scrollToTop\"\n            >\n              <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n                <FAIcon icon=\"arrow-up\" />\n                <FAIcon\n                  icon=\"minus\"\n                  transform=\"up-7\"\n                />\n              </FALayers>\n            </button>\n          </div>\n          <button\n            v-if=\"unseenCount\"\n            class=\"button-default read-button\"\n            type=\"button\"\n            @click.prevent=\"markAsSeen\"\n          >\n            {{ $t('notifications.read') }}\n          </button>\n          <NotificationFilters class=\"rightside-button\" />\n        </div>\n        <div\n          class=\"panel-body\"\n          role=\"feed\"\n        >\n          <div\n            v-for=\"notification in notificationsToDisplay\"\n            :key=\"notification.id\"\n            role=\"listitem\"\n            class=\"notification\"\n            :class=\"{unseen: !minimalMode && !notification.seen}\"\n          >\n            <div class=\"notification-overlay\" />\n            <notification :notification=\"notification\" />\n          </div>\n        </div>\n        <div class=\"panel-footer\">\n          <div\n            v-if=\"bottomedOut\"\n            class=\"new-status-notification text-center faint\"\n          >\n            {{ $t('notifications.no_more_notifications') }}\n          </div>\n          <button\n            v-else-if=\"!loading\"\n            class=\"button-unstyled -link -fullwidth\"\n            @click.prevent=\"fetchOlderNotifications()\"\n          >\n            <div class=\"new-status-notification text-center\">\n              {{ minimalMode ? $t('interactions.load_older') : $t('notifications.load_older') }}\n            </div>\n          </button>\n          <div\n            v-else\n            class=\"new-status-notification text-center\"\n          >\n            <FAIcon\n              icon=\"circle-notch\"\n              spin\n              size=\"lg\"\n            />\n          </div>\n        </div>\n      </div>\n    </component>\n  </teleport>\n</template>\n\n<script src=\"./notifications.js\"></script>\n<style lang=\"scss\" src=\"./notifications.scss\"></style>\n","<template>\n  <article\n    v-if=\"notification.type === 'mention'\"\n  >\n    <Status\n      class=\"Notification\"\n      :compact=\"true\"\n      :statusoid=\"notification.status\"\n    />\n  </article>\n  <article v-else>\n    <div\n      v-if=\"needMute && !unmuted\"\n      class=\"Notification container -muted\"\n    >\n      <small>\n        <user-link\n          :user=\"notification.from_profile\"\n          :at=\"false\"\n        />\n      </small>\n      <button\n        class=\"button-unstyled unmute\"\n        @click.prevent=\"toggleMute\"\n      >\n        <FAIcon\n          class=\"fa-scale-110 fa-old-padding\"\n          icon=\"eye-slash\"\n        />\n      </button>\n    </div>\n    <div\n      v-else\n      class=\"Notification non-mention\"\n      :class=\"[userClass, { highlighted: userStyle }, '-type--' + notification.type]\"\n      :style=\"[ userStyle ]\"\n    >\n      <a\n        class=\"avatar-container\"\n        :href=\"$router.resolve(userProfileLink).href\"\n        @click.prevent\n      >\n        <UserPopover\n          :user-id=\"notification.from_profile.id\"\n          :overlay-centers=\"true\"\n        >\n          <UserAvatar\n            class=\"post-avatar\"\n            :bot=\"botIndicator\"\n            :compact=\"true\"\n            :better-shadow=\"betterShadow\"\n            :user=\"notification.from_profile\"\n          />\n        </UserPopover>\n      </a>\n      <div class=\"notification-right\">\n        <span class=\"notification-details\">\n          <div class=\"name-and-action\">\n            <!-- eslint-disable vue/no-v-html -->\n            <bdi v-if=\"!!notification.from_profile.name_html\">\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+notification.from_profile.screen_name_ui\"\n                :html=\"notification.from_profile.name_html\"\n                :emoji=\"notification.from_profile.emoji\"\n              />\n            </bdi>\n            <!-- eslint-enable vue/no-v-html -->\n            <span\n              v-else\n              class=\"username\"\n              :title=\"'@'+notification.from_profile.screen_name_ui\"\n            >\n              {{ notification.from_profile.name }}\n            </span>\n            {{ ' ' }}\n            <span v-if=\"notification.type === 'like'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"star\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.favorited_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'repeat'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"retweet\"\n                :title=\"$t('tool_tip.repeat')\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.repeated_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user-plus\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.followed_you') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'follow_request'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"user\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.follow_request') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'move'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"suitcase-rolling\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.migrated_to') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'pleroma:emoji_reaction'\">\n              <small>\n                <i18n-t\n                  scope=\"global\"\n                  keypath=\"notifications.reacted_with\"\n                >\n                  <span class=\"emoji-reaction-emoji\">{{ notification.emoji }}</span>\n                </i18n-t>\n              </small>\n            </span>\n            <span v-if=\"notification.type === 'pleroma:report'\">\n              <small>{{ $t('notifications.submitted_report') }}</small>\n            </span>\n            <span v-if=\"notification.type === 'poll'\">\n              <FAIcon\n                class=\"type-icon\"\n                icon=\"poll-h\"\n              />\n              {{ ' ' }}\n              <small>{{ $t('notifications.poll_ended') }}</small>\n            </span>\n          </div>\n          <div\n            v-if=\"isStatusNotification\"\n            class=\"timeago\"\n          >\n            <router-link\n              v-if=\"notification.status\"\n              :to=\"{ name: 'conversation', params: { id: notification.status.id } }\"\n              class=\"timeago-link faint-link\"\n            >\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </router-link>\n            <button\n              class=\"button-unstyled expand-icon\"\n              @click.prevent=\"toggleStatusExpanded\"\n              :title=\"$t('tool_tip.toggle_expand')\"\n              :aria-expanded=\"statusExpanded\"\n            >\n              <FAIcon\n                class=\"fa-scale-110\"\n                fixed-width\n                :icon=\"statusExpanded ? 'compress-alt' : 'expand-alt'\"\n              />\n            </button>\n          </div>\n          <div\n            v-else\n            class=\"timeago\"\n          >\n            <span class=\"faint\">\n              <Timeago\n                :time=\"notification.created_at\"\n                :auto-update=\"240\"\n              />\n            </span>\n          </div>\n          <button\n            v-if=\"needMute\"\n            class=\"button-unstyled\"\n            :title=\"$t('tool_tip.toggle_mute')\"\n            :aria-expanded=\"!unmuted\"\n            @click.prevent=\"toggleMute\"\n          >\n            <FAIcon\n              class=\"fa-scale-110 fa-old-padding\"\n              icon=\"eye-slash\"\n            />\n          </button>\n        </span>\n        <div\n          v-if=\"notification.type === 'follow' || notification.type === 'follow_request'\"\n          class=\"follow-text\"\n        >\n          <user-link\n            class=\"follow-name\"\n            :user=\"notification.from_profile\"\n          />\n          <div\n            v-if=\"notification.type === 'follow_request'\"\n            style=\"white-space: nowrap;\"\n          >\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.accept_follow_request')\"\n              @click=\"approveUser()\"\n            >\n              <FAIcon\n                icon=\"check\"\n                class=\"fa-scale-110 fa-old-padding follow-request-accept\"\n              />\n            </button>\n            <button\n              class=\"button-unstyled\"\n              :title=\"$t('tool_tip.reject_follow_request')\"\n              @click=\"denyUser()\"\n            >\n              <FAIcon\n                icon=\"times\"\n                class=\"fa-scale-110 fa-old-padding follow-request-reject\"\n              />\n            </button>\n          </div>\n        </div>\n        <div\n          v-else-if=\"notification.type === 'move'\"\n          class=\"move-text\"\n        >\n          <user-link\n            :user=\"notification.target\"\n          />\n        </div>\n        <Report\n          v-else-if=\"notification.type === 'pleroma:report'\"\n          :report-id=\"notification.report.id\"\n        />\n        <template v-else>\n          <StatusContent\n            :class=\"{ faint: !statusExpanded }\"\n            :compact=\"!statusExpanded\"\n            :status=\"notification.action\"\n          />\n        </template>\n      </div>\n    </div>\n  </article>\n</template>\n\n<script src=\"./notification.js\"></script>\n<style src=\"./notification.scss\" lang=\"scss\"></style>\n","<template>\n  <div class=\"Report\">\n    <div class=\"reported-user\">\n      <span>{{ $t('report.reported_user') }}</span>\n      <router-link :to=\"generateUserProfileLink(report.acct)\">\n        @{{ report.acct.screen_name }}\n      </router-link>\n    </div>\n    <div class=\"reporter\">\n      <span>{{ $t('report.reporter') }}</span>\n      <router-link :to=\"generateUserProfileLink(report.actor)\">\n        @{{ report.actor.screen_name }}\n      </router-link>\n    </div>\n    <div class=\"report-state\">\n      <span>{{ $t('report.state') }}</span>\n      <Select\n        :id=\"report-state\"\n        v-model=\"state\"\n        class=\"form-control\"\n      >\n        <option\n          v-for=\"state in ['open', 'closed', 'resolved']\"\n          :key=\"state\"\n          :value=\"state\"\n        >\n          {{ $t('report.state_' + state) }}\n        </option>\n      </Select>\n    </div>\n    <RichContent\n      class=\"report-content\"\n      :html=\"report.content\"\n      :emoji=\"[]\"\n    />\n    <div v-if=\"report.statuses.length\">\n      <small>{{ $t('report.reported_statuses') }}</small>\n      <router-link\n        v-for=\"status in report.statuses\"\n        :key=\"status.id\"\n        :to=\"{ name: 'conversation', params: { id: status.id } }\"\n        class=\"reported-status\"\n      >\n        <div class=\"reported-status-heading\">\n          <span class=\"reported-status-name\">{{ status.user.name }}</span>\n          <Timeago\n            :time=\"status.created_at\"\n            :auto-update=\"240\"\n            class=\"faint\"\n          />\n        </div>\n        <status-content :status=\"status\" />\n      </router-link>\n    </div>\n    <div v-if=\"report.notes.length\">\n      <small>{{ $t('report.notes') }}</small>\n      <div\n        v-for=\"note in report.notes\"\n        :key=\"note.id\"\n        class=\"note\"\n      >\n        <span>{{ note.content }}</span>\n        <Timeago\n          :time=\"note.created_at\"\n          :auto-update=\"240\"\n          class=\"faint\"\n        />\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./report.js\"></script>\n<style src=\"./report.scss\" lang=\"scss\"></style>\n","import Select from '../select/select.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst Report = {\n  props: [\n    'reportId'\n  ],\n  components: {\n    Select,\n    StatusContent,\n    Timeago\n  },\n  computed: {\n    report () {\n      return this.$store.state.reports.reports[this.reportId] || {}\n    },\n    state: {\n      get: function () { return this.report.state },\n      set: function (val) { this.setReportState(val) }\n    }\n  },\n  methods: {\n    generateUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    setReportState (state) {\n      return this.$store.dispatch('setReportState', { id: this.report.id, state })\n    }\n  }\n}\n\nexport default Report\n","import { render } from \"./report.vue?vue&type=template&id=86a2fdce\"\nimport script from \"./report.js?vue&type=script&lang=js\"\nexport * from \"./report.js?vue&type=script&lang=js\"\n\nimport \"./report.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StatusContent from '../status_content/status_content.vue'\nimport { mapState } from 'vuex'\nimport Status from '../status/status.vue'\nimport UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserCard from '../user_card/user_card.vue'\nimport Timeago from '../timeago/timeago.vue'\nimport Report from '../report/report.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport { isStatusNotification } from '../../services/notification_utils/notification_utils.js'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faEyeSlash,\n  faUser,\n  faSuitcaseRolling,\n  faExpandAlt,\n  faCompressAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCheck,\n  faTimes,\n  faStar,\n  faRetweet,\n  faUserPlus,\n  faUser,\n  faEyeSlash,\n  faSuitcaseRolling,\n  faExpandAlt,\n  faCompressAlt\n)\n\nconst Notification = {\n  data () {\n    return {\n      statusExpanded: false,\n      betterShadow: this.$store.state.interface.browserSupport.cssFilter,\n      unmuted: false\n    }\n  },\n  props: ['notification'],\n  components: {\n    StatusContent,\n    UserAvatar,\n    UserCard,\n    Timeago,\n    Status,\n    Report,\n    RichContent,\n    UserPopover,\n    UserLink\n  },\n  methods: {\n    toggleStatusExpanded () {\n      this.statusExpanded = !this.statusExpanded\n    },\n    generateUserProfileLink (user) {\n      return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)\n    },\n    getUser (notification) {\n      return this.$store.state.users.usersObject[notification.from_profile.id]\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    approveUser () {\n      this.$store.state.api.backendInteractor.approveUser({ id: this.user.id })\n      this.$store.dispatch('removeFollowRequest', this.user)\n      this.$store.dispatch('markSingleNotificationAsSeen', { id: this.notification.id })\n      this.$store.dispatch('updateNotification', {\n        id: this.notification.id,\n        updater: notification => {\n          notification.type = 'follow'\n        }\n      })\n    },\n    denyUser () {\n      this.$store.state.api.backendInteractor.denyUser({ id: this.user.id })\n        .then(() => {\n          this.$store.dispatch('dismissNotificationLocal', { id: this.notification.id })\n          this.$store.dispatch('removeFollowRequest', this.user)\n        })\n    }\n  },\n  computed: {\n    userClass () {\n      return highlightClass(this.notification.from_profile)\n    },\n    userStyle () {\n      const highlight = this.$store.getters.mergedConfig.highlight\n      const user = this.notification.from_profile\n      return highlightStyle(highlight[user.screen_name])\n    },\n    user () {\n      return this.$store.getters.findUser(this.notification.from_profile.id)\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.user)\n    },\n    targetUser () {\n      return this.$store.getters.findUser(this.notification.target.id)\n    },\n    targetUserProfileLink () {\n      return this.generateUserProfileLink(this.targetUser)\n    },\n    needMute () {\n      return this.$store.getters.relationship(this.user.id).muting\n    },\n    isStatusNotification () {\n      return isStatusNotification(this.notification.type)\n    },\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  }\n}\n\nexport default Notification\n","import { render } from \"./notification.vue?vue&type=template&id=6dbbedfb\"\nimport script from \"./notification.js?vue&type=script&lang=js\"\nexport * from \"./notification.js?vue&type=script&lang=js\"\n\nimport \"./notification.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"NotificationFilters\"\n    placement=\"bottom\"\n    :bound-to=\"{ x: 'container' }\"\n  >\n    <template #content>\n      <div class=\"dropdown-menu\">\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('likes')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n          />{{ $t('settings.notification_visibility_likes') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('repeats')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n          />{{ $t('settings.notification_visibility_repeats') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('follows')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n          />{{ $t('settings.notification_visibility_follows') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('mentions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n          />{{ $t('settings.notification_visibility_mentions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('emojiReactions')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n          />{{ $t('settings.notification_visibility_emoji_reactions') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('moves')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n          />{{ $t('settings.notification_visibility_moves') }}\n        </button>\n        <button\n          class=\"button-default dropdown-item\"\n          @click=\"toggleNotificationFilter('polls')\"\n        >\n          <span\n            class=\"menu-checkbox\"\n            :class=\"{ 'menu-checkbox-checked': filters.polls }\"\n          />{{ $t('settings.notification_visibility_polls') }}\n        </button>\n      </div>\n    </template>\n    <template #trigger>\n      <button class=\"filter-trigger-button button-unstyled\">\n        <FAIcon icon=\"filter\" />\n      </button>\n    </template>\n  </Popover>\n</template>\n\n<script>\nimport Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faFilter } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFilter\n)\n\nexport default {\n  components: { Popover },\n  computed: {\n    filters () {\n      return this.$store.getters.mergedConfig.notificationVisibility\n    }\n  },\n  methods: {\n    toggleNotificationFilter (type) {\n      this.$store.dispatch('setOption', {\n        name: 'notificationVisibility',\n        value: {\n          ...this.filters,\n          [type]: !this.filters[type]\n        }\n      })\n    }\n  }\n}\n</script>\n","import { render } from \"./notification_filters.vue?vue&type=template&id=0ad39446\"\nimport script from \"./notification_filters.vue?vue&type=script&lang=js\"\nexport * from \"./notification_filters.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { computed } from 'vue'\nimport { mapGetters } from 'vuex'\nimport Notification from '../notification/notification.vue'\nimport NotificationFilters from './notification_filters.vue'\nimport notificationsFetcher from '../../services/notifications_fetcher/notifications_fetcher.service.js'\nimport {\n  notificationsFromStore,\n  filteredNotificationsFromStore,\n  unseenNotificationsFromStore\n} from '../../services/notification_utils/notification_utils.js'\nimport FaviconService from '../../services/favicon_service/favicon_service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch, faArrowUp, faMinus } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faArrowUp,\n  faMinus\n)\n\nconst DEFAULT_SEEN_TO_DISPLAY_COUNT = 30\n\nconst Notifications = {\n  components: {\n    Notification,\n    NotificationFilters\n  },\n  props: {\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    // Disable teleporting (i.e. for /users/user/notifications)\n    disableTeleport: Boolean\n  },\n  data () {\n    return {\n      showScrollTop: false,\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  provide () {\n    return {\n      popoversZLayer: computed(() => this.popoversZLayer)\n    }\n  },\n  computed: {\n    mainClass () {\n      return this.minimalMode ? '' : 'panel panel-default'\n    },\n    notifications () {\n      return notificationsFromStore(this.$store)\n    },\n    error () {\n      return this.$store.state.statuses.notifications.error\n    },\n    unseenNotifications () {\n      return unseenNotificationsFromStore(this.$store)\n    },\n    filteredNotifications () {\n      return filteredNotificationsFromStore(this.$store, this.filterMode)\n    },\n    unseenCount () {\n      return this.unseenNotifications.length\n    },\n    unseenCountTitle () {\n      return this.unseenCount + (this.unreadChatCount) + this.unreadAnnouncementCount\n    },\n    loading () {\n      return this.$store.state.statuses.notifications.loading\n    },\n    noHeading () {\n      const { layoutType } = this.$store.state.interface\n      return this.minimalMode || layoutType === 'mobile'\n    },\n    teleportTarget () {\n      const { layoutType } = this.$store.state.interface\n      const map = {\n        wide: '#notifs-column',\n        mobile: '#mobile-notifications'\n      }\n      return map[layoutType] || '#notifs-sidebar'\n    },\n    popoversZLayer () {\n      const { layoutType } = this.$store.state.interface\n      return layoutType === 'mobile' ? 'navbar' : null\n    },\n    notificationsToDisplay () {\n      return this.filteredNotifications.slice(0, this.unseenCount + this.seenToDisplayCount)\n    },\n    noSticky () { return this.$store.getters.mergedConfig.disableStickyHeaders },\n    ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])\n  },\n  mounted () {\n    this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n    if (!this.scrollerRef) {\n      this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n    }\n    if (!this.scrollerRef) {\n      this.scrollerRef = this.$refs.root.closest('.column.main')\n    }\n    this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n  },\n  unmounted () {\n    if (!this.scrollerRef) return\n    this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n  },\n  watch: {\n    unseenCountTitle (count) {\n      if (count > 0) {\n        FaviconService.drawFaviconBadge()\n        this.$store.dispatch('setPageTitle', `(${count})`)\n      } else {\n        FaviconService.clearFaviconBadge()\n        this.$store.dispatch('setPageTitle', '')\n      }\n    },\n    teleportTarget () {\n      // handle scroller change\n      this.$nextTick(() => {\n        this.scrollerRef.removeEventListener('scroll', this.updateScrollPosition)\n        this.scrollerRef = this.$refs.root.closest('.column.-scrollable')\n        if (!this.scrollerRef) {\n          this.scrollerRef = this.$refs.root.closest('.mobile-notifications')\n        }\n        this.scrollerRef.addEventListener('scroll', this.updateScrollPosition)\n        this.updateScrollPosition()\n      })\n    }\n  },\n  methods: {\n    scrollToTop () {\n      const scrollable = this.scrollerRef\n      scrollable.scrollTo({ top: this.$refs.root.offsetTop })\n      // this.$refs.root.scrollIntoView({ behavior: 'smooth', block: 'start' })\n    },\n    updateScrollPosition () {\n      this.showScrollTop = this.$refs.root.offsetTop < this.scrollerRef.scrollTop\n    },\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","import { render } from \"./notifications.vue?vue&type=template&id=fdd5b5f4\"\nimport script from \"./notifications.js?vue&type=script&lang=js\"\nexport * from \"./notifications.js?vue&type=script&lang=js\"\n\nimport \"./notifications.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"panel-loading\">\n    <span class=\"loading-text\">\n      <FAIcon\n        icon=\"circle-notch\"\n        spin\n        size=\"3x\"\n      />\n      {{ $t('general.loading') }}\n    </span>\n  </div>\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nexport default {}\n</script>\n\n<style lang=\"scss\">\n@import 'src/_variables.scss';\n\n.panel-loading {\n  display: flex;\n  height: 100%;\n  align-items: center;\n  justify-content: center;\n  font-size: 2em;\n  color: $fallback--text;\n  color: var(--text, $fallback--text);\n  .loading-text svg {\n    line-height: 0;\n    vertical-align: middle;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n  }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=595215a2\"\nimport script from \"./panel_loading.vue?vue&type=script&lang=js\"\nexport * from \"./panel_loading.vue?vue&type=script&lang=js\"\n\nimport \"./panel_loading.vue?vue&type=style&index=0&id=595215a2&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","const Popover = {\n  name: 'Popover',\n  props: {\n    // Action to trigger popover: either 'hover' or 'click'\n    trigger: String,\n\n    // 'top', 'bottom', 'left', 'right'\n    placement: String,\n\n    // Takes object with properties 'x' and 'y', values of these can be\n    // 'container' for using offsetParent as boundaries for either axis\n    // or 'viewport'\n    boundTo: Object,\n\n    // Takes a selector to use as a replacement for the parent container\n    // for getting boundaries for x an y axis\n    boundToSelector: String,\n\n    // Takes a top/bottom/left/right object, how much space to leave\n    // between boundary and popover element\n    margin: Object,\n\n    // Takes a x/y object and tells how many pixels to offset from\n    // anchor point on either axis\n    offset: Object,\n\n    // Replaces the classes you may want for the popover container.\n    // Use 'popover-default' in addition to get the default popover\n    // styles with your custom class.\n    popoverClass: String,\n\n    // If true, subtract padding when calculating position for the popover,\n    // use it when popover offset looks to be different on top vs bottom.\n    removePadding: Boolean,\n\n    // self-explanatory (i hope)\n    disabled: Boolean,\n\n    // Instead of putting popover next to anchor, overlay popover's center on top of anchor's center\n    overlayCenters: Boolean,\n\n    // What selector (witin popover!) to use for determining center of popover\n    overlayCentersSelector: String,\n\n    // Lets hover popover stay when clicking inside of it\n    stayOnClick: Boolean,\n\n    triggerAttrs: {\n      type: Object,\n      default: {}\n    }\n  },\n  inject: ['popoversZLayer'], // override popover z layer\n  data () {\n    return {\n      // lockReEntry is a flag that is set when mouse cursor is leaving the popover's content\n      // so that if mouse goes back into popover it won't be re-shown again to prevent annoyance\n      // with popovers refusing to be hidden when user wants to interact with something in below popover\n      anchorEl: null,\n      // There's an issue where having teleport enabled by default causes things just...\n      // not render at all, i.e. main post status form and its emoji inputs\n      teleport: false,\n      lockReEntry: false,\n      hidden: true,\n      styles: {},\n      oldSize: { width: 0, height: 0 },\n      scrollable: null,\n      // used to avoid blinking if hovered onto popover\n      graceTimeout: null,\n      parentPopover: null,\n      disableClickOutside: false,\n      childrenShown: new Set()\n    }\n  },\n  methods: {\n    setAnchorEl (el) {\n      this.anchorEl = el\n      this.updateStyles()\n    },\n    containerBoundingClientRect () {\n      const container = this.boundToSelector ? this.$el.closest(this.boundToSelector) : this.$el.offsetParent\n      return container.getBoundingClientRect()\n    },\n    updateStyles () {\n      if (this.hidden) {\n        this.styles = {}\n        return\n      }\n\n      // Popover will be anchored around this element, trigger ref is the container, so\n      // its children are what are inside the slot. Expect only one v-slot:trigger.\n      const anchorEl = this.anchorEl || (this.$refs.trigger && this.$refs.trigger.children[0]) || this.$el\n      // SVGs don't have offsetWidth/Height, use fallback\n      const anchorHeight = anchorEl.offsetHeight || anchorEl.clientHeight\n      const anchorWidth = anchorEl.offsetWidth || anchorEl.clientWidth\n      const anchorScreenBox = anchorEl.getBoundingClientRect()\n\n      const anchorStyle = getComputedStyle(anchorEl)\n      const topPadding = parseFloat(anchorStyle.paddingTop)\n      const bottomPadding = parseFloat(anchorStyle.paddingBottom)\n      const rightPadding = parseFloat(anchorStyle.paddingRight)\n      const leftPadding = parseFloat(anchorStyle.paddingLeft)\n\n      // Screen position of the origin point for popover = center of the anchor\n      const origin = {\n        x: anchorScreenBox.left + anchorWidth * 0.5,\n        y: anchorScreenBox.top + anchorHeight * 0.5\n      }\n      const content = this.$refs.content\n      const overlayCenter = this.overlayCenters\n        ? this.$refs.content.querySelector(this.overlayCentersSelector)\n        : null\n\n      // Minor optimization, don't call a slow reflow call if we don't have to\n      const parentScreenBox = this.boundTo &&\n        (this.boundTo.x === 'container' || this.boundTo.y === 'container') &&\n        this.containerBoundingClientRect()\n\n      const margin = this.margin || {}\n\n      // What are the screen bounds for the popover? Viewport vs container\n      // when using viewport, using default margin values to dodge the navbar\n      const xBounds = this.boundTo && this.boundTo.x === 'container'\n        ? {\n            min: parentScreenBox.left + (margin.left || 0),\n            max: parentScreenBox.right - (margin.right || 0)\n          }\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        ? {\n            min: parentScreenBox.top + (margin.top || 0),\n            max: parentScreenBox.bottom - (margin.bottom || 0)\n          }\n        : {\n            min: 0 + (margin.top || 50),\n            max: window.innerHeight - (margin.bottom || 5)\n          }\n\n      let horizOffset = 0\n      let vertOffset = 0\n\n      if (overlayCenter) {\n        const box = content.getBoundingClientRect()\n        const overlayCenterScreenBox = overlayCenter.getBoundingClientRect()\n        const leftInnerOffset = overlayCenterScreenBox.left - box.left\n        const topInnerOffset = overlayCenterScreenBox.top - box.top\n        horizOffset = -leftInnerOffset - overlayCenter.offsetWidth * 0.5\n        vertOffset = -topInnerOffset - overlayCenter.offsetHeight * 0.5\n      } else {\n        horizOffset = content.offsetWidth * -0.5\n        vertOffset = content.offsetHeight * -0.5\n      }\n\n      const leftBorder = origin.x + horizOffset\n      const rightBorder = leftBorder + content.offsetWidth\n      const topBorder = origin.y + vertOffset\n      const bottomBorder = topBorder + content.offsetHeight\n\n      // If overflowing from left, move it so that it doesn't\n      if (leftBorder < xBounds.min) {\n        horizOffset += xBounds.min - leftBorder\n      }\n\n      // If overflowing from right, move it so that it doesn't\n      if (rightBorder > xBounds.max) {\n        horizOffset -= rightBorder - xBounds.max\n      }\n\n      // If overflowing from top, move it so that it doesn't\n      if (topBorder < yBounds.min) {\n        vertOffset += yBounds.min - topBorder\n      }\n\n      // If overflowing from bottom, move it so that it doesn't\n      if (bottomBorder > yBounds.max) {\n        vertOffset -= bottomBorder - yBounds.max\n      }\n\n      let translateX = 0\n      let translateY = 0\n\n      if (overlayCenter) {\n        translateX = origin.x + horizOffset\n        translateY = origin.y + vertOffset\n      } else if (this.placement !== 'right' && this.placement !== 'left') {\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        const topBoundary = origin.y - anchorHeight * 0.5 + (this.removePadding ? topPadding : 0)\n        const bottomBoundary = origin.y + anchorHeight * 0.5 - (this.removePadding ? bottomPadding : 0)\n        if (bottomBoundary + content.offsetHeight > yBounds.max) usingTop = true\n        if (topBoundary - content.offsetHeight < yBounds.min) usingTop = false\n\n        const yOffset = (this.offset && this.offset.y) || 0\n        translateY = usingTop\n          ? topBoundary - yOffset - content.offsetHeight\n          : bottomBoundary + yOffset\n\n        const xOffset = (this.offset && this.offset.x) || 0\n        translateX = origin.x + horizOffset + xOffset\n      } else {\n        // Default to whatever user wished with placement prop\n        let usingRight = this.placement !== 'left'\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        const rightBoundary = origin.x - anchorWidth * 0.5 + (this.removePadding ? rightPadding : 0)\n        const leftBoundary = origin.x + anchorWidth * 0.5 - (this.removePadding ? leftPadding : 0)\n        if (leftBoundary + content.offsetWidth > xBounds.max) usingRight = true\n        if (rightBoundary - content.offsetWidth < xBounds.min) usingRight = false\n\n        const xOffset = (this.offset && this.offset.x) || 0\n        translateX = usingRight\n          ? rightBoundary - xOffset - content.offsetWidth\n          : leftBoundary + xOffset\n\n        const yOffset = (this.offset && this.offset.y) || 0\n        translateY = origin.y + vertOffset + yOffset\n      }\n\n      this.styles = {\n        left: `${Math.round(translateX)}px`,\n        top: `${Math.round(translateY)}px`\n      }\n\n      if (this.popoversZLayer) {\n        this.styles['--ZI_popover_override'] = `var(--ZI_${this.popoversZLayer}_popovers)`\n      }\n      if (parentScreenBox) {\n        this.styles.maxWidth = `${Math.round(parentScreenBox.width)}px`\n      }\n    },\n    showPopover () {\n      if (this.disabled) return\n      this.disableClickOutside = true\n      setTimeout(() => {\n        this.disableClickOutside = false\n      }, 0)\n      const wasHidden = this.hidden\n      this.hidden = false\n      this.parentPopover && this.parentPopover.onChildPopoverState(this, true)\n      if (this.trigger === 'click' || this.stayOnClick) {\n        document.addEventListener('click', this.onClickOutside)\n      }\n      this.scrollable.addEventListener('scroll', this.onScroll)\n      this.scrollable.addEventListener('resize', this.onResize)\n      this.$nextTick(() => {\n        if (wasHidden) this.$emit('show')\n        this.updateStyles()\n      })\n    },\n    hidePopover () {\n      if (this.disabled) return\n      if (!this.hidden) this.$emit('close')\n      this.hidden = true\n      this.parentPopover && this.parentPopover.onChildPopoverState(this, false)\n      if (this.trigger === 'click') {\n        document.removeEventListener('click', this.onClickOutside)\n      }\n      this.scrollable.removeEventListener('scroll', this.onScroll)\n      this.scrollable.removeEventListener('resize', this.onResize)\n    },\n    onMouseenter (e) {\n      if (this.trigger === 'hover') {\n        this.lockReEntry = false\n        clearTimeout(this.graceTimeout)\n        this.graceTimeout = null\n        this.showPopover()\n      }\n    },\n    onMouseleave (e) {\n      if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n        this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n      }\n    },\n    onMouseenterContent (e) {\n      if (this.trigger === 'hover' && !this.lockReEntry) {\n        this.lockReEntry = true\n        clearTimeout(this.graceTimeout)\n        this.graceTimeout = null\n        this.showPopover()\n      }\n    },\n    onMouseleaveContent (e) {\n      if (this.trigger === 'hover' && this.childrenShown.size === 0) {\n        this.graceTimeout = setTimeout(() => this.hidePopover(), 1)\n      }\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.disableClickOutside) return\n      if (this.hidden) return\n      if (this.$refs.content && this.$refs.content.contains(e.target)) return\n      if (this.$el.contains(e.target)) return\n      if (this.childrenShown.size > 0) return\n      this.hidePopover()\n      if (this.parentPopover) this.parentPopover.onClickOutside(e)\n    },\n    onScroll (e) {\n      this.updateStyles()\n    },\n    onResize (e) {\n      this.updateStyles()\n    },\n    onChildPopoverState (childRef, state) {\n      if (state) {\n        this.childrenShown.add(childRef)\n      } else {\n        this.childrenShown.delete(childRef)\n      }\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  mounted () {\n    this.teleport = true\n    let scrollable = this.$refs.trigger.closest('.column.-scrollable') ||\n        this.$refs.trigger.closest('.mobile-notifications')\n    if (!scrollable) scrollable = window\n    this.scrollable = scrollable\n    let parent = this.$parent\n    while (parent && parent.$.type.name !== 'Popover') {\n      parent = parent.$parent\n    }\n    this.parentPopover = parent\n  },\n  beforeUnmount () {\n    this.hidePopover()\n  }\n}\n\nexport default Popover\n","import { render } from \"./popover.vue?vue&type=template&id=78904653\"\nimport script from \"./popover.js?vue&type=script&lang=js\"\nexport * from \"./popover.js?vue&type=script&lang=js\"\n\nimport \"./popover.vue?vue&type=style&index=0&id=78904653&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    @mouseenter=\"onMouseenter\"\n    @mouseleave=\"onMouseleave\"\n  >\n    <button\n      ref=\"trigger\"\n      class=\"button-unstyled popover-trigger-button\"\n      type=\"button\"\n      v-bind=\"triggerAttrs\"\n      @click=\"onClick\"\n    >\n      <slot name=\"trigger\" />\n    </button>\n    <teleport\n      :disabled=\"!teleport\"\n      to=\"#popovers\"\n    >\n      <transition name=\"fade\">\n        <div\n          v-if=\"!hidden\"\n          ref=\"content\"\n          :style=\"styles\"\n          class=\"popover\"\n          :class=\"popoverClass || 'popover-default'\"\n          @mouseenter=\"onMouseenterContent\"\n          @mouseleave=\"onMouseleaveContent\"\n          @click=\"onClickContent\"\n        >\n          <slot\n            name=\"content\"\n            class=\"popover-inner\"\n            :close=\"hidePopover\"\n          />\n        </div>\n      </transition>\n    </teleport>\n  </span>\n</template>\n\n<script src=\"./popover.js\" />\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.popover-trigger-button {\n  display: inline-block;\n}\n\n.popover {\n  z-index: var(--ZI_popover_override, var(--ZI_popovers));\n  position: fixed;\n  min-width: 0;\n  max-width: calc(100vw - 20px);\n  box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.5);\n  box-shadow: var(--popupShadow);\n}\n\n.popover-default {\n  &:after {\n    content: '';\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    z-index: 3;\n    box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.6);\n    box-shadow: var(--panelShadow);\n    pointer-events: none;\n  }\n\n  border-radius: $fallback--btnRadius;\n  border-radius: var(--btnRadius, $fallback--btnRadius);\n\n  background-color: $fallback--bg;\n  background-color: var(--popover, $fallback--bg);\n  color: $fallback--text;\n  color: var(--popoverText, $fallback--text);\n  --faint: var(--popoverFaintText, $fallback--faint);\n  --faintLink: var(--popoverFaintLink, $fallback--faint);\n  --lightText: var(--popoverLightText, $fallback--lightText);\n  --postLink: var(--popoverPostLink, $fallback--link);\n  --postFaintLink: var(--popoverPostFaintLink, $fallback--link);\n  --icon: var(--popoverIcon, $fallback--icon);\n}\n\n.dropdown-menu {\n  display: block;\n  padding: .5rem 0;\n  font-size: 1em;\n  text-align: left;\n  list-style: none;\n  max-width: 100vw;\n  z-index: var(--ZI_popover_override, var(--ZI_popovers));\n  white-space: nowrap;\n\n  .dropdown-divider {\n    height: 0;\n    margin: .5rem 0;\n    overflow: hidden;\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n  }\n\n  .dropdown-item {\n    line-height: 21px;\n    overflow: hidden;\n    display: block;\n    padding: 0.5em 0.75em;\n    clear: both;\n    font-weight: 400;\n    text-align: inherit;\n    white-space: nowrap;\n    border: none;\n    border-radius: 0px;\n    background-color: transparent;\n    box-shadow: none;\n    width: 100%;\n    height: 100%;\n    box-sizing: border-box;\n\n    --btnText: var(--popoverText, $fallback--text);\n\n    &-icon {\n      svg {\n        width: 22px;\n        margin-right: 0.75rem;\n        color: var(--menuPopoverIcon, $fallback--icon)\n      }\n    }\n\n    &.-has-submenu {\n      .chevron-icon {\n        margin-right: 0.25rem;\n        margin-left: 2rem;\n      }\n    }\n\n    &:active, &:hover {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      box-shadow: none;\n      --btnText: var(--selectedMenuPopoverText, $fallback--link);\n      --faint: var(--selectedMenuPopoverFaintText, $fallback--faint);\n      --faintLink: var(--selectedMenuPopoverFaintLink, $fallback--faint);\n      --lightText: var(--selectedMenuPopoverLightText, $fallback--lightText);\n      --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      svg {\n        color: var(--selectedMenuPopoverIcon, $fallback--icon);\n        --icon: var(--selectedMenuPopoverIcon, $fallback--icon);\n      }\n    }\n\n    .menu-checkbox {\n      display: inline-block;\n      vertical-align: middle;\n      min-width: 22px;\n      max-width: 22px;\n      min-height: 22px;\n      max-height: 22px;\n      line-height: 22px;\n      text-align: center;\n      border-radius: 0px;\n      background-color: $fallback--fg;\n      background-color: var(--input, $fallback--fg);\n      box-shadow: 0px 0px 2px black inset;\n      box-shadow: var(--inputShadow);\n      margin-right: 0.75em;\n\n      &.menu-checkbox-checked::after {\n        font-size: 1.25em;\n        content: '✓';\n      }\n\n      &.-radio {\n        border-radius: 9999px;\n\n        &.menu-checkbox-checked::after {\n          font-size: 2em;\n          content: '•';\n        }\n      }\n    }\n\n  }\n\n  .button-default.dropdown-item {\n    &,\n    i[class*=icon-] {\n      color: $fallback--text;\n      color: var(--btnText, $fallback--text);\n    }\n\n    &:active {\n      background-color: $fallback--lightBg;\n      background-color: var(--selectedMenuPopover, $fallback--lightBg);\n      color: $fallback--link;\n      color: var(--selectedMenuPopoverText, $fallback--link);\n    }\n\n    &:disabled {\n      color: $fallback--text;\n      color: var(--btnDisabledText, $fallback--text);\n    }\n\n    &.toggled {\n      color: $fallback--text;\n      color: var(--btnToggledText, $fallback--text);\n    }\n  }\n}\n</style>\n","<template>\n  <div\n    ref=\"form\"\n    class=\"post-status-form\"\n  >\n    <form\n      autocomplete=\"off\"\n      @submit.prevent\n      @dragover.prevent=\"fileDrag\"\n    >\n      <div class=\"form-group\">\n        <i18n-t\n          v-if=\"!$store.state.users.currentUser.locked && newStatus.visibility == 'private' && !disableLockWarning\"\n          keypath=\"post_status.account_not_locked_warning\"\n          tag=\"p\"\n          class=\"visibility-notice\"\n          scope=\"global\"\n        >\n          <button\n            class=\"button-unstyled -link\"\n            @click=\"openProfileTab\"\n          >\n            {{ $t('post_status.account_not_locked_warning_link') }}\n          </button>\n        </i18n-t>\n        <p\n          v-if=\"!hideScopeNotice && newStatus.visibility === 'public'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.public') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'unlisted'\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.unlisted') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"!hideScopeNotice && newStatus.visibility === 'private' && $store.state.users.currentUser.locked\"\n          class=\"visibility-notice notice-dismissible\"\n        >\n          <span>{{ $t('post_status.scope_notice.private') }}</span>\n          <a\n            class=\"fa-scale-110 fa-old-padding dismiss\"\n            @click.prevent=\"dismissScopeNotice()\"\n          >\n            <FAIcon icon=\"times\" />\n          </a>\n        </p>\n        <p\n          v-else-if=\"newStatus.visibility === 'direct'\"\n          class=\"visibility-notice\"\n        >\n          <span v-if=\"safeDMEnabled\">{{ $t('post_status.direct_warning_to_first_only') }}</span>\n          <span v-else>{{ $t('post_status.direct_warning_to_all') }}</span>\n        </p>\n        <div\n          v-if=\"isEdit\"\n          class=\"visibility-notice edit-warning\"\n        >\n          <p>{{ $t('post_status.edit_remote_warning') }}</p>\n          <p>{{ $t('post_status.edit_unsupported_warning') }}</p>\n        </div>\n        <div\n          v-if=\"!disablePreview\"\n          class=\"preview-heading faint\"\n        >\n          <a\n            class=\"preview-toggle faint\"\n            @click.stop.prevent=\"togglePreview\"\n          >\n            {{ $t('post_status.preview') }}\n            <FAIcon :icon=\"showPreview ? 'chevron-left' : 'chevron-right'\" />\n          </a>\n          <div\n            v-show=\"previewLoading\"\n            class=\"preview-spinner\"\n          >\n            <FAIcon\n              class=\"fa-old-padding\"\n              spin\n              icon=\"circle-notch\"\n            />\n          </div>\n        </div>\n        <div\n          v-if=\"showPreview\"\n          class=\"preview-container\"\n        >\n          <div\n            v-if=\"!preview\"\n            class=\"preview-status\"\n          >\n            {{ $t('general.loading') }}\n          </div>\n          <div\n            v-else-if=\"preview.error\"\n            class=\"preview-status preview-error\"\n          >\n            {{ preview.error }}\n          </div>\n          <StatusContent\n            v-else\n            :status=\"preview\"\n            class=\"preview-status\"\n          />\n        </div>\n        <EmojiInput\n          v-if=\"!disableSubject && (newStatus.spoilerText || alwaysShowSubject)\"\n          v-model=\"newStatus.spoilerText\"\n          enable-emoji-picker\n          :suggest=\"emojiSuggestor\"\n          class=\"form-control\"\n        >\n          <input\n            v-model=\"newStatus.spoilerText\"\n            type=\"text\"\n            :placeholder=\"$t('post_status.content_warning')\"\n            :disabled=\"posting && !optimisticPosting\"\n            size=\"1\"\n            class=\"form-post-subject\"\n          >\n        </EmojiInput>\n        <EmojiInput\n          ref=\"emoji-input\"\n          v-model=\"newStatus.status\"\n          :suggest=\"emojiUserSuggestor\"\n          :placement=\"emojiPickerPlacement\"\n          class=\"form-control main-input\"\n          enable-emoji-picker\n          hide-emoji-button\n          :newline-on-ctrl-enter=\"submitOnEnter\"\n          enable-sticker-picker\n          @input=\"onEmojiInputInput\"\n          @sticker-uploaded=\"addMediaFile\"\n          @sticker-upload-failed=\"uploadFailed\"\n          @shown=\"handleEmojiInputShow\"\n        >\n          <textarea\n            ref=\"textarea\"\n            v-model=\"newStatus.status\"\n            :placeholder=\"placeholder || $t('post_status.default')\"\n            rows=\"1\"\n            cols=\"1\"\n            :disabled=\"posting && !optimisticPosting\"\n            class=\"form-post-body\"\n            :class=\"{ 'scrollable-form': !!maxHeight }\"\n            @keydown.exact.enter=\"submitOnEnter && postStatus($event, newStatus)\"\n            @keydown.meta.enter=\"postStatus($event, newStatus)\"\n            @keydown.ctrl.enter=\"!submitOnEnter && postStatus($event, newStatus)\"\n            @input=\"resize\"\n            @compositionupdate=\"resize\"\n            @paste=\"paste\"\n          />\n          <p\n            v-if=\"hasStatusLengthLimit\"\n            class=\"character-counter faint\"\n            :class=\"{ error: isOverLengthLimit }\"\n          >\n            {{ charactersLeft }}\n          </p>\n        </EmojiInput>\n        <div\n          v-if=\"!disableScopeSelector\"\n          class=\"visibility-tray\"\n        >\n          <scope-selector\n            v-if=\"!disableVisibilitySelector\"\n            :show-all=\"showAllScopes\"\n            :user-default=\"userDefaultScope\"\n            :original-scope=\"copyMessageScope\"\n            :initial-scope=\"newStatus.visibility\"\n            :on-scope-change=\"changeVis\"\n          />\n\n          <div\n            v-if=\"postFormats.length > 1\"\n            class=\"text-format\"\n          >\n            <Select\n              id=\"post-content-type\"\n              v-model=\"newStatus.contentType\"\n              class=\"form-control\"\n            >\n              <option\n                v-for=\"postFormat in postFormats\"\n                :key=\"postFormat\"\n                :value=\"postFormat\"\n              >\n                {{ $t(`post_status.content_type[\"${postFormat}\"]`) }}\n              </option>\n            </Select>\n          </div>\n          <div\n            v-if=\"postFormats.length === 1 && postFormats[0] !== 'text/plain'\"\n            class=\"text-format\"\n          >\n            <span class=\"only-format\">\n              {{ $t(`post_status.content_type[\"${postFormats[0]}\"]`) }}\n            </span>\n          </div>\n        </div>\n      </div>\n      <poll-form\n        v-if=\"pollsAvailable\"\n        ref=\"pollForm\"\n        :visible=\"pollFormVisible\"\n        @update-poll=\"setPoll\"\n      />\n      <div\n        ref=\"bottom\"\n        class=\"form-bottom\"\n      >\n        <div class=\"form-bottom-left\">\n          <media-upload\n            ref=\"mediaUpload\"\n            class=\"media-upload-icon\"\n            :drop-files=\"dropFiles\"\n            :disabled=\"uploadFileLimitReached\"\n            @uploading=\"startedUploadingFiles\"\n            @uploaded=\"addMediaFile\"\n            @upload-failed=\"uploadFailed\"\n            @all-uploaded=\"finishedUploadingFiles\"\n          />\n          <button\n            class=\"emoji-icon button-unstyled\"\n            :title=\"$t('emoji.add_emoji')\"\n            @click=\"showEmojiPicker\"\n          >\n            <FAIcon icon=\"smile-beam\" />\n          </button>\n          <button\n            v-if=\"pollsAvailable\"\n            class=\"poll-icon button-unstyled\"\n            :class=\"{ selected: pollFormVisible }\"\n            :title=\"$t('polls.add_poll')\"\n            @click=\"togglePollForm\"\n          >\n            <FAIcon icon=\"poll-h\" />\n          </button>\n        </div>\n        <button\n          v-if=\"posting\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.posting') }}\n        </button>\n        <button\n          v-else-if=\"isOverLengthLimit\"\n          disabled\n          class=\"btn button-default\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n        <!-- touchstart is used to keep the OSK at the same position after a message send -->\n        <button\n          v-else\n          :disabled=\"uploadingFiles || disableSubmit\"\n          class=\"btn button-default\"\n          @touchstart.stop.prevent=\"postStatus($event, newStatus)\"\n          @click.stop.prevent=\"postStatus($event, newStatus)\"\n        >\n          {{ $t('post_status.post') }}\n        </button>\n      </div>\n      <div\n        v-show=\"showDropIcon !== 'hide'\"\n        :style=\"{ animation: showDropIcon === 'show' ? 'fade-in 0.25s' : 'fade-out 0.5s' }\"\n        class=\"drop-indicator\"\n        @dragleave=\"fileDragStop\"\n        @drop.stop=\"fileDrop\"\n      >\n        <FAIcon :icon=\"uploadFileLimitReached ? 'ban' : 'upload'\" />\n      </div>\n      <div\n        v-if=\"error\"\n        class=\"alert error\"\n      >\n        Error: {{ error }}\n        <button\n          class=\"button-unstyled\"\n          @click=\"clearError\"\n        >\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            icon=\"times\"\n          />\n        </button>\n      </div>\n      <gallery\n        v-if=\"newStatus.files && newStatus.files.length > 0\"\n        class=\"attachments\"\n        :grid=\"true\"\n        :nsfw=\"false\"\n        :attachments=\"newStatus.files\"\n        :descriptions=\"newStatus.mediaDescriptions\"\n        :set-media=\"() => $store.dispatch('setMedia', newStatus.files)\"\n        :editable=\"true\"\n        :edit-attachment=\"editAttachment\"\n        :remove-attachment=\"removeMediaFile\"\n        :shift-up-attachment=\"newStatus.files.length > 1 && shiftUpMediaFile\"\n        :shift-dn-attachment=\"newStatus.files.length > 1 && shiftDnMediaFile\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n      <div\n        v-if=\"newStatus.files.length > 0 && !disableSensitivityCheckbox\"\n        class=\"upload_settings\"\n      >\n        <Checkbox v-model=\"newStatus.nsfw\">\n          {{ $t('post_status.attachments_sensitive') }}\n        </Checkbox>\n      </div>\n    </form>\n  </div>\n</template>\n\n<script src=\"./post_status_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.post-status-form {\n  position: relative;\n\n  .attachments {\n    margin-bottom: 0.5em;\n  }\n\n  .form-bottom {\n    display: flex;\n    justify-content: space-between;\n    padding: 0.5em;\n    height: 2.5em;\n\n    button {\n      width: 10em;\n    }\n\n    p {\n      margin: 0.35em;\n      padding: 0.35em;\n      display: flex;\n    }\n  }\n\n  .form-bottom-left {\n    display: flex;\n    flex: 1;\n    padding-right: 7px;\n    margin-right: 7px;\n    max-width: 10em;\n  }\n\n  .preview-heading {\n    display: flex;\n    padding-left: 0.5em;\n  }\n\n  .preview-toggle {\n    flex: 1;\n    cursor: pointer;\n    user-select: none;\n\n    &:hover {\n      text-decoration: underline;\n    }\n    svg, i {\n      margin-left: 0.2em;\n      font-size: 0.8em;\n      transform: rotate(90deg);\n    }\n  }\n\n  .preview-container {\n    margin-bottom: 1em;\n  }\n\n  .preview-error {\n    font-style: italic;\n    color: $fallback--faint;\n    color: var(--faint, $fallback--faint);\n  }\n\n  .preview-status {\n    border: 1px solid $fallback--border;\n    border: 1px solid var(--border, $fallback--border);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    padding: 0.5em;\n    margin: 0;\n  }\n\n  .text-format {\n    .only-format {\n      color: $fallback--faint;\n      color: var(--faint, $fallback--faint);\n    }\n  }\n\n  .visibility-tray {\n    display: flex;\n    justify-content: space-between;\n    padding-top: 5px;\n    align-items: baseline;\n  }\n\n  .visibility-notice.edit-warning {\n    > :first-child {\n      margin-top: 0;\n    }\n\n    > :last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  .media-upload-icon, .poll-icon, .emoji-icon {\n    font-size: 1.85em;\n    line-height: 1.1;\n    flex: 1;\n    padding: 0 0.1em;\n    display: flex;\n    align-items: center;\n\n    &.selected, &:hover {\n      // needs to be specific to override icon default color\n      svg, i, label {\n        color: $fallback--lightText;\n        color: var(--lightText, $fallback--lightText);\n      }\n    }\n\n    &.disabled {\n      svg, i {\n        cursor: not-allowed;\n        color: $fallback--icon;\n        color: var(--btnDisabledText, $fallback--icon);\n\n        &:hover {\n          color: $fallback--icon;\n          color: var(--btnDisabledText, $fallback--icon);\n        }\n      }\n    }\n  }\n\n  // Order is not necessary but a good indicator\n  .media-upload-icon {\n    order: 1;\n    justify-content: left;\n  }\n\n  .emoji-icon {\n    order: 2;\n    justify-content: center;\n  }\n\n  .poll-icon {\n    order: 3;\n    justify-content: right;\n  }\n\n  .error {\n    text-align: center;\n  }\n\n  .media-upload-wrapper {\n    margin-right: .2em;\n    margin-bottom: .5em;\n    width: 18em;\n\n    img, video {\n      object-fit: contain;\n      max-height: 10em;\n    }\n\n    .video {\n      max-height: 10em;\n    }\n\n    input {\n      flex: 1;\n      width: 100%;\n    }\n  }\n\n  .status-input-wrapper {\n    display: flex;\n    position: relative;\n    width: 100%;\n    flex-direction: column;\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  form {\n    display: flex;\n    flex-direction: column;\n    margin: 0.6em;\n    position: relative;\n  }\n\n  .form-group {\n    display: flex;\n    flex-direction: column;\n    padding: 0.25em 0.5em 0.5em;\n    line-height: 1.85;\n  }\n\n  .form-post-body {\n    // TODO: make a resizable textarea component?\n    box-sizing: content-box; // needed for easier computation of dynamic size\n    overflow: hidden;\n    transition: min-height 200ms 100ms;\n    // stock padding + 1 line of text (for counter)\n    padding-bottom: calc(var(--_padding) + var(--post-line-height) * 1em);\n    // two lines of text\n    height: calc(var(--post-line-height) * 1em);\n    min-height: calc(var(--post-line-height) * 1em);\n    resize: none;\n\n    &.scrollable-form {\n      overflow-y: auto;\n    }\n  }\n\n  .main-input {\n    position: relative;\n  }\n\n  .character-counter {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    padding: 0;\n    margin: 0 0.5em;\n\n    &.error {\n      color: $fallback--cRed;\n      color: var(--cRed, $fallback--cRed);\n    }\n  }\n\n  .btn[disabled] {\n    cursor: not-allowed;\n  }\n\n  @keyframes fade-in {\n    from { opacity: 0; }\n    to   { opacity: 0.6; }\n  }\n\n  @keyframes fade-out {\n    from { opacity: 0.6; }\n    to   { opacity: 0; }\n  }\n\n  .drop-indicator {\n    position: absolute;\n    width: 100%;\n    height: 100%;\n    font-size: 5em;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    opacity: 0.6;\n    color: $fallback--text;\n    color: var(--text, $fallback--text);\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-radius: $fallback--tooltipRadius;\n    border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n    border: 2px dashed $fallback--text;\n    border: 2px dashed var(--text, $fallback--text);\n  }\n}\n</style>\n","/* eslint-env browser */\nimport statusPosterService from '../../services/status_poster/status_poster.service.js'\nimport fileSizeFormatService from '../../services/file_size_format/file_size_format.js'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faUpload, faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faUpload,\n  faCircleNotch\n)\n\nconst mediaUpload = {\n  data () {\n    return {\n      uploadCount: 0,\n      uploadReady: true\n    }\n  },\n  computed: {\n    uploading () {\n      return this.uploadCount > 0\n    }\n  },\n  methods: {\n    uploadFile (file) {\n      const self = this\n      const store = this.$store\n      if (file.size > store.state.instance.uploadlimit) {\n        const filesize = fileSizeFormatService.fileSizeFormat(file.size)\n        const allowedsize = fileSizeFormatService.fileSizeFormat(store.state.instance.uploadlimit)\n        self.$emit('upload-failed', 'file_too_big', { filesize: filesize.num, filesizeunit: filesize.unit, allowedsize: allowedsize.num, allowedsizeunit: allowedsize.unit })\n        return\n      }\n      const formData = new FormData()\n      formData.append('file', file)\n\n      self.$emit('uploading')\n      self.uploadCount++\n\n      statusPosterService.uploadMedia({ store, formData })\n        .then((fileData) => {\n          self.$emit('uploaded', fileData)\n          self.decreaseUploadCount()\n        }, (error) => {\n          console.error('Error uploading file', error)\n          self.$emit('upload-failed', 'default')\n          self.decreaseUploadCount()\n        })\n    },\n    decreaseUploadCount () {\n      this.uploadCount--\n      if (this.uploadCount === 0) {\n        this.$emit('all-uploaded')\n      }\n    },\n    clearFile () {\n      this.uploadReady = false\n      this.$nextTick(() => {\n        this.uploadReady = true\n      })\n    },\n    multiUpload (files) {\n      for (const file of files) {\n        this.uploadFile(file)\n      }\n    },\n    change ({ target }) {\n      this.multiUpload(target.files)\n    }\n  },\n  props: [\n    'dropFiles',\n    'disabled'\n  ],\n  watch: {\n    dropFiles: function (fileInfos) {\n      if (!this.uploading) {\n        this.multiUpload(fileInfos)\n      }\n    }\n  }\n}\n\nexport default mediaUpload\n","import { render } from \"./media_upload.vue?vue&type=template&id=b1fc3f36\"\nimport script from \"./media_upload.js?vue&type=script&lang=js\"\nexport * from \"./media_upload.js?vue&type=script&lang=js\"\n\nimport \"./media_upload.vue?vue&type=style&index=0&id=b1fc3f36&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"media-upload\"\n    :class=\"{ disabled: disabled }\"\n    :title=\"$t('tool_tip.media_upload')\"\n  >\n    <FAIcon\n      v-if=\"uploading\"\n      class=\"progress-icon\"\n      icon=\"circle-notch\"\n      spin\n    />\n    <FAIcon\n      v-if=\"!uploading\"\n      class=\"new-icon\"\n      icon=\"upload\"\n    />\n    <input\n      v-if=\"uploadReady\"\n      class=\"hidden-input-file\"\n      :disabled=\"disabled\"\n      type=\"file\"\n      multiple=\"true\"\n      @change=\"change\"\n    >\n  </label>\n</template>\n\n<script src=\"./media_upload.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.media-upload {\n  cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n\n  .hidden-input-file {\n    display: none;\n  }\n}\n </style>\n","<template>\n  <div\n    v-if=\"visible\"\n    class=\"poll-form\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div class=\"input-container\">\n        <input\n          :id=\"`poll-${index}`\"\n          v-model=\"options[index]\"\n          size=\"1\"\n          class=\"poll-option-input\"\n          type=\"text\"\n          :placeholder=\"$t('polls.option')\"\n          :maxlength=\"maxLength\"\n          @change=\"updatePollToParent\"\n          @keydown.enter.stop.prevent=\"nextOption(index)\"\n        >\n      </div>\n      <button\n        v-if=\"options.length > 2\"\n        class=\"delete-option button-unstyled -hover-highlight\"\n        @click=\"deleteOption(index)\"\n      >\n        <FAIcon icon=\"times\" />\n      </button>\n    </div>\n    <button\n      v-if=\"options.length < maxOptions\"\n      class=\"add-option faint button-unstyled -hover-highlight\"\n      @click=\"addOption\"\n    >\n      <FAIcon\n        icon=\"plus\"\n        size=\"sm\"\n      />\n\n      {{ $t(\"polls.add_option\") }}\n    </button>\n    <div class=\"poll-type-expiry\">\n      <div\n        class=\"poll-type\"\n        :title=\"$t('polls.type')\"\n      >\n        <Select\n          v-model=\"pollType\"\n          class=\"poll-type-select\"\n          unstyled=\"true\"\n          @change=\"updatePollToParent\"\n        >\n          <option value=\"single\">\n            {{ $t('polls.single_choice') }}\n          </option>\n          <option value=\"multiple\">\n            {{ $t('polls.multiple_choices') }}\n          </option>\n        </Select>\n      </div>\n      <div\n        class=\"poll-expiry\"\n        :title=\"$t('polls.expiry')\"\n      >\n        <input\n          v-model=\"expiryAmount\"\n          type=\"number\"\n          class=\"expiry-amount hide-number-spinner\"\n          :min=\"minExpirationInCurrentUnit\"\n          :max=\"maxExpirationInCurrentUnit\"\n          @change=\"expiryAmountChange\"\n        >\n        {{ ' ' }}\n        <Select\n          v-model=\"expiryUnit\"\n          unstyled=\"true\"\n          class=\"expiry-unit\"\n          @change=\"expiryAmountChange\"\n        >\n          <option\n            v-for=\"unit in expiryUnits\"\n            :key=\"unit\"\n            :value=\"unit\"\n          >\n            {{ $tc(`time.unit.${unit}_short`, expiryAmount, ['']) }}\n          </option>\n        </Select>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll_form.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll-form {\n  display: flex;\n  flex-direction: column;\n  padding: 0 0.5em 0.5em;\n\n  .add-option {\n    align-self: flex-start;\n    padding-top: 0.25em;\n    padding-left: 0.1em;\n  }\n\n  .poll-option {\n    display: flex;\n    align-items: baseline;\n    justify-content: space-between;\n    margin-bottom: 0.25em;\n  }\n\n  .input-container {\n    width: 100%;\n    input {\n      // Hack: dodge the floating X icon\n      padding-right: 2.5em;\n      width: 100%;\n    }\n  }\n\n  .delete-option {\n    // Hack: Move the icon over the input box\n    width: 1.5em;\n    margin-left: -1.5em;\n    z-index: 1;\n  }\n\n  .poll-type-expiry {\n    margin-top: 0.5em;\n    display: flex;\n    width: 100%;\n  }\n\n  .poll-type {\n    margin-right: 0.75em;\n    flex: 1 1 60%;\n\n    .poll-type-select {\n      padding-right: 0.75em;\n    }\n  }\n\n  .poll-expiry {\n    display: flex;\n\n    .expiry-amount {\n      width: 3em;\n      text-align: right;\n    }\n  }\n}\n</style>\n","import * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport { uniq } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport Select from '../select/select.vue'\nimport {\n  faTimes,\n  faPlus\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faTimes,\n  faPlus\n)\n\nexport default {\n  components: {\n    Select\n  },\n  name: 'PollForm',\n  props: ['visible'],\n  data: () => ({\n    pollType: 'single',\n    options: ['', ''],\n    expiryAmount: 10,\n    expiryUnit: 'minutes'\n  }),\n  computed: {\n    pollLimits () {\n      return this.$store.state.instance.pollLimits\n    },\n    maxOptions () {\n      return this.pollLimits.max_options\n    },\n    maxLength () {\n      return this.pollLimits.max_option_chars\n    },\n    expiryUnits () {\n      const allUnits = ['minutes', 'hours', 'days']\n      const expiry = this.convertExpiryFromUnit\n      return allUnits.filter(\n        unit => this.pollLimits.max_expiration >= expiry(unit, 1)\n      )\n    },\n    minExpirationInCurrentUnit () {\n      return Math.ceil(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.min_expiration\n        )\n      )\n    },\n    maxExpirationInCurrentUnit () {\n      return Math.floor(\n        this.convertExpiryToUnit(\n          this.expiryUnit,\n          this.pollLimits.max_expiration\n        )\n      )\n    }\n  },\n  methods: {\n    clear () {\n      this.pollType = 'single'\n      this.options = ['', '']\n      this.expiryAmount = 10\n      this.expiryUnit = 'minutes'\n    },\n    nextOption (index) {\n      const element = this.$el.querySelector(`#poll-${index + 1}`)\n      if (element) {\n        element.focus()\n      } else {\n        // Try adding an option and try focusing on it\n        const addedOption = this.addOption()\n        if (addedOption) {\n          this.$nextTick(function () {\n            this.nextOption(index)\n          })\n        }\n      }\n    },\n    addOption () {\n      if (this.options.length < this.maxOptions) {\n        this.options.push('')\n        return true\n      }\n      return false\n    },\n    deleteOption (index, event) {\n      if (this.options.length > 2) {\n        this.options.splice(index, 1)\n        this.updatePollToParent()\n      }\n    },\n    convertExpiryToUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return (1000 * amount) / DateUtils.MINUTE\n        case 'hours': return (1000 * amount) / DateUtils.HOUR\n        case 'days': return (1000 * amount) / DateUtils.DAY\n      }\n    },\n    convertExpiryFromUnit (unit, amount) {\n      // Note: we want seconds and not milliseconds\n      switch (unit) {\n        case 'minutes': return 0.001 * amount * DateUtils.MINUTE\n        case 'hours': return 0.001 * amount * DateUtils.HOUR\n        case 'days': return 0.001 * amount * DateUtils.DAY\n      }\n    },\n    expiryAmountChange () {\n      this.expiryAmount =\n        Math.max(this.minExpirationInCurrentUnit, this.expiryAmount)\n      this.expiryAmount =\n        Math.min(this.maxExpirationInCurrentUnit, this.expiryAmount)\n      this.updatePollToParent()\n    },\n    updatePollToParent () {\n      const expiresIn = this.convertExpiryFromUnit(\n        this.expiryUnit,\n        this.expiryAmount\n      )\n\n      const options = uniq(this.options.filter(option => option !== ''))\n      if (options.length < 2) {\n        this.$emit('update-poll', { error: this.$t('polls.not_enough_options') })\n        return\n      }\n      this.$emit('update-poll', {\n        options,\n        multiple: this.pollType === 'multiple',\n        expiresIn\n      })\n    }\n  }\n}\n","import { render } from \"./poll_form.vue?vue&type=template&id=a33a297e\"\nimport script from \"./poll_form.js?vue&type=script&lang=js\"\nexport * from \"./poll_form.js?vue&type=script&lang=js\"\n\nimport \"./poll_form.vue?vue&type=style&index=0&id=a33a297e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import statusPoster from '../../services/status_poster/status_poster.service.js'\nimport MediaUpload from '../media_upload/media_upload.vue'\nimport ScopeSelector from '../scope_selector/scope_selector.vue'\nimport EmojiInput from '../emoji_input/emoji_input.vue'\nimport PollForm from '../poll/poll_form.vue'\nimport Attachment from '../attachment/attachment.vue'\nimport Gallery from 'src/components/gallery/gallery.vue'\nimport StatusContent from '../status_content/status_content.vue'\nimport fileTypeService from '../../services/file_type/file_type.service.js'\nimport { findOffset } from '../../services/offset_finder/offset_finder.service.js'\nimport { reject, map, uniqBy, debounce } from 'lodash'\nimport suggestor from '../emoji_input/suggestor.js'\nimport { mapGetters, mapState } from 'vuex'\nimport Checkbox from '../checkbox/checkbox.vue'\nimport Select from '../select/select.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faSmileBeam,\n  faPollH,\n  faUpload,\n  faBan,\n  faTimes,\n  faCircleNotch\n)\n\nconst buildMentionsString = ({ user, attentions = [] }, currentUser) => {\n  let allAttentions = [...attentions]\n\n  allAttentions.unshift(user)\n\n  allAttentions = uniqBy(allAttentions, 'id')\n  allAttentions = reject(allAttentions, { id: currentUser.id })\n\n  const mentions = map(allAttentions, (attention) => {\n    return `@${attention.screen_name}`\n  })\n\n  return mentions.length > 0 ? mentions.join(' ') + ' ' : ''\n}\n\n// Converts a string with px to a number like '2px' -> 2\nconst pxStringToNumber = (str) => {\n  return Number(str.substring(0, str.length - 2))\n}\n\nconst PostStatusForm = {\n  props: [\n    'statusId',\n    'statusText',\n    'statusIsSensitive',\n    'statusPoll',\n    'statusFiles',\n    'statusMediaDescriptions',\n    'statusScope',\n    'statusContentType',\n    'replyTo',\n    'repliedUser',\n    'attentions',\n    'copyMessageScope',\n    'subject',\n    'disableSubject',\n    'disableScopeSelector',\n    'disableVisibilitySelector',\n    'disableNotice',\n    'disableLockWarning',\n    'disablePolls',\n    'disableSensitivityCheckbox',\n    'disableSubmit',\n    'disablePreview',\n    'placeholder',\n    'maxHeight',\n    'postHandler',\n    'preserveFocus',\n    'autoFocus',\n    'fileLimit',\n    'submitOnEnter',\n    'emojiPickerPlacement',\n    'optimisticPosting'\n  ],\n  emits: [\n    'posted',\n    'resize',\n    'mediaplay',\n    'mediapause'\n  ],\n  components: {\n    MediaUpload,\n    EmojiInput,\n    PollForm,\n    ScopeSelector,\n    Checkbox,\n    Select,\n    Attachment,\n    StatusContent,\n    Gallery\n  },\n  mounted () {\n    this.updateIdempotencyKey()\n    this.resize(this.$refs.textarea)\n\n    if (this.replyTo) {\n      const textLength = this.$refs.textarea.value.length\n      this.$refs.textarea.setSelectionRange(textLength, textLength)\n    }\n\n    if (this.replyTo || this.autoFocus) {\n      this.$refs.textarea.focus()\n    }\n  },\n  data () {\n    const preset = this.$route.query.message\n    let statusText = preset || ''\n\n    const { scopeCopy } = this.$store.getters.mergedConfig\n\n    if (this.replyTo) {\n      const currentUser = this.$store.state.users.currentUser\n      statusText = buildMentionsString({ user: this.repliedUser, attentions: this.attentions }, currentUser)\n    }\n\n    const scope = ((this.copyMessageScope && scopeCopy) || this.copyMessageScope === 'direct')\n      ? this.copyMessageScope\n      : this.$store.state.users.currentUser.default_scope\n\n    const { postContentType: contentType, sensitiveByDefault } = this.$store.getters.mergedConfig\n\n    let statusParams = {\n      spoilerText: this.subject || '',\n      status: statusText,\n      nsfw: !!sensitiveByDefault,\n      files: [],\n      poll: {},\n      mediaDescriptions: {},\n      visibility: scope,\n      contentType\n    }\n\n    if (this.statusId) {\n      const statusContentType = this.statusContentType || contentType\n      statusParams = {\n        spoilerText: this.subject || '',\n        status: this.statusText || '',\n        nsfw: this.statusIsSensitive || !!sensitiveByDefault,\n        files: this.statusFiles || [],\n        poll: this.statusPoll || {},\n        mediaDescriptions: this.statusMediaDescriptions || {},\n        visibility: this.statusScope || scope,\n        contentType: statusContentType\n      }\n    }\n\n    return {\n      dropFiles: [],\n      uploadingFiles: false,\n      error: null,\n      posting: false,\n      highlighted: 0,\n      newStatus: statusParams,\n      caret: 0,\n      pollFormVisible: false,\n      showDropIcon: 'hide',\n      dropStopTimeout: null,\n      preview: null,\n      previewLoading: false,\n      emojiInputShown: false,\n      idempotencyKey: ''\n    }\n  },\n  computed: {\n    users () {\n      return this.$store.state.users.users\n    },\n    userDefaultScope () {\n      return this.$store.state.users.currentUser.default_scope\n    },\n    showAllScopes () {\n      return !this.mergedConfig.minimalScopesMode\n    },\n    emojiUserSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.getters.standardEmojiList,\n          ...this.$store.state.instance.customEmoji\n        ],\n        store: this.$store\n      })\n    },\n    emojiSuggestor () {\n      return suggestor({\n        emoji: [\n          ...this.$store.getters.standardEmojiList,\n          ...this.$store.state.instance.customEmoji\n        ]\n      })\n    },\n    emoji () {\n      return this.$store.getters.standardEmojiList || []\n    },\n    customEmoji () {\n      return this.$store.state.instance.customEmoji || []\n    },\n    statusLength () {\n      return this.newStatus.status.length\n    },\n    spoilerTextLength () {\n      return this.newStatus.spoilerText.length\n    },\n    statusLengthLimit () {\n      return this.$store.state.instance.textlimit\n    },\n    hasStatusLengthLimit () {\n      return this.statusLengthLimit > 0\n    },\n    charactersLeft () {\n      return this.statusLengthLimit - (this.statusLength + this.spoilerTextLength)\n    },\n    isOverLengthLimit () {\n      return this.hasStatusLengthLimit && (this.charactersLeft < 0)\n    },\n    minimalScopesMode () {\n      return this.$store.state.instance.minimalScopesMode\n    },\n    alwaysShowSubject () {\n      return this.mergedConfig.alwaysShowSubjectInput\n    },\n    postFormats () {\n      return this.$store.state.instance.postFormats || []\n    },\n    safeDMEnabled () {\n      return this.$store.state.instance.safeDM\n    },\n    pollsAvailable () {\n      return this.$store.state.instance.pollsAvailable &&\n        this.$store.state.instance.pollLimits.max_options >= 2 &&\n        this.disablePolls !== true\n    },\n    hideScopeNotice () {\n      return this.disableNotice || this.$store.getters.mergedConfig.hideScopeNotice\n    },\n    pollContentError () {\n      return this.pollFormVisible &&\n        this.newStatus.poll &&\n        this.newStatus.poll.error\n    },\n    showPreview () {\n      return !this.disablePreview && (!!this.preview || this.previewLoading)\n    },\n    emptyStatus () {\n      return this.newStatus.status.trim() === '' && this.newStatus.files.length === 0\n    },\n    uploadFileLimitReached () {\n      return this.newStatus.files.length >= this.fileLimit\n    },\n    isEdit () {\n      return typeof this.statusId !== 'undefined' && this.statusId.trim() !== ''\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      mobileLayout: state => state.interface.mobileLayout\n    })\n  },\n  watch: {\n    newStatus: {\n      deep: true,\n      handler () {\n        this.statusChanged()\n      }\n    }\n  },\n  methods: {\n    statusChanged () {\n      this.autoPreview()\n      this.updateIdempotencyKey()\n    },\n    clearStatus () {\n      const newStatus = this.newStatus\n      this.newStatus = {\n        status: '',\n        spoilerText: '',\n        files: [],\n        visibility: newStatus.visibility,\n        contentType: newStatus.contentType,\n        poll: {},\n        mediaDescriptions: {}\n      }\n      this.pollFormVisible = false\n      this.$refs.mediaUpload && this.$refs.mediaUpload.clearFile()\n      this.clearPollForm()\n      if (this.preserveFocus) {\n        this.$nextTick(() => {\n          this.$refs.textarea.focus()\n        })\n      }\n      const el = this.$el.querySelector('textarea')\n      el.style.height = 'auto'\n      el.style.height = undefined\n      this.error = null\n      if (this.preview) this.previewStatus()\n    },\n    async postStatus (event, newStatus, opts = {}) {\n      if (this.posting && !this.optimisticPosting) { return }\n      if (this.disableSubmit) { return }\n      if (this.emojiInputShown) { return }\n      if (this.submitOnEnter) {\n        event.stopPropagation()\n        event.preventDefault()\n      }\n\n      if (this.optimisticPosting && (this.emptyStatus || this.isOverLengthLimit)) { return }\n\n      if (this.emptyStatus) {\n        this.error = this.$t('post_status.empty_status_error')\n        return\n      }\n\n      const poll = this.pollFormVisible ? this.newStatus.poll : {}\n      if (this.pollContentError) {\n        this.error = this.pollContentError\n        return\n      }\n\n      this.posting = true\n\n      try {\n        await this.setAllMediaDescriptions()\n      } catch (e) {\n        this.error = this.$t('post_status.media_description_error')\n        this.posting = false\n        return\n      }\n\n      const postingOptions = {\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: newStatus.files,\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll,\n        idempotencyKey: this.idempotencyKey\n      }\n\n      const postHandler = this.postHandler ? this.postHandler : statusPoster.postStatus\n\n      postHandler(postingOptions).then((data) => {\n        if (!data.error) {\n          this.clearStatus()\n          this.$emit('posted', data)\n        } else {\n          this.error = data.error\n        }\n        this.posting = false\n      })\n    },\n    previewStatus () {\n      if (this.emptyStatus && this.newStatus.spoilerText.trim() === '') {\n        this.preview = { error: this.$t('post_status.preview_empty') }\n        this.previewLoading = false\n        return\n      }\n      const newStatus = this.newStatus\n      this.previewLoading = true\n      statusPoster.postStatus({\n        status: newStatus.status,\n        spoilerText: newStatus.spoilerText || null,\n        visibility: newStatus.visibility,\n        sensitive: newStatus.nsfw,\n        media: [],\n        store: this.$store,\n        inReplyToStatusId: this.replyTo,\n        contentType: newStatus.contentType,\n        poll: {},\n        preview: true\n      }).then((data) => {\n        // Don't apply preview if not loading, because it means\n        // user has closed the preview manually.\n        if (!this.previewLoading) return\n        if (!data.error) {\n          this.preview = data\n        } else {\n          this.preview = { error: data.error }\n        }\n      }).catch((error) => {\n        this.preview = { error }\n      }).finally(() => {\n        this.previewLoading = false\n      })\n    },\n    debouncePreviewStatus: debounce(function () { this.previewStatus() }, 500),\n    autoPreview () {\n      if (!this.preview) return\n      this.previewLoading = true\n      this.debouncePreviewStatus()\n    },\n    closePreview () {\n      this.preview = null\n      this.previewLoading = false\n    },\n    togglePreview () {\n      if (this.showPreview) {\n        this.closePreview()\n      } else {\n        this.previewStatus()\n      }\n    },\n    addMediaFile (fileInfo) {\n      this.newStatus.files.push(fileInfo)\n      this.$emit('resize', { delayed: true })\n    },\n    removeMediaFile (fileInfo) {\n      const index = this.newStatus.files.indexOf(fileInfo)\n      this.newStatus.files.splice(index, 1)\n      this.$emit('resize')\n    },\n    editAttachment (fileInfo, newText) {\n      this.newStatus.mediaDescriptions[fileInfo.id] = newText\n    },\n    shiftUpMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index - 1, 0, fileInfo)\n    },\n    shiftDnMediaFile (fileInfo) {\n      const { files } = this.newStatus\n      const index = this.newStatus.files.indexOf(fileInfo)\n      files.splice(index, 1)\n      files.splice(index + 1, 0, fileInfo)\n    },\n    uploadFailed (errString, templateArgs) {\n      templateArgs = templateArgs || {}\n      this.error = this.$t('upload.error.base') + ' ' + this.$t('upload.error.' + errString, templateArgs)\n    },\n    startedUploadingFiles () {\n      this.uploadingFiles = true\n    },\n    finishedUploadingFiles () {\n      this.$emit('resize')\n      this.uploadingFiles = false\n    },\n    type (fileInfo) {\n      return fileTypeService.fileType(fileInfo.mimetype)\n    },\n    paste (e) {\n      this.autoPreview()\n      this.resize(e)\n      if (e.clipboardData.files.length > 0) {\n        // prevent pasting of file as text\n        e.preventDefault()\n        // Strangely, files property gets emptied after event propagation\n        // Trying to wrap it in array doesn't work. Plus I doubt it's possible\n        // to hold more than one file in clipboard.\n        this.dropFiles = [e.clipboardData.files[0]]\n      }\n    },\n    fileDrop (e) {\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        e.preventDefault() // allow dropping text like before\n        this.dropFiles = e.dataTransfer.files\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'hide'\n      }\n    },\n    fileDragStop (e) {\n      // The false-setting is done with delay because just using leave-events\n      // directly caused unwanted flickering, this is not perfect either but\n      // much less noticable.\n      clearTimeout(this.dropStopTimeout)\n      this.showDropIcon = 'fade'\n      this.dropStopTimeout = setTimeout(() => (this.showDropIcon = 'hide'), 500)\n    },\n    fileDrag (e) {\n      e.dataTransfer.dropEffect = this.uploadFileLimitReached ? 'none' : 'copy'\n      if (e.dataTransfer && e.dataTransfer.types.includes('Files')) {\n        clearTimeout(this.dropStopTimeout)\n        this.showDropIcon = 'show'\n      }\n    },\n    onEmojiInputInput (e) {\n      this.$nextTick(() => {\n        this.resize(this.$refs.textarea)\n      })\n    },\n    resize (e) {\n      const target = e.target || e\n      if (!(target instanceof window.Element)) { return }\n\n      // Reset to default height for empty form, nothing else to do here.\n      if (target.value === '') {\n        target.style.height = null\n        this.$emit('resize')\n        return\n      }\n\n      const formRef = this.$refs.form\n      const bottomRef = this.$refs.bottom\n      /* Scroller is either `window` (replies in TL), sidebar (main post form,\n       * replies in notifs) or mobile post form. Note that getting and setting\n       * scroll is different for `Window` and `Element`s\n       */\n      const bottomBottomPaddingStr = window.getComputedStyle(bottomRef)['padding-bottom']\n      const bottomBottomPadding = pxStringToNumber(bottomBottomPaddingStr)\n\n      const scrollerRef = this.$el.closest('.column.-scrollable') ||\n            this.$el.closest('.post-form-modal-view') ||\n            window\n\n      // Getting info about padding we have to account for, removing 'px' part\n      const topPaddingStr = window.getComputedStyle(target)['padding-top']\n      const bottomPaddingStr = window.getComputedStyle(target)['padding-bottom']\n      const topPadding = pxStringToNumber(topPaddingStr)\n      const bottomPadding = pxStringToNumber(bottomPaddingStr)\n      const vertPadding = topPadding + bottomPadding\n\n      const oldHeight = pxStringToNumber(target.style.height)\n\n      /* Explanation:\n       *\n       * https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight\n       * scrollHeight returns element's scrollable content height, i.e. visible\n       * element + overscrolled parts of it. We use it to determine when text\n       * inside the textarea exceeded its height, so we can set height to prevent\n       * overscroll, i.e. make textarea grow with the text. HOWEVER, since we\n       * explicitly set new height, scrollHeight won't go below that, so we can't\n       * SHRINK the textarea when there's extra space. To workaround that we set\n       * height to 'auto' which makes textarea tiny again, so that scrollHeight\n       * will match text height again. HOWEVER, shrinking textarea can screw with\n       * the scroll since there might be not enough padding around form-bottom to even\n       * warrant a scroll, so it will jump to 0 and refuse to move anywhere,\n       * so we check current scroll position before shrinking and then restore it\n       * with needed delta.\n       */\n\n      // this part has to be BEFORE the content size update\n      const currentScroll = scrollerRef === window\n        ? scrollerRef.scrollY\n        : scrollerRef.scrollTop\n      const scrollerHeight = scrollerRef === window\n        ? scrollerRef.innerHeight\n        : scrollerRef.offsetHeight\n      const scrollerBottomBorder = currentScroll + scrollerHeight\n\n      // BEGIN content size update\n      target.style.height = 'auto'\n      const heightWithoutPadding = Math.floor(target.scrollHeight - vertPadding)\n      let newHeight = this.maxHeight ? Math.min(heightWithoutPadding, this.maxHeight) : heightWithoutPadding\n      // This is a bit of a hack to combat target.scrollHeight being different on every other input\n      // on some browsers for whatever reason. Don't change the height if difference is 1px or less.\n      if (Math.abs(newHeight - oldHeight) <= 1) {\n        newHeight = oldHeight\n      }\n      target.style.height = `${newHeight}px`\n      this.$emit('resize', newHeight)\n      // END content size update\n\n      // We check where the bottom border of form-bottom element is, this uses findOffset\n      // to find offset relative to scrollable container (scroller)\n      const bottomBottomBorder = bottomRef.offsetHeight + findOffset(bottomRef, scrollerRef).top + bottomBottomPadding\n\n      const isBottomObstructed = scrollerBottomBorder < bottomBottomBorder\n      const isFormBiggerThanScroller = scrollerHeight < formRef.offsetHeight\n      const bottomChangeDelta = bottomBottomBorder - scrollerBottomBorder\n      // The intention is basically this;\n      // Keep form-bottom always visible so that submit button is in view EXCEPT\n      // if form element bigger than scroller and caret isn't at the end, so that\n      // if you scroll up and edit middle of text you won't get scrolled back to bottom\n      const shouldScrollToBottom = isBottomObstructed &&\n            !(isFormBiggerThanScroller &&\n              this.$refs.textarea.selectionStart !== this.$refs.textarea.value.length)\n      const totalDelta = shouldScrollToBottom ? bottomChangeDelta : 0\n      const targetScroll = Math.round(currentScroll + totalDelta)\n\n      if (scrollerRef === window) {\n        scrollerRef.scroll(0, targetScroll)\n      } else {\n        scrollerRef.scrollTop = targetScroll\n      }\n    },\n    showEmojiPicker () {\n      this.$refs.textarea.focus()\n      this.$refs['emoji-input'].triggerShowPicker()\n    },\n    clearError () {\n      this.error = null\n    },\n    changeVis (visibility) {\n      this.newStatus.visibility = visibility\n    },\n    togglePollForm () {\n      this.pollFormVisible = !this.pollFormVisible\n    },\n    setPoll (poll) {\n      this.newStatus.poll = poll\n    },\n    clearPollForm () {\n      if (this.$refs.pollForm) {\n        this.$refs.pollForm.clear()\n      }\n    },\n    dismissScopeNotice () {\n      this.$store.dispatch('setOption', { name: 'hideScopeNotice', value: true })\n    },\n    setMediaDescription (id) {\n      const description = this.newStatus.mediaDescriptions[id]\n      if (!description || description.trim() === '') return\n      return statusPoster.setMediaDescription({ store: this.$store, id, description })\n    },\n    setAllMediaDescriptions () {\n      const ids = this.newStatus.files.map(file => file.id)\n      return Promise.all(ids.map(id => this.setMediaDescription(id)))\n    },\n    handleEmojiInputShow (value) {\n      this.emojiInputShown = value\n    },\n    updateIdempotencyKey () {\n      this.idempotencyKey = Date.now().toString()\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    }\n  }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=161f4536\"\nimport script from \"./post_status_form.js?vue&type=script&lang=js\"\nexport * from \"./post_status_form.js?vue&type=script&lang=js\"\n\nimport \"./post_status_form.vue?vue&type=style&index=0&id=161f4536&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<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","import { render } from \"./progress_button.vue?vue&type=template&id=9f751ae6\"\nimport script from \"./progress_button.vue?vue&type=script&lang=js\"\nexport * from \"./progress_button.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"remote-follow\">\n    <form\n      method=\"POST\"\n      :action=\"subscribeUrl\"\n    >\n      <input\n        type=\"hidden\"\n        name=\"nickname\"\n        :value=\"user.screen_name\"\n      >\n      <input\n        type=\"hidden\"\n        name=\"profile\"\n        value=\"\"\n      >\n      <button\n        click=\"submit\"\n        class=\"button-default remote-button\"\n      >\n        {{ $t('user_card.remote_follow') }}\n      </button>\n    </form>\n  </div>\n</template>\n\n<script src=\"./remote_follow.js\"></script>\n\n<style lang=\"scss\">\n.remote-follow {\n  max-width: 220px;\n\n  .remote-button {\n    width: 100%;\n    min-height: 2em;\n  }\n}\n</style>\n","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","import { render } from \"./remote_follow.vue?vue&type=template&id=2aed8421\"\nimport script from \"./remote_follow.js?vue&type=script&lang=js\"\nexport * from \"./remote_follow.js?vue&type=script&lang=js\"\n\nimport \"./remote_follow.vue?vue&type=style&index=0&id=2aed8421&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    v-if=\"!showNothing\"\n    class=\"ScopeSelector\"\n  >\n    <button\n      v-if=\"showDirect\"\n      class=\"button-unstyled scope\"\n      :class=\"css.direct\"\n      :title=\"$t('post_status.scope.direct')\"\n      type=\"button\"\n      @click=\"changeVis('direct')\"\n    >\n      <FAIcon\n        icon=\"envelope\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPrivate\"\n      class=\"button-unstyled scope\"\n      :class=\"css.private\"\n      :title=\"$t('post_status.scope.private')\"\n      type=\"button\"\n      @click=\"changeVis('private')\"\n    >\n      <FAIcon\n        icon=\"lock\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showUnlisted\"\n      class=\"button-unstyled scope\"\n      :class=\"css.unlisted\"\n      :title=\"$t('post_status.scope.unlisted')\"\n      type=\"button\"\n      @click=\"changeVis('unlisted')\"\n    >\n      <FAIcon\n        icon=\"lock-open\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n    {{ ' ' }}\n    <button\n      v-if=\"showPublic\"\n      class=\"button-unstyled scope\"\n      :class=\"css.public\"\n      :title=\"$t('post_status.scope.public')\"\n      type=\"button\"\n      @click=\"changeVis('public')\"\n    >\n      <FAIcon\n        icon=\"globe\"\n        class=\"fa-scale-110 fa-old-padding\"\n      />\n    </button>\n  </div>\n</template>\n\n<script src=\"./scope_selector.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.ScopeSelector {\n\n  .scope {\n    display: inline-block;\n    cursor: pointer;\n    min-width: 1.3em;\n    min-height: 1.3em;\n    text-align: center;\n\n    &.selected svg {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen\n)\n\nconst ScopeSelector = {\n  props: [\n    'showAll',\n    'userDefault',\n    'originalScope',\n    'initialScope',\n    'onScopeChange'\n  ],\n  data () {\n    return {\n      currentScope: this.initialScope\n    }\n  },\n  computed: {\n    showNothing () {\n      return !this.showPublic && !this.showUnlisted && !this.showPrivate && !this.showDirect\n    },\n    showPublic () {\n      return this.originalScope !== 'direct' && this.shouldShow('public')\n    },\n    showUnlisted () {\n      return this.originalScope !== 'direct' && this.shouldShow('unlisted')\n    },\n    showPrivate () {\n      return this.originalScope !== 'direct' && this.shouldShow('private')\n    },\n    showDirect () {\n      return this.shouldShow('direct')\n    },\n    css () {\n      return {\n        public: { selected: this.currentScope === 'public' },\n        unlisted: { selected: this.currentScope === 'unlisted' },\n        private: { selected: this.currentScope === 'private' },\n        direct: { selected: this.currentScope === 'direct' }\n      }\n    }\n  },\n  methods: {\n    shouldShow (scope) {\n      return this.showAll ||\n        this.currentScope === scope ||\n        this.originalScope === scope ||\n        this.userDefault === scope ||\n        scope === 'direct'\n    },\n    changeVis (scope) {\n      this.currentScope = scope\n      this.onScopeChange && this.onScopeChange(scope)\n    }\n  }\n}\n\nexport default ScopeSelector\n","import { render } from \"./scope_selector.vue?vue&type=template&id=cbc95e90\"\nimport script from \"./scope_selector.js?vue&type=script&lang=js\"\nexport * from \"./scope_selector.js?vue&type=script&lang=js\"\n\nimport \"./scope_selector.vue?vue&type=style&index=0&id=cbc95e90&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faChevronDown\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faChevronDown\n)\n\nexport default {\n  emits: ['update:modelValue'],\n  props: [\n    'modelValue',\n    'disabled',\n    'unstyled',\n    'kind'\n  ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=099d3e32\"\nimport script from \"./select.js?vue&type=script&lang=js\"\nexport * from \"./select.js?vue&type=script&lang=js\"\n\nimport \"./select.vue?vue&type=style&index=0&id=099d3e32&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <label\n    class=\"Select input\"\n    :class=\"{ disabled, unstyled }\"\n  >\n    <select\n      :disabled=\"disabled\"\n      :value=\"modelValue\"\n      @change=\"$emit('update:modelValue', $event.target.value)\"\n    >\n      <slot />\n    </select>\n    {{ ' ' }}\n    <FAIcon\n      class=\"select-down-icon\"\n      icon=\"chevron-down\"\n    />\n  </label>\n</template>\n\n<script src=\"./select.js\"> </script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* TODO fix order of styles */\nlabel.Select {\n  padding: 0;\n\n  select {\n    -webkit-appearance: none;\n    -moz-appearance: none;\n    appearance: none;\n    background: transparent;\n    border: none;\n    color: $fallback--text;\n    color: var(--inputText, --text, $fallback--text);\n    margin: 0;\n    padding: 0 2em 0 .2em;\n    font-family: sans-serif;\n    font-family: var(--inputFont, sans-serif);\n    font-size: 1em;\n    width: 100%;\n    z-index: 1;\n    height: 2em;\n    line-height: 16px;\n  }\n\n  .select-down-icon {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    right: 5px;\n    height: 100%;\n    width: 0.875em;\n    color: $fallback--text;\n    color: var(--inputText, $fallback--text);\n    line-height: 2;\n    z-index: 0;\n    pointer-events: none;\n  }\n\n}\n</style>\n","<template>\n  <div\n    v-if=\"!hideStatus\"\n    ref=\"root\"\n    class=\"Status\"\n    :class=\"[{ '-focused': isFocused }, { '-conversation': inlineExpanded }]\"\n  >\n    <div\n      v-if=\"error\"\n      class=\"alert error\"\n    >\n      {{ error }}\n      <span\n        class=\"fa-scale-110 fa-old-padding\"\n        @click=\"clearError\"\n      >\n        <FAIcon icon=\"times\" />\n      </span>\n    </div>\n    <template v-if=\"muted && !isPreview\">\n      <div class=\"status-container muted\">\n        <small class=\"status-username\">\n          <FAIcon\n            v-if=\"muted && retweet\"\n            class=\"fa-scale-110 fa-old-padding repeat-icon\"\n            icon=\"retweet\"\n          />\n          <user-link\n            :user=\"status.user\"\n            :at=\"false\"\n          />\n        </small>\n        <small\n          v-if=\"showReasonMutedThread\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted') }}\n        </small>\n        <small\n          v-if=\"showReasonMutedThread && muteWordHits.length > 0\"\n          class=\"mute-thread\"\n        >\n          {{ $t('status.thread_muted_and_words') }}\n        </small>\n        <small\n          class=\"mute-words\"\n          :title=\"muteWordHits.join(', ')\"\n        >\n          {{ muteWordHits.join(', ') }}\n        </small>\n        <button\n          class=\"unmute button-unstyled\"\n          @click.prevent=\"toggleMute\"\n        >\n          <FAIcon\n            icon=\"eye-slash\"\n            class=\"fa-scale-110 fa-old-padding\"\n          />\n        </button>\n      </div>\n    </template>\n    <template v-else>\n      <div\n        v-if=\"showPinned\"\n        class=\"pin\"\n      >\n        <FAIcon\n          icon=\"thumbtack\"\n          class=\"faint\"\n        />\n        <span class=\"faint\">{{ $t('status.pinned') }}</span>\n      </div>\n      <div\n        v-if=\"retweet && !noHeading && !inConversation\"\n        :class=\"[repeaterClass, { highlighted: repeaterStyle }]\"\n        :style=\"[repeaterStyle]\"\n        class=\"status-container repeat-info\"\n      >\n        <UserAvatar\n          v-if=\"retweet\"\n          class=\"left-side repeater-avatar\"\n          :bot=\"rtBotIndicator\"\n          :better-shadow=\"betterShadow\"\n          :user=\"statusoid.user\"\n        />\n        <div class=\"right-side faint\">\n          <span\n            class=\"status-username repeater-name\"\n            :title=\"retweeter\"\n          >\n            <router-link\n              v-if=\"retweeterHtml\"\n              :to=\"retweeterProfileLink\"\n            >\n              <RichContent\n                :html=\"retweeterHtml\"\n                :emoji=\"retweeterUser.emoji\"\n              />\n            </router-link>\n            <router-link\n              v-else\n              :to=\"retweeterProfileLink\"\n            >{{ retweeter }}</router-link>\n          </span>\n          {{ ' ' }}\n          <FAIcon\n            icon=\"retweet\"\n            class=\"repeat-icon\"\n            :title=\"$t('tool_tip.repeat')\"\n          />\n          {{ $t('timeline.repeated') }}\n        </div>\n      </div>\n\n      <div\n        v-if=\"!deleted\"\n        :class=\"[userClass, { highlighted: userStyle, '-repeat': retweet && !inConversation }]\"\n        :style=\"[ userStyle ]\"\n        class=\"status-container\"\n        :data-tags=\"tags\"\n      >\n        <div\n          v-if=\"!noHeading\"\n          class=\"left-side\"\n        >\n          <a\n            :href=\"$router.resolve(userProfileLink).href\"\n            @click.prevent\n          >\n            <UserPopover\n              :user-id=\"status.user.id\"\n              :overlay-centers=\"true\"\n            >\n              <UserAvatar\n                class=\"post-avatar\"\n                :bot=\"botIndicator\"\n                :compact=\"compact\"\n                :better-shadow=\"betterShadow\"\n                :user=\"status.user\"\n              />\n            </UserPopover>\n          </a>\n        </div>\n        <div class=\"right-side\">\n          <div\n            v-if=\"!noHeading\"\n            class=\"status-heading\"\n          >\n            <div class=\"heading-name-row\">\n              <div class=\"heading-left\">\n                <h4\n                  v-if=\"status.user.name_html\"\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  <RichContent\n                    :html=\"status.user.name\"\n                    :emoji=\"status.user.emoji\"\n                  />\n                </h4>\n                <h4\n                  v-else\n                  class=\"status-username\"\n                  :title=\"status.user.name\"\n                >\n                  {{ status.user.name }}\n                </h4>\n                <user-link\n                  class=\"account-name\"\n                  :title=\"status.user.screen_name_ui\"\n                  :user=\"status.user\"\n                  :at=\"false\"\n                />\n                <img\n                  v-if=\"!!(status.user && status.user.favicon)\"\n                  class=\"status-favicon\"\n                  :src=\"status.user.favicon\"\n                >\n              </div>\n\n              <span class=\"heading-right\">\n                <router-link\n                  class=\"timeago faint-link\"\n                  :to=\"{ name: 'conversation', params: { id: status.id } }\"\n                >\n                  <Timeago\n                    :time=\"status.created_at\"\n                    :auto-update=\"60\"\n                  />\n                </router-link>\n                <span\n                  v-if=\"status.visibility\"\n                  class=\"visibility-icon\"\n                  :title=\"visibilityLocalized\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"visibilityIcon(status.visibility)\"\n                  />\n                </span>\n                <button\n                  v-if=\"expandable && !isPreview\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.expand')\"\n                  @click.prevent=\"toggleExpanded\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    icon=\"plus-square\"\n                  />\n                </button>\n                <button\n                  v-if=\"unmuted\"\n                  class=\"button-unstyled\"\n                  @click.prevent=\"toggleMute\"\n                >\n                  <FAIcon\n                    fixed-width\n                    icon=\"eye-slash\"\n                    class=\"fa-scale-110\"\n                  />\n                </button>\n                <button\n                  v-if=\"inThreadForest && replies && replies.length && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"threadShowing ? $t('status.thread_hide') : $t('status.thread_show')\"\n                  :aria-expanded=\"threadShowing ? 'true' : 'false'\"\n                  @click.prevent=\"toggleThreadDisplay\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"threadShowing ? 'chevron-up' : 'chevron-down'\"\n                  />\n                </button>\n                <button\n                  v-if=\"dive && !simpleTree\"\n                  class=\"button-unstyled\"\n                  :title=\"$t('status.show_only_conversation_under_this')\"\n                  @click.prevent=\"dive\"\n                >\n                  <FAIcon\n                    fixed-width\n                    class=\"fa-scale-110\"\n                    :icon=\"'angle-double-right'\"\n                  />\n                </button>\n              </span>\n            </div>\n            <div\n              v-if=\"isReply || hasMentionsLine\"\n              class=\"heading-reply-row\"\n            >\n              <span\n                v-if=\"isReply\"\n                class=\"glued-label reply-glued-label\"\n              >\n                <StatusPopover\n                  v-if=\"!isPreview\"\n                  :status-id=\"status.parent_visible && status.in_reply_to_status_id\"\n                  class=\"reply-to-popover\"\n                  style=\"min-width: 0\"\n                  :class=\"{ '-strikethrough': !status.parent_visible }\"\n                >\n                  <button\n                    class=\"button-unstyled reply-to\"\n                    :aria-label=\"$t('tool_tip.reply')\"\n                    @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                  >\n                    <FAIcon\n                      class=\"fa-scale-110 fa-old-padding\"\n                      icon=\"reply\"\n                      flip=\"horizontal\"\n                    />\n                    {{ ' ' }}\n                    <span\n                      class=\"reply-to-text\"\n                    >\n                      {{ $t('status.reply_to') }}\n                    </span>\n                  </button>\n                </StatusPopover>\n\n                <span\n                  v-else\n                  class=\"reply-to-no-popover\"\n                >\n                  <span class=\"reply-to-text\">{{ $t('status.reply_to') }}</span>\n                </span>\n                <MentionLink\n                  :content=\"replyToName\"\n                  :url=\"replyProfileLink\"\n                  :user-id=\"status.in_reply_to_user_id\"\n                  :user-screen-name=\"status.in_reply_to_screen_name\"\n                />\n              </span>\n\n              <!-- This little wrapper is made for sole purpose of \"gluing\" -->\n              <!-- \"Mentions\" label to the first mention -->\n              <span\n                v-if=\"hasMentionsLine\"\n                class=\"glued-label\"\n              >\n                <span\n                  class=\"mentions\"\n                  :aria-label=\"$t('tool_tip.mentions')\"\n                  @click.prevent=\"gotoOriginal(status.in_reply_to_status_id)\"\n                >\n                  <span\n                    class=\"mentions-text\"\n                  >\n                    {{ $t('status.mentions') }}\n                  </span>\n                </span>\n                <MentionsLine\n                  v-if=\"hasMentionsLine\"\n                  :mentions=\"mentionsLine.slice(0, 1)\"\n                  class=\"mentions-line-first\"\n                />\n              </span>\n              {{ ' ' }}\n              <MentionsLine\n                v-if=\"hasMentionsLine\"\n                :mentions=\"mentionsLine.slice(1)\"\n                class=\"mentions-line\"\n              />\n            </div>\n            <div\n              v-if=\"isEdited && editingAvailable && !isPreview\"\n              class=\"heading-edited-row\"\n            >\n              <i18n-t\n                keypath=\"status.edited_at\"\n                tag=\"span\"\n              >\n                <template #time>\n                  <Timeago\n                    template-key=\"time.in_past\"\n                    :time=\"status.edited_at\"\n                    :auto-update=\"60\"\n                    :long-format=\"true\"\n                  />\n                </template>\n              </i18n-t>\n            </div>\n          </div>\n\n          <StatusContent\n            ref=\"content\"\n            :status=\"status\"\n            :no-heading=\"noHeading\"\n            :highlight=\"highlight\"\n            :focused=\"isFocused\"\n            :controlled-showing-tall=\"controlledShowingTall\"\n            :controlled-expanding-subject=\"controlledExpandingSubject\"\n            :controlled-showing-long-subject=\"controlledShowingLongSubject\"\n            :controlled-toggle-showing-tall=\"controlledToggleShowingTall\"\n            :controlled-toggle-expanding-subject=\"controlledToggleExpandingSubject\"\n            :controlled-toggle-showing-long-subject=\"controlledToggleShowingLongSubject\"\n            @mediaplay=\"addMediaPlaying($event)\"\n            @mediapause=\"removeMediaPlaying($event)\"\n            @parseReady=\"setHeadTailLinks\"\n          />\n\n          <div\n            v-if=\"inConversation && !isPreview && replies && replies.length\"\n            class=\"replies\"\n          >\n            <button\n              v-if=\"showOtherRepliesAsButton && replies.length > 1\"\n              class=\"button-unstyled -link faint\"\n              :title=\"$tc('status.ancestor_follow', replies.length - 1, { numReplies: replies.length - 1 })\"\n              @click.prevent=\"dive\"\n            >\n              {{ $tc('status.replies_list_with_others', replies.length - 1, { numReplies: replies.length - 1 }) }}\n            </button>\n            <span\n              v-else\n              class=\"faint\"\n            >\n              {{ $t('status.replies_list') }}\n            </span>\n            <StatusPopover\n              v-for=\"reply in replies\"\n              :key=\"reply.id\"\n              :status-id=\"reply.id\"\n            >\n              <button\n                class=\"button-unstyled -link reply-link\"\n                @click.prevent=\"gotoOriginal(reply.id)\"\n              >\n                {{ reply.name }}\n              </button>\n            </StatusPopover>\n          </div>\n\n          <transition name=\"fade\">\n            <div\n              v-if=\"!hidePostStats && isFocused && combinedFavsAndRepeatsUsers.length > 0\"\n              class=\"favs-repeated-users\"\n            >\n              <div class=\"stats\">\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.rebloggedBy && statusFromGlobalRepository.rebloggedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.rebloggedBy\"\n                >\n                  <div class=\"stat-count\">\n                    <a class=\"stat-title\">{{ $t('status.repeats') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.rebloggedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <UserListPopover\n                  v-if=\"statusFromGlobalRepository.favoritedBy && statusFromGlobalRepository.favoritedBy.length > 0\"\n                  :users=\"statusFromGlobalRepository.favoritedBy\"\n                >\n                  <div\n                    class=\"stat-count\"\n                  >\n                    <a class=\"stat-title\">{{ $t('status.favorites') }}</a>\n                    <div class=\"stat-number\">\n                      {{ statusFromGlobalRepository.favoritedBy.length }}\n                    </div>\n                  </div>\n                </UserListPopover>\n                <div class=\"avatar-row\">\n                  <AvatarList :users=\"combinedFavsAndRepeatsUsers\" />\n                </div>\n              </div>\n            </div>\n          </transition>\n\n          <EmojiReactions\n            v-if=\"(mergedConfig.emojiReactionsOnTimeline || isFocused) && (!noHeading && !isPreview)\"\n            :status=\"status\"\n          />\n\n          <div\n            v-if=\"!noHeading && !isPreview\"\n            class=\"status-actions\"\n          >\n            <reply-button\n              :replying=\"replying\"\n              :status=\"status\"\n              @toggle=\"toggleReplying\"\n            />\n            <retweet-button\n              :visibility=\"status.visibility\"\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <favorite-button\n              :logged-in=\"loggedIn\"\n              :status=\"status\"\n            />\n            <ReactButton\n              v-if=\"loggedIn\"\n              :status=\"status\"\n            />\n            <extra-buttons\n              :status=\"status\"\n              @onError=\"showError\"\n              @onSuccess=\"clearError\"\n            />\n          </div>\n        </div>\n      </div>\n      <div\n        v-else\n        class=\"gravestone\"\n      >\n        <div class=\"left-side\">\n          <UserAvatar\n            class=\"post-avatar\"\n            :compact=\"compact\"\n            :bot=\"botIndicator\"\n          />\n        </div>\n        <div class=\"right-side\">\n          <div class=\"deleted-text\">\n            {{ $t('status.status_deleted') }}\n          </div>\n          <reply-button\n            v-if=\"replying\"\n            :replying=\"replying\"\n            :status=\"status\"\n            @toggle=\"toggleReplying\"\n          />\n        </div>\n      </div>\n      <div\n        v-if=\"replying\"\n        class=\"status-container reply-form\"\n      >\n        <PostStatusForm\n          class=\"reply-body\"\n          :reply-to=\"status.id\"\n          :attentions=\"status.attentions\"\n          :replied-user=\"status.user\"\n          :copy-message-scope=\"status.visibility\"\n          :subject=\"replySubject\"\n          @posted=\"toggleReplying\"\n        />\n      </div>\n    </template>\n  </div>\n</template>\n\n<script src=\"./status.js\"></script>\n\n<style src=\"./status.scss\" lang=\"scss\"></style>\n","<template>\n  <div class=\"ReplyButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"{'-active': replying}\"\n      :title=\"$t('tool_tip.reply')\"\n      @click.prevent=\"$emit('toggle')\"\n    >\n      <FALayers class=\"fa-old-padding-layer\">\n        <FAIcon\n          class=\"fa-scale-110\"\n          icon=\"reply\"\n        />\n        <FAIcon\n          v-if=\"!replying\"\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-8 right-11\"\n          icon=\"plus\"\n        />\n        <FAIcon\n          v-else\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-8 right-11\"\n          icon=\"times\"\n        />\n      </FALayers>\n    </button>\n    <a\n      v-else\n      class=\"button-unstyled interactive\"\n      target=\"_blank\"\n      role=\"button\"\n      :href=\"remoteInteractionLink\"\n    >\n      <FAIcon\n        icon=\"reply\"\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.reply')\"\n      />\n    </a>\n    <span\n      v-if=\"status.replies_count > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.replies_count }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./reply_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import '../../_mixins.scss';\n\n.ReplyButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    &:hover .svg-inline--fa,\n    &.-active .svg-inline--fa {\n      color: $fallback--cBlue;\n      color: var(--cBlue, $fallback--cBlue);\n    }\n\n    @include unfocused-style {\n      .focus-marker {\n        visibility: hidden;\n      }\n    }\n\n    @include focused-style {\n      .focus-marker {\n        visibility: visible;\n      }\n    }\n  }\n\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faReply,\n  faPlus,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faReply,\n  faPlus,\n  faTimes\n)\n\nconst ReplyButton = {\n  name: 'ReplyButton',\n  props: ['status', 'replying'],\n  computed: {\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    },\n    remoteInteractionLink () {\n      return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n    }\n  }\n}\n\nexport default ReplyButton\n","import { render } from \"./reply_button.vue?vue&type=template&id=25e9b206\"\nimport script from \"./reply_button.js?vue&type=script&lang=js\"\nexport * from \"./reply_button.js?vue&type=script&lang=js\"\n\nimport \"./reply_button.vue?vue&type=style&index=0&id=25e9b206&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"FavoriteButton\">\n    <button\n      v-if=\"loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.favorited && '-favorited'\"\n      :title=\"$t('tool_tip.favorite')\"\n      @click.prevent=\"favorite()\"\n    >\n      <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n        <FAIcon\n          class=\"fa-scale-110\"\n          :icon=\"[status.favorited ? 'fas' : 'far', 'star']\"\n          :spin=\"animated\"\n        />\n        <FAIcon\n          v-if=\"status.favorited\"\n          class=\"active-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"check\"\n        />\n        <FAIcon\n          v-if=\"!status.favorited\"\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"plus\"\n        />\n        <FAIcon\n          v-else\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"minus\"\n        />\n      </FALayers>\n    </button>\n    <a\n      v-else\n      class=\"button-unstyled interactive\"\n      target=\"_blank\"\n      role=\"button\"\n      :href=\"remoteInteractionLink\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        :title=\"$t('tool_tip.favorite')\"\n        :icon=\"['far', 'star']\"\n      />\n    </a>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.fave_num > 0\"\n      class=\"action-counter\"\n    >\n      {{ status.fave_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./favorite_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import '../../_mixins.scss';\n\n.FavoriteButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-favorited .svg-inline--fa {\n      color: $fallback--cOrange;\n      color: var(--cOrange, $fallback--cOrange);\n    }\n\n    @include unfocused-style {\n      .focus-marker {\n        visibility: hidden;\n      }\n\n      .active-marker {\n        visibility: visible;\n      }\n    }\n\n    @include focused-style {\n      .focus-marker {\n        visibility: visible;\n      }\n\n      .active-marker {\n        visibility: hidden;\n      }\n    }\n  }\n}\n</style>\n","import { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faStar,\n  faPlus,\n  faMinus,\n  faCheck\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faStar as faStarRegular\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faStar,\n  faStarRegular,\n  faPlus,\n  faMinus,\n  faCheck\n)\n\nconst FavoriteButton = {\n  props: ['status', 'loggedIn'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    favorite () {\n      if (!this.status.favorited) {\n        this.$store.dispatch('favorite', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unfavorite', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    ...mapGetters(['mergedConfig']),\n    remoteInteractionLink () {\n      return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n    }\n  }\n}\n\nexport default FavoriteButton\n","import { render } from \"./favorite_button.vue?vue&type=template&id=8196d38e\"\nimport script from \"./favorite_button.js?vue&type=script&lang=js\"\nexport * from \"./favorite_button.js?vue&type=script&lang=js\"\n\nimport \"./favorite_button.vue?vue&type=style&index=0&id=8196d38e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    class=\"ReactButton\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n    popover-class=\"ReactButton popover-default\"\n    @show=\"onShow\"\n    @close=\"onClose\"\n  >\n    <template #content=\"{close}\">\n      <div class=\"reaction-picker-filter\">\n        <input\n          v-model=\"filterWord\"\n          size=\"1\"\n          :placeholder=\"$t('emoji.search_emoji')\"\n          @input=\"$event.target.composing = false\"\n        >\n      </div>\n      <div class=\"reaction-picker\">\n        <span\n          v-for=\"emoji in commonEmojis\"\n          :key=\"emoji.replacement\"\n          class=\"emoji-button\"\n          :title=\"maybeLocalizedEmojiName(emoji)\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          {{ emoji.replacement }}\n        </span>\n        <div class=\"reaction-picker-divider\" />\n        <span\n          v-for=\"(emoji, key) in emojis\"\n          :key=\"key\"\n          class=\"emoji-button\"\n          :title=\"maybeLocalizedEmojiName(emoji)\"\n          @click=\"addReaction($event, emoji.replacement, close)\"\n        >\n          {{ emoji.replacement }}\n        </span>\n        <div class=\"reaction-bottom-fader\" />\n      </div>\n    </template>\n    <template #trigger>\n      <span\n        class=\"button-unstyled popover-trigger\"\n        :title=\"$t('tool_tip.add_reaction')\"\n      >\n        <FALayers>\n          <FAIcon\n            class=\"fa-scale-110 fa-old-padding\"\n            :icon=\"['far', 'smile-beam']\"\n          />\n          <FAIcon\n            v-show=\"!expanded\"\n            class=\"focus-marker\"\n            transform=\"shrink-6 up-9 right-17\"\n            icon=\"plus\"\n          />\n          <FAIcon\n            v-show=\"expanded\"\n            class=\"focus-marker\"\n            transform=\"shrink-6 up-9 right-17\"\n            icon=\"times\"\n          />\n        </FALayers>\n      </span>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./react_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import '../../_mixins.scss';\n\n.ReactButton {\n  .reaction-picker-filter {\n    padding: 0.5em;\n    display: flex;\n\n    input {\n      flex: 1;\n    }\n  }\n\n  .reaction-picker-divider {\n    height: 1px;\n    width: 100%;\n    margin: 0.5em;\n    background-color: var(--border, $fallback--border);\n  }\n\n  .reaction-picker {\n    width: 10em;\n    height: 9em;\n    font-size: 1.5em;\n    overflow-y: scroll;\n    display: flex;\n    flex-wrap: wrap;\n    padding: 0.5em;\n    text-align: center;\n    align-content: flex-start;\n    user-select: none;\n\n    mask: linear-gradient(to top, white 0, transparent 100%) bottom no-repeat,\n          linear-gradient(to bottom, white 0, transparent 100%) top no-repeat,\n          linear-gradient(to top, white, white);\n    transition: mask-size 150ms;\n    mask-size: 100% 20px, 100% 20px, auto;\n\n    /* Autoprefixed seem to ignore this one, and also syntax is different */\n    -webkit-mask-composite: xor;\n    mask-composite: exclude;\n\n    .emoji-button {\n      cursor: pointer;\n\n      flex-basis: 20%;\n      line-height: 1.5;\n      align-content: center;\n\n      &:hover {\n        transform: scale(1.25);\n      }\n    }\n  }\n\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n\n  }\n\n  .popover-trigger-button {\n    @include unfocused-style {\n      .focus-marker {\n        visibility: hidden;\n      }\n    }\n\n    @include focused-style {\n      .focus-marker {\n        visibility: visible;\n      }\n    }\n  }\n}\n\n</style>\n","import Popover from '../popover/popover.vue'\nimport { ensureFinalFallback } from '../../i18n/languages.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\nimport { trim } from 'lodash'\n\nlibrary.add(\n  faPlus,\n  faTimes,\n  faSmileBeam\n)\n\nconst ReactButton = {\n  props: ['status'],\n  data () {\n    return {\n      filterWord: '',\n      expanded: false\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    onShow () {\n      this.expanded = true\n      this.focusInput()\n    },\n    onClose () {\n      this.expanded = false\n    },\n    focusInput () {\n      this.$nextTick(() => {\n        const input = this.$el.querySelector('input')\n        if (input) input.focus()\n      })\n    },\n    // Vaguely adjusted copypaste from emoji_input and emoji_picker!\n    maybeLocalizedEmojiNamesAndKeywords (emoji) {\n      const names = [emoji.displayText]\n      const keywords = []\n\n      if (emoji.displayTextI18n) {\n        names.push(this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args))\n      }\n\n      if (emoji.annotations) {\n        this.languages.forEach(lang => {\n          names.push(emoji.annotations[lang]?.name)\n\n          keywords.push(...(emoji.annotations[lang]?.keywords || []))\n        })\n      }\n\n      return {\n        names: names.filter(k => k),\n        keywords: keywords.filter(k => k)\n      }\n    },\n    maybeLocalizedEmojiName (emoji) {\n      if (!emoji.annotations) {\n        return emoji.displayText\n      }\n\n      if (emoji.displayTextI18n) {\n        return this.$t(emoji.displayTextI18n.key, emoji.displayTextI18n.args)\n      }\n\n      for (const lang of this.languages) {\n        if (emoji.annotations[lang]?.name) {\n          return emoji.annotations[lang].name\n        }\n      }\n\n      return emoji.displayText\n    }\n  },\n  computed: {\n    commonEmojis () {\n      const hardcodedSet = new Set(['👍', '😠', '👀', '😂', '🔥'])\n      return this.$store.getters.standardEmojiList.filter(emoji => hardcodedSet.has(emoji.replacement))\n    },\n    languages () {\n      return ensureFinalFallback(this.$store.getters.mergedConfig.interfaceLanguage)\n    },\n    emojis () {\n      if (this.filterWord !== '') {\n        const keywordLowercase = trim(this.filterWord.toLowerCase())\n\n        const orderedEmojiList = []\n        for (const emoji of this.$store.getters.standardEmojiList) {\n          const indices = this.maybeLocalizedEmojiNamesAndKeywords(emoji)\n            .keywords\n            .map(k => k.toLowerCase().indexOf(keywordLowercase))\n            .filter(k => k > -1)\n\n          const indexOfKeyword = indices.length ? Math.min(...indices) : -1\n\n          if (indexOfKeyword > -1) {\n            if (!Array.isArray(orderedEmojiList[indexOfKeyword])) {\n              orderedEmojiList[indexOfKeyword] = []\n            }\n            orderedEmojiList[indexOfKeyword].push(emoji)\n          }\n        }\n        return orderedEmojiList.flat()\n      }\n      return this.$store.getters.standardEmojiList || []\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    }\n  }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=33f652d5\"\nimport script from \"./react_button.js?vue&type=script&lang=js\"\nexport * from \"./react_button.js?vue&type=script&lang=js\"\n\nimport \"./react_button.vue?vue&type=style&index=0&id=33f652d5&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"RetweetButton\">\n    <button\n      v-if=\"visibility !== 'private' && visibility !== 'direct' && loggedIn\"\n      class=\"button-unstyled interactive\"\n      :class=\"status.repeated && '-repeated'\"\n      :title=\"$t('tool_tip.repeat')\"\n      @click.prevent=\"retweet()\"\n    >\n      <FALayers class=\"fa-old-padding-layer\">\n        <FAIcon\n          class=\"fa-scale-110\"\n          icon=\"retweet\"\n          :spin=\"animated\"\n        />\n        <FAIcon\n          v-if=\"status.repeated\"\n          class=\"active-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"check\"\n        />\n        <FAIcon\n          v-if=\"!status.repeated\"\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"plus\"\n        />\n        <FAIcon\n          v-else\n          class=\"focus-marker\"\n          transform=\"shrink-6 up-9 right-12\"\n          icon=\"minus\"\n        />\n      </FALayers>\n    </button>\n    <span v-else-if=\"loggedIn\">\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"lock\"\n        :title=\"$t('timeline.no_retweet_hint')\"\n      />\n    </span>\n    <a\n      v-else\n      class=\"button-unstyled interactive\"\n      target=\"_blank\"\n      role=\"button\"\n      :href=\"remoteInteractionLink\"\n    >\n      <FAIcon\n        class=\"fa-scale-110 fa-old-padding\"\n        icon=\"retweet\"\n        :title=\"$t('tool_tip.repeat')\"\n      />\n    </a>\n    <span\n      v-if=\"!mergedConfig.hidePostStats && status.repeat_num > 0\"\n      class=\"no-event\"\n    >\n      {{ status.repeat_num }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./retweet_button.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import '../../_mixins.scss';\n\n.RetweetButton {\n  display: flex;\n\n  > :first-child {\n    padding: 10px;\n    margin: -10px -8px -10px -10px;\n  }\n\n  .action-counter {\n    pointer-events: none;\n    user-select: none;\n  }\n\n  .interactive {\n    .svg-inline--fa {\n      animation-duration: 0.6s;\n    }\n\n    &:hover .svg-inline--fa,\n    &.-repeated .svg-inline--fa {\n      color: $fallback--cGreen;\n      color: var(--cGreen, $fallback--cGreen);\n    }\n\n    @include unfocused-style {\n      .focus-marker {\n        visibility: hidden;\n      }\n\n      .active-marker {\n        visibility: visible;\n      }\n    }\n\n    @include focused-style {\n      .focus-marker {\n        visibility: visible;\n      }\n\n      .active-marker {\n        visibility: hidden;\n      }\n    }\n  }\n}\n</style>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faRetweet,\n  faPlus,\n  faMinus,\n  faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRetweet,\n  faPlus,\n  faMinus,\n  faCheck\n)\n\nconst RetweetButton = {\n  props: ['status', 'loggedIn', 'visibility'],\n  data () {\n    return {\n      animated: false\n    }\n  },\n  methods: {\n    retweet () {\n      if (!this.status.repeated) {\n        this.$store.dispatch('retweet', { id: this.status.id })\n      } else {\n        this.$store.dispatch('unretweet', { id: this.status.id })\n      }\n      this.animated = true\n      setTimeout(() => {\n        this.animated = false\n      }, 500)\n    }\n  },\n  computed: {\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    },\n    remoteInteractionLink () {\n      return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\n    }\n  }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=083207b8\"\nimport script from \"./retweet_button.js?vue&type=script&lang=js\"\nexport * from \"./retweet_button.js?vue&type=script&lang=js\"\n\nimport \"./retweet_button.vue?vue&type=style&index=0&id=083207b8&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    class=\"ExtraButtons\"\n    trigger=\"click\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n    :bound-to=\"{ x: 'container' }\"\n    remove-padding\n    @show=\"onShow\"\n    @close=\"onClose\"\n  >\n    <template #content=\"{close}\">\n      <div class=\"dropdown-menu\">\n        <button\n          v-if=\"canMute && !status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"muteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.mute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"canMute && status.thread_muted\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unmuteConversation\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"eye-slash\"\n          /><span>{{ $t(\"status.unmute_conversation\") }}</span>\n        </button>\n        <button\n          v-if=\"!status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"pinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.pin\") }}</span>\n        </button>\n        <button\n          v-if=\"status.pinned && canPin\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"unpinStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"thumbtack\"\n          /><span>{{ $t(\"status.unpin\") }}</span>\n        </button>\n        <template v-if=\"canBookmark\">\n          <button\n            v-if=\"!status.bookmarked\"\n            class=\"button-default dropdown-item dropdown-item-icon\"\n            @click.prevent=\"bookmarkStatus\"\n            @click=\"close\"\n          >\n            <FAIcon\n              fixed-width\n              :icon=\"['far', 'bookmark']\"\n            /><span>{{ $t(\"status.bookmark\") }}</span>\n          </button>\n          <button\n            v-if=\"status.bookmarked\"\n            class=\"button-default dropdown-item dropdown-item-icon\"\n            @click.prevent=\"unbookmarkStatus\"\n            @click=\"close\"\n          >\n            <FAIcon\n              fixed-width\n              icon=\"bookmark\"\n            /><span>{{ $t(\"status.unbookmark\") }}</span>\n          </button>\n        </template>\n        <button\n          v-if=\"ownStatus && editingAvailable\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"editStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"pen\"\n          /><span>{{ $t(\"status.edit\") }}</span>\n        </button>\n        <button\n          v-if=\"isEdited && editingAvailable\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"showStatusHistory\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"history\"\n          /><span>{{ $t(\"status.status_history\") }}</span>\n        </button>\n        <button\n          v-if=\"canDelete\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"deleteStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"times\"\n          /><span>{{ $t(\"status.delete\") }}</span>\n        </button>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"copyLink\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"share-alt\"\n          /><span>{{ $t(\"status.copy_link\") }}</span>\n        </button>\n        <a\n          v-if=\"!status.is_local\"\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          title=\"Source\"\n          :href=\"status.external_url\"\n          target=\"_blank\"\n        >\n          <FAIcon\n            fixed-width\n            icon=\"external-link-alt\"\n          /><span>{{ $t(\"status.external_source\") }}</span>\n        </a>\n        <button\n          class=\"button-default dropdown-item dropdown-item-icon\"\n          @click.prevent=\"reportStatus\"\n          @click=\"close\"\n        >\n          <FAIcon\n            fixed-width\n            :icon=\"['far', 'flag']\"\n          /><span>{{ $t(\"user_card.report\") }}</span>\n        </button>\n      </div>\n    </template>\n    <template #trigger>\n      <span class=\"button-unstyled popover-trigger\">\n        <FALayers class=\"fa-old-padding-layer\">\n          <FAIcon\n            class=\"fa-scale-110 \"\n            icon=\"ellipsis-h\"\n          />\n          <FAIcon\n            v-show=\"!expanded\"\n            class=\"focus-marker\"\n            transform=\"shrink-6 up-8 right-16\"\n            icon=\"plus\"\n          />\n          <FAIcon\n            v-show=\"expanded\"\n            class=\"focus-marker\"\n            transform=\"shrink-6 up-8 right-16\"\n            icon=\"times\"\n          />\n        </FALayers>\n      </span>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n@import '../../_mixins.scss';\n\n.ExtraButtons {\n  /* override of popover internal stuff */\n  .popover-trigger-button {\n    width: auto;\n  }\n\n  .popover-trigger {\n    position: static;\n    padding: 10px;\n    margin: -10px;\n\n    &:hover .svg-inline--fa {\n      color: $fallback--text;\n      color: var(--text, $fallback--text);\n    }\n\n  }\n\n  .popover-trigger-button {\n    @include unfocused-style {\n      .focus-marker {\n        visibility: hidden;\n      }\n    }\n\n    @include focused-style {\n      .focus-marker {\n        visibility: visible;\n      }\n    }\n  }\n}\n</style>\n","import Popover from '../popover/popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisH,\n  faBookmark,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt,\n  faHistory,\n  faPlus,\n  faTimes\n} from '@fortawesome/free-solid-svg-icons'\nimport {\n  faBookmark as faBookmarkReg,\n  faFlag\n} from '@fortawesome/free-regular-svg-icons'\n\nlibrary.add(\n  faEllipsisH,\n  faBookmark,\n  faBookmarkReg,\n  faEyeSlash,\n  faThumbtack,\n  faShareAlt,\n  faExternalLinkAlt,\n  faFlag,\n  faHistory,\n  faPlus,\n  faTimes\n)\n\nconst ExtraButtons = {\n  props: ['status'],\n  components: { Popover },\n  data () {\n    return {\n      expanded: false\n    }\n  },\n  methods: {\n    onShow () {\n      this.expanded = true\n    },\n    onClose () {\n      this.expanded = false\n    },\n    deleteStatus () {\n      const confirmed = window.confirm(this.$t('status.delete_confirm'))\n      if (confirmed) {\n        this.$store.dispatch('deleteStatus', { id: this.status.id })\n      }\n    },\n    pinStatus () {\n      this.$store.dispatch('pinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unpinStatus () {\n      this.$store.dispatch('unpinStatus', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    muteConversation () {\n      this.$store.dispatch('muteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unmuteConversation () {\n      this.$store.dispatch('unmuteConversation', this.status.id)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    copyLink () {\n      navigator.clipboard.writeText(this.statusLink)\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    bookmarkStatus () {\n      this.$store.dispatch('bookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    unbookmarkStatus () {\n      this.$store.dispatch('unbookmark', { id: this.status.id })\n        .then(() => this.$emit('onSuccess'))\n        .catch(err => this.$emit('onError', err.error.error))\n    },\n    reportStatus () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })\n    },\n    editStatus () {\n      this.$store.dispatch('fetchStatusSource', { id: this.status.id })\n        .then(data => this.$store.dispatch('openEditStatusModal', {\n          statusId: this.status.id,\n          subject: data.spoiler_text,\n          statusText: data.text,\n          statusIsSensitive: this.status.nsfw,\n          statusPoll: this.status.poll,\n          statusFiles: [...this.status.attachments],\n          visibility: this.status.visibility,\n          statusContentType: data.content_type\n        }))\n    },\n    showStatusHistory () {\n      const originalStatus = { ...this.status }\n      const stripFieldsList = ['attachments', 'created_at', 'emojis', 'text', 'raw_html', 'nsfw', 'poll', 'summary', 'summary_raw_html']\n      stripFieldsList.forEach(p => delete originalStatus[p])\n      this.$store.dispatch('openStatusHistoryModal', originalStatus)\n    }\n  },\n  computed: {\n    currentUser () { return this.$store.state.users.currentUser },\n    canDelete () {\n      if (!this.currentUser) { return }\n      return this.currentUser.privileges.includes('messages_delete') || 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    canBookmark () {\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    isEdited () {\n      return this.status.edited_at !== null\n    },\n    editingAvailable () { return this.$store.state.instance.editingAvailable }\n  }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=4b73e784\"\nimport script from \"./extra_buttons.js?vue&type=script&lang=js\"\nexport * from \"./extra_buttons.js?vue&type=script&lang=js\"\n\nimport \"./extra_buttons.vue?vue&type=style&index=0&id=4b73e784&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    ref=\"popover\"\n    trigger=\"hover\"\n    :stay-on-click=\"true\"\n    popover-class=\"popover-default status-popover\"\n    :bound-to=\"{ x: 'container' }\"\n    @show=\"enter\"\n  >\n    <template #trigger>\n      <slot />\n    </template>\n    <template #content>\n      <Status\n        v-if=\"status\"\n        :is-preview=\"true\"\n        :statusoid=\"status\"\n        :compact=\"true\"\n      />\n      <div\n        v-else-if=\"error\"\n        class=\"status-preview-no-content faint\"\n      >\n        {{ $t('status.status_unavailable') }}\n      </div>\n      <div\n        v-else\n        class=\"status-preview-no-content\"\n      >\n        <FAIcon\n          icon=\"circle-notch\"\n          spin\n          size=\"2x\"\n        />\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./status_popover.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.status-popover.popover {\n  font-size: 1rem;\n  min-width: 15em;\n  max-width: 95%;\n\n  border-color: $fallback--border;\n  border-color: var(--border, $fallback--border);\n  border-style: solid;\n  border-width: 1px;\n  border-radius: $fallback--tooltipRadius;\n  border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n\n  /* TODO cleanup this */\n  .Status.Status {\n    border: none;\n  }\n\n  .status-preview-no-content {\n    padding: 1em;\n    text-align: center;\n\n    i {\n      font-size: 2em;\n    }\n  }\n}\n\n</style>\n","import { find } from 'lodash'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\nimport { defineAsyncComponent } from 'vue'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst StatusPopover = {\n  name: 'StatusPopover',\n  props: [\n    'statusId'\n  ],\n  data () {\n    return {\n      error: false\n    }\n  },\n  computed: {\n    status () {\n      return find(this.$store.state.statuses.allStatuses, { id: this.statusId })\n    }\n  },\n  components: {\n    Status: defineAsyncComponent(() => import('../status/status.vue')),\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n  },\n  methods: {\n    enter () {\n      if (!this.status) {\n        if (!this.statusId) {\n          this.error = true\n          return\n        }\n        this.$store.dispatch('fetchStatus', this.statusId)\n          .then(data => (this.error = false))\n          .catch(e => (this.error = true))\n      }\n    }\n  },\n  watch: {\n    status (newStatus, oldStatus) {\n      if (newStatus !== oldStatus) {\n        this.$nextTick(() => this.$refs.popover.updateStyles())\n      }\n    }\n  }\n}\n\nexport default StatusPopover\n","import { render } from \"./status_popover.vue?vue&type=template&id=dab9b54e\"\nimport script from \"./status_popover.js?vue&type=script&lang=js\"\nexport * from \"./status_popover.js?vue&type=script&lang=js\"\n\nimport \"./status_popover.vue?vue&type=style&index=0&id=dab9b54e&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"hover\"\n    placement=\"top\"\n    :offset=\"{ y: 5 }\"\n  >\n    <template #trigger>\n      <slot />\n    </template>\n    <template #content>\n      <div class=\"user-list-popover\">\n        <template v-if=\"users.length\">\n          <div\n            v-for=\"(user) in usersCapped\"\n            :key=\"user.id\"\n            class=\"user-list-row\"\n          >\n            <UserAvatar\n              :user=\"user\"\n              class=\"avatar-small\"\n              :compact=\"true\"\n            />\n            <div class=\"user-list-names\">\n              <!-- eslint-disable vue/no-v-html -->\n              <RichContent\n                class=\"username\"\n                :title=\"'@'+user.screen_name_ui\"\n                :html=\"user.name_html\"\n                :emoji=\"user.emoji\"\n              />\n              <!-- eslint-enable vue/no-v-html -->\n              <span class=\"user-list-screen-name\">{{ user.screen_name_ui }}</span><UnicodeDomainIndicator :user=\"user\" />\n            </div>\n          </div>\n        </template>\n        <template v-else>\n          <FAIcon\n            icon=\"circle-notch\"\n            spin\n            size=\"3x\"\n          />\n        </template>\n      </div>\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./user_list_popover.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.user-list-popover {\n  padding: 0.5em;\n\n  --emoji-size: 16px;\n\n  .user-list-row {\n    padding: 0.25em;\n    display: flex;\n    flex-direction: row;\n\n    .user-list-names {\n      display: flex;\n      flex-direction: column;\n      margin-left: 0.5em;\n      min-width: 5em;\n\n      img {\n        width: 1em;\n        height: 1em;\n      }\n    }\n\n    .user-list-screen-name {\n      font-size: 0.65em;\n    }\n  }\n}\n\n</style>\n","import { defineAsyncComponent } from 'vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faCircleNotch } from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch\n)\n\nconst UserListPopover = {\n  name: 'UserListPopover',\n  props: [\n    'users'\n  ],\n  components: {\n    RichContent,\n    UnicodeDomainIndicator,\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue')),\n    UserAvatar: defineAsyncComponent(() => import('../user_avatar/user_avatar.vue'))\n  },\n  computed: {\n    usersCapped () {\n      return this.users.slice(0, 16)\n    }\n  }\n}\n\nexport default UserListPopover\n","import { render } from \"./user_list_popover.vue?vue&type=template&id=6c7b1f9c\"\nimport script from \"./user_list_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_list_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_list_popover.vue?vue&type=style&index=0&id=6c7b1f9c&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"EmojiReactions\">\n    <UserListPopover\n      v-for=\"(reaction) in emojiReactions\"\n      :key=\"reaction.name\"\n      :users=\"accountsForEmoji[reaction.name]\"\n    >\n      <button\n        class=\"emoji-reaction btn button-default\"\n        :class=\"{ '-picked-reaction': reactedWith(reaction.name), 'not-clickable': !loggedIn }\"\n        @click=\"emojiOnClick(reaction.name, $event)\"\n        @mouseenter=\"fetchEmojiReactionsByIfMissing()\"\n      >\n        <span class=\"reaction-emoji\">{{ reaction.name }}</span>\n        <span>{{ reaction.count }}</span>\n      </button>\n    </UserListPopover>\n    <a\n      v-if=\"tooManyReactions\"\n      class=\"emoji-reaction-expand faint\"\n      href=\"javascript:void(0)\"\n      @click=\"toggleShowAll\"\n    >\n      {{ showAll ? $t('general.show_less') : showMoreString }}\n    </a>\n  </div>\n</template>\n\n<script src=\"./emoji_reactions.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.EmojiReactions {\n  display: flex;\n  margin-top: 0.25em;\n  flex-wrap: wrap;\n\n  .emoji-reaction {\n    padding: 0 0.5em;\n    margin-right: 0.5em;\n    margin-top: 0.5em;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-sizing: border-box;\n\n    .reaction-emoji {\n      width: 1.25em;\n      margin-right: 0.25em;\n    }\n\n    &:focus {\n      outline: none;\n    }\n\n    &.not-clickable {\n      cursor: default;\n      &:hover {\n        box-shadow: $fallback--buttonShadow;\n        box-shadow: var(--buttonShadow);\n      }\n    }\n\n    &.-picked-reaction {\n      border: 1px solid var(--accent, $fallback--link);\n      margin-left: -1px; // offset the border, can't use inset shadows either\n      margin-right: calc(0.5em - 1px);\n    }\n  }\n\n  .emoji-reaction-expand {\n    padding: 0 0.5em;\n    margin-right: 0.5em;\n    margin-top: 0.5em;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    &:hover {\n      text-decoration: underline;\n    }\n  }\n\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\n\nconst EMOJI_REACTION_COUNT_CUTOFF = 12\n\nconst EmojiReactions = {\n  name: 'EmojiReactions',\n  components: {\n    UserAvatar,\n    UserListPopover\n  },\n  props: ['status'],\n  data: () => ({\n    showAll: false\n  }),\n  computed: {\n    tooManyReactions () {\n      return this.status.emoji_reactions.length > EMOJI_REACTION_COUNT_CUTOFF\n    },\n    emojiReactions () {\n      return this.showAll\n        ? this.status.emoji_reactions\n        : this.status.emoji_reactions.slice(0, EMOJI_REACTION_COUNT_CUTOFF)\n    },\n    showMoreString () {\n      return `+${this.status.emoji_reactions.length - EMOJI_REACTION_COUNT_CUTOFF}`\n    },\n    accountsForEmoji () {\n      return this.status.emoji_reactions.reduce((acc, reaction) => {\n        acc[reaction.name] = reaction.accounts || []\n        return acc\n      }, {})\n    },\n    loggedIn () {\n      return !!this.$store.state.users.currentUser\n    }\n  },\n  methods: {\n    toggleShowAll () {\n      this.showAll = !this.showAll\n    },\n    reactedWith (emoji) {\n      return this.status.emoji_reactions.find(r => r.name === emoji).me\n    },\n    fetchEmojiReactionsByIfMissing () {\n      const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n      if (hasNoAccounts) {\n        this.$store.dispatch('fetchEmojiReactionsBy', this.status.id)\n      }\n    },\n    reactWith (emoji) {\n      this.$store.dispatch('reactWithEmoji', { id: this.status.id, emoji })\n    },\n    unreact (emoji) {\n      this.$store.dispatch('unreactWithEmoji', { id: this.status.id, emoji })\n    },\n    emojiOnClick (emoji, event) {\n      if (!this.loggedIn) return\n\n      if (this.reactedWith(emoji)) {\n        this.unreact(emoji)\n      } else {\n        this.reactWith(emoji)\n      }\n    }\n  }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=b6dc04e4\"\nimport script from \"./emoji_reactions.js?vue&type=script&lang=js\"\nexport * from \"./emoji_reactions.js?vue&type=script&lang=js\"\n\nimport \"./emoji_reactions.vue?vue&type=style&index=0&id=b6dc04e4&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import ReplyButton from '../reply_button/reply_button.vue'\nimport FavoriteButton from '../favorite_button/favorite_button.vue'\nimport ReactButton from '../react_button/react_button.vue'\nimport RetweetButton from '../retweet_button/retweet_button.vue'\nimport ExtraButtons from '../extra_buttons/extra_buttons.vue'\nimport PostStatusForm from '../post_status_form/post_status_form.vue'\nimport 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 RichContent from 'src/components/rich_content/rich_content.jsx'\nimport StatusPopover from '../status_popover/status_popover.vue'\nimport UserPopover from '../user_popover/user_popover.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport EmojiReactions from '../emoji_reactions/emoji_reactions.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport MentionsLine from 'src/components/mentions_line/mentions_line.vue'\nimport MentionLink from 'src/components/mention_link/mention_link.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js'\nimport { muteWordHits } from '../../services/status_parser/status_parser.js'\nimport { unescape, uniqBy } from 'lodash'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEnvelope,\n  faLock,\n  faLockOpen,\n  faGlobe,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faSmileBeam,\n  faEllipsisH,\n  faStar,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEnvelope,\n  faGlobe,\n  faLock,\n  faLockOpen,\n  faTimes,\n  faRetweet,\n  faReply,\n  faPlusSquare,\n  faStar,\n  faSmileBeam,\n  faEllipsisH,\n  faEyeSlash,\n  faEye,\n  faThumbtack,\n  faChevronUp,\n  faChevronDown,\n  faAngleDoubleRight\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst controlledOrUncontrolledSet = (obj, name, val) => {\n  const camelized = camelCase(name)\n  const set = `controlledSet${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[set]) {\n    obj[set](val)\n  } else {\n    obj[uncontrolledName] = val\n  }\n}\n\nconst Status = {\n  name: 'Status',\n  components: {\n    ReplyButton,\n    FavoriteButton,\n    ReactButton,\n    RetweetButton,\n    ExtraButtons,\n    PostStatusForm,\n    UserAvatar,\n    AvatarList,\n    Timeago,\n    StatusPopover,\n    UserListPopover,\n    EmojiReactions,\n    StatusContent,\n    RichContent,\n    MentionLink,\n    MentionsLine,\n    UserPopover,\n    UserLink\n  },\n  props: [\n    'statusoid',\n    'expandable',\n    'inConversation',\n    'focused',\n    'highlight',\n    'compact',\n    'replies',\n    'isPreview',\n    'noHeading',\n    'inlineExpanded',\n    'showPinned',\n    'inProfile',\n    'profileUserId',\n\n    'simpleTree',\n    'controlledThreadDisplayStatus',\n    'controlledToggleThreadDisplay',\n    'showOtherRepliesAsButton',\n\n    'controlledShowingTall',\n    'controlledToggleShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject',\n    'controlledReplying',\n    'controlledToggleReplying',\n    'controlledMediaPlaying',\n    'controlledSetMediaPlaying',\n    'dive'\n  ],\n  data () {\n    return {\n      uncontrolledReplying: false,\n      unmuted: false,\n      userExpanded: false,\n      uncontrolledMediaPlaying: [],\n      suspendable: true,\n      error: null,\n      headTailLinks: null\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['replying', 'mediaPlaying']),\n    muteWords () {\n      return this.mergedConfig.muteWords\n    },\n    showReasonMutedThread () {\n      return (\n        this.status.thread_muted ||\n          (this.status.reblog && this.status.reblog.thread_muted)\n      ) && !this.inConversation\n    },\n    repeaterClass () {\n      const user = this.statusoid.user\n      return highlightClass(user)\n    },\n    userClass () {\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      return highlightClass(user)\n    },\n    deleted () {\n      return this.statusoid.deleted\n    },\n    repeaterStyle () {\n      const user = this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userStyle () {\n      if (this.noHeading) return\n      const user = this.retweet ? (this.statusoid.retweeted_status.user) : this.statusoid.user\n      const highlight = this.mergedConfig.highlight\n      return highlightStyle(highlight[user.screen_name])\n    },\n    userProfileLink () {\n      return this.generateUserProfileLink(this.status.user.id, this.status.user.screen_name)\n    },\n    replyProfileLink () {\n      if (this.isReply) {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        // FIXME Why user not found sometimes???\n        return user ? user.statusnet_profile_url : 'NOT_FOUND'\n      }\n    },\n    retweet () { return !!this.statusoid.retweeted_status },\n    retweeterUser () { return this.statusoid.user },\n    retweeter () { return this.statusoid.user.name || this.statusoid.user.screen_name_ui },\n    retweeterHtml () { return this.statusoid.user.name },\n    retweeterProfileLink () { return this.generateUserProfileLink(this.statusoid.user.id, this.statusoid.user.screen_name) },\n    status () {\n      if (this.retweet) {\n        return this.statusoid.retweeted_status\n      } else {\n        return this.statusoid\n      }\n    },\n    statusFromGlobalRepository () {\n      // NOTE: Consider to replace status with statusFromGlobalRepository\n      return this.$store.state.statuses.allStatusesObject[this.status.id]\n    },\n    loggedIn () {\n      return !!this.currentUser\n    },\n    muteWordHits () {\n      return muteWordHits(this.status, this.muteWords)\n    },\n    rtBotStatus () {\n      return this.statusoid.user.bot\n    },\n    botStatus () {\n      return this.status.user.bot\n    },\n    botIndicator () {\n      return this.botStatus && !this.hideBotIndication\n    },\n    rtBotIndicator () {\n      return this.rtBotStatus && !this.hideBotIndication\n    },\n    mentionsLine () {\n      if (!this.headTailLinks) return []\n      const writtenSet = new Set(this.headTailLinks.writtenMentions.map(_ => _.url))\n      return this.status.attentions.filter(attn => {\n        // no reply user\n        return attn.id !== this.status.in_reply_to_user_id &&\n          // no self-replies\n          attn.statusnet_profile_url !== this.status.user.statusnet_profile_url &&\n          // don't include if mentions is written\n          !writtenSet.has(attn.statusnet_profile_url)\n      }).map(attn => ({\n        url: attn.statusnet_profile_url,\n        content: attn.screen_name,\n        userId: attn.id\n      }))\n    },\n    hasMentionsLine () {\n      return this.mentionsLine.length > 0\n    },\n    muted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const reasonsToMute = this.userIsMuted ||\n        // Thread is muted\n        status.thread_muted ||\n        // Wordfiltered\n        this.muteWordHits.length > 0 ||\n        // bot status\n        (this.muteBotStatuses && this.botStatus && !this.compact)\n      return !this.unmuted && !this.shouldNotMute && reasonsToMute\n    },\n    userIsMuted () {\n      if (this.statusoid.user.id === this.currentUser.id) return false\n      const { status } = this\n      const { reblog } = status\n      const relationship = this.$store.getters.relationship(status.user.id)\n      const relationshipReblog = reblog && this.$store.getters.relationship(reblog.user.id)\n      return status.muted ||\n        // Reprööt of a muted post according to BE\n        (reblog && reblog.muted) ||\n        // Muted user\n        relationship.muting ||\n        // Muted user of a reprööt\n        (relationshipReblog && relationshipReblog.muting)\n    },\n    shouldNotMute () {\n      const { status } = this\n      const { reblog } = status\n      return (\n        (\n          this.inProfile && (\n            // Don't mute user's posts on user timeline (except reblogs)\n            (!reblog && status.user.id === this.profileUserId) ||\n            // Same as above but also allow self-reblogs\n            (reblog && reblog.user.id === this.profileUserId)\n          )\n        ) ||\n        // Don't mute statuses in muted conversation when said conversation is opened\n        (this.inConversation && status.thread_muted)\n        // No excuses if post has muted words\n      ) && !this.muteWordHits.length > 0\n    },\n    hideMutedUsers () {\n      return this.mergedConfig.hideMutedPosts\n    },\n    hideMutedThreads () {\n      return this.mergedConfig.hideMutedThreads\n    },\n    hideFilteredStatuses () {\n      return this.mergedConfig.hideFilteredStatuses\n    },\n    hideWordFilteredPosts () {\n      return this.mergedConfig.hideWordFilteredPosts\n    },\n    hideStatus () {\n      return (!this.shouldNotMute) && (\n        (this.muted && this.hideFilteredStatuses) ||\n        (this.userIsMuted && this.hideMutedUsers) ||\n        (this.status.thread_muted && this.hideMutedThreads) ||\n        (this.muteWordHits.length > 0 && this.hideWordFilteredPosts)\n      )\n    },\n    isFocused () {\n      // retweet or root of an expanded conversation\n      if (this.focused) {\n        return true\n      } else if (!this.inConversation) {\n        return false\n      }\n      // use conversation highlight only when in conversation\n      return this.status.id === this.highlight\n    },\n    isReply () {\n      return !!(this.status.in_reply_to_status_id && this.status.in_reply_to_user_id)\n    },\n    replyToName () {\n      if (this.status.in_reply_to_screen_name) {\n        return this.status.in_reply_to_screen_name\n      } else {\n        const user = this.$store.getters.findUser(this.status.in_reply_to_user_id)\n        return user && user.screen_name_ui\n      }\n    },\n    replySubject () {\n      if (!this.status.summary) return ''\n      const decodedSummary = unescape(this.status.summary)\n      const behavior = this.mergedConfig.subjectLineBehavior\n      const startsWithRe = decodedSummary.match(/^re[: ]/i)\n      if ((behavior !== 'noop' && startsWithRe) || behavior === 'masto') {\n        return decodedSummary\n      } else if (behavior === 'email') {\n        return 're: '.concat(decodedSummary)\n      } else if (behavior === 'noop') {\n        return ''\n      }\n    },\n    combinedFavsAndRepeatsUsers () {\n      // Use the status from the global status repository since favs and repeats are saved in it\n      const combinedUsers = [].concat(\n        this.statusFromGlobalRepository.favoritedBy,\n        this.statusFromGlobalRepository.rebloggedBy\n      )\n      return uniqBy(combinedUsers, 'id')\n    },\n    tags () {\n      // eslint-disable-next-line no-prototype-builtins\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    muteBotStatuses () {\n      return this.mergedConfig.muteBotStatuses\n    },\n    hideBotIndication () {\n      return this.mergedConfig.hideBotIndication\n    },\n    currentUser () {\n      return this.$store.state.users.currentUser\n    },\n    betterShadow () {\n      return this.$store.state.interface.browserSupport.cssFilter\n    },\n    mergedConfig () {\n      return this.$store.getters.mergedConfig\n    },\n    isSuspendable () {\n      return !this.replying && this.mediaPlaying.length === 0\n    },\n    inThreadForest () {\n      return !!this.controlledThreadDisplayStatus\n    },\n    threadShowing () {\n      return this.controlledThreadDisplayStatus === 'showing'\n    },\n    visibilityLocalized () {\n      return this.$i18n.t('general.scope_in_timeline.' + this.status.visibility)\n    },\n    isEdited () {\n      return this.status.edited_at !== null\n    },\n    editingAvailable () {\n      return this.$store.state.instance.editingAvailable\n    }\n  },\n  methods: {\n    visibilityIcon (visibility) {\n      switch (visibility) {\n        case 'private':\n          return 'lock'\n        case 'unlisted':\n          return 'lock-open'\n        case 'direct':\n          return 'envelope'\n        default:\n          return 'globe'\n      }\n    },\n    showError (error) {\n      this.error = error\n    },\n    clearError () {\n      this.error = undefined\n    },\n    toggleReplying () {\n      controlledOrUncontrolledToggle(this, 'replying')\n    },\n    gotoOriginal (id) {\n      if (this.inConversation) {\n        this.$emit('goto', id)\n      }\n    },\n    toggleExpanded () {\n      this.$emit('toggleExpanded')\n    },\n    toggleMute () {\n      this.unmuted = !this.unmuted\n    },\n    toggleUserExpanded () {\n      this.userExpanded = !this.userExpanded\n    },\n    generateUserProfileLink (id, name) {\n      return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames)\n    },\n    addMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.concat(id))\n    },\n    removeMediaPlaying (id) {\n      controlledOrUncontrolledSet(this, 'mediaPlaying', this.mediaPlaying.filter(mediaId => mediaId !== id))\n    },\n    setHeadTailLinks (headTailLinks) {\n      this.headTailLinks = headTailLinks\n    },\n    toggleThreadDisplay () {\n      this.controlledToggleThreadDisplay()\n    },\n    scrollIfHighlighted (highlightId) {\n      const id = highlightId\n      if (this.status.id === id) {\n        const 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  },\n  watch: {\n    highlight: function (id) {\n      this.scrollIfHighlighted(id)\n    },\n    'status.repeat_num': function (num) {\n      // refetch repeats when repeat_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.rebloggedBy && this.statusFromGlobalRepository.rebloggedBy.length !== num) {\n        this.$store.dispatch('fetchRepeats', this.status.id)\n      }\n    },\n    'status.fave_num': function (num) {\n      // refetch favs when fave_num is changed in any way\n      if (this.isFocused && this.statusFromGlobalRepository.favoritedBy && this.statusFromGlobalRepository.favoritedBy.length !== num) {\n        this.$store.dispatch('fetchFavs', this.status.id)\n      }\n    },\n    isSuspendable: function (val) {\n      this.suspendable = val\n    }\n  }\n}\n\nexport default Status\n","import { render } from \"./status.vue?vue&type=template&id=6668042d\"\nimport script from \"./status.js?vue&type=script&lang=js\"\nexport * from \"./status.js?vue&type=script&lang=js\"\n\nimport \"./status.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"StatusContent\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <slot name=\"header\" />\n    <StatusBody\n      :status=\"status\"\n      :compact=\"compact\"\n      :single-line=\"singleLine\"\n      :showing-tall=\"showingTall\"\n      :expanding-subject=\"expandingSubject\"\n      :showing-long-subject=\"showingLongSubject\"\n      :toggle-showing-tall=\"toggleShowingTall\"\n      :toggle-expanding-subject=\"toggleExpandingSubject\"\n      :toggle-showing-long-subject=\"toggleShowingLongSubject\"\n      @parseReady=\"$emit('parseReady', $event)\"\n    >\n      <div v-if=\"status.poll && status.poll.options && !compact\">\n        <Poll\n          :base-poll=\"status.poll\"\n          :emoji=\"status.emojis\"\n        />\n      </div>\n\n      <div v-else-if=\"status.poll && status.poll.options && compact\">\n        <FAIcon\n          icon=\"poll-h\"\n          size=\"2x\"\n        />\n      </div>\n\n      <gallery\n        v-if=\"status.attachments.length !== 0\"\n        class=\"attachments media-body\"\n        :nsfw=\"nsfwClickthrough\"\n        :attachments=\"status.attachments\"\n        :limit=\"compact ? 1 : 0\"\n        :size=\"attachmentSize\"\n        @play=\"$emit('mediaplay', attachment.id)\"\n        @pause=\"$emit('mediapause', attachment.id)\"\n      />\n\n      <div\n        v-if=\"status.card && !noHeading && !compact\"\n        class=\"link-preview media-body\"\n      >\n        <link-preview\n          :card=\"status.card\"\n          :size=\"attachmentSize\"\n          :nsfw=\"nsfwClickthrough\"\n        />\n      </div>\n    </StatusBody>\n    <slot name=\"footer\" />\n  </div>\n</template>\n\n<script src=\"./status_content.js\"></script>\n<style lang=\"scss\">\n.StatusContent {\n  flex: 1;\n  min-width: 0;\n}\n</style>\n","<template>\n  <div\n    class=\"poll\"\n    :class=\"containerClass\"\n  >\n    <div\n      v-for=\"(option, index) in options\"\n      :key=\"index\"\n      class=\"poll-option\"\n    >\n      <div\n        v-if=\"showResults\"\n        :title=\"resultTitle(option)\"\n        class=\"option-result\"\n      >\n        <div class=\"option-result-label\">\n          <span class=\"result-percentage\">\n            {{ percentageForOption(option.votes_count) }}%\n          </span>\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </div>\n        <div\n          class=\"result-fill\"\n          :style=\"{ 'width': `${percentageForOption(option.votes_count)}%` }\"\n        />\n      </div>\n      <div\n        v-else\n        @click=\"activateOption(index)\"\n      >\n        <input\n          v-if=\"poll.multiple\"\n          type=\"checkbox\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <input\n          v-else\n          type=\"radio\"\n          :disabled=\"loading\"\n          :value=\"index\"\n        >\n        <label class=\"option-vote\">\n          <RichContent\n            :html=\"option.title_html\"\n            :handle-links=\"false\"\n            :emoji=\"emoji\"\n          />\n        </label>\n      </div>\n    </div>\n    <div class=\"footer faint\">\n      <button\n        v-if=\"!showResults\"\n        class=\"btn button-default poll-vote-button\"\n        type=\"button\"\n        :disabled=\"isDisabled\"\n        @click=\"vote\"\n      >\n        {{ $t('polls.vote') }}\n      </button>\n      <div class=\"total\">\n        <template v-if=\"typeof poll.voters_count === 'number'\">\n          {{ $tc(\"polls.people_voted_count\", poll.voters_count, { count: poll.voters_count }) }}&nbsp;·&nbsp;\n        </template>\n        <template v-else>\n          {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}&nbsp;·&nbsp;\n        </template>\n      </div>\n      <span>\n        <i18n-t\n          scope=\"global\"\n          :keypath=\"expired ? 'polls.expired' : 'polls.expires_in'\"\n        >\n          <Timeago\n            :time=\"expiresAt\"\n            :auto-update=\"60\"\n            :now-threshold=\"0\"\n          />\n        </i18n-t>\n      </span>\n    </div>\n  </div>\n</template>\n\n<script src=\"./poll.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.poll {\n  .votes {\n    display: flex;\n    flex-direction: column;\n    margin: 0 0 0.5em;\n  }\n  .poll-option {\n    margin: 0.75em 0.5em;\n  }\n  .option-result {\n    height: 100%;\n    display: flex;\n    flex-direction: row;\n    position: relative;\n    color: $fallback--lightText;\n    color: var(--lightText, $fallback--lightText);\n  }\n  .option-result-label {\n    display: flex;\n    align-items: center;\n    padding: 0.1em 0.25em;\n    z-index: 1;\n    word-break: break-word;\n  }\n  .result-percentage {\n    width: 3.5em;\n    flex-shrink: 0;\n  }\n  .result-fill {\n    height: 100%;\n    position: absolute;\n    color: $fallback--text;\n    color: var(--pollText, $fallback--text);\n    background-color: $fallback--lightBg;\n    background-color: var(--poll, $fallback--lightBg);\n    border-radius: $fallback--panelRadius;\n    border-radius: var(--panelRadius, $fallback--panelRadius);\n    top: 0;\n    left: 0;\n    transition: width 0.5s;\n  }\n  .option-vote {\n    display: flex;\n    align-items: center;\n  }\n  input {\n    width: 3.5em;\n  }\n  .footer {\n    display: flex;\n    align-items: center;\n  }\n  &.loading * {\n    cursor: progress;\n  }\n  .poll-vote-button {\n    padding: 0 0.5em;\n    margin-right: 0.5em;\n  }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport RichContent from 'components/rich_content/rich_content.jsx'\nimport { forEach, map } from 'lodash'\n\nexport default {\n  name: 'Poll',\n  props: ['basePoll', 'emoji'],\n  components: {\n    Timeago,\n    RichContent\n  },\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  unmounted () {\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","import { render } from \"./poll.vue?vue&type=template&id=5e9dea28\"\nimport script from \"./poll.js?vue&type=script&lang=js\"\nexport * from \"./poll.js?vue&type=script&lang=js\"\n\nimport \"./poll.vue?vue&type=style&index=0&id=5e9dea28&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"StatusBody\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <div class=\"body\">\n      <div\n        v-if=\"status.summary_raw_html\"\n        class=\"summary-wrapper\"\n        :class=\"{ '-tall': (longSubject && !showingLongSubject) }\"\n      >\n        <RichContent\n          class=\"media-body summary\"\n          :html=\"status.summary_raw_html\"\n          :emoji=\"status.emojis\"\n        />\n        <button\n          v-show=\"longSubject && showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.hide_full_subject\") }}\n        </button>\n        <button\n          v-show=\"longSubject && !showingLongSubject\"\n          class=\"button-unstyled -link tall-subject-hider\"\n          @click.prevent=\"toggleShowingLongSubject\"\n        >\n          {{ $t(\"status.show_full_subject\") }}\n        </button>\n      </div>\n      <div\n        :class=\"{'-tall-status': hideTallStatus}\"\n        class=\"text-wrapper\"\n      >\n        <button\n          v-show=\"hideTallStatus\"\n          class=\"button-unstyled -link tall-status-hider\"\n          :class=\"{ '-focused': focused }\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"general.show_more\") }}\n        </button>\n        <RichContent\n          v-if=\"!hideSubjectStatus && !(singleLine && status.summary_raw_html)\"\n          :class=\"{ '-single-line': singleLine }\"\n          class=\"text media-body\"\n          :html=\"status.raw_html\"\n          :emoji=\"status.emojis\"\n          :handle-links=\"true\"\n          :greentext=\"mergedConfig.greentext\"\n          :attentions=\"status.attentions\"\n          @parseReady=\"onParseReady\"\n        />\n\n        <button\n          v-show=\"hideSubjectStatus\"\n          class=\"button-unstyled -link cw-status-hider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ $t(\"status.show_content\") }}\n          <FAIcon\n            v-if=\"attachmentTypes.includes('image')\"\n            icon=\"image\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('video')\"\n            icon=\"video\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('audio')\"\n            icon=\"music\"\n          />\n          <FAIcon\n            v-if=\"attachmentTypes.includes('unknown')\"\n            icon=\"file\"\n          />\n          <FAIcon\n            v-if=\"status.poll && status.poll.options\"\n            icon=\"poll-h\"\n          />\n          <FAIcon\n            v-if=\"status.card\"\n            icon=\"link\"\n          />\n        </button>\n        <button\n          v-show=\"showingMore && !fullContent\"\n          class=\"button-unstyled -link status-unhider\"\n          @click.prevent=\"toggleShowMore\"\n        >\n          {{ tallStatus ? $t(\"general.show_less\") : $t(\"status.hide_content\") }}\n        </button>\n      </div>\n    </div>\n    <slot v-if=\"!hideSubjectStatus\" />\n  </div>\n</template>\n<script src=\"./status_body.js\"></script>\n<style lang=\"scss\" src=\"./status_body.scss\" />\n","import fileType from 'src/services/file_type/file_type.service'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'compact',\n    'status',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'showingTall',\n    'expandingSubject',\n    'showingLongSubject',\n    'toggleShowingTall',\n    'toggleExpandingSubject',\n    'toggleShowingLongSubject'\n  ],\n  data () {\n    return {\n      postLength: this.status.text.length,\n      parseReadyDone: false\n    }\n  },\n  computed: {\n    localCollapseSubjectDefault () {\n      return this.mergedConfig.collapseMessageWithSubject\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      if (this.singleLine || this.compact) return false\n      const lengthScore = this.status.raw_html.split(/<p|<br/).length + this.postLength / 80\n      return lengthScore > 20\n    },\n    longSubject () {\n      return this.status.summary.length > 240\n    },\n    // When a status has a subject and is also tall, we should only have one show more/less button. If the default is to collapse statuses with subjects, we just treat it like a status with a subject; otherwise, we just treat it like a tall status.\n    mightHideBecauseSubject () {\n      return !!this.status.summary && this.localCollapseSubjectDefault\n    },\n    mightHideBecauseTall () {\n      return this.tallStatus && !(this.status.summary && this.localCollapseSubjectDefault)\n    },\n    hideSubjectStatus () {\n      return this.mightHideBecauseSubject && !this.expandingSubject\n    },\n    hideTallStatus () {\n      return this.mightHideBecauseTall && !this.showingTall\n    },\n    showingMore () {\n      return (this.mightHideBecauseTall && this.showingTall) || (this.mightHideBecauseSubject && this.expandingSubject)\n    },\n    attachmentTypes () {\n      return this.status.attachments.map(file => fileType.fileType(file.mimetype))\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    RichContent\n  },\n  mounted () {\n    this.status.attentions && this.status.attentions.forEach(attn => {\n      const { id } = attn\n      this.$store.dispatch('fetchUserIfMissing', id)\n    })\n  },\n  methods: {\n    onParseReady (event) {\n      if (this.parseReadyDone) return\n      this.parseReadyDone = true\n      this.$emit('parseReady', event)\n      const { writtenMentions, invisibleMentions } = event\n      writtenMentions\n        .filter(mention => !mention.notifying)\n        .forEach(mention => {\n          const { content, url } = mention\n          const cleanedString = content.replace(/<[^>]+?>/gi, '') // remove all tags\n          if (!cleanedString.startsWith('@')) return\n          const handle = cleanedString.slice(1)\n          const host = url.replace(/^https?:\\/\\//, '').replace(/\\/.+?$/, '')\n          this.$store.dispatch('fetchUserIfMissing', `${handle}@${host}`)\n        })\n      /* This is a bit of a hack to make current tall status detector work\n       * with rich mentions. Invisible mentions are detected at RichContent level\n       * and also we generate plaintext version of mentions by stripping tags\n       * so here we subtract from post length by each mention that became invisible\n       * via MentionsLine\n       */\n      this.postLength = invisibleMentions.reduce((acc, mention) => {\n        return acc - mention.textContent.length - 1\n      }, this.postLength)\n    },\n    toggleShowMore () {\n      if (this.mightHideBecauseTall) {\n        this.toggleShowingTall()\n      } else if (this.mightHideBecauseSubject) {\n        this.toggleExpandingSubject()\n      }\n    },\n    generateTagLink (tag) {\n      return `/tag/${tag}`\n    }\n  }\n}\n\nexport default StatusContent\n","import { render } from \"./status_body.vue?vue&type=template&id=7a590a2c\"\nimport script from \"./status_body.js?vue&type=script&lang=js\"\nexport * from \"./status_body.js?vue&type=script&lang=js\"\n\nimport \"./status_body.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import Attachment from '../attachment/attachment.vue'\nimport Poll from '../poll/poll.vue'\nimport Gallery from '../gallery/gallery.vue'\nimport StatusBody from 'src/components/status_body/status_body.vue'\nimport LinkPreview from '../link-preview/link-preview.vue'\nimport { mapGetters, mapState } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCircleNotch,\n  faFile,\n  faMusic,\n  faImage,\n  faLink,\n  faPollH\n)\n\nconst camelCase = name => name.charAt(0).toUpperCase() + name.slice(1)\n\nconst controlledOrUncontrolledGetters = list => list.reduce((res, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const controlledName = `controlled${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  res[name] = function () {\n    return ((this.$data[toggle] !== undefined || this.$props[toggle] !== undefined) && this[toggle]) ? this[controlledName] : this[uncontrolledName]\n  }\n  return res\n}, {})\n\nconst controlledOrUncontrolledToggle = (obj, name) => {\n  const camelized = camelCase(name)\n  const toggle = `controlledToggle${camelized}`\n  const uncontrolledName = `uncontrolled${camelized}`\n  if (obj[toggle]) {\n    obj[toggle]()\n  } else {\n    obj[uncontrolledName] = !obj[uncontrolledName]\n  }\n}\n\nconst StatusContent = {\n  name: 'StatusContent',\n  props: [\n    'status',\n    'compact',\n    'focused',\n    'noHeading',\n    'fullContent',\n    'singleLine',\n    'controlledShowingTall',\n    'controlledExpandingSubject',\n    'controlledToggleShowingTall',\n    'controlledToggleExpandingSubject',\n    'controlledShowingLongSubject',\n    'controlledToggleShowingLongSubject'\n  ],\n  data () {\n    return {\n      uncontrolledShowingTall: this.fullContent || (this.inConversation && this.focused),\n      uncontrolledShowingLongSubject: false,\n      // not as computed because it sets the initial state which will be changed later\n      uncontrolledExpandingSubject: !this.$store.getters.mergedConfig.collapseMessageWithSubject\n    }\n  },\n  computed: {\n    ...controlledOrUncontrolledGetters(['showingTall', 'expandingSubject', 'showingLongSubject']),\n    hideAttachments () {\n      return (this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation)\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.compact) {\n        return 'small'\n      } else if ((this.mergedConfig.hideAttachments && !this.inConversation) ||\n        (this.mergedConfig.hideAttachmentsInConv && this.inConversation) ||\n        (this.status.attachments.length > this.maxThumbnails)) {\n        return 'hide'\n      }\n      return 'normal'\n    },\n    maxThumbnails () {\n      return this.mergedConfig.maxThumbnails\n    },\n    ...mapGetters(['mergedConfig']),\n    ...mapState({\n      currentUser: state => state.users.currentUser\n    })\n  },\n  components: {\n    Attachment,\n    Poll,\n    Gallery,\n    LinkPreview,\n    StatusBody\n  },\n  methods: {\n    toggleShowingTall () {\n      controlledOrUncontrolledToggle(this, 'showingTall')\n    },\n    toggleExpandingSubject () {\n      controlledOrUncontrolledToggle(this, 'expandingSubject')\n    },\n    toggleShowingLongSubject () {\n      controlledOrUncontrolledToggle(this, 'showingLongSubject')\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","import { render } from \"./status_content.vue?vue&type=template&id=220a5018\"\nimport script from \"./status_content.js?vue&type=script&lang=js\"\nexport * from \"./status_content.js?vue&type=script&lang=js\"\n\nimport \"./status_content.vue?vue&type=style&index=0&id=220a5018&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"still-image\"\n    :class=\"{ animated: animated }\"\n    :style=\"style\"\n  >\n    <canvas\n      v-if=\"animated\"\n      ref=\"canvas\"\n    />\n    <!-- NOTE: key is required to force to re-render img tag when src is changed -->\n    <img\n      ref=\"src\"\n      :key=\"realSrc\"\n      :alt=\"alt\"\n      :title=\"alt\"\n      :data-src=\"dataSrc\"\n      :src=\"realSrc\"\n      :referrerpolicy=\"referrerpolicy\"\n      @load=\"onLoad\"\n      @error=\"onError\"\n    >\n    <slot />\n  </div>\n</template>\n\n<script src=\"./still-image.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.still-image {\n  position: relative;\n  line-height: 0;\n  overflow: hidden;\n  display: inline-flex;\n  align-items: center;\n\n  canvas {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n    visibility: var(--_still-image-canvas-visibility, visible);\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n  }\n\n  &.animated {\n    &::before {\n      zoom: var(--_still_image-label-scale, 1);\n      content: 'gif';\n      position: absolute;\n      line-height: 1;\n      font-size: 0.7em;\n      top: 0.5em;\n      left: 0.5em;\n      background: rgba(127, 127, 127, 0.5);\n      color: #fff;\n      display: block;\n      padding: 2px 4px;\n      border-radius: $fallback--tooltipRadius;\n      border-radius: var(--tooltipRadius, $fallback--tooltipRadius);\n      z-index: 2;\n      visibility: var(--_still-image-label-visibility, visible);\n    }\n\n    &:hover canvas {\n      display: none;\n    }\n\n    &:hover::before {\n      visibility: var(--_still-image-label-visibility, hidden);\n    }\n\n    img {\n      visibility: var(--_still-image-img-visibility, hidden);\n    }\n\n    &:hover img {\n      visibility: visible;\n    }\n  }\n}\n</style>\n","const StillImage = {\n  props: [\n    'src',\n    'referrerpolicy',\n    'mimetype',\n    'imageLoadError',\n    'imageLoadHandler',\n    'alt',\n    'height',\n    'width',\n    'dataSrc'\n  ],\n  data () {\n    return {\n      // for lazy loading, see loadLazy()\n      realSrc: this.src,\n      stopGifs: this.$store.getters.mergedConfig.stopGifs\n    }\n  },\n  computed: {\n    animated () {\n      if (!this.realSrc) {\n        return false\n      }\n\n      return this.stopGifs && (this.mimetype === 'image/gif' || this.realSrc.endsWith('.gif'))\n    },\n    style () {\n      const appendPx = (str) => /\\d$/.test(str) ? str + 'px' : str\n      return {\n        height: this.height ? appendPx(this.height) : null,\n        width: this.width ? appendPx(this.width) : null\n      }\n    }\n  },\n  methods: {\n    loadLazy () {\n      if (this.dataSrc) {\n        this.realSrc = this.dataSrc\n      }\n    },\n    onLoad () {\n      if (!this.realSrc) {\n        return\n      }\n      const image = this.$refs.src\n      if (!image) return\n      this.imageLoadHandler && this.imageLoadHandler(image)\n      const canvas = this.$refs.canvas\n      if (!canvas) return\n      const width = image.naturalWidth\n      const height = image.naturalHeight\n      canvas.width = width\n      canvas.height = height\n      canvas.getContext('2d').drawImage(image, 0, 0, width, height)\n    },\n    onError () {\n      this.imageLoadError && this.imageLoadError()\n    }\n  },\n  watch: {\n    src () {\n      this.realSrc = this.src\n    },\n    dataSrc () {\n      this.$el.removeAttribute('data-loaded')\n    }\n  }\n}\n\nexport default StillImage\n","import { render } from \"./still-image.vue?vue&type=template&id=01bd7459\"\nimport script from \"./still-image.js?vue&type=script&lang=js\"\nexport * from \"./still-image.js?vue&type=script&lang=js\"\n\nimport \"./still-image.vue?vue&type=style&index=0&id=01bd7459&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <time\n    :datetime=\"time\"\n    :title=\"localeDateString\"\n  >\n    {{ relativeTimeString }}\n  </time>\n</template>\n\n<script>\nimport * as DateUtils from 'src/services/date_utils/date_utils.js'\nimport localeService from 'src/services/locale/locale.service.js'\n\nexport default {\n  name: 'Timeago',\n  props: ['time', 'autoUpdate', 'longFormat', 'nowThreshold', 'templateKey'],\n  data () {\n    return {\n      relativeTime: { key: 'time.now', num: 0 },\n      interval: null\n    }\n  },\n  computed: {\n    localeDateString () {\n      const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n      return typeof this.time === 'string'\n        ? new Date(Date.parse(this.time)).toLocaleString(browserLocale)\n        : this.time.toLocaleString(browserLocale)\n    },\n    relativeTimeString () {\n      const timeString = this.$i18n.tc(this.relativeTime.key, this.relativeTime.num, [this.relativeTime.num])\n\n      if (typeof this.templateKey === 'string' && this.relativeTime.key !== 'time.now') {\n        return this.$i18n.t(this.templateKey, [timeString])\n      }\n\n      return timeString\n    }\n  },\n  watch: {\n    time (newVal, oldVal) {\n      if (oldVal !== newVal) {\n        clearTimeout(this.interval)\n        this.refreshRelativeTimeObject()\n      }\n    }\n  },\n  created () {\n    this.refreshRelativeTimeObject()\n  },\n  unmounted () {\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","import { render } from \"./timeago.vue?vue&type=template&id=3269671b\"\nimport script from \"./timeago.vue?vue&type=script&lang=js\"\nexport * from \"./timeago.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <FAIcon\n    v-if=\"user && user.screen_name_ui_contains_non_ascii\"\n    icon=\"code\"\n    :title=\"$t('unicode_domain_indicator.tooltip')\"\n  />\n</template>\n\n<script>\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faCode\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faCode\n)\n\nconst UnicodeDomainIndicator = {\n  props: {\n    user: Object\n  }\n}\n\nexport default UnicodeDomainIndicator\n</script>\n","import { render } from \"./unicode_domain_indicator.vue?vue&type=template&id=3e044e46\"\nimport script from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\nexport * from \"./unicode_domain_indicator.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import StillImage from '../still-image/still-image.vue'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\n\nimport {\n  faRobot\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRobot\n)\n\nconst UserAvatar = {\n  props: [\n    'user',\n    'betterShadow',\n    'compact',\n    'bot'\n  ],\n  data () {\n    return {\n      showPlaceholder: false,\n      defaultAvatar: `${this.$store.state.instance.server + this.$store.state.instance.defaultAvatar}`\n    }\n  },\n  components: {\n    StillImage\n  },\n  methods: {\n    imgSrc (src) {\n      return (!src || this.showPlaceholder) ? this.defaultAvatar : src\n    },\n    imageLoadError () {\n      this.showPlaceholder = true\n    }\n  }\n}\n\nexport default UserAvatar\n","import { render } from \"./user_avatar.vue?vue&type=template&id=764c87f9\"\nimport script from \"./user_avatar.js?vue&type=script&lang=js\"\nexport * from \"./user_avatar.js?vue&type=script&lang=js\"\n\nimport \"./user_avatar.vue?vue&type=style&index=0&id=764c87f9&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <span\n    class=\"Avatar\"\n    :class=\"{ '-compact': compact }\"\n  >\n    <StillImage\n      v-if=\"user\"\n      class=\"avatar\"\n      :alt=\"user.screen_name_ui\"\n      :title=\"user.screen_name_ui\"\n      :src=\"imgSrc(user.profile_image_url_original)\"\n      :image-load-error=\"imageLoadError\"\n      :class=\"{ '-compact': compact, '-better-shadow': betterShadow }\"\n    />\n    <div\n      v-else\n      class=\"avatar -placeholder\"\n      :class=\"{ '-compact': compact }\"\n    />\n    <FAIcon\n      v-if=\"bot\"\n      icon=\"robot\"\n      class=\"bot-indicator\"\n    />\n  </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.Avatar {\n  --_avatarShadowBox: var(--avatarStatusShadow);\n  --_avatarShadowFilter: var(--avatarStatusShadowFilter);\n  --_avatarShadowInset: var(--avatarStatusShadowInset);\n  --_still-image-label-visibility: hidden;\n\n  display: inline-block;\n  position: relative;\n  width: 48px;\n  height: 48px;\n\n  &.-compact {\n    width: 32px;\n    height: 32px;\n    border-radius: $fallback--avatarAltRadius;\n    border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n  }\n\n  .avatar {\n    width: 100%;\n    height: 100%;\n    box-shadow: var(--_avatarShadowBox);\n    border-radius: $fallback--avatarRadius;\n    border-radius: var(--avatarRadius, $fallback--avatarRadius);\n\n    &.-better-shadow {\n      box-shadow: var(--_avatarShadowInset);\n      filter: var(--_avatarShadowFilter);\n    }\n\n    &.-animated::before {\n      display: none;\n    }\n\n    &.-compact {\n      border-radius: $fallback--avatarAltRadius;\n      border-radius: var(--avatarAltRadius, $fallback--avatarAltRadius);\n    }\n\n    &.-placeholder {\n      background-color: $fallback--fg;\n      background-color: var(--fg, $fallback--fg);\n    }\n  }\n\n  img {\n    width: 100%;\n    height: 100%;\n  }\n\n  .bot-indicator {\n    position: absolute;\n    bottom: 0;\n    right: 0;\n    margin: -0.2em;\n    padding: 0.2em;\n    background: rgba(127, 127, 127, 0.5);\n    color: #fff;\n    border-radius: var(--tooltipRadius);\n  }\n\n}\n</style>\n","<template>\n  <div\n    class=\"user-card\"\n    :class=\"classes\"\n  >\n    <div\n      :class=\"{ 'hide-bio': hideBio }\"\n      :style=\"style\"\n      class=\"background-image\"\n    />\n    <div :class=\"onClose ? '' : panel-heading -flexible-height\">\n      <div class=\"user-info\">\n        <div class=\"container\">\n          <a\n            v-if=\"avatarAction === 'zoom'\"\n            class=\"user-info-avatar -link\"\n            @click=\"zoomAvatar\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n            <div class=\"user-info-avatar -link -overlay\">\n              <FAIcon\n                class=\"fa-scale-110 fa-old-padding\"\n                icon=\"search-plus\"\n              />\n            </div>\n          </a>\n          <UserAvatar\n            v-else-if=\"typeof avatarAction === 'function'\"\n            class=\"user-info-avatar\"\n            :better-shadow=\"betterShadow\"\n            :user=\"user\"\n            @click=\"avatarAction\"\n          />\n          <router-link\n            v-else\n            :to=\"userProfileLink(user)\"\n          >\n            <UserAvatar\n              :better-shadow=\"betterShadow\"\n              :user=\"user\"\n            />\n          </router-link>\n          <div class=\"user-summary\">\n            <div class=\"top-line\">\n              <router-link\n                :to=\"userProfileLink(user)\"\n                class=\"user-name\"\n              >\n                <RichContent\n                  :title=\"user.name\"\n                  :html=\"user.name\"\n                  :emoji=\"user.emoji\"\n                />\n              </router-link>\n              <button\n                v-if=\"!isOtherUser && user.is_local\"\n                class=\"button-unstyled edit-profile-button\"\n                @click.stop=\"openProfileTab\"\n              >\n                <FAIcon\n                  fixed-width\n                  class=\"icon\"\n                  icon=\"edit\"\n                  :title=\"$t('user_card.edit_profile')\"\n                />\n              </button>\n              <a\n                v-if=\"isOtherUser && !user.is_local\"\n                :href=\"user.statusnet_profile_url\"\n                target=\"_blank\"\n                class=\"button-unstyled external-link-button\"\n              >\n                <FAIcon\n                  class=\"icon\"\n                  icon=\"external-link-alt\"\n                />\n              </a>\n              <AccountActions\n                v-if=\"isOtherUser && loggedIn\"\n                :user=\"user\"\n                :relationship=\"relationship\"\n              />\n              <router-link\n                v-if=\"onClose\"\n                :to=\"userProfileLink(user)\"\n                class=\"button-unstyled external-link-button\"\n                @click=\"onClose\"\n              >\n                <FAIcon\n                  class=\"icon\"\n                  icon=\"expand-alt\"\n                />\n              </router-link>\n              <button\n                v-if=\"onClose\"\n                class=\"button-unstyled external-link-button\"\n                @click=\"onClose\"\n              >\n                <FAIcon\n                  class=\"icon\"\n                  icon=\"times\"\n                />\n              </button>\n            </div>\n            <div class=\"bottom-line\">\n              <user-link\n                class=\"user-screen-name\"\n                :user=\"user\"\n              />\n              <template v-if=\"!hideBio\">\n                <span\n                  v-if=\"user.deactivated\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.deactivated') }}\n                </span>\n                <span\n                  v-if=\"!!visibleRole\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t(`general.role.${visibleRole}`) }}\n                </span>\n                <span\n                  v-if=\"user.bot\"\n                  class=\"alert user-role\"\n                >\n                  {{ $t('user_card.bot') }}\n                </span>\n              </template>\n              <span v-if=\"user.locked\">\n                <FAIcon\n                  class=\"lock-icon\"\n                  icon=\"lock\"\n                  size=\"sm\"\n                />\n              </span>\n              <span\n                v-if=\"!mergedConfig.hideUserStats && !hideBio\"\n                class=\"dailyAvg\"\n              >{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>\n            </div>\n          </div>\n        </div>\n        <div class=\"user-meta\">\n          <div\n            v-if=\"relationship.followed_by && loggedIn && isOtherUser\"\n            class=\"following\"\n          >\n            {{ $t('user_card.follows_you') }}\n          </div>\n          <div\n            v-if=\"isOtherUser && (loggedIn || !switcher)\"\n            class=\"highlighter\"\n          >\n            <!-- id's need to be unique, otherwise vue confuses which user-card checkbox belongs to -->\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColorTx'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightText\"\n              type=\"text\"\n            >\n            <input\n              v-if=\"userHighlightType !== 'disabled'\"\n              :id=\"'userHighlightColor'+user.id\"\n              v-model=\"userHighlightColor\"\n              class=\"userHighlightCl\"\n              type=\"color\"\n            >\n            {{ ' ' }}\n            <Select\n              :id=\"'userHighlightSel'+user.id\"\n              v-model=\"userHighlightType\"\n              class=\"userHighlightSel\"\n            >\n              <option value=\"disabled\">\n                {{ $t('user_card.highlight.disabled') }}\n              </option>\n              <option value=\"solid\">\n                {{ $t('user_card.highlight.solid') }}\n              </option>\n              <option value=\"striped\">\n                {{ $t('user_card.highlight.striped') }}\n              </option>\n              <option value=\"side\">\n                {{ $t('user_card.highlight.side') }}\n              </option>\n            </Select>\n          </div>\n        </div>\n        <div\n          v-if=\"loggedIn && isOtherUser\"\n          class=\"user-interactions\"\n        >\n          <div class=\"btn-group\">\n            <FollowButton\n              :relationship=\"relationship\"\n              :user=\"user\"\n            />\n            <template v-if=\"relationship.following\">\n              <ProgressButton\n                v-if=\"!relationship.subscribing\"\n                class=\"btn button-default\"\n                :click=\"subscribeUser\"\n                :title=\"$t('user_card.subscribe')\"\n              >\n                <FAIcon icon=\"bell\" />\n              </ProgressButton>\n              <ProgressButton\n                v-else\n                class=\"btn button-default toggled\"\n                :click=\"unsubscribeUser\"\n                :title=\"$t('user_card.unsubscribe')\"\n              >\n                <FALayers>\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"left-5 shrink-6 up-3 rotate-20\"\n                    flip=\"horizontal\"\n                  />\n                  <FAIcon\n                    icon=\"rss\"\n                    transform=\"right-5 shrink-6 up-3 rotate-20\"\n                  />\n                  <FAIcon icon=\"bell\" />\n                </FALayers>\n              </ProgressButton>\n            </template>\n          </div>\n          <div>\n            <button\n              v-if=\"relationship.muting\"\n              class=\"btn button-default btn-block toggled\"\n              :disabled=\"user.deactivated\"\n              @click=\"unmuteUser\"\n            >\n              {{ $t('user_card.muted') }}\n            </button>\n            <button\n              v-else\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"muteUser\"\n            >\n              {{ $t('user_card.mute') }}\n            </button>\n          </div>\n          <div>\n            <button\n              class=\"btn button-default btn-block\"\n              :disabled=\"user.deactivated\"\n              @click=\"mentionUser\"\n            >\n              {{ $t('user_card.mention') }}\n            </button>\n          </div>\n          <ModerationTools\n            v-if=\"showModerationMenu\"\n            :user=\"user\"\n          />\n        </div>\n        <div\n          v-if=\"!loggedIn && user.is_local\"\n          class=\"user-interactions\"\n        >\n          <RemoteFollow :user=\"user\" />\n        </div>\n        <UserNote\n          v-if=\"loggedIn && isOtherUser && (hasNote || (hasNoteEditor && supportsNote))\"\n          :user=\"user\"\n          :relationship=\"relationship\"\n          :editable=\"hasNoteEditor\"\n        />\n      </div>\n    </div>\n    <div\n      v-if=\"!hideBio\"\n      class=\"panel-body\"\n    >\n      <div\n        v-if=\"!mergedConfig.hideUserStats && switcher\"\n        class=\"user-counts\"\n      >\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('statuses')\"\n        >\n          <h5>{{ $t('user_card.statuses') }}</h5>\n          <span>{{ user.statuses_count }} <br></span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('friends')\"\n        >\n          <h5>{{ $t('user_card.followees') }}</h5>\n          <span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>\n        </div>\n        <div\n          class=\"user-count\"\n          @click.prevent=\"setProfileView('followers')\"\n        >\n          <h5>{{ $t('user_card.followers') }}</h5>\n          <span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>\n        </div>\n      </div>\n      <RichContent\n        v-if=\"!hideBio\"\n        class=\"user-card-bio\"\n        :html=\"user.description_html\"\n        :emoji=\"user.emoji\"\n        :handle-links=\"true\"\n      />\n    </div>\n  </div>\n</template>\n\n<script src=\"./user_card.js\"></script>\n\n<style lang=\"scss\" src=\"./user_card.scss\" />\n","<template>\n  <div>\n    <Popover\n      trigger=\"click\"\n      class=\"moderation-tools-popover\"\n      placement=\"bottom\"\n      :offset=\"{ y: 5 }\"\n      @show=\"setToggled(true)\"\n      @close=\"setToggled(false)\"\n    >\n      <template #content>\n        <div class=\"dropdown-menu\">\n          <span v-if=\"canGrantRole\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;admin&quot;)\"\n            >\n              {{ $t(!!user.rights.admin ? 'user_card.admin_menu.revoke_admin' : 'user_card.admin_menu.grant_admin') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleRight(&quot;moderator&quot;)\"\n            >\n              {{ $t(!!user.rights.moderator ? 'user_card.admin_menu.revoke_moderator' : 'user_card.admin_menu.grant_moderator') }}\n            </button>\n            <div\n              v-if=\"canChangeActivationState || canDeleteAccount\"\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </span>\n          <button\n            v-if=\"canChangeActivationState\"\n            class=\"button-default dropdown-item\"\n            @click=\"toggleActivationStatus()\"\n          >\n            {{ $t(!!user.deactivated ? 'user_card.admin_menu.activate_account' : 'user_card.admin_menu.deactivate_account') }}\n          </button>\n          <button\n            v-if=\"canDeleteAccount\"\n            class=\"button-default dropdown-item\"\n            @click=\"deleteUserDialog(true)\"\n          >\n            {{ $t('user_card.admin_menu.delete_account') }}\n          </button>\n          <div\n            v-if=\"canUseTagPolicy\"\n            role=\"separator\"\n            class=\"dropdown-divider\"\n          />\n          <span v-if=\"canUseTagPolicy\">\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_NSFW)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_NSFW) }\"\n              />\n              {{ $t('user_card.admin_menu.force_nsfw') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.STRIP_MEDIA)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.STRIP_MEDIA) }\"\n              />\n              {{ $t('user_card.admin_menu.strip_media') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.FORCE_UNLISTED) }\"\n              />\n              {{ $t('user_card.admin_menu.force_unlisted') }}\n            </button>\n            <button\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.SANDBOX)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.SANDBOX) }\"\n              />\n              {{ $t('user_card.admin_menu.sandbox') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_REMOTE_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_remote_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.DISABLE_ANY_SUBSCRIPTION) }\"\n              />\n              {{ $t('user_card.admin_menu.disable_any_subscription') }}\n            </button>\n            <button\n              v-if=\"user.is_local\"\n              class=\"button-default dropdown-item\"\n              @click=\"toggleTag(tags.QUARANTINE)\"\n            >\n              <span\n                class=\"menu-checkbox\"\n                :class=\"{ 'menu-checkbox-checked': hasTag(tags.QUARANTINE) }\"\n              />\n              {{ $t('user_card.admin_menu.quarantine') }}\n            </button>\n          </span>\n        </div>\n      </template>\n      <template #trigger>\n        <button\n          class=\"btn button-default btn-block moderation-tools-button\"\n          :class=\"{ toggled }\"\n        >\n          {{ $t('user_card.admin_menu.moderation') }}\n          <FAIcon icon=\"chevron-down\" />\n        </button>\n      </template>\n    </Popover>\n    <teleport to=\"#modal\">\n      <DialogModal\n        v-if=\"showDeleteUserDialog\"\n        :on-cancel=\"deleteUserDialog.bind(this, false)\"\n      >\n        <template #header>\n          {{ $t('user_card.admin_menu.delete_user') }}\n        </template>\n        <p>{{ $t('user_card.admin_menu.delete_user_confirmation') }}</p>\n        <template #footer>\n          <button\n            class=\"btn button-default\"\n            @click=\"deleteUserDialog(false)\"\n          >\n            {{ $t('general.cancel') }}\n          </button>\n          <button\n            class=\"btn button-default danger\"\n            @click=\"deleteUser()\"\n          >\n            {{ $t('user_card.admin_menu.delete_user') }}\n          </button>\n        </template>\n      </DialogModal>\n    </teleport>\n  </div>\n</template>\n\n<script src=\"./moderation_tools.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n.moderation-tools-popover {\n  height: 100%;\n  .trigger {\n    display: flex !important;\n    height: 100%;\n  }\n}\n\n.moderation-tools-button {\n  svg,i {\n    font-size: 0.8em;\n  }\n}\n</style>\n","<template>\n  <span\n    :class=\"{ 'dark-overlay': darkOverlay }\"\n    @click.self.stop=\"onCancel()\"\n  >\n    <div\n      class=\"dialog-modal panel panel-default\"\n      @click.stop=\"\"\n    >\n      <div class=\"panel-heading dialog-modal-heading\">\n        <div class=\"title\">\n          <slot name=\"header\" />\n        </div>\n      </div>\n      <div class=\"dialog-modal-content\">\n        <slot name=\"default\" />\n      </div>\n      <div class=\"dialog-modal-footer user-interactions panel-footer\">\n        <slot name=\"footer\" />\n      </div>\n    </div>\n  </span>\n</template>\n\n<script src=\"./dialog_modal.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n// TODO: unify with other modals.\n.dark-overlay {\n  &::before {\n    bottom: 0;\n    content: \" \";\n    display: block;\n    cursor: default;\n    left: 0;\n    position: fixed;\n    right: 0;\n    top: 0;\n    background: rgba(27,31,35,.5);\n    z-index: 99;\n  }\n}\n\n.dialog-modal.panel {\n  top: 0;\n  left: 50%;\n  max-height: 80vh;\n  max-width: 90vw;\n  margin: 15vh auto;\n  position: fixed;\n  transform: translateX(-50%);\n  z-index: 999;\n  cursor: default;\n  display: block;\n  background-color: $fallback--bg;\n  background-color: var(--bg, $fallback--bg);\n\n  .dialog-modal-heading {\n    .title {\n      text-align: center;\n    }\n  }\n\n  .dialog-modal-content {\n    margin: 0;\n    padding: 1rem 1rem;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    white-space: normal;\n  }\n\n  .dialog-modal-footer {\n    margin: 0;\n    padding: .5em .5em;\n    background-color: $fallback--bg;\n    background-color: var(--bg, $fallback--bg);\n    border-top: 1px solid $fallback--border;\n    border-top: 1px solid var(--border, $fallback--border);\n    display: flex;\n    justify-content: flex-end;\n\n    button {\n      width: auto;\n      margin-left: .5rem;\n    }\n  }\n}\n\n</style>\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","import { render } from \"./dialog_modal.vue?vue&type=template&id=202a26c4\"\nimport script from \"./dialog_modal.js?vue&type=script&lang=js\"\nexport * from \"./dialog_modal.js?vue&type=script&lang=js\"\n\nimport \"./dialog_modal.vue?vue&type=style&index=0&id=202a26c4&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronDown } from '@fortawesome/free-solid-svg-icons'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronDown)\n\nconst FORCE_NSFW = 'mrf_tag:media-force-nsfw'\nconst STRIP_MEDIA = 'mrf_tag:media-strip'\nconst FORCE_UNLISTED = 'mrf_tag:force-unlisted'\nconst DISABLE_REMOTE_SUBSCRIPTION = 'mrf_tag:disable-remote-subscription'\nconst DISABLE_ANY_SUBSCRIPTION = 'mrf_tag:disable-any-subscription'\nconst SANDBOX = 'mrf_tag:sandbox'\nconst QUARANTINE = 'mrf_tag:quarantine'\n\nconst ModerationTools = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {\n      tags: {\n        FORCE_NSFW,\n        STRIP_MEDIA,\n        FORCE_UNLISTED,\n        DISABLE_REMOTE_SUBSCRIPTION,\n        DISABLE_ANY_SUBSCRIPTION,\n        SANDBOX,\n        QUARANTINE\n      },\n      showDeleteUserDialog: false,\n      toggled: false\n    }\n  },\n  components: {\n    DialogModal,\n    Popover\n  },\n  computed: {\n    tagsSet () {\n      return new Set(this.user.tags)\n    },\n    canGrantRole () {\n      return this.user.is_local && !this.user.deactivated && this.$store.state.users.currentUser.role === 'admin'\n    },\n    canChangeActivationState () {\n      return this.privileged('users_manage_activation_state')\n    },\n    canDeleteAccount () {\n      return this.privileged('users_delete')\n    },\n    canUseTagPolicy () {\n      return this.$store.state.instance.tagPolicyAvailable && this.privileged('users_manage_tags')\n    }\n  },\n  methods: {\n    hasTag (tagName) {\n      return this.tagsSet.has(tagName)\n    },\n    privileged (privilege) {\n      return this.$store.state.users.currentUser.privileges.includes(privilege)\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","import { render } from \"./moderation_tools.vue?vue&type=template&id=449b6458\"\nimport script from \"./moderation_tools.js?vue&type=script&lang=js\"\nexport * from \"./moderation_tools.js?vue&type=script&lang=js\"\n\nimport \"./moderation_tools.vue?vue&type=style&index=0&id=449b6458&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div class=\"AccountActions\">\n    <Popover\n      trigger=\"click\"\n      placement=\"bottom\"\n      :bound-to=\"{ x: 'container' }\"\n      remove-padding\n    >\n      <template #content>\n        <div class=\"dropdown-menu\">\n          <template v-if=\"relationship.following\">\n            <button\n              v-if=\"relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"hideRepeats\"\n            >\n              {{ $t('user_card.hide_repeats') }}\n            </button>\n            <button\n              v-if=\"!relationship.showing_reblogs\"\n              class=\"btn button-default dropdown-item\"\n              @click=\"showRepeats\"\n            >\n              {{ $t('user_card.show_repeats') }}\n            </button>\n            <div\n              role=\"separator\"\n              class=\"dropdown-divider\"\n            />\n          </template>\n          <UserListMenu :user=\"user\" />\n          <button\n            v-if=\"relationship.followed_by\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"removeUserFromFollowers\"\n          >\n            {{ $t('user_card.remove_follower') }}\n          </button>\n          <button\n            v-if=\"relationship.blocking\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"unblockUser\"\n          >\n            {{ $t('user_card.unblock') }}\n          </button>\n          <button\n            v-else\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"blockUser\"\n          >\n            {{ $t('user_card.block') }}\n          </button>\n          <button\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"reportUser\"\n          >\n            {{ $t('user_card.report') }}\n          </button>\n          <button\n            v-if=\"pleromaChatMessagesAvailable\"\n            class=\"btn button-default btn-block dropdown-item\"\n            @click=\"openChat\"\n          >\n            {{ $t('user_card.message') }}\n          </button>\n        </div>\n      </template>\n      <template #trigger>\n        <button class=\"button-unstyled ellipsis-button\">\n          <FAIcon\n            class=\"icon\"\n            icon=\"ellipsis-v\"\n          />\n        </button>\n      </template>\n    </Popover>\n  </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n.AccountActions {\n  .ellipsis-button {\n    width: 2.5em;\n    margin: -0.5em 0;\n    padding: 0.5em 0;\n    text-align: center;\n\n    &:not(:hover) .icon {\n      color: $fallback--lightText;\n      color: var(--lightText, $fallback--lightText);\n    }\n  }\n}\n</style>\n","<template>\n  <div class=\"UserListMenu\">\n    <Popover\n      trigger=\"hover\"\n      placement=\"left\"\n      remove-padding\n    >\n      <template #content>\n        <div class=\"dropdown-menu\">\n          <button\n            v-for=\"list in lists\"\n            :key=\"list.id\"\n            class=\"button-default dropdown-item\"\n            @click=\"toggleList(list.id)\"\n          >\n            <span\n              class=\"menu-checkbox\"\n              :class=\"{ 'menu-checkbox-checked': list.inList }\"\n            />\n            {{ list.title }}\n          </button>\n        </div>\n      </template>\n      <template #trigger>\n        <button class=\"btn button-default dropdown-item -has-submenu\">\n          {{ $t('lists.manage_lists') }}\n          <FAIcon\n            class=\"chevron-icon\"\n            size=\"lg\"\n            icon=\"chevron-right\"\n          />\n        </button>\n      </template>\n    </Popover>\n  </div>\n</template>\n\n<script src=\"./user_list_menu.js\"></script>\n","import { library } from '@fortawesome/fontawesome-svg-core'\nimport { faChevronRight } from '@fortawesome/free-solid-svg-icons'\nimport { mapState } from 'vuex'\n\nimport DialogModal from '../dialog_modal/dialog_modal.vue'\nimport Popover from '../popover/popover.vue'\n\nlibrary.add(faChevronRight)\n\nconst UserListMenu = {\n  props: [\n    'user'\n  ],\n  data () {\n    return {}\n  },\n  components: {\n    DialogModal,\n    Popover\n  },\n  created () {\n    this.$store.dispatch('fetchUserInLists', this.user.id)\n  },\n  computed: {\n    ...mapState({\n      allLists: state => state.lists.allLists\n    }),\n    inListsSet () {\n      return new Set(this.user.inLists.map(x => x.id))\n    },\n    lists () {\n      if (!this.user.inLists) return []\n      return this.allLists.map(list => ({\n        ...list,\n        inList: this.inListsSet.has(list.id)\n      }))\n    }\n  },\n  methods: {\n    toggleList (listId) {\n      if (this.inListsSet.has(listId)) {\n        this.$store.dispatch('removeListAccount', { accountId: this.user.id, listId }).then((response) => {\n          if (!response.ok) { return }\n          this.$store.dispatch('fetchUserInLists', this.user.id)\n        })\n      } else {\n        this.$store.dispatch('addListAccount', { accountId: this.user.id, listId }).then((response) => {\n          if (!response.ok) { return }\n          this.$store.dispatch('fetchUserInLists', this.user.id)\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 UserListMenu\n","import { render } from \"./user_list_menu.vue?vue&type=template&id=aeea2640\"\nimport script from \"./user_list_menu.js?vue&type=script&lang=js\"\nexport * from \"./user_list_menu.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { mapState } from 'vuex'\nimport ProgressButton from '../progress_button/progress_button.vue'\nimport Popover from '../popover/popover.vue'\nimport UserListMenu from 'src/components/user_list_menu/user_list_menu.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faEllipsisV\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faEllipsisV\n)\n\nconst AccountActions = {\n  props: [\n    'user', 'relationship'\n  ],\n  data () {\n    return { }\n  },\n  components: {\n    ProgressButton,\n    Popover,\n    UserListMenu\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    removeUserFromFollowers () {\n      this.$store.dispatch('removeUserFromFollowers', this.user.id)\n    },\n    reportUser () {\n      this.$store.dispatch('openUserReportingModal', { userId: this.user.id })\n    },\n    openChat () {\n      this.$router.push({\n        name: 'chat',\n        params: { username: this.$store.state.users.currentUser.screen_name, recipient_id: this.user.id }\n      })\n    }\n  },\n  computed: {\n    ...mapState({\n      pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable\n    })\n  }\n}\n\nexport default AccountActions\n","import { render } from \"./account_actions.vue?vue&type=template&id=09217280\"\nimport script from \"./account_actions.js?vue&type=script&lang=js\"\nexport * from \"./account_actions.js?vue&type=script&lang=js\"\n\nimport \"./account_actions.vue?vue&type=style&index=0&id=09217280&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <div\n    class=\"user-note\"\n  >\n    <div class=\"heading\">\n      <span>{{ $t('user_card.note') }}</span>\n      <div class=\"buttons\">\n        <button\n          v-show=\"!editing && editable\"\n          class=\"button-default btn\"\n          @click=\"startEditing\"\n        >\n          {{ $t('user_card.edit_note') }}\n        </button>\n        <button\n          v-show=\"editing\"\n          class=\"button-default btn\"\n          :disabled=\"frozen\"\n          @click=\"finalizeEditing\"\n        >\n          {{ $t('user_card.edit_note_apply') }}\n        </button>\n        <button\n          v-show=\"editing\"\n          class=\"button-default btn\"\n          :disabled=\"frozen\"\n          @click=\"cancelEditing\"\n        >\n          {{ $t('user_card.edit_note_cancel') }}\n        </button>\n      </div>\n    </div>\n    <textarea\n      v-show=\"editing\"\n      v-model=\"localNote\"\n      class=\"note-text\"\n    />\n    <span\n      v-show=\"!editing\"\n      class=\"note-text\"\n      :class=\"{ '-blank': !relationship.note }\"\n    >\n      {{ relationship.note || $t('user_card.note_blank') }}\n    </span>\n  </div>\n</template>\n\n<script src=\"./user_note.js\"></script>\n\n<style lang=\"scss\">\n@import '../../variables';\n\n.user-note {\n  display: flex;\n  flex-direction: column;\n\n  .heading {\n    display: flex;\n    flex-direction: row;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 0.75em;\n\n    .btn {\n      min-width: 95px;\n    }\n\n    .buttons {\n      display: flex;\n      flex-direction: row;\n      justify-content: right;\n\n      .btn {\n        margin-left: 0.5em;\n      }\n    }\n  }\n\n  .note-text {\n    align-self: stretch;\n  }\n\n  .note-text.-blank {\n    font-style: italic;\n    color: var(--faint, $fallback--faint);\n  }\n}\n</style>\n","const UserNote = {\n  props: {\n    user: Object,\n    relationship: Object,\n    editable: Boolean\n  },\n  data () {\n    return {\n      localNote: '',\n      editing: false,\n      frozen: false\n    }\n  },\n  computed: {\n    shouldShow () {\n      return this.relationship.note || this.editing\n    }\n  },\n  methods: {\n    startEditing () {\n      this.localNote = this.relationship.note\n      this.editing = true\n    },\n    cancelEditing () {\n      this.editing = false\n    },\n    finalizeEditing () {\n      this.frozen = true\n\n      this.$store.dispatch('editUserNote', {\n        id: this.user.id,\n        comment: this.localNote\n      })\n        .then(() => {\n          this.frozen = false\n          this.editing = false\n        })\n        .catch(() => {\n          this.frozen = false\n        })\n    }\n  }\n}\n\nexport default UserNote\n","import { render } from \"./user_note.vue?vue&type=template&id=54943d0a\"\nimport script from \"./user_note.js?vue&type=script&lang=js\"\nexport * from \"./user_note.js?vue&type=script&lang=js\"\n\nimport \"./user_note.vue?vue&type=style&index=0&id=54943d0a&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 UserNote from '../user_note/user_note.vue'\nimport Select from '../select/select.vue'\nimport UserLink from '../user_link/user_link.vue'\nimport RichContent from 'src/components/rich_content/rich_content.jsx'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n  faBell,\n  faRss,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit,\n  faTimes,\n  faExpandAlt\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n  faRss,\n  faBell,\n  faSearchPlus,\n  faExternalLinkAlt,\n  faEdit,\n  faTimes,\n  faExpandAlt\n)\n\nexport default {\n  props: [\n    'userId',\n    'switcher',\n    'selected',\n    'hideBio',\n    'rounded',\n    'bordered',\n    'avatarAction', // default - open profile, 'zoom' - zoom, function - call function\n    'onClose',\n    'hasNoteEditor'\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        '-rounded-t': this.rounded === 'top', // set border-top-left-radius and border-top-right-radius\n        '-rounded': this.rounded === true, // set border-radius for all sides\n        '-bordered': this.bordered === true, // set border for all sides\n        '-popover': !!this.onClose // set popover rounding\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    showModerationMenu () {\n      const privileges = this.loggedIn.privileges\n      return this.loggedIn.role === 'admin' || privileges.includes('users_manage_activation_state') || privileges.includes('users_delete') || privileges.includes('users_manage_tags')\n    },\n    hasNote () {\n      return this.relationship.note\n    },\n    supportsNote () {\n      return 'note' in this.relationship\n    },\n    ...mapGetters(['mergedConfig'])\n  },\n  components: {\n    UserAvatar,\n    RemoteFollow,\n    ModerationTools,\n    AccountActions,\n    ProgressButton,\n    FollowButton,\n    Select,\n    RichContent,\n    UserLink,\n    UserNote\n  },\n  methods: {\n    muteUser () {\n      this.$store.dispatch('muteUser', this.user.id)\n    },\n    unmuteUser () {\n      this.$store.dispatch('unmuteUser', this.user.id)\n    },\n    subscribeUser () {\n      return this.$store.dispatch('subscribeUser', this.user.id)\n    },\n    unsubscribeUser () {\n      return this.$store.dispatch('unsubscribeUser', this.user.id)\n    },\n    setProfileView (v) {\n      if (this.switcher) {\n        const store = this.$store\n        store.commit('setProfileView', { v })\n      }\n    },\n    linkClicked ({ target }) {\n      if (target.tagName === 'SPAN') {\n        target = target.parentNode\n      }\n      if (target.tagName === 'A') {\n        window.open(target.href, '_blank')\n      }\n    },\n    userProfileLink (user) {\n      return generateProfileLink(\n        user.id, user.screen_name,\n        this.$store.state.instance.restrictedNicknames\n      )\n    },\n    openProfileTab () {\n      this.$store.dispatch('openSettingsModalTab', 'profile')\n    },\n    zoomAvatar () {\n      const attachment = {\n        url: this.user.profile_image_url_original,\n        mimetype: 'image'\n      }\n      this.$store.dispatch('setMedia', [attachment])\n      this.$store.dispatch('setCurrentMedia', attachment)\n    },\n    mentionUser () {\n      this.$store.dispatch('openPostStatusModal', { replyTo: true, repliedUser: this.user })\n    },\n    onAvatarClickHandler (e) {\n      if (this.onAvatarClick) {\n        e.preventDefault()\n        this.onAvatarClick()\n      }\n    }\n  }\n}\n","import { render } from \"./user_card.vue?vue&type=template&id=84f02f76\"\nimport script from \"./user_card.js?vue&type=script&lang=js\"\nexport * from \"./user_card.js?vue&type=script&lang=js\"\n\nimport \"./user_card.scss?vue&type=style&index=0&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <router-link\n    :title=\"user.screen_name_ui\"\n    :to=\"userProfileLink(user)\"\n  >\n    {{ at ? '@' : '' }}{{ user.screen_name_ui }}<UnicodeDomainIndicator\n      :user=\"user\"\n    />\n  </router-link>\n</template>\n\n<script>\nimport UnicodeDomainIndicator from '../unicode_domain_indicator/unicode_domain_indicator.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\n\nconst UserLink = {\n  props: {\n    user: Object,\n    at: {\n      type: Boolean,\n      default: true\n    }\n  },\n  components: {\n    UnicodeDomainIndicator\n  },\n  methods: {\n    userProfileLink (user) {\n      return generateProfileLink(\n        user.id, user.screen_name,\n        this.$store.state.instance.restrictedNicknames\n      )\n    }\n  }\n}\n\nexport default UserLink\n</script>\n","import { render } from \"./user_link.vue?vue&type=template&id=2cae9070\"\nimport script from \"./user_link.vue?vue&type=script&lang=js\"\nexport * from \"./user_link.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import UserCard from '../user_card/user_card.vue'\nimport { defineAsyncComponent } from 'vue'\n\nconst UserPopover = {\n  name: 'UserPopover',\n  props: [\n    'userId', 'overlayCenters', 'disabled', 'overlayCentersSelector'\n  ],\n  components: {\n    UserCard,\n    Popover: defineAsyncComponent(() => import('../popover/popover.vue'))\n  },\n  computed: {\n    userPopoverAvatarAction () {\n      return this.$store.getters.mergedConfig.userPopoverAvatarAction\n    },\n    userPopoverOverlay () {\n      return this.$store.getters.mergedConfig.userPopoverOverlay\n    }\n  }\n}\n\nexport default UserPopover\n","import { render } from \"./user_popover.vue?vue&type=template&id=04d2fb76\"\nimport script from \"./user_popover.js?vue&type=script&lang=js\"\nexport * from \"./user_popover.js?vue&type=script&lang=js\"\n\nimport \"./user_popover.vue?vue&type=style&index=0&id=04d2fb76&lang=scss\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <Popover\n    trigger=\"click\"\n    popover-class=\"popover-default user-popover\"\n    :overlay-centers-selector=\"overlayCentersSelector || '.user-info .Avatar'\"\n    :overlay-centers=\"overlayCenters && userPopoverOverlay\"\n    :disabled=\"disabled\"\n  >\n    <template #trigger>\n      <slot />\n    </template>\n    <template #content=\"{close}\">\n      <UserCard\n        class=\"user-popover\"\n        :user-id=\"userId\"\n        :hide-bio=\"true\"\n        :avatar-action=\"userPopoverAvatarAction == 'close' ? close : userPopoverAvatarAction\"\n        :on-close=\"close\"\n      />\n    </template>\n  </Popover>\n</template>\n\n<script src=\"./user_popover.js\"></script>\n\n<style lang=\"scss\">\n@import '../../_variables.scss';\n\n/* popover styles load on-demand, so we need to override */\n.user-popover.popover {\n}\n\n</style>\n","\nconst VideoAttachment = {\n  props: ['attachment', 'controls'],\n  data () {\n    return {\n      blocksSuspend: false,\n      // Start from true because removing \"loop\" property seems buggy in Vue\n      hasAudio: true\n    }\n  },\n  computed: {\n    loopVideo () {\n      if (this.$store.getters.mergedConfig.loopVideoSilentOnly) {\n        return !this.hasAudio\n      }\n      return this.$store.getters.mergedConfig.loopVideo\n    }\n  },\n  methods: {\n    onPlaying (e) {\n      this.setHasAudio(e)\n      if (this.loopVideo) {\n        this.$emit('play', { looping: true })\n        return\n      }\n      this.$emit('play')\n    },\n    onPaused (e) {\n      this.$emit('pause')\n    },\n    setHasAudio (e) {\n      const target = e.srcElement || e.target\n      // If hasAudio is false, we've already marked this video to not have audio,\n      // a video can't gain audio out of nowhere so don't bother checking again.\n      if (!this.hasAudio) return\n      if (typeof target.webkitAudioDecodedByteCount !== 'undefined') {\n        // non-zero if video has audio track\n        if (target.webkitAudioDecodedByteCount > 0) return\n      }\n      if (typeof target.mozHasAudio !== 'undefined') {\n        // true if video has audio track\n        if (target.mozHasAudio) return\n      }\n      if (typeof target.audioTracks !== 'undefined') {\n        if (target.audioTracks.length > 0) return\n      }\n      this.hasAudio = false\n    }\n  }\n}\n\nexport default VideoAttachment\n","import { render } from \"./video_attachment.vue?vue&type=template&id=dda2841a\"\nimport script from \"./video_attachment.js?vue&type=script&lang=js\"\nexport * from \"./video_attachment.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/tank/sources/git/git.pleroma.social/pleroma/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n  <video\n    class=\"video\"\n    preload=\"metadata\"\n    :src=\"attachment.url\"\n    :loop=\"loopVideo\"\n    :controls=\"controls\"\n    :alt=\"attachment.description\"\n    :title=\"attachment.description\"\n    playsinline\n    @playing=\"onPlaying\"\n    @pause=\"onPaused\"\n  />\n</template>\n\n<script src=\"./video_attachment.js\"></script>\n","var map = {\n\t\"./ar.json\": [\n\t\t36224,\n\t\t7808\n\t],\n\t\"./ca.json\": [\n\t\t49394,\n\t\t6234\n\t],\n\t\"./cs.json\": [\n\t\t87436,\n\t\t7433\n\t],\n\t\"./de.json\": [\n\t\t25195,\n\t\t9459\n\t],\n\t\"./en.json\": [\n\t\t88797\n\t],\n\t\"./eo.json\": [\n\t\t97898,\n\t\t4646\n\t],\n\t\"./es.json\": [\n\t\t98559,\n\t\t3968\n\t],\n\t\"./et.json\": [\n\t\t13230,\n\t\t4451\n\t],\n\t\"./eu.json\": [\n\t\t84826,\n\t\t4542\n\t],\n\t\"./fa.json\": [\n\t\t52006,\n\t\t2953\n\t],\n\t\"./fi.json\": [\n\t\t70823,\n\t\t9738\n\t],\n\t\"./fr.json\": [\n\t\t61341,\n\t\t3746\n\t],\n\t\"./ga.json\": [\n\t\t41647,\n\t\t830\n\t],\n\t\"./he.json\": [\n\t\t92215,\n\t\t379\n\t],\n\t\"./hu.json\": [\n\t\t95028,\n\t\t5494\n\t],\n\t\"./id.json\": [\n\t\t62263,\n\t\t2513\n\t],\n\t\"./it.json\": [\n\t\t2533,\n\t\t1159\n\t],\n\t\"./ja_easy.json\": [\n\t\t8439,\n\t\t8714\n\t],\n\t\"./ja_pedantic.json\": [\n\t\t22838,\n\t\t325\n\t],\n\t\"./ko.json\": [\n\t\t10707,\n\t\t9670\n\t],\n\t\"./nb.json\": [\n\t\t72358,\n\t\t7845\n\t],\n\t\"./nl.json\": [\n\t\t49922,\n\t\t6256\n\t],\n\t\"./oc.json\": [\n\t\t47297,\n\t\t617\n\t],\n\t\"./pl.json\": [\n\t\t82098,\n\t\t5571\n\t],\n\t\"./pt.json\": [\n\t\t94465,\n\t\t4047\n\t],\n\t\"./ro.json\": [\n\t\t64367,\n\t\t6342\n\t],\n\t\"./ru.json\": [\n\t\t73289,\n\t\t5964\n\t],\n\t\"./sk.json\": [\n\t\t31478,\n\t\t1547\n\t],\n\t\"./te.json\": [\n\t\t32781,\n\t\t2044\n\t],\n\t\"./uk.json\": [\n\t\t8411,\n\t\t5253\n\t],\n\t\"./vi.json\": [\n\t\t6294,\n\t\t4975\n\t],\n\t\"./zh.json\": [\n\t\t4425,\n\t\t5929\n\t],\n\t\"./zh_Hant.json\": [\n\t\t37644,\n\t\t6544\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 27650;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + ({\"50\":\"emoji-annotations/en_GB-json\",\"227\":\"emoji-annotations/ha-json\",\"278\":\"emoji-annotations/kn-json\",\"313\":\"emoji-annotations/tg-json\",\"325\":\"i18n/ja_pedantic-json\",\"346\":\"emoji-annotations/rw-json\",\"379\":\"i18n/he-json\",\"420\":\"emoji-annotations/fi-json\",\"457\":\"emoji-annotations/zh-json\",\"577\":\"emoji-annotations/en_001-json\",\"617\":\"i18n/oc-json\",\"625\":\"emoji-annotations/so-json\",\"678\":\"emoji-annotations/ps-json\",\"786\":\"emoji-annotations/xh-json\",\"830\":\"i18n/ga-json\",\"1012\":\"emoji-annotations/or-json\",\"1044\":\"emoji-annotations/zh_Hant_HK-json\",\"1056\":\"emoji-annotations/uz-json\",\"1095\":\"emoji-annotations/pl-json\",\"1159\":\"i18n/it-json\",\"1162\":\"emoji-annotations/ccp-json\",\"1236\":\"emoji-annotations/fil-json\",\"1290\":\"emoji-annotations/ja-json\",\"1404\":\"emoji-annotations/km-json\",\"1452\":\"emoji-annotations/yue-json\",\"1546\":\"emoji-annotations/pt_PT-json\",\"1547\":\"i18n/sk-json\",\"1553\":\"emoji-annotations/sl-json\",\"1584\":\"emoji-annotations/to-json\",\"1596\":\"emoji-annotations/da-json\",\"1613\":\"emoji-annotations/mai-json\",\"1780\":\"emoji-annotations/tk-json\",\"1790\":\"emoji-annotations/dsb-json\",\"1821\":\"emoji-annotations/fr_CA-json\",\"1911\":\"emoji-annotations/mr-json\",\"1959\":\"emoji-annotations/su-json\",\"2044\":\"i18n/te-json\",\"2223\":\"emoji-annotations/fr-json\",\"2243\":\"emoji-annotations/sa-json\",\"2342\":\"emoji-annotations/az-json\",\"2350\":\"emoji-annotations/sk-json\",\"2397\":\"emoji-annotations/kl-json\",\"2479\":\"emoji-annotations/jv-json\",\"2513\":\"i18n/id-json\",\"2569\":\"emoji-annotations/tt-json\",\"2599\":\"emoji-annotations/kok-json\",\"2656\":\"emoji-annotations/ckb-json\",\"2685\":\"emoji-annotations/ml-json\",\"2699\":\"emoji-annotations/es_MX-json\",\"2767\":\"emoji-annotations/zh_Hant-json\",\"2861\":\"emoji-annotations/hr-json\",\"2873\":\"emoji-annotations/kk-json\",\"2874\":\"emoji-annotations/sc-json\",\"2883\":\"emoji-annotations/ku-json\",\"2953\":\"i18n/fa-json\",\"2966\":\"emoji-annotations/ko-json\",\"2992\":\"emoji-annotations/eu-json\",\"3056\":\"emoji-annotations/hi_Latn-json\",\"3241\":\"emoji-annotations/sv-json\",\"3276\":\"emoji-annotations/et-json\",\"3313\":\"emoji-annotations/es_US-json\",\"3377\":\"emoji-annotations/as-json\",\"3568\":\"emoji-annotations/ti-json\",\"3687\":\"emoji\",\"3746\":\"i18n/fr-json\",\"3887\":\"emoji-annotations/sr-json\",\"3951\":\"emoji-annotations/th-json\",\"3968\":\"i18n/es-json\",\"3974\":\"emoji-annotations/bg-json\",\"3994\":\"emoji-annotations/sw_KE-json\",\"4047\":\"i18n/pt-json\",\"4209\":\"emoji-annotations/doi-json\",\"4354\":\"emoji-annotations/si-json\",\"4368\":\"emoji-annotations/sq-json\",\"4424\":\"emoji-annotations/yue_Hans-json\",\"4451\":\"i18n/et-json\",\"4542\":\"i18n/eu-json\",\"4571\":\"emoji-annotations/ga-json\",\"4646\":\"i18n/eo-json\",\"4691\":\"emoji-annotations/ca-json\",\"4710\":\"emoji-annotations/cs-json\",\"4718\":\"emoji-annotations/mn-json\",\"4770\":\"emoji-annotations/lb-json\",\"4785\":\"emoji-annotations/ky-json\",\"4786\":\"emoji-annotations/te-json\",\"4879\":\"emoji-annotations/en_CA-json\",\"4902\":\"emoji-annotations/hu-json\",\"4975\":\"i18n/vi-json\",\"5041\":\"emoji-annotations/pt-json\",\"5104\":\"emoji-annotations/pcm-json\",\"5115\":\"emoji-annotations/sr_Latn_BA-json\",\"5119\":\"emoji-annotations/am-json\",\"5224\":\"emoji-annotations/vi-json\",\"5253\":\"i18n/uk-json\",\"5304\":\"emoji-annotations/ha_NE-json\",\"5401\":\"emoji-annotations/mni-json\",\"5494\":\"i18n/hu-json\",\"5521\":\"emoji-annotations/fa-json\",\"5548\":\"emoji-annotations/he-json\",\"5571\":\"i18n/pl-json\",\"5728\":\"emoji-annotations/en-json\",\"5887\":\"emoji-annotations/rm-json\",\"5929\":\"i18n/zh-json\",\"5964\":\"i18n/ru-json\",\"5968\":\"emoji-annotations/hi-json\",\"6060\":\"emoji-annotations/sr_Cyrl_BA-json\",\"6068\":\"emoji-annotations/ka-json\",\"6116\":\"emoji-annotations/gd-json\",\"6126\":\"emoji-annotations/gl-json\",\"6148\":\"emoji-annotations/br-json\",\"6226\":\"emoji-annotations/de-json\",\"6234\":\"i18n/ca-json\",\"6256\":\"i18n/nl-json\",\"6272\":\"emoji-annotations/cy-json\",\"6342\":\"i18n/ro-json\",\"6344\":\"emoji-annotations/hy-json\",\"6355\":\"emoji-annotations/af-json\",\"6544\":\"i18n/zh_Hant-json\",\"6701\":\"emoji-annotations/mi-json\",\"6773\":\"emoji-annotations/nl-json\",\"6790\":\"emoji-annotations/my-json\",\"6797\":\"emoji-annotations/ur-json\",\"6826\":\"emoji-annotations/sd-json\",\"6831\":\"emoji-annotations/es-json\",\"6869\":\"emoji-annotations/chr-json\",\"6936\":\"emoji-annotations/ia-json\",\"6946\":\"emoji-annotations/pa-json\",\"7164\":\"emoji-annotations/de_CH-json\",\"7169\":\"emoji-annotations/lt-json\",\"7261\":\"emoji-annotations/gu-json\",\"7300\":\"emoji-annotations/is-json\",\"7303\":\"emoji-annotations/wo-json\",\"7304\":\"emoji-annotations/be-json\",\"7360\":\"emoji-annotations/ar_SA-json\",\"7433\":\"i18n/cs-json\",\"7464\":\"emoji-annotations/lo-json\",\"7569\":\"emoji-annotations/ast-json\",\"7585\":\"emoji-annotations/sw-json\",\"7808\":\"i18n/ar-json\",\"7845\":\"i18n/nb-json\",\"7855\":\"emoji-annotations/sat-json\",\"7879\":\"emoji-annotations/el-json\",\"7897\":\"emoji-annotations/ta-json\",\"8015\":\"emoji-annotations/hsb-json\",\"8031\":\"emoji-annotations/qu-json\",\"8134\":\"emoji-annotations/bs-json\",\"8395\":\"emoji-annotations/ru-json\",\"8681\":\"emoji-annotations/sr_Latn-json\",\"8714\":\"i18n/ja_easy-json\",\"8732\":\"emoji-annotations/yo-json\",\"8873\":\"emoji-annotations/es_419-json\",\"8898\":\"emoji-annotations/lv-json\",\"8970\":\"emoji-annotations/it-json\",\"8988\":\"emoji-annotations/en_IN-json\",\"8995\":\"emoji-annotations/fo-json\",\"9064\":\"emoji-annotations/bn-json\",\"9319\":\"emoji-annotations/zu-json\",\"9360\":\"emoji-annotations/en_AU-json\",\"9377\":\"emoji-annotations/ne-json\",\"9399\":\"emoji-annotations/mt-json\",\"9414\":\"emoji-annotations/nn-json\",\"9459\":\"i18n/de-json\",\"9465\":\"emoji-annotations/id-json\",\"9670\":\"i18n/ko-json\",\"9738\":\"i18n/fi-json\",\"9757\":\"emoji-annotations/ug-json\",\"9780\":\"emoji-annotations/kab-json\",\"9790\":\"emoji-annotations/ceb-json\",\"9864\":\"emoji-annotations/ro-json\",\"9871\":\"emoji-annotations/uk-json\",\"9873\":\"emoji-annotations/ar-json\",\"9895\":\"emoji-annotations/ig-json\",\"9921\":\"emoji-annotations/mk-json\",\"9924\":\"emoji-annotations/ms-json\",\"9926\":\"emoji-annotations/yo_BJ-json\",\"9978\":\"emoji-annotations/tr-json\",\"9979\":\"emoji-annotations/no-json\",\"9994\":\"emoji-annotations/pa_Arab-json\"}[chunkId] || chunkId) + \".\" + {\"50\":\"bd687f904492facc81d1\",\"227\":\"2a08912b38925c10f970\",\"278\":\"efdac8ac0cb00991ba1e\",\"313\":\"9647f559a4477d7d8e96\",\"325\":\"b52fa70f0bf89ae01cfb\",\"346\":\"031838c5374676191131\",\"379\":\"03c5d271a4034de06e6f\",\"420\":\"0f254bb4b0faaba4abcc\",\"457\":\"e42a28127d5c1aff6c85\",\"577\":\"72d8c47269350f59aa9f\",\"617\":\"4f52bf1b6e3213acc33c\",\"625\":\"f75abd16637c8924c075\",\"678\":\"a0d9eea5b81bcad11e64\",\"786\":\"21e88c05ad3113dfc7f2\",\"830\":\"3f1981817977a16f1d7e\",\"1012\":\"b007c2f6f92dcc95efac\",\"1044\":\"7eee03c705347a21c612\",\"1056\":\"ac43f4c54d4587324a20\",\"1095\":\"e9e8f1ed84dc6c169516\",\"1159\":\"99a21d5c98376af17141\",\"1162\":\"02836537ffe2b02291cb\",\"1236\":\"4fca833f178d1b889b69\",\"1264\":\"1e16af28a0b44d4d17d0\",\"1290\":\"0bd51f8c40c106355b0e\",\"1325\":\"d1e5fcff4166acac7f06\",\"1404\":\"9bc922b2e0faa64b4c53\",\"1452\":\"15102c0ddfdf19bdfb4c\",\"1546\":\"c381b13e323f91b0e6b3\",\"1547\":\"d8d0eba80f94e6f55145\",\"1553\":\"a40c5548da34fce6f1d0\",\"1584\":\"50ac37d101caaf592c94\",\"1596\":\"8d074e27df71edafc543\",\"1613\":\"302386b3358f4d34f9c8\",\"1780\":\"23a9a6229829921704ad\",\"1790\":\"7635686ffd8d62264466\",\"1821\":\"59ed6b59e2ca68707292\",\"1911\":\"cb0a87d9aabf8a52161d\",\"1959\":\"daff15251020cbecea7d\",\"2044\":\"ce6db28261b2f824064f\",\"2223\":\"da49ed0d1a6622fe1c67\",\"2243\":\"21b06234a08c7469ccb4\",\"2342\":\"9a32f2941d9c4d1f834c\",\"2350\":\"5d96bdb4da82655d0314\",\"2397\":\"87ab8661b4bdecd09faf\",\"2479\":\"1c8d5ffcff22b46b6214\",\"2513\":\"3e42564ce7a3a847ecb0\",\"2569\":\"4c089389ba9983ec8ef7\",\"2599\":\"116e4f72db3bfb846233\",\"2656\":\"13dc83db1e15aa76051a\",\"2677\":\"45ff400a54f2f4c858f2\",\"2685\":\"3f2902a84240faff1b48\",\"2699\":\"ee359d4b611fdb1aeb33\",\"2767\":\"9cbb765c181d443828a9\",\"2861\":\"fe847ade1f18a60e513c\",\"2873\":\"a20b59d47bdfe99786ad\",\"2874\":\"c84c9c47d2e104c43e4c\",\"2883\":\"2173ed87f8d7372ee209\",\"2953\":\"a19100f6a5a9431e2adb\",\"2966\":\"d175900fe48f48ce87c8\",\"2992\":\"931b429f5fcc141549a5\",\"3056\":\"3cb73c456f31261f1908\",\"3241\":\"8b0374cbca3a77519876\",\"3276\":\"c42e3f186a55ecb061cd\",\"3313\":\"280bdb036dfd651d079a\",\"3377\":\"34cf67edc1cecd195738\",\"3568\":\"5b173bd33bb960be805b\",\"3687\":\"33eab91b64f59431137d\",\"3746\":\"36ef21ccb1203d3e65ae\",\"3887\":\"e29a20e59a708df0c6a8\",\"3951\":\"34709bae223bb9d2587c\",\"3968\":\"4a302899a65e1f67d8a2\",\"3974\":\"7c69c52572a7bf87e1db\",\"3994\":\"f3563cbeac1c158563d5\",\"4047\":\"3fc5593e030268bcd291\",\"4209\":\"7841c3f3ceb4e3da0bd1\",\"4354\":\"841b356da03623c10dbf\",\"4368\":\"bcf154ed8a6138aa089c\",\"4424\":\"cc60bb10d32fab3d8207\",\"4451\":\"580b101d6bb83a8aee75\",\"4542\":\"d2eab39b0427995fc314\",\"4571\":\"cb3f9e613a8c445aea23\",\"4646\":\"8b17b5b5653ed558d931\",\"4691\":\"ce029e860b10b242c6a5\",\"4710\":\"48d8bba230dc9fe6b3dc\",\"4718\":\"764169f1168d0432640f\",\"4770\":\"499c526f3a653618ea9b\",\"4785\":\"310bda579c819eda9472\",\"4786\":\"8a69a10f62cdf626244e\",\"4879\":\"5de965778a6b8a5a4bb4\",\"4902\":\"1faf52040deda872b416\",\"4975\":\"703c1e731be6e857bbf3\",\"5041\":\"2b2512ee44291bdb2ae7\",\"5104\":\"eac3a5ad0b4b5b33289d\",\"5115\":\"72933405032b81344754\",\"5119\":\"94388548f7c18233fec3\",\"5224\":\"f6a364b2add7f8c8bc67\",\"5253\":\"c33e4c72a2dfe9a9d143\",\"5304\":\"e4855d92aaccfdd6ba57\",\"5401\":\"7db7f76ab1ce34e3683d\",\"5494\":\"0487899ca7a7a8505ed8\",\"5521\":\"819c7f263c8594ccf4fa\",\"5548\":\"a3d7631f32182b0955a2\",\"5571\":\"c963247822381b05579b\",\"5728\":\"6c3947f7c49c3952084d\",\"5887\":\"985d4934f386fd05a75c\",\"5929\":\"de02aa4e82fcb1ec557c\",\"5964\":\"b913eb7f7e9f0c642438\",\"5968\":\"04bc5f73dc2169def97e\",\"6060\":\"83c7c64b9696ae2339f2\",\"6068\":\"567e7b051d90a37003f3\",\"6116\":\"e3d0aea3725be774ad81\",\"6126\":\"ce89036f0ae72224c994\",\"6148\":\"c7175423d8965ed10bae\",\"6226\":\"e1443c01a191af1665e1\",\"6234\":\"1eb24bc001efa3c0627f\",\"6256\":\"3fb9758b10c29434b613\",\"6272\":\"e09dd13da5ad56530ead\",\"6342\":\"3fd9977ed1c1413059ae\",\"6344\":\"2d819f7faabfeba8457f\",\"6355\":\"96c988285a6a2cce6246\",\"6464\":\"2ababce187697ee8b1e9\",\"6544\":\"eedcc6a7effd11514fe4\",\"6701\":\"9efe6f146ecd8987f80a\",\"6773\":\"52f4b93b8fa5e22cb585\",\"6790\":\"8e7dd1485813d15bba7e\",\"6797\":\"983c02109444c883a18f\",\"6826\":\"8f2a6a06dc3cf185f79d\",\"6831\":\"f593b0dc2367a9d7fb30\",\"6869\":\"e7e542ab5a74167dec10\",\"6936\":\"8e8365e2bf41779e2beb\",\"6946\":\"7d60d69762a108270669\",\"7164\":\"b4a5891ea2f38d616ec0\",\"7169\":\"ced4d5e70edc60127df6\",\"7261\":\"8a899f364cf260376905\",\"7300\":\"62e220c65215b034533d\",\"7303\":\"e0d689e22cda0dd77e9a\",\"7304\":\"f92f80669873a4100c69\",\"7360\":\"4a6f4402931a867070f0\",\"7433\":\"5eedbe9f7084c349fbe8\",\"7464\":\"ecb06d61465a355b8157\",\"7569\":\"7e4da8cb7e539c19a9b9\",\"7585\":\"d5f350641b9cbcc0e126\",\"7808\":\"d09609af3224232857d6\",\"7845\":\"a54af3b1f47d576ad4aa\",\"7855\":\"71e92700b2aaca8e021c\",\"7879\":\"b36610f2ea16d56c2314\",\"7897\":\"675cc6c7607449d4a91b\",\"8015\":\"438721731b4171bc6fc3\",\"8031\":\"55f4df57e71076dbad9f\",\"8134\":\"48ef42da1c7976cf083c\",\"8395\":\"a81d0df34460837ccacc\",\"8532\":\"290194af65a2e3a4120e\",\"8681\":\"ff27d1f455bf2afb8d70\",\"8714\":\"79705c1ec254307d2224\",\"8732\":\"ea1150d6bc360dd86f2e\",\"8873\":\"d81991295392b6ed83bb\",\"8898\":\"5600c2eb6d59fa0aa2e2\",\"8970\":\"9c1758f4fd3391f7f61a\",\"8988\":\"002faa48c09121928fca\",\"8995\":\"9b060e8009b3a8be4597\",\"9064\":\"657aac057f36ad06c58d\",\"9319\":\"e0cb7cd3890583fd0f6d\",\"9360\":\"33aac9bbd887273a34b1\",\"9377\":\"a0118dca2096a101b8e8\",\"9399\":\"3ddf7dbc114adf90c500\",\"9414\":\"7293cd5d7205681cf48c\",\"9459\":\"bfa48615ac92f87ff37a\",\"9465\":\"55f83c46d753b0b69330\",\"9670\":\"4bd28b26a7390a09afc2\",\"9738\":\"d1934c18f12d80493ab1\",\"9757\":\"bf768bd32e9ff02b0a8a\",\"9780\":\"1a2de4774f4ddc2b51dd\",\"9790\":\"9db0336f168aa77ee395\",\"9864\":\"cb62f86ce78c94d1e813\",\"9871\":\"af110c8eef232638fc4d\",\"9873\":\"5527466d349f2954d49b\",\"9895\":\"f19fa5fe3582463ba73c\",\"9921\":\"a254cabb8570419cc426\",\"9924\":\"272ee4735aabc37015dd\",\"9926\":\"650318c25fe4da92bad8\",\"9978\":\"6462e8cfd5006cf5b6cf\",\"9979\":\"22bdbbc77cc3c14ada58\",\"9994\":\"5ae021308b1c5f6dd8a7\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"1264\":\"177d0bf6917b317388ae\",\"1325\":\"715a7f40cdd53f460ef4\",\"6464\":\"2fa2e5f1fa93842c62b1\",\"8532\":\"88b90ac86f3060a3144e\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\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\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpleroma_fe\"] = self[\"webpackChunkpleroma_fe\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [9169], () => (__webpack_require__(78892)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","ctx","normalize","_normalize","interpolate","_interpolate","named","_named","list","_list","plural","_plural","map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","data","emojiCurry","suggestEmoji","emoji","usersCurry","store","suggestUsers","input","nameKeywordLocalizer","firstChar","emojis","noPrefix","toLowerCase","substr","filter","names","concat","keywords","kw","match","length","k","score","Math","max","name","imageUrl","startsWith","displayText","sort","a","b","alphabetically","dispatch","state","suggestions","previousQuery","timeout","cancelUserSearch","debounceUserSearch","query","reject","setTimeout","userSearch","clearTimeout","includes","newSuggestions","users","user","screen_name","slice","aScore","bScore","screen_name_ui","detailText","profile_image_url_original","replacement","getTagName","tag","result","exec","getAttrs","innertag","substring","replace","RegExp","trim","attrs","Array","from","matchAll","v","fromEntries","attrKey","processTextForEmoji","text","processor","buffer","textBuffer","i","char","next","found","shortcode","push","class","props","url","required","type","String","content","default","methods","onClick","this","link","generateTagLink","$router","window","open","_createElementBlock","_hoisted_1","_createElementVNode","href","_ctx","target","innerHTML","components","MentionsLine","HashtagLink","html","attentions","handleLinks","Boolean","greentext","render","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","emptyElements","Set","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","handleClose","currentTag","pop","tagFull","tagName","has","convertHtmlToTree","processItem","item","index","array","what","emptyText","isArray","opener","children","closer","Tag","fullAttrs","mentionsLinePadding","linkData","getLinkData","notifying","some","statusnet_profile_url","MENTIONS_LIMIT","renderMention","undefined","pass2","reverse","processItemReverse","rel","renderHashtag","newChildren","event","$emit","textContent","stripTags","join","greentextHandle","lines","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","shift","convertHtmlToLines","string","every","l","cleanedString","findFirstUsable","slots","findIndex","_","renderOnlyFocused","onSwitch","Function","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","active","computed","activeIndex","slot","key","isActive","tabName","$slots","settingsModalVisible","settingsModalState","mapState","beforeUpdate","clickTab","preventDefault","setTab","Fragment","call","$refs","contents","scrollTop","tabs","classesTab","classesWrapper","image","disabled","label","icon","classes","fullHeight","renderSlot","specialJsonName","ja","languages","langCodeToJsonName","langCodeToCldrName","ensureFinalFallback","codes","codeList","loadLanguageFile","en","require","setLanguage","i18n","language","messages","setLocaleMessage","locale","EventTarget","EventTargetPolyfill","settingsModalLoaded","settingsModalTargetTab","settings","currentSaveStateNotice","noticeClearTimeout","notificationPermission","browserSupport","cssFilter","CSS","supports","layoutType","globalNotices","layoutHeight","lastTimeline","mutations","settingsSaved","success","error","errorData","setNotificationPermission","permission","setLayoutType","value","closeSettingsModal","togglePeekSettingsModal","openSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","notice","removeGlobalNotice","n","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","actions","setPageTitle","rootState","option","document","title","instance","commit","clearSettingsModalTargetTab","openSettingsModalTab","messageKey","messageArgs","newNotice","rootGetters","width","normalOrMobile","mergedConfig","thirdColumnMode","currentUser","SORTED_EMOJI_GROUP_IDS","REGIONAL_INDICATORS","start","A","codePointAt","res","end","letter","fromCodePoint","displayTextI18n","args","loadAnnotations","lang","injectAnnotations","annotations","availableLangs","reduce","acc","cur","registrationOpen","server","textlimit","themeData","vapidPublicKey","alwaysShowSubjectInput","defaultAvatar","defaultBanner","background","collapseMessageWithSubject","useAtIcon","mentionLinkDisplay","mentionLinkShowTooltip","mentionLinkShowAvatar","mentionLinkFadeDomain","mentionLinkShowYous","mentionLinkBoldenYou","hideFilteredStatuses","hideMutedPosts","hideMutedThreads","hideWordFilteredPosts","hidePostStats","hideBotIndication","hideSitename","hideUserStats","muteBotStatuses","loginMethod","logo","logoMargin","logoMask","logoLeft","disableUpdateNotification","minimalScopesMode","nsfwCensorImage","postContentType","redirectRootLogin","redirectRootNoLogin","scopeCopy","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","subjectLineBehavior","theme","virtualScrolling","sensitiveByDefault","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","maxDepthInThread","customEmoji","customEmojiFetched","emojiFetched","unicodeEmojiAnnotations","pleromaBackend","postFormats","restrictedNicknames","safeDM","knownDomains","shoutAvailable","pleromaChatMessagesAvailable","gopherAvailable","mediaProxyAvailable","suggestionsEnabled","suggestionsWeb","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","pollsAvailable","pollLimits","max_options","max_option_chars","min_expiration","max_expiration","setInstanceOption","setKnownDomains","domains","setUnicodeEmojiAnnotations","getters","instanceDefaultConfig","instanceDefaultProperties","groupedCustomEmojis","tags","packsOf","forEach","packName","packId","standardEmojiList","groupId","standardEmojiGroupList","instanceDomain","URL","hostname","remoteInteractionLink","endsWith","statusId","nickname","getStaticEmoji","slug","groups","symbols","console","warn","loadUnicodeEmojiData","langList","all","getCustomEmoji","fetch","ok","json","assign","caseInsensitiveStrCmp","la","lb","byPackThenByName","packOf","entries","image_url","setTheme","themeName","getPreset","config","customTheme","themeSource","source","themeEngineVersion","CURRENT_VERSION","applyTheme","fetchEmoji","getKnownDomains","apiService","credentials","emptyTl","userId","statuses","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","maxId","minId","minVisibleId","loading","followers","friends","flushMarker","emptyNotifications","desktopNotificationSilence","Number","POSITIVE_INFINITY","idStore","defaultState","allStatuses","allStatusesObject","conversationsObject","notifications","favorites","timelines","mentions","public","media","publicAndExternal","dms","bookmarks","mergeOrAdd","arr","obj","oldItem","attachments","splice","new","status","deleted","prepareStatus","sortById","seqA","seqB","isSeqA","isNaN","isSeqB","sortTimeline","timeline","addStatusToGlobalStorage","conversationId","statusnet_conversation_id","updateNotificationsMinMaxId","notification","addNewStatuses","showImmediately","noIdUpdate","pagination","timelineObject","minNew","maxNew","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","visibility","processors","edit","retweet","retweetedStatus","retweeted_status","s","favorite","add","counter","in_reply_to_status_id","favorited","fave_num","favoriteStatus","deletion","uri","action","removeStatusFromGlobalStorage","follow","unknown","log","addNewNotifications","newNotificationSideEffects","visibleNotificationTypes","isValidNotification","isStatusNotification","report","hasOwnProperty","seen","removeStatus","showNewStatuses","oldTimeline","resetStatuses","emptyState","clearTimeline","excludeUserId","clearNotifications","setFavorited","newStatus","setFavoritedConfirm","favoritedBy","setMutedStatus","thread_muted","setRetweeted","repeated","repeat_num","setRetweetedConfirm","rebloggedBy","setBookmarked","bookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","nsfw","setNotificationsLoading","setNotificationsSilence","markNotificationsAsSeen","markSingleNotificationAsSeen","dismissNotification","dismissNotifications","finder","updateNotification","updater","queueFlush","queueFlushAll","addRepeats","rebloggedByUsers","find","addFavs","favoritedByUsers","addEmojiReactionsBy","emojiReactions","emoji_reactions","addOwnReaction","reactionIndex","reaction","count","accounts","newReaction","me","removeOwnReaction","r","updateStatusWithPoll","poll","setVirtualHeight","height","virtualHeight","maybeShowNotification","fetchStatus","api","backendInteractor","fetchStatusSource","fetchStatusHistory","deleteStatus","deleteStatusById","markStatusesAsDeleted","unfavorite","fetchPinnedStatuses","pinStatus","pinOwnStatus","unpinStatus","unpinOwnStatus","muteConversation","unmuteConversation","unretweet","bookmark","bookmarkStatus","unbookmark","unbookmarkStatus","single","dismissNotificationLocal","fetchFavsAndRepeats","fetchFavoritedByUsers","fetchRebloggedByUsers","reactWithEmoji","unreactWithEmoji","fetchEmojiReactionsBy","fetchEmojiReactions","fetchFavs","fetchRepeats","search","q","limit","offset","following","search2","setLists","allLists","setList","listId","allListsObject","accountIds","entry","setListAccounts","addListAccount","accountId","removeListAccount","set","deleteList","lists","createList","fetchList","getList","fetchListAccounts","getListAccounts","updateList","saved","added","removed","addAccountsToList","removeAccountsFromList","findListTitle","findListAccounts","fetchAndUpdate","until","since","timelineData","replyVisibility","loggedIn","withMuted","numStatusesBeforeFetch","response","errors","statusText","ccTimeline","update","message","timelineFetcher","startFetching","promiseInterval","boundFetchAndUpdate","requests","listsFetcher","startFetchingTimeline","fetchTimeline","startFetchingNotifications","notificationsFetcher","fetchNotifications","startFetchingFollowRequests","followRequestFetcher","startFetchingLists","startUserSocket","getMastodonSocketURI","stream","ProcessedWS","func","verifyCredentials","windowWidth","innerWidth","documentElement","clientWidth","body","windowHeight","innerHeight","clientHeight","REDIRECT_URI","location","origin","getOrCreateApp","clientId","clientSecret","form","FormData","append","___pleromafe_commit_hash","Date","toISOString","method","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","scope","dataString","encoded","encodeURIComponent","getToken","getTokenWithCredentials","username","password","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","token","isPushSupported","navigator","getOrCreateServiceWorker","runtime","err","deleteSubscriptionFromBackEnd","headers","Authorization","mergeArrayLength","oldValue","newValue","blockUser","relationship","unblockUser","muteUser","predictedRelationship","relationships","muting","unmuteUser","muteDomain","domain","unmuteDomain","tagUser","usersObject","newTags","untagUser","updateRight","right","newRights","rights","updateActivationStatus","deactivated","setCurrentUser","lastLoginName","clearCurrentUser","beginLogin","loggingIn","endLogin","saveFriendIds","friendIds","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","usersByNameObject","updateUserRelationship","updateUserInLists","inLists","saveBlockIds","blockIds","addBlockId","blockId","indexOf","saveMuteIds","muteIds","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","pinned","setUserForStatus","setUserForNotification","from_profile","setColor","highlighted","highlight","signUpPending","signUpErrors","signUpSuccess","signUpFailure","findUser","findUserByName","findUserByUrl","u","fetchUserIfMissing","fetchUser","fetchUserByName","fetchUserRelationship","fetchUserInLists","fetchBlocks","blocks","removeUserFromFollowers","blockUsers","unblockUsers","editUserNote","comment","fetchMutes","mutes","hideReblogs","followUser","reblogs","showReblogs","muteUsers","unmuteUsers","fetchDomainMutes","muteDomains","unmuteDomains","fetchFriends","fetchFollowers","subscribeUser","unsubscribeUser","toggleActivationStatus","activateUser","deactivateUser","is_active","registerPushNotifications","isEnabled","notificationVisibility","registration","base64String","base64","rawData","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","atob","Uint8Array","charCodeAt","pushManager","subscribe","subscribePush","subscription","JSON","stringify","alerts","follows","favourite","likes","mention","reblog","repeats","move","moves","responseData","sendSubscriptionToBackEnd","webPushNotifications","unregisterPushNotifications","getSubscription","subscribtion","unsubscribe","unsubscribePush","unregister","retweetedUsers","targetUsers","notificationIds","notificationsObject","relevantNotifications","searchUsers","signUp","userInfo","register","params","access_token","getCaptcha","logout","oauthApi","userToken","backendInteractorService","loginUser","accessToken","Notification","requestPermission","locked","useStreamingApi","latest","maybeShowChatNotification","chat","lastMessage","chats","currentChatId","hidden","account_id","opts","account","profile_image_url","attachment","preview_url","showDesktopNotification","retryMultiplier","fetchers","socket","mastoUserSocket","mastoUserSocketStatus","followRequests","followRequestCount","setBackendInteractor","addFetcher","fetcherName","fetcher","removeFetcher","stop","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","WebSocket","CLOSED","CLOSING","getState","WSConnectionStatus","disableMastoSockets","startMastoUserSocket","addEventListener","detail","chatId","chatUpdate","closeEvent","ignoreCodes","debug","stopMastoUserSocket","close","stopFetchingTimeline","rest","stopFetchingNotifications","stopFetchingFollowRequests","removeFollowRequest","request","it","stopFetchingLists","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","library","faTimes","Modal","NEW_USER_DATE","COMMAND_TRIM_FLAGS_AND_RESET","dirty","flagStorage","updateCounter","reset","prefsStorage","_journal","simple","dontShowUpdateNotifs","collapseNav","collections","pinnedNavItems","raw","cache","newUserFlags","_moveItemInArray","movement","oldIndex","newIndex","newArray","_wrapData","userName","_user","_timestamp","now","_version","_checkValidity","_verifyPrefs","_mergeJournal","journals","allJournals","j","prototype","grouped","trimmedGrouped","path","journal","timestamp","remainder","lastRemoveIndex","operation","clearServerSideStorage","userData","setServerSideStorage","live","storage","fqn","recent","stale","needUpload","cacheValid","liveValid","_getRecentData","_PLEROMA_HOTPATCH","reverseMigrations","to","_doMigrations","needsUpload","userNew","created_at","flagsTemplate","recentData","staleData","totalFlags","totalPrefs","allFlagKeys","toRaw","_getAllFlags","flag","recentFlag","staleFlag","_mergeFlags","recentJournal","staleJournal","resultOutput","totalJournal","command","newSet","_mergePrefs","knownKeys","knownKeysSet","_resetFlags","min","setFlag","setPreference","addCollectionPreference","collection","removeCollectionPreference","reorderCollectionPreference","newCollection","updateCache","pushServerSideStorage","force","needPush","pleroma_settings_store","updateProfile","channel","joined","setChannel","addMessage","setMessages","setJoined","initializeShout","joinPush","receive","onClose","onError","on","msg","appToken","setClientData","setAppToken","setToken","clearToken","getUserToken","PASSWORD_STRATEGY","TOKEN_STRATEGY","TOTP_STRATEGY","RECOVERY_STRATEGY","resetState","strategy","initStrategy","namespaced","requiredPassword","requiredToken","requiredTOTP","requiredRecovery","setInitialStrategy","requirePassword","requireToken","requireMFA","requireRecovery","requireTOTP","abortMFA","root","supportedTypes","mediaViewer","currentIndex","activated","setMedia","setCurrentMedia","fileTypeService","mimetype","current","closeMediaViewer","tokens","fetchTokens","fetchOAuthTokens","revokeOAuthToken","swapTokens","reports","reportModal","preTickedIds","openUserReportingModal","closeUserReportingModal","setReportState","reportsState","addReport","statusIds","preTickedStatuses","oldState","trackedPolls","pollsObject","mergeOrAddPoll","existingPoll","expired","parse","expires_at","trackPoll","pollId","currentValue","untrackPoll","updateTrackedPoll","fetchPoll","polls","votePoll","choices","vote","modalActivated","openPostStatusModal","closePostStatusModal","openEditStatusModal","closeEditStatusModal","openStatusHistoryModal","closeStatusHistoryModal","ChatService","newMessages","updateMaxId","chat_id","fakeId","fakeMessage","idIndex","pending","idempotency_key","idempotencyKeyIndex","isConfirmation","lastSeenMessageId","newMessageCount","empty","getView","currentMessageChainId","firstMessage","previousMessage","date","setHours","getTime","toString","afterDate","nextMessage","isTail","object","messageChainId","isHead","deleteMessage","messageId","m","cullOlderMessages","maxIndex","minIndex","resetNewMessageCount","clear","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","c","sortedChatList","unreadChatCount","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","newChatMessageSideEffects","updateChat","startFetchingCurrentChat","setCurrentChatFetcher","addOpenedChat","parseChat","addChatMessages","resetChatNewMessageCount","clearCurrentChat","readChat","lastReadId","isNewMessage","deleteChatMessage","resetChats","clearOpenedChats","setChatListFetcher","prevFetcher","_dispatch","chatService","setCurrentChatId","updatedChat","unread","updated_at","_rootGetters","deleteChat","conversation","last_status","setChatsLoading","chatMessageService","parseChatMessage","_value","announcements","supportsAnnouncements","fetchAnnouncementsTimer","setAnnouncements","setAnnouncementRead","read","setFetchAnnouncementsTimer","timer","setSupportsAnnouncements","unreadAnnouncementCount","_getters","announcement","inactive","fetchAnnouncements","isAdmin","role","getAnnouncements","adminFetchAnnouncements","visible","visibleObject","getWithinVisible","visibleAnnouncement","statusCode","markAnnouncementAsRead","dismissAnnouncement","startFetchingAnnouncements","interval","setInterval","stopFetchingAnnouncements","clearInterval","postAnnouncement","startsAt","endsAt","allDay","editAnnouncement","deleteAnnouncement","loaded","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","getItem","setState","setItem","reducer","subscriber","handler","savedState","usersState","replaceState","merge","mutation","webPushNotification","isUserMutation","isVapidMutation","payload","isPermMutation","isUserConfigMutation","isVisibilityMutation","for","isPasswordAuth","isTokenAuth","mapGetters","mapMutations","mapActions","submit","submitToken","submitPassword","$store","identifier","passwordResetRequested","focusOnPasswordInput","clearError","passwordInput","focus","setSelectionRange","_hoisted_2","_hoisted_3","onSubmit","_Fragment","_hoisted_4","_hoisted_5","placeholder","_hoisted_7","_hoisted_8","ref","_hoisted_10","_createVNode","_component_router_link","_hoisted_11","_hoisted_12","_hoisted_13","_createBlock","_hoisted_15","_hoisted_16","_component_FAIcon","mfa","authSettings","mfa_token","mfaApi","_hoisted_6","_hoisted_9","size","h","resolveComponent","authForm","MFARecoveryForm","MFATOTPForm","LoginForm","signedIn","AuthForm","PostStatusForm","UserCard","_component_UserCard","rounded","_component_PostStatusForm","_component_auth_form","USERNAME_ROUTES","TIMELINES","home","route","criteria","anon","twkn","routeObject","tab","ROOT_ITEMS","interactions","badgeGetter","friendRequests","about","$props","custom","_renderSlot","faThumbtack","OptionalRouterLink","isPinned","pinnedItems","togglePin","routeTo","anonRoute","serverSideStorage","_component_OptionalRouterLink","ass","navigate","_mergeProps","_resolveDynamicComponent","iconLetter","labelRaw","_normalizeClass","transform","filterNavigation","hasChats","hasAnnouncements","isFederating","isPrivate","getListEntries","ListsMenuContent","NavigationEntry","privateMode","federating","_component_NavigationEntry","faUsers","faGlobe","faBookmark","faEnvelope","faComments","faBell","faInfoCircle","faStream","faList","getRouteTo","pinnedList","faChevronDown","faChevronUp","faBullhorn","created","NavigationPins","Checkbox","editMode","showTimelines","showLists","timelinesList","rootList","toggleTimelines","toggleLists","toggleEditMode","toggleCollapse","collapsed","timelinesItems","rootItems","_component_NavigationPins","_component_ListsMenuContent","shout","pleromaChatMessages","gopher","whoToFollow","mediaProxy","uploadlimit","fileSizeFormatService","num","unit","getWhoToFollow","panel","usersToFollow","toFollow","reply","shuffled","img","avatar","acct","externalUser","showWhoToFollow","userProfileLink","generateProfileLink","watch","oldUser","mounted","fill","x","src","currentMessage","togglePanel","newVal","scrollEl","$el","querySelector","offsetHeight","scrollHeight","$nextTick","author","rows","onKeyup","setTransform","scale","y","PinchZoom","_toHandlers","deltaCoord","oldCoord","newCoord","touchEventCoord","touch","touches","screenX","screenY","pointerEventCoord","clientX","clientY","vectorLength","sqrt","perpendicular","dotProduct","v1","v2","project","scalar","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","swipeGesture","direction","onSwipe","threshold","perpendicularTolerance","_startPos","_swiping","beginSwipe","gesture","updateSwipe","delta","towardsDir","perpendicularDir","towardsPerpendicular","SwipeAndClickGesture","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","disableClickThreshold","nop","_reset","_pointerId","_swiped","_preventNextClick","button","pointerId","coord","sign","isPositive","pointerType","handlePointerDown","$gesture","handlePointerMove","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","click","preview","offsets","GestureService","onPointerdown","onPointermove","onPointerup","onPointercancel","faChevronLeft","faChevronRight","faCircleNotch","StillImage","VideoAttachment","SwipeClick","Flash","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","description","currentMedia","canNavigate","getType","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","unmounted","removeEventListener","_component_Modal","onBackdropClicked","_component_SwipeClick","onPreviewRequested","onSwipeFinished","onSwipelessClicked","_component_PinchZoom","selector","alt","onLoad","_component_VideoAttachment","controls","_component_Flash","total","spin","faSignInAlt","faSignOutAlt","faHome","faUserPlus","faSearch","faTachometerAlt","faCog","faCompass","closed","closeGesture","toggleDrawer","unseenNotifications","unseenNotificationsFromStore","unseenNotificationsCount","sitename","timelinesRoute","doLogout","touchStart","touchMove","onTouchstart","onTouchmove","style","faPen","HIDDEN_FOR_PAGES","scrollingDown","inputActive","oldScrollPos","amountScrolled","autohideFloatingPostButton","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","$route","isPersistent","alwaysShowNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","scrollY","leading","trailing","faBars","faArrowUp","faMinus","SideDrawer","Notifications","notificationsCloseGesture","notificationsOpen","notificationsAtTop","closeMobileNotifications","isChat","chatsPinned","toggleMobileSidebar","sideDrawer","openMobileNotifications","markRead","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","scrollMobileNotificationsToTop","mobileNotifications","onScroll","fetchOlderNotifications","_component_FALayers","_component_SideDrawer","searchTerm","searchInput","toggleHidden","SearchBar","searchBarHidden","supportsMask","enableMask","logoStyle","logoMaskStyle","logoBgStyle","margin","opacity","onSearchBarToggled","_component_search_bar","onToggled","Status","List","UserLink","forward","statusIdsToReport","processing","isOpen","remoteInstance","is_local","closeModal","reportUser","isChecked","toggleStatus","checked","resize","Element","_component_i18n_t","keypath","_component_UserLink","onInput","_component_Checkbox","_component_List","items","_component_Status","focused","statusoid","resettingForm","editStatus","isFormVisible","oldVal","get","val","doEditStatus","spoilerText","sensitive","contentType","statusPosterService","onPosted","postStatus","statusHistory","historyCount","history","newStatusId","resetHistory","_component_status","notices","closeNotice","UserPanel","NavPanel","defineAsyncComponent","InstanceSpecificPanel","FeaturesPanel","WhoToFollowPanel","ShoutPanel","MediaModal","MobilePostStatusButton","MobileNav","DesktopNav","SettingsModal","UpdateNotification","UserReportingModal","PostStatusModal","EditStatusModal","StatusHistoryModal","GlobalNoticeList","mobileActivePanel","interfaceLanguage","updateMobileState","reverseLayout","noSticky","newPostButtonShown","navClasses","navbarColumnStretch","userBackground","background_image","instanceBackground","hideInstanceWallpaper","bgStyle","hideISP","isChats","isListEdit","editingAvailable","shoutboxPosition","hideShoutbox","reverseSetting","disableStickyHeaders","showScrollbars","_component_MobileNav","_component_DesktopNav","_component_Notifications","_component_user_panel","_component_nav_panel","_component_instance_specific_panel","_component_features_panel","_component_who_to_follow_panel","_component_router_view","_component_MediaModal","_component_shout_panel","floating","_component_MobilePostStatusButton","_component_UserReportingModal","_component_PostStatusModal","_component_EditStatusModal","_component_StatusHistoryModal","_component_SettingsModal","_component_UpdateNotification","_component_GlobalNoticeList","faAngleDoubleDown","faAngleDoubleRight","depth","inProfile","collapsable","isExpanded","pinnedStatusIdsObject","profileUserId","getReplies","setHighlight","toggleExpanded","toggleThreadDisplay","threadDisplayStatus","showThreadRecursively","totalReplyCount","totalReplyDepth","statusContentProperties","setStatusContentProperty","toggleStatusContentProperty","dive","suspendable","selfSuspendable","statusComponent","childComponent","reverseLookupTable","table","currentReplies","statusById","threadShowing","currentProp","collapseThread","showThread","showAllSubthreads","toggleCurrentProp","setCurrentProp","expandable","replies","showingTall","expandingSubject","showingLongSubject","replying","mediaPlaying","onGoto","onToggleExpanded","replyStatus","_component_thread_tree","numStatus","faFilter","faFont","faWrench","Popover","setReplyVisibility","openTab","replyVisibilitySelf","replyVisibilityFollowing","replyVisibilityAll","hideMedia","hideAttachments","hideAttachmentsInConv","_component_Popover","trigger","faFolderTree","setConversationDisplay","autoUpdate","streaming","collapseWithSubjects","showUserAvatars","faAngleDoubleLeft","idA","idB","expanded","threadDisplayStatusObject","statusContentPropertiesObject","inlineDivePosition","isPage","fetchConversation","maxDepthToShowByDefault","maxDepth","streamingEnabled","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","hideStatus","virtualHidden","originalStatusId","getConversationId","statusIndex","sortAndFilterConversation","statusMap","threadTree","linearized","walk","forest","topLevel","processed","replyIds","sizes","subTreeSizeFor","cid","depths","subTreeDepthFor","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","def","isReplying","maybeHighlight","ThreadTree","QuickFilterSettings","QuickViewSettings","newConversationId","oldConversationId","resetDisplayState","ancestors","descendants","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","leastVisibleAncestor","parent","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","goToCurrent","parentId","parentOrSelf","_component_QuickFilterSettings","_component_QuickViewSettings","numReplies","useListsMenu","openMenu","blockOpen","stopPropagation","timelineName","i18nkey","$t","onShow","faCirclePlus","faCheck","Timeline","showScrollTop","paused","unfocused","bottomedOut","virtualScrollIndex","blockingClicks","Conversation","TimelineMenu","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","mobileLoadButtonString","rootClasses","embedded","header","footer","statusesToDisplay","amount","statusesPerSide","ceil","nonPinnedIndex","virtualScrollingEnabled","mobileLayout","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","top","offsetTop","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","cappedScrollIndex","pageYOffset","centerOfScreen","approxIndex","floor","getBoundingClientRect","virtualScrollIndexY","abs","scrollLoad","bodyBRect","doc","clientTop","pauseOnUnfocused","_component_TimelineMenu","_component_conversation","_Teleport","_component_Timeline","tabModeDict","reactions","allowFollowingMove","allow_following_move","filterMode","canSeeReports","privileges","onModeSwitch","TabSwitcher","_component_tab_switcher","UserAvatar","RichContent","UserPopover","htmlTitle","name_html","_component_UserPopover","_component_UserAvatar","_component_RichContent","AvatarList","Timeago","ChatTitle","StatusBody","attachmentInfo","types","file","fileType","messageForStatusContent","messageEmojis","isYou","messagePreview","summary","raw_html","openChat","_e","recipient_id","_component_ChatTitle","_component_Timeago","time","_component_StatusBody","chatNew","BasicUserCard","userIds","availableUsers","goBack","goToChat","addUser","selectedUserIds","removeUser","_component_BasicUserCard","ChatListItem","ChatNew","isNew","cancelNewChat","newChat","_component_ChatNew","onCancel","_component_ChatListItem","compact","displayDate","today","toLocaleDateString","localeService","$i18n","day","month","$options","faEllipsisH","emits","Attachment","StatusContent","Gallery","LinkPreview","ChatMessageDate","createdAt","chatViewItem","toLocaleTimeString","hour","minute","hour12","isCurrentUser","isMessage","hasAttachment","betterShadow","popoverMarginStyle","left","hovered","menuOpened","onHover","bool","isHovered","confirm","onMouseover","onMouseleave","onMouseenter","placement","_component_StatusContent","_component_ChatMessageDate","getScrollPosition","Chat","ChatMessage","jumpToBottomButtonVisible","hoveredMessageChainId","lastScrollPosition","scrollableContainerHeight","errorLoadingChat","messageRetriers","handleResize","recipient","formPlaceholder","chatViewItems","bottomedOutBeforeUpdate","scrollDown","fetchChat","isFirstFetch","onMessageHover","onFilesDropped","forceRead","delayed","diff","scrollBy","trunc","options","behavior","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","fetchLatest","fetchOlderMessages","sinceId","chatMessages","positionBeforeUpdate","getOrCreateChat","doStartFetching","handleAttachmentPosting","sendMessage","idempotencyKey","mediaId","isNormalized","buildFakeMessage","doSendMessage","retriesLeft","sendChatMessage","_component_ChatMessage","onResize","toggled","RemoteFollow","FollowButton","RemoveFollowerButton","isMe","_component_basic_user_card","followed_by","_component_FollowButton","_component_RemoveFollowerButton","_component_RemoteFollow","select","childPropName","additionalPropNames","WrappedComponent","getComponentProps","fetchEntries","updateEntries","newEntries","isEmpty","FollowerList","withLoadMore","destroy","FriendList","defaultTabKey","footerRef","routeParams","load","stopFetching","isUs","isExternal","followsTabVisible","hide_follows","followersTabVisible","hide_followers","setFooterRef","el","userNameOrId","loadById","maybeId","maybeName","reason","errorMessage","switchUser","onTabSwitch","linkClicked","parentNode","FollowCard","switcher","selected","viewing","fields_html","field","fields_text","statuses_count","friends_count","_component_FriendList","_component_FollowCard","followers_count","_component_FollowerList","hashtags","currenResultTab","statusesOffset","lastStatusFetchCount","lastQuery","newQuery","searchType","blur","oldLength","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","hashtag","_hoisted_14","_hoisted_18","_hoisted_20","_hoisted_21","_hoisted_25","uses","_hoisted_26","setup","v$","useVuelidate","email","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","isPending","serverValidationErrors","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","str","$error","$model","$dirty","_hoisted_19","bio","_hoisted_23","_hoisted_27","_component_interface_language_switcher","_hoisted_30","_hoisted_31","_hoisted_33","_hoisted_34","autocomplete","autocorrect","autocapitalize","spellcheck","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_42","_hoisted_43","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","_hoisted_17","findFollowRequestNotificationId","notif","notificationsFromStore","approveUser","notifId","denyUser","FollowRequestCard","_component_FollowRequestCard","staffAccounts","groupedStaffAccounts","groupBy","admin","moderator","group","toInstanceReasonObject","instances","info","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","TermsOfServicePanel","StaffPanel","MRFTransparencyPanel","policy","_toDisplayString","keyword","pattern","_component_staff_panel","_component_terms_of_service_panel","_component_MRFTransparencyPanel","redirect","ListsCard","cancelNewList","newList","_component_ListsCard","followingOnly","onChange","ListsNew","ListsUserSearch","PanelLoading","titleDraft","membersUserIds","removedUserIds","searchUserIds","addedUserIds","searchLoading","reallyDelete","membersUsers","toggleRemoveMember","toggleAddFromSearch","isRemoved","isAdded","onSearchLoading","results","onSearchLoadingDone","onSearchResults","updateListTitle","back","listTitle","_component_ListsUserSearch","onResults","onLoading","onLoadingDone","_component_PanelLoading","cols","AnnouncementEditor","editing","editedAnnouncement","editError","isRead","publishedAt","published_at","formatTimeOrDate","starts_at","ends_at","markAsRead","d","all_day","toLocaleString","enterEditMode","pleroma","raw_content","submitEdit","cancelEdit","Announcement","_component_announcement_editor","_component_rich_content","newAnnouncement","posting","_component_announcement","validateAuthenticatedRoute","routes","_to","component","PublicAndExternalTimeline","PublicTimeline","FriendsTimeline","beforeEnter","TagTimeline","BookmarkTimeline","ConversationPage","meta","dontScroll","RemoteUserResolver","UserProfile","Interactions","DMs","Registration","PasswordReset","FollowRequests","disableTeleport","OAuthCallback","Search","WhoToFollow","About","AnnouncementsPage","Lists","ListsTimeline","ListsEdit","forceExpand","forceEditMode","ChatList","previousNavPaddingRight","previousAppBgWrapperRight","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","getComputedStyle","getPropertyValue","paddingRight","appBgWrapperEl","classList","enableBodyScroll","remove","directive","binding","updated","Vue","staticInitialResults","decodeUTF8Base64","TextDecoder","decode","preloadFetch","decoded","requestData","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","getBackendProvidedConfig","pleroma_fe","getStaticConfig","setSettings","apiConfig","staticConfig","overrides","___pleromafe_dev_overrides","env","___pleromafe_mode","NODE_ENV","staticConfigPreference","copyInstanceOption","getTOS","getInstancePanel","getStickers","resPack","pack","stickers","localeCompare","getAppSecret","resolveStaffAccounts","nicknames","split","getNodeInfo","metadata","features","nodeName","openRegistrations","uploadLimits","parseInt","general","banner","fieldsLimits","enabled","web","software","version","priv","federation","mrf_policies","setConfig","configInfos","checkOAuthToken","FaviconService","customThemeSource","applyConfig","router","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","FontAwesomeIcon","FontAwesomeLayers","unwrapInjectedRef","mount","currentLocale","createI18n","fallbackLocale","persistedStateOptions","storageError","plugins","pushNotifications","persistedState","createStore","modules","global","interface","interfaceModule","instanceModule","usersModule","statusesModule","listsModule","apiModule","configModule","serverSideConfig","serverSideConfigModule","serverSideStorageModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokens","oauthTokensModule","reportsModule","pollsModule","postStatusModule","editStatusModule","statusHistoryModule","chatsModule","announcementsModule","strict","afterStoreSetup","process","COMMIT_HASH","DEV_OVERRIDES","expertLevel","colors","padEmoji","maxThumbnails","hideNsfw","preloadImage","loopVideo","loopVideoSilentOnly","emojiReactionsOnTimeline","stopGifs","followRequest","chatMention","muteWords","hideScopeNotice","playVideosInModal","useOneClickNsfw","useContainFit","userPopoverAvatarAction","userPopoverOverlay","sidebarColumnWidth","contentColumnWidth","notifsColumnWidth","defaultConfig","setOption","color","loadSettings","presentKeys","intersection","setPreset","Cookies","defaultApi","notificationsApi","updateNotificationSettings","settingsMap","defaultScope","defaultNSFW","stripRichContent","acceptChatMessages","discoverable","hideFavorites","hideFollowers","hideFollows","hideFollowersCount","hideFollowsCount","webPushHideContents","blockNotificationsFromStrangers","confirmServerSideOption","wipeServerSideOption","wipeAllServerSideOptions","_original","setServerSideOption","StatusCodeError","captureStackTrace","create","constructor","RegistrationError","errorContents","ap_id","errs","ALIASES_URL","TAG_USER_URL","PERMISSION_GROUP_URL","screenName","MASTODON_DISMISS_NOTIFICATION_URL","MASTODON_FAVORITE_URL","MASTODON_UNFAVORITE_URL","MASTODON_RETWEET_URL","MASTODON_UNRETWEET_URL","MASTODON_PUBLIC_TIMELINE","MASTODON_STATUS_URL","MASTODON_USER_TIMELINE_URL","MASTODON_LIST_URL","MASTODON_LIST_TIMELINE_URL","MASTODON_LIST_ACCOUNTS_URL","MASTODON_TAG_TIMELINE_URL","MASTODON_MUTE_USER_URL","MASTODON_UNMUTE_USER_URL","MASTODON_SUBSCRIBE_USER","MASTODON_UNSUBSCRIBE_USER","MASTODON_USER_NOTE_URL","MASTODON_BOOKMARK_STATUS_URL","MASTODON_UNBOOKMARK_STATUS_URL","MASTODON_MEDIA_UPLOAD_URL","MASTODON_STATUS_FAVORITEDBY_URL","MASTODON_STATUS_REBLOGGEDBY_URL","MASTODON_PROFILE_UPDATE_URL","MASTODON_PIN_OWN_STATUS","MASTODON_UNPIN_OWN_STATUS","MASTODON_MUTE_CONVERSATION","MASTODON_UNMUTE_CONVERSATION","MASTODON_DOMAIN_BLOCKS_URL","MASTODON_ANNOUNCEMENTS_DISMISS_URL","PLEROMA_EMOJI_REACTIONS_URL","PLEROMA_EMOJI_REACT_URL","PLEROMA_EMOJI_UNREACT_URL","PLEROMA_CHAT_MESSAGES_URL","PLEROMA_CHAT_READ_URL","PLEROMA_DELETE_CHAT_MESSAGE_URL","PLEROMA_BACKUP_URL","PLEROMA_EDIT_ANNOUNCEMENT_URL","PLEROMA_DELETE_ANNOUNCEMENT_URL","oldfetch","fullUrl","promisedRequest","Accept","authHeaders","parseUser","MASTODON_FOLLOWING_URL","announcementToPayload","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","PLEROMA_STREAMING_EVENTS","preprocessor","handleMastoWS","eventTarget","proxy","original","eventName","eventData","dispatchEvent","CustomEvent","wsEvent","readyState","parsedEvent","parseStatus","parseNotification","freeze","JOINED","ERROR","DISABLED","STARTING","STARTING_INITIAL","includeTypes","isNotifications","queryString","param","parseLinkHeaderPagination","flakeId","urlContext","MASTODON_STATUS_CONTEXT_URL","MASTODON_STATUS_SOURCE_URL","parseSource","originalStatus","exportFriends","more","MASTODON_FOLLOWERS_URL","MASTODON_FOLLOW_URL","unfollowUser","MASTODON_UNFOLLOW_URL","MASTODON_BLOCK_USER_URL","MASTODON_UNBLOCK_USER_URL","MASTODON_REMOVE_USER_FROM_FOLLOWERS","mediaIds","inReplyToStatusId","pollOptions","normalizedPoll","expires_in","expiresIn","multiple","postHeaders","putHeaders","MASTODON_DELETE_URL","uploadMedia","formData","parseAttachment","setMediaDescription","deleteUser","addRight","deleteRight","agreement","resp","updateProfileImages","avatarName","importMutes","importBlocks","importFollows","deleteAccount","changeEmail","moveAccount","targetAccount","addAlias","alias","deleteAlias","listAliases","_cacheBooster","changePassword","newPassword","newPasswordConfirmation","settingsMFA","mfaDisableOTP","generateMfaBackupCodes","mfaSetupOTP","mfaConfirmOTP","addBackup","listBackups","fetchFollowRequests","fetchLists","MASTODON_LISTS_URL","account_ids","MASTODON_APPROVE_USER_URL","MASTODON_DENY_USER_URL","status_ids","fetchKnownDomains","media_id","last_read_id","MASTODON_USER_IN_LISTS","rgb2hex","g","relativeLuminance","srgb","bit","pow","c2linear","srgbToLinear","getContrastRatio","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fg","fga","bg","hex2rgb","hex","mixrgb","rgba2css","rgba","getTextColor","preserve","base","invertLightness","rgb","contrastRatio","getCssColor","Component","isFunction","getComponentOptions","SECOND","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","relativeTime","nowThreshold","round","relativeTimeShort","desktopNotificationOpts","desktopNotification","bind","output","masto","mastoShort","escape","display_name","name_unescaped","note","description_html","fields","unescape","cover_photo","following_count","bot","settings_store","favicon","chat_token","hide_follows_count","hide_followers_count","is_moderator","is_admin","default_scope","privacy","no_rich_text","show_role","delete_others_notice","muted","blocking","statusnet_blocking","follows_you","follow_request_count","notification_settings","unread_chat_count","parts","unicodeDomain","punycode","screen_name_ui_contains_non_ascii","mime_type","large_thumb_url","spoiler_text","content_type","favourited","favourites_count","reblogged","reblogs_count","edited_at","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","parent_visible","in_reply_to_id","in_reply_to_user_id","in_reply_to_account_id","replies_count","summary_raw_html","external_url","title_html","is_post_verb","qvitter_delete_notice","activity_type","qvitterStatusType","isNsfw","statusnet_html","summary_html","card","media_attachments","parsedNotice","ntype","is_seen","favorited_status","actor","linkHeader","parsedLinkHeader","parseLinkHeader","max_id","prev","min_id","last_message","favicons","faviconWidth","faviconHeight","isImageLoaded","clearFaviconBadge","complete","naturalHeight","initFaviconService","querySelectorAll","favcanvas","createElement","favimg","Image","crossOrigin","favcontext","getContext","clearRect","drawImage","toDataURL","drawFaviconBadge","badgeColor","fillStyle","beginPath","arc","PI","fileSizeFormat","numArg","units","exponent","toFixed","fileMatchesSomeType","specialLanguageCodes","ja_easy","zh_Hant","zh","internalToBrowserLocale","getLanguageName","languageName","ISO6391","browserLocale","charAt","toLocaleUpperCase","languagesObject","internalToBackendLocale","visibleTypes","statusNotifications","muteWordHits","isMutedNotification","notificationObject","prepareNotificationObject","filteredNotificationsFromStore","sortedNotifications","i18nString","notifObj","mastoApiNotificationTypes","readNotifsIds","findOffset","child","ignorePadding","offsetLeft","findPadding","topPadding","leftPadding","offsetParent","position","contains","topPaddingStr","leftPaddingStr","promiseCall","stopped","promise","statusSummary","muteWord","rules","generatePreset","head","styleEl","appendChild","styleSheet","sheet","insertRule","radii","shadows","fonts","configColumns","defaultConfigColumns","columns","getCssShadow","usesDropShadow","inset","shad","spread","alpha","getCssShadowFilter","generateColors","sourceColors","colors2to3","getColors","htmlColors","solid","generateRadii","inputRadii","btnRadius","btn","checkbox","avatarAlt","tooltip","chatMessage","generateFonts","family","post","postCode","border","shadow","buttonInsetFakeBorders","inputInsetFakeBorders","hoverGlow","DEFAULT_SHADOWS","topBar","popup","avatarStatus","panelHeader","buttonHover","buttonPressed","generateShadows","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","mod","convert","newShadow","shadowAcc","computeDynamicColor","variableSlot","composePreset","getThemes","themes","promises","statePositionAcc","getOpacitySlot","isV1","cRed","cGreen","cBlue","cOrange","LAYERS","undelay","badge","profileTint","popover","selectedMenu","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","DEFAULT_OPACITY","faint","underlay","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","brightness","layer","accent","faintLink","postFaintLink","profileBg","highlightLightText","textColor","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","variant","selectedPostLightText","selectedPostPostLink","selectedPostFaintLink","selectedPostText","selectedPostLink","selectedPostIcon","selectedMenuLightText","selectedMenuFaintText","selectedMenuFaintLink","selectedMenuText","selectedMenuLink","selectedMenuIcon","selectedMenuPopover","selectedMenuPopoverLightText","selectedMenuPopoverFaintText","selectedMenuPopoverFaintLink","selectedMenuPopoverText","selectedMenuPopoverLink","selectedMenuPopoverIcon","lightText","postLink","postGreentext","postCyantext","copacity","pollText","inheritsOpacity","fgText","fgLink","panelText","panelFaint","panelLink","topBarText","topBarLink","tabText","tabActiveText","btnText","btnPanelText","btnTopBarText","btnPressed","btnPressedText","btnPressedPanel","btnPressedPanelText","btnPressedTopBar","btnPressedTopBarText","btnToggled","btnToggledText","btnToggledPanelText","btnToggledTopBarText","btnDisabled","btnDisabledText","btnDisabledPanelText","btnDisabledTopBarText","inputText","inputPanelText","inputTopbarText","alertError","alertErrorText","alertErrorPanelText","alertWarning","alertWarningText","alertWarningPanelText","alertSuccess","alertSuccessText","alertSuccessPanelText","alertNeutral","alertNeutralText","alertNeutralPanelText","alertPopupError","alertPopupErrorText","alertPopupWarning","alertPopupWarningText","alertPopupSuccess","alertPopupSuccessText","alertPopupNeutral","alertPopupNeutralText","badgeNotification","badgeNotificationText","badgeNeutral","badgeNeutralText","chatMessageIncomingBg","chatMessageIncomingText","chatMessageIncomingLink","chatMessageIncomingBorder","chatMessageOutgoingBg","chatMessageOutgoingText","chatMessageOutgoingLink","chatMessageOutgoingBorder","getLayersArray","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","allKeys","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","sourceColor","getColor","targetColor","variable","modifier","parseFloat","sourceOpacity","backgroundColor","deps","isTextColor","outputColor","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","highlightClass","complicated","faFile","faMusic","faImage","faVideo","faPlayCircle","faStop","faSearchPlus","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","hideNsfwLocal","modalOpen","showHidden","flashLoaded","showDescription","classNames","usePlaceholder","placeholderName","toUpperCase","placeholderIconClass","referrerpolicy","oembed","useModal","modalTypes","videoTag","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","onload","onImageLoad","naturalWidth","onKeydown","_component_StillImage","onPlay","onPause","thumb_url","_hoisted_22","oembedHTML","onPlayerOpened","onPlayerClosed","slicedUsers","_component_user_link","indeterminate","$event","addPositionToWords","words","word","previous","splitByWhitespaceBoundary","currentWord","currentChar","pos","wordsWithPosition","toReplace","faBoxOpen","faStickyNote","faSmileBeam","faSmile","faUser","faPaw","faIceCream","faBus","faBasketballBall","faLightbulb","faCode","faFlag","UNICODE_EMOJI_GROUP_ICON","activities","objects","flags","maybeLocalizedKeywords","nameLocalizer","enableStickerPicker","activeGroup","showingStickers","groupsScrolledClass","keepOpen","customEmojiTimeout","contentLoaded","groupRefs","emojiRefs","filteredEmojiGroups","StickerPicker","showPicker","showPopover","onShowing","hidePicker","hidePopover","setAnchorEl","setGroupRef","setEmojiRef","onPopoverShown","onPopoverClosed","onStickerUploaded","onStickerUploadFailed","onEmoji","insertion","updateScrolledClass","scrolledGroup","allEmojiGroups","scrollHeader","headerRef","offsetWidth","headerCont","currentScroll","scrollLeft","currentScrollRight","setScroll","setShowStickers","scrollTopMax","toggleStickers","filterByKeyword","keywordLowercase","orderedEmojiList","indices","indexOfKeyword","flat","maybeLocalizedEmojiName","initializeLazyLoad","destroyLazyLoad","$lozad","lozad","getAttribute","vn","loadLazy","observe","waitForDomAndInitializeLazyLoad","observer","mutationObserver","oldContentLoaded","getFilteredEmojiGroups","defaultGroup","debouncedHandleKeywordChange","allCustomGroups","destroyed","activeGroupView","stickersAvailable","unicodeEmojiGroups","stickerPickerEnabled","_component_still_image","composing","_component_sticker_picker","onUploaded","onUploadFailed","suggest","modelValue","enableEmojiPicker","hideEmojiButton","newlineOnCtrlEnter","caretEl","caret","blurTimeout","temporarilyHideSuggestions","disableClickOutside","overlayStyle","pickerShown","EmojiPicker","UnicodeDomainIndicator","preText","postText","showSuggestions","textAtCaret","wordAtCaret","Completion","maybeLocalizedEmojiNamesAndKeywords","onInputScroll","hiddenOverlay","hiddenOverlayCaret","suggestorPopover","picker","padding","lineHeight","fontFamily","fontSize","wordWrap","whiteSpace","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","newWord","firstchar","matchedSuggestions","triggerShowPicker","scrollIntoView","togglePicker","startEmojiLoad","insert","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","scrollerRef","closest","scrollerBottomBorder","rootBottomBorder","targetScroll","scroll","bottom","onPickerShown","onPickerClosed","setCaret","ctrlKey","shiftKey","selectionStart","updateStyles","_component_EmojiPicker","_component_UnicodeDomainIndicator","at","ruffleInstance","getRuffle","RufflePlayer","polyfills","publicPath","script","onerror","onabort","oncancel","faExclamationTriangle","player","openPlayer","RuffleService","ruffle","newest","createPlayer","letterbox","container","fetchRelationship","attempt","requested","sent","requestFollow","isPressed","labelFollowing","unfollow","requestUnfollow","hidingLong","minimal","grid","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","editable","onNaturalSizeLoad","rowStyle","itemStyle","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","_component_Attachment","onSetMedia","number","Select","promptText","controlledLanguage","_component_Select","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","test","newImg","provider_name","getKey","faAt","userScreenName","hasSelection","shouldShowTooltip","handleSelection","getSelection","containsNode","full","userNameFullUi","serverName","userNameFull","highlightType","classnames","shouldBoldenYou","isRemote","shouldShowFullUserName","conf","shouldShowAvatar","shouldShowYous","shouldFadeDomain","MentionLink","mentionsComputed","extraMentions","manyMentions","toggleShowMore","_component_MentionLink","provide","popoversZLayer","noBackground","reportId","generateUserProfileLink","_component_status_content","notes","faStar","faRetweet","faEyeSlash","faSuitcaseRolling","faExpandAlt","faCompressAlt","statusExpanded","unmuted","Report","toggleStatusExpanded","getUser","toggleMute","userClass","userStyle","targetUser","targetUserProfileLink","needMute","_hoisted_24","_hoisted_28","_component_Report","filters","toggleNotificationFilter","NotificationFilters","minimalMode","seenToDisplayCount","mainClass","filteredNotifications","unseenCount","unseenCountTitle","noHeading","teleportTarget","wide","mobile","notificationsToDisplay","updateScrollPosition","markAsSeen","seenCount","notifs","_component_NotificationFilters","unseen","_component_notification","boundTo","boundToSelector","popoverClass","removePadding","overlayCenters","overlayCentersSelector","stayOnClick","triggerAttrs","inject","anchorEl","teleport","lockReEntry","styles","oldSize","scrollable","graceTimeout","parentPopover","childrenShown","containerBoundingClientRect","anchorHeight","anchorWidth","anchorScreenBox","anchorStyle","paddingTop","bottomPadding","paddingBottom","rightPadding","paddingLeft","overlayCenter","parentScreenBox","xBounds","yBounds","horizOffset","vertOffset","box","overlayCenterScreenBox","leftInnerOffset","topInnerOffset","leftBorder","rightBorder","topBorder","bottomBorder","translateX","translateY","usingTop","topBoundary","bottomBoundary","yOffset","usingRight","rightBoundary","leftBoundary","xOffset","maxWidth","wasHidden","onChildPopoverState","onClickOutside","onMouseenterContent","onMouseleaveContent","childRef","$parent","$","beforeUnmount","_Transition","faUpload","uploadCount","uploadReady","uploading","uploadFile","self","filesize","allowedsize","filesizeunit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","dropFiles","fileInfos","faPlus","pollType","expiryAmount","expiryUnit","maxOptions","maxLength","expiryUnits","expiry","convertExpiryFromUnit","minExpirationInCurrentUnit","convertExpiryToUnit","maxExpirationInCurrentUnit","nextOption","element","addOption","deleteOption","updatePollToParent","DateUtils","expiryAmountChange","maxlength","unstyled","faPollH","faBan","pxStringToNumber","MediaUpload","EmojiInput","PollForm","ScopeSelector","updateIdempotencyKey","textarea","replyTo","textLength","autoFocus","allAttentions","attention","buildMentionsString","repliedUser","copyMessageScope","statusParams","subject","mediaDescriptions","statusContentType","statusIsSensitive","statusFiles","statusPoll","statusMediaDescriptions","statusScope","uploadingFiles","pollFormVisible","showDropIcon","dropStopTimeout","previewLoading","emojiInputShown","userDefaultScope","showAllScopes","emojiUserSuggestor","suggestor","emojiSuggestor","statusLength","spoilerTextLength","statusLengthLimit","hasStatusLengthLimit","charactersLeft","isOverLengthLimit","alwaysShowSubject","safeDMEnabled","disablePolls","disableNotice","pollContentError","showPreview","disablePreview","emptyStatus","uploadFileLimitReached","fileLimit","isEdit","deep","statusChanged","autoPreview","clearStatus","mediaUpload","clearPollForm","preserveFocus","previewStatus","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postingOptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","editAttachment","newText","shiftUpMediaFile","shiftDnMediaFile","uploadFailed","errString","templateArgs","startedUploadingFiles","finishedUploadingFiles","paste","clipboardData","fileDrop","dataTransfer","fileDragStop","fileDrag","dropEffect","onEmojiInputInput","formRef","bottomRef","bottomBottomPaddingStr","bottomBottomPadding","bottomPaddingStr","vertPadding","oldHeight","scrollerHeight","heightWithoutPadding","newHeight","maxHeight","bottomBottomBorder","isBottomObstructed","isFormBiggerThanScroller","bottomChangeDelta","totalDelta","showEmojiPicker","changeVis","togglePollForm","setPoll","pollForm","dismissScopeNotice","handleEmojiInputShow","openProfileTab","onDragover","_component_EmojiInput","onShown","onCompositionupdate","_component_scope_selector","postFormat","_component_poll_form","onUpdatePoll","_component_media_upload","onUploading","onAllUploaded","animation","onDragleave","onDrop","_hoisted_29","_component_gallery","descriptions","progress","$data","subscribeUrl","serverUrl","protocol","host","faLock","faLockOpen","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","css","unlisted","private","direct","showAll","userDefault","onScopeChange","faReply","faStarRegular","animated","filterWord","addReaction","existingReaction","focusInput","commonEmojis","hardcodedSet","faBookmarkReg","faShareAlt","faExternalLinkAlt","faHistory","copyLink","clipboard","writeText","statusLink","reportStatus","showStatusHistory","p","canDelete","ownStatus","canPin","canMute","canBookmark","isEdited","enter","oldStatus","usersCapped","UserListPopover","tooManyReactions","showMoreString","accountsForEmoji","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","_component_UserListPopover","faPlusSquare","faEye","camelCase","controlledOrUncontrolledSet","camelized","uncontrolledName","ReplyButton","FavoriteButton","ReactButton","RetweetButton","ExtraButtons","StatusPopover","EmojiReactions","uncontrolledReplying","userExpanded","uncontrolledMediaPlaying","headTailLinks","toggle","controlledName","showReasonMutedThread","inConversation","repeaterClass","repeaterStyle","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","rtBotStatus","botStatus","botIndicator","rtBotIndicator","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","shouldNotMute","relationshipReblog","hideMutedUsers","isFocused","replyToName","replySubject","decodedSummary","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","isSuspendable","inThreadForest","controlledThreadDisplayStatus","visibilityLocalized","visibilityIcon","showError","toggleReplying","gotoOriginal","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","_hoisted_50","_hoisted_51","_hoisted_52","_hoisted_53","_component_reply_button","onToggle","_component_StatusPopover","flip","_hoisted_32","_component_MentionsLine","_hoisted_35","onMediaplay","onMediapause","onParseReady","_hoisted_36","_hoisted_40","_hoisted_41","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_component_AvatarList","_component_EmojiReactions","_hoisted_49","_component_retweet_button","_component_favorite_button","_component_ReactButton","_component_extra_buttons","onOnError","onOnSuccess","_hoisted_54","basePoll","expiresAt","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","clickedElement","optionId","voters_count","faLink","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","handle","toggleShowingTall","toggleExpandingSubject","controlledOrUncontrolledToggle","uncontrolledShowingTall","fullContent","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","nsfwClickthrough","attachmentSize","Poll","toggleShowingLongSubject","galleryAttachments","_component_Poll","_component_link_preview","realSrc","appendPx","dataSrc","imageLoadHandler","canvas","imageLoadError","removeAttribute","localeDateString","relativeTimeString","timeString","tc","templateKey","refreshRelativeTimeObject","longFormat","datetime","faRobot","showPlaceholder","imgSrc","darkOverlay","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","DialogModal","tagsSet","canGrantRole","canChangeActivationState","privileged","canDeleteAccount","canUseTagPolicy","tagPolicyAvailable","hasTag","privilege","toggleTag","toggleRight","deleteUserDialog","show","isProfile","isTargetUser","setToggled","_component_DialogModal","inListsSet","inList","toggleList","faEllipsisV","ProgressButton","UserListMenu","showRepeats","hideRepeats","showing_reblogs","_component_UserListMenu","localNote","frozen","startEditing","cancelEditing","finalizeEditing","faRss","faEdit","followRequestInProgress","bordered","isOtherUser","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","showModerationMenu","hasNote","supportsNote","ModerationTools","AccountActions","UserNote","setProfileView","zoomAvatar","mentionUser","onAvatarClickHandler","onAvatarClick","_component_AccountActions","subscribing","_component_ProgressButton","_component_ModerationTools","_component_UserNote","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","notFulfilled","Infinity","fulfilled","getter","__esModule","getPrototypeOf","mode","ns","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","miniCssF","globalThis","done","needAttach","scripts","getElementsByTagName","charset","nc","setAttribute","onScriptComplete","doneFns","removeChild","Symbol","toStringTag","nmd","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","linkTag","errorType","realHref","createStylesheet","miniCss","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}