Page MenuHomePhorge

app.3fbb12e9679dc0e0aa33.js.map
No OneTemporary

Size
2 MB
Referenced Files
None
Subscribers
None

app.3fbb12e9679dc0e0aa33.js.map

This file is larger than 256 KB, so syntax highlighting was skipped.
{"version":3,"file":"static/js/app.3fbb12e9679dc0e0aa33.js","mappings":"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,CAAC,sBAAqB,EACjH,OAAWF,IAAS,MAAQC,UAAWC,EAAYC,YAAaC,EAAcC,MAAOC,GAAWN,EAAI,OAAOE,EAAW,CAAC,UAAWE,EAAaE,EAAO,kBAAiB,GAEzK,yBAA4B,CAC1B,QAAYN,IAAS,MAAQC,UAAWC,GAAeF,EAAI,OAAOE,EAAW,CAAC,8CAA6C,G,iBC13C/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,MA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VM,UAAW,SACXK,SAAU,gBAGd,CACEN,UAAW,OACXD,OAAQ,CACNC,UAAW,WACXe,MAAO,CAAC,UAEVpB,WAAY,CACVM,UAAW,SACXK,SAAU,iB,6DCrFlB,SACEpB,KAAM,eACNC,SAAU,iBACVC,qBAAsB,CACpB,OACA,OACA,OACA,SACA,SACA,iBACA,QACA,cACA,WACA,eACA,QACA,YAEFM,aAAc,CACZ,CACEC,WAAY,CACVC,WAAY,OACZuB,qBAAsB,QAG1B,CACEnB,UAAW,cACXD,OAAQ,CAAEC,UAAW,gBACrBL,WAAY,CACVC,WAAY,OACZkB,OAAQ,CAAC,CACPiF,EAAG,EACHC,EAAG,EACHlG,KAAM,EACNmG,OAAQ,EACRC,MAAO,UACPC,MAAO,Q,6DCnCjB,SACEjH,KAAM,SACNC,SAAU,cACVkH,MAAM,EACNjH,qBAAsB,CACpB,SAEFM,aAAc,G,6DCPhB,SACER,KAAM,eACNC,SAAU,gBACVC,qBAAsB,CACpB,OACA,OACA,OACA,SACA,SACA,iBACA,cACA,QACA,SACA,aACA,aAEFM,aAAc,G,6DChBhB,SACER,KAAM,QACNC,SAAU,SACVC,qBAAsB,CACpB,OACA,OACA,OACA,SACA,SACA,iBACA,QACA,cACA,WACA,OACA,eACA,QACA,WACA,OACA,aACA,MACA,YAEFkH,yBAA0B,CACxB,OACA,OACA,OACA,SACA,SACA,QACA,cACA,SAEF5G,aAAc,CACZ,CACEC,WAAY,CACVwB,qBAAsB,MACtBvB,WAAY,OACZO,UAAW,EACXL,KAAM,MACNgB,OAAQ,CAAC,CACPiF,EAAG,EACHC,EAAG,EACHlG,KAAM,EACNmG,OAAQ,EACRC,MAAO,UACPC,MAAO,Q,6DC7CjB,SACEjH,KAAM,cACNC,SAAU,iBACVC,qBAAsB,CACpB,OACA,OACA,OACA,SACA,iBACA,QACA,QACA,UAEFM,aAAc,CACZ,CACEM,UAAW,cACXL,WAAY,CACVwB,qBAAsB,MACtBvB,WAAY,OACZkB,OAAQ,M,6DCnBhB,SACE5B,KAAM,YACNC,SAAU,eACVO,aAAc,CACZ,CACEC,WAAY,CACVC,WAAY,WACZ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,0BAA2B,CACzBlH,QAAS,CAAC,yBACV1uH,QAAS,SACTqG,MAAO,SAACwoH,EAAKr9G,GAAM,OAAKs9G,EAAAA,EAAAA,IAAW,EAAID,EAAKr9G,GAAQ0oG,GAAG,G,+FCjwB3D,SACE,KACA,YACA,KACA,OACA,WACA,OACA,SACA,QACA,YACA,gBAEA,QACA,OACA,SACA,UAEA,YACA,cAEA,YACA,qBACA,oBACA,qBACA,qBACA,yBACA,gBACA,gBACA,gBAEA,UACA,mBACA,kBACA,mBACA,mBACA,uBACA,cACA,cACA,cAEA,eACA,wBACA,wBACA,uBACA,wBACA,mBACA,mBACA,mBAEA,eACA,wBACA,wBACA,wBACA,mBACA,mBACA,mBAEA,sBACA,+BACA,+BACA,+BACA,0BACA,0BACA,0BAEA,YAEA,WAEA,gBAEA,eAEA,SAEA,OACA,WAEA,OAGA,SACA,SAGA,QACA,YACA,aACA,YAGA,SACA,aACA,aAGA,MACA,UACA,gBAGA,MACA,UACA,eACA,gBAGA,aACA,iBACA,kBACA,sBACA,mBACA,uBAGA,aACA,iBACA,sBACA,uBAGA,cACA,kBACA,uBACA,wBAGA,QACA,YACA,iBACA,kBAEA,aACA,iBACA,sBAEA,eACA,mBACA,wBAEA,eACA,mBACA,wBAEA,eACA,mBACA,wBAEA,kBACA,sBAEA,oBACA,wBAEA,oBACA,wBAEA,oBACA,wBAEA,eACA,mBAEA,oBACA,wBAEA,SAEA,wBACA,0BACA,0BACA,4BACA,wBACA,0BACA,0BACA,6B,qkBC3KK,IAAM2b,EAAkB,IAAIrpH,IAAI,CACrC,KACA,KACA,OACA,OACA,SAEA,QACA,OACA,SACA,UAEA,cAGWspH,EAAY,IAAItpH,IAAI,CAC/B,YACA,QACA,OACA,aAGWupH,EAAc,IAAIvpH,IAAI,CACjC,QACA,aACA,KACA,SACA,MACA,QACA,QACA,QACA,UACA,cACA,aAGWwpH,EAAc,IAAIxpH,IAAI,CACjC,QACA,SACA,QACA,SACA,eACA,cACA,SACA,cACA,gBACA,UAGWypH,EAAY,IAAIzpH,IAAI,CAC/B,MACA,Q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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/./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/alert.style.js","webpack://pleroma_fe/./src/components/attachment/attachment.style.js","webpack://pleroma_fe/./src/components/badge.style.js","webpack://pleroma_fe/./src/components/border.style.js","webpack://pleroma_fe/./src/components/button.style.js","webpack://pleroma_fe/./src/components/button_unstyled.style.js","webpack://pleroma_fe/./src/components/chat/chat.style.js","webpack://pleroma_fe/./src/components/chat_message/chat_message.style.js","webpack://pleroma_fe/./src/components/emoji_input/suggestor.js","webpack://pleroma_fe/./src/components/fun_text.style.js","webpack://pleroma_fe/./src/components/icon.style.js","webpack://pleroma_fe/./src/components/input.style.js","webpack://pleroma_fe/./src/components/link.style.js","webpack://pleroma_fe/./src/components/list/list_item.style.js","webpack://pleroma_fe/./src/components/menu_item.style.js","webpack://pleroma_fe/./src/components/mobile_drawer.style.js","webpack://pleroma_fe/./src/components/modal/modals.style.js","webpack://pleroma_fe/./src/components/notification/notification.style.js","webpack://pleroma_fe/./src/components/panel.style.js","webpack://pleroma_fe/./src/components/panel_header.style.js","webpack://pleroma_fe/./src/components/poll/poll_graph.style.js","webpack://pleroma_fe/./src/components/popover.style.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/rich_content/rich_content.style.js","webpack://pleroma_fe/./src/components/root.style.js","webpack://pleroma_fe/./src/components/scrollbar.style.js","webpack://pleroma_fe/./src/components/scrollbar_element.style.js","webpack://pleroma_fe/./src/components/status/post.style.js","webpack://pleroma_fe/./src/components/tab_switcher/tab.style.js","webpack://pleroma_fe/./src/components/tab_switcher/tab_switcher.jsx","webpack://pleroma_fe/./src/components/text.style.js","webpack://pleroma_fe/./src/components/top_bar.style.js","webpack://pleroma_fe/./src/components/underlay.style.js","webpack://pleroma_fe/./src/components/user_avatar/avatar.style.js","webpack://pleroma_fe/./src/components/user_card/user_card.style.js","webpack://pleroma_fe/./src/hocs/with_load_more/with_load_more.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/instance.js","webpack://pleroma_fe/./src/modules/statuses.js","webpack://pleroma_fe/./src/modules/notifications.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/modules/users.js","webpack://pleroma_fe/./src/services/chat_utils/chat_utils.js","webpack://pleroma_fe/./src/modules/api.js","webpack://pleroma_fe/./src/modules/profileConfig.js","webpack://pleroma_fe/./src/components/update_notification/update_notification.js","webpack://pleroma_fe/./src/modules/serverSideStorage.js","webpack://pleroma_fe/./src/modules/adminSettings.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/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/components/quotes_timeline/quotes_timeline.js","webpack://pleroma_fe/./src/components/quotes_timeline/quotes_timeline.vue?f93f","webpack://pleroma_fe/./src/components/quotes_timeline/quotes_timeline.vue","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/interface.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/attributes_helper/attributes_helper.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/random_seed/random_seed.service.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/sw/sw.js","webpack://pleroma_fe/./src/services/theme_data/css_utils.js","webpack://pleroma_fe/./src/services/theme_data/pleromafe.js","webpack://pleroma_fe/./src/services/theme_data/theme2_keys.js","webpack://pleroma_fe/./src/services/theme_data/theme2_to_theme3.js","webpack://pleroma_fe/./src/services/theme_data/theme_data.service.js","webpack://pleroma_fe/./src/services/theme_data/theme3_slot_functions.js","webpack://pleroma_fe/./src/services/theme_data/iss_utils.js","webpack://pleroma_fe/./src/services/theme_data/theme_data_3.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/confirm_modal/confirm_modal.js","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.vue?dff7","webpack://pleroma_fe/./src/components/confirm_modal/confirm_modal.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/emoji_input/emoji_input.vue","webpack://pleroma_fe/./src/services/completion/completion.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.js","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue?a18c","webpack://pleroma_fe/./src/components/screen_reader_notice/screen_reader_notice.vue","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/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/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/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/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/extra_notifications/extra_notifications.vue","webpack://pleroma_fe/./src/components/extra_notifications/extra_notifications.js","webpack://pleroma_fe/./src/components/extra_notifications/extra_notifications.vue?87f1","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/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/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/./src/ sync \\.style.js(on)","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/css loading","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\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};","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 \"logout_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout confirmation\"])},\n \"logout_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to logout?\"])},\n \"logout_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Logout\"])},\n \"logout_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not logout\"])},\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 \"search_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close search bar\"])},\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 (there are unread ones)\"])},\n \"mobile_notifications_close\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close notifications\"])},\n \"mobile_notifications_mark_as_seen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mark all as seen\"])},\n \"announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Announcements\"])},\n \"quotes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quotes\"])}\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 \"unread_announcements\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"num\")), \" unread announcement\"]), _normalize([_interpolate(_named(\"num\")), \" unread announcements\"])])},\n \"unread_chats\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"num\")), \" unread chat\"]), _normalize([_interpolate(_named(\"num\")), \" unread chats\"])])},\n \"unread_follow_requests\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"num\")), \" new follow request\"]), _normalize([_interpolate(_named(\"num\")), \" new follow requests\"])])},\n \"configuration_tip\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"You can customize what to display here in \", _interpolate(_named(\"theSettings\")), \". \", _interpolate(_named(\"dismiss\"))])},\n \"configuration_tip_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"the settings\"])},\n \"configuration_tip_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not show again\"])},\n \"subscribed_status\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"posted\"])}\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 \"hide_custom_emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide custom emojis\"])},\n \"unpacked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unpacked 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 \"statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscriptions\"])}\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 \"reply_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reply to this status\"])},\n \"quote_option\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quote this 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_type_selection\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post format\"])},\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_notice_dismiss\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Close this notice\"])},\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 \"birthday_required\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"cannot be left blank\"])},\n \"birthday_min_age\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"must be on or before \", _interpolate(_named(\"date\"))])}\n },\n \"email_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"In which language do you want to receive emails from the server?\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday:\"])},\n \"birthday_optional\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday (optional):\"])}\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 \"add_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add fallback language\"])},\n \"remove_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"primary_language\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Primary language:\"])},\n \"fallback_language\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Fallback language \", _interpolate(_named(\"index\")), \":\"])},\n \"actor_type\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This account is:\"])},\n \"actor_type_description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Marking your account as a group will make it automatically repeat statuses that mention it.\"])},\n \"actor_type_Person\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a normal user\"])},\n \"actor_type_Service\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a bot\"])},\n \"actor_type_Group\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"a group\"])},\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 \"appearance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Appearance\"])},\n \"confirm_new_setting\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm new setting?\"])},\n \"confirm_new_question\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Does this look ok? Setting will be reverted in 10 seconds.\"])},\n \"revert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revert\"])},\n \"confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Confirm\"])},\n \"text_size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Text and interface size\"])},\n \"text_size_tip\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Use \", _interpolate(_list(0)), \" for absolute values, \", _interpolate(_list(1)), \" will scale with browser default text size.\"])},\n \"text_size_tip2\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Values other than \", _interpolate(_list(0)), \" might break some things and themes\"])},\n \"emoji_size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji size\"])},\n \"navbar_size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Top bar size\"])},\n \"panel_header_size\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Panel header size\"])},\n \"visual_tweaks\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Minor visual tweaks\"])},\n \"theme_debug\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show what background theme engine assumes when dealing with transparancy (DEBUG)\"])},\n \"scale_and_layout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Interface scale and layout\"])},\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 \"units\": {\n \"time\": {\n \"m\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"minutes\"])},\n \"s\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"seconds\"])},\n \"h\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"hours\"])},\n \"d\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"days\"])}\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 \"backup_running\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" record.\"]), _normalize([\"This backup is in progress, processed \", _interpolate(_named(\"number\")), \" records.\"])])},\n \"backup_failed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This backup has failed.\"])},\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 \"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 \"confirm_dialogs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ask for confirmation when\"])},\n \"confirm_dialogs_repeat\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"repeating a status\"])},\n \"confirm_dialogs_unfollow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"unfollowing a user\"])},\n \"confirm_dialogs_block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"blocking a user\"])},\n \"confirm_dialogs_mute\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"muting a user\"])},\n \"confirm_dialogs_delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"deleting a status\"])},\n \"confirm_dialogs_logout\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"logging out\"])},\n \"confirm_dialogs_approve_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"approving a follower\"])},\n \"confirm_dialogs_deny_follow\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"denying a follower\"])},\n \"confirm_dialogs_remove_follower\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"removing a follower\"])},\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 \"autocomplete_select_first\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Automatically select the first candidate when autocomplete results are available\"])},\n \"emoji_reactions_on_timeline\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show emoji reactions on timeline\"])},\n \"emoji_reactions_scale\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reactions scale factor\"])},\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_actor_type_indication\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide actor type (bots, groups, etc.) indication in posts\"])},\n \"hide_scrobbles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide scrobbles\"])},\n \"hide_scrobbles_after\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide scrobbles older than\"])},\n \"mute_sensitive_posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute sensitive 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 \"url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"URL\"])},\n \"preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Preview\"])},\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 \"birthday\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Birthday\"])},\n \"show_birthday\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show my birthday\"])}\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_in_column\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show in notifications column/drawer\"])},\n \"notification_visibility_native_notifications\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show a native notification\"])},\n \"notification_visibility_follows\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follows\"])},\n \"notification_visibility_follow_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Follow requests\"])},\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_reports\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reports\"])},\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 \"notification_visibility_statuses\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Subscriptions\"])},\n \"notification_show_extra\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show extra notifications in the notifications column\"])},\n \"notification_extra_chats\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show unread chats\"])},\n \"notification_extra_announcements\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show unread announcements\"])},\n \"notification_extra_follow_requests\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show new follow requests\"])},\n \"notification_extra_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show the customization tip for extra notifications\"])},\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 \"force_theme_recompilation_debug\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disable theme cahe, force recompile on each boot (DEBUG)\"])},\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_annoyance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Annoyance\"])},\n \"notification_setting_drawer_marks_as_seen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Closing drawer (mobile) marks all notifications as read\"])},\n \"notification_setting_ignore_inactionable_seen\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Ignore read state of inactionable notifications (likes, repeats etc)\"])},\n \"notification_setting_ignore_inactionable_seen_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will not actually mark those notifications as read, and you'll still get desktop notifications about them if you chose so\"])},\n \"notification_setting_unseen_at_top\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Show unread notifications above others\"])},\n \"notification_setting_filters\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filters\"])},\n \"notification_setting_filters_chrome_push\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"On some browsers (chrome) it might be impossible to completely filter out notifications by type when they arrive by Push\"])},\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 \"enable_web_push_always_show\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Always show web push notifications\"])},\n \"enable_web_push_always_show_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Some browsers (Chromium, Chrome) require that push messages always result in a notification, otherwise generic 'Website was updated in background' is shown, enable this to prevent this notification from showing, as Chrome seem to hide push notifications if tab is in focus. Can result in showing duplicate notifications on other browsers.\"])},\n \"more_settings\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More settings\"])},\n \"style\": {\n \"custom_theme_used\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Custom theme)\"])},\n \"themes2_outdated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Editor for Themes V2 is being phased out and will eventually be replaced with a new one that takes advantage of new Themes V3 engine. It should still work but experience might be degraded and inconsistent.\"])},\n \"appearance_tab_note\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Changes on this tab do not affect the theme used, so exported theme will be different from what seen in the UI\"])},\n \"update_preview\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Update preview\"])},\n \"themes3\": {\n \"define\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override\"])},\n \"hacks\": {\n \"underlay_overrides\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Change underlay\"])},\n \"underlay_override_mode_none\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Theme default\"])},\n \"underlay_override_mode_opaque\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Replace with solid color\"])},\n \"underlay_override_mode_transparent\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove entirely (might break some themes)\"])},\n \"force_interface_roundness\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override interface roundness/sharpness\"])},\n \"forced_roundness_mode_disabled\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use theme defaults\"])},\n \"forced_roundness_mode_sharp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force sharp edges\"])},\n \"forced_roundness_mode_nonsharp\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force not-so-sharp (1px roundness) edges\"])},\n \"forced_roundness_mode_round\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Force round edges\"])}\n },\n \"font\": {\n \"group-builtin\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Browser default fonts\"])},\n \"builtin\": {\n \"serif\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Serif\"])},\n \"sans-serif\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Sans-serif\"])},\n \"monospace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospace\"])},\n \"inherit\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unchanged\"])}\n },\n \"group-local\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Locally installed fonts\"])},\n \"local-unavailable1\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List of locally installed fonts unavailalbe\"])},\n \"local-unavailable2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Use manual entry to specify custom font\"])},\n \"font_list_unavailable\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Couldn't get locally installed fonts: \", _interpolate(_named(\"error\"))])},\n \"lookup_local_fonts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Load list of fonts installed on this computer\"])},\n \"enter_manually\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Enter font name family manually\"])},\n \"entry\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Enter \", _interpolate(_named(\"fontFamily\"))])},\n \"select\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Select font\"])}\n }\n },\n \"interface_font_user_override\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Override theme/browser font used\"])},\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 \"monospace\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Monospaced 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 \"commit_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"commit_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Value is not saved, press this button to commit your changes\"])},\n \"reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset\"])},\n \"reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset draft\"])},\n \"hard_reset_value\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hard reset\"])},\n \"hard_reset_value_tooltip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove setting from storage, forcing use of default value\"])}\n },\n \"admin_dash\": {\n \"window_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Administration\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"This admin dashboard is experimental and WIP, \", _interpolate(_named(\"adminFeLink\")), \".\"])},\n \"old_ui_link\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"old admin UI available here\"])},\n \"reset_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reset all\"])},\n \"commit_all\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save all\"])},\n \"tabs\": {\n \"nodb\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"No DB Config\"])},\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance\"])},\n \"limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limits\"])},\n \"frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Front-ends\"])},\n \"emoji\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji\"])}\n },\n \"nodb\": {\n \"heading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Database config is disabled\"])},\n \"text\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"You need to change backend config files so that \", _interpolate(_named(\"property\")), \" is set to \", _interpolate(_named(\"value\")), \", see more in \", _interpolate(_named(\"documentation\")), \".\"])},\n \"documentation\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"documentation\"])},\n \"text2\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Most configuration options will be unavailable.\"])}\n },\n \"captcha\": {\n \"native\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Native\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha\"])}\n },\n \"instance\": {\n \"instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance information\"])},\n \"registrations\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User sign-ups\"])},\n \"captcha_header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"CAPTCHA\"])},\n \"kocaptcha\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"KoCaptcha settings\"])},\n \"access\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance access\"])},\n \"restrict\": {\n \"header\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Restrict access for anonymous visitors\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Detailed setting for allowing/disallowing access to certain aspects of API. By default (indeterminate state) it will disallow if instance is not public, ticked checkbox means disallow access even if instance is public, unticked means allow access even if instance is private. Please note that unexpected behavior might happen if some settings are set, i.e. if profile access is disabled posts will show without profile information.\"])},\n \"timelines\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Timelines access\"])},\n \"profiles\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User profiles access\"])},\n \"activities\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Statuses/activities access\"])}\n }\n },\n \"limits\": {\n \"arbitrary_limits\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Arbitrary limits\"])},\n \"posts\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Post limits\"])},\n \"uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Attachments limits\"])},\n \"users\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"User profile limits\"])},\n \"profile_fields\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile fields limits\"])},\n \"user_uploads\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Profile media limits\"])}\n },\n \"frontend\": {\n \"repository\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repository link\"])},\n \"versions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Available versions\"])},\n \"build_url\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Build URL\"])},\n \"reinstall\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reinstall\"])},\n \"is_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"(Default)\"])},\n \"is_default_custom\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"(Default, version: \", _interpolate(_named(\"version\")), \")\"])},\n \"install\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Install\"])},\n \"install_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Install version \", _interpolate(_named(\"version\"))])},\n \"more_install_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More install options\"])},\n \"more_default_options\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More default setting options\"])},\n \"set_default\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Set default\"])},\n \"set_default_version\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Set version \", _interpolate(_named(\"version\")), \" as default\"])},\n \"wip_notice\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Please note that this section is a WIP and lacks certain features as backend implementation of front-end management is incomplete.\"])},\n \"default_frontend\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default frontend\"])},\n \"default_frontend_tip\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default frontend will be shown to all users. Currently there's no way to for a user to select personal frontend. If you switch away from PleromaFE you'll most likely have to use old and buggy AdminFE to do instance configuration until we replace it.\"])},\n \"default_frontend_unavail\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Default frontend settings are not available, as this requires configuration in the database\"])},\n \"available_frontends\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Available for install\"])},\n \"failure_installing_frontend\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Failed to install frontend \", _interpolate(_named(\"version\")), \": \", _interpolate(_named(\"reason\"))])},\n \"success_installing_frontend\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Frontend \", _interpolate(_named(\"version\")), \" successfully installed\"])}\n },\n \"emoji\": {\n \"global_actions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Global actions\"])},\n \"reload\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Reload emoji\"])},\n \"importFS\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Import emoji from filesystem\"])},\n \"error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error: \", _interpolate(_list(0))])},\n \"create_pack\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create pack\"])},\n \"delete_pack\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete pack\"])},\n \"new_pack_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New pack name\"])},\n \"create\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Create\"])},\n \"emoji_packs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji packs\"])},\n \"remote_packs\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote packs\"])},\n \"do_list\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"List\"])},\n \"remote_pack_instance\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remote pack instance\"])},\n \"emoji_pack\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Emoji pack\"])},\n \"edit_pack\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Edit pack\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Description\"])},\n \"homepage\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Homepage\"])},\n \"fallback_src\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fallback source\"])},\n \"fallback_sha256\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Fallback SHA256\"])},\n \"share\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Share\"])},\n \"save\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save\"])},\n \"save_meta\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Save metadata\"])},\n \"revert_meta\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revert metadata\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"revert\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Revert\"])},\n \"add_file\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Add file\"])},\n \"adding_new\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Adding new emoji\"])},\n \"shortcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shortcode\"])},\n \"filename\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filename\"])},\n \"new_shortcode\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Shortcode, leave blank to infer\"])},\n \"new_filename\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Filename, leave blank to infer\"])},\n \"delete_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Are you sure you want to delete \", _interpolate(_list(0)), \"?\"])},\n \"download_pack\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download pack\"])},\n \"downloading_pack\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Downloading \", _interpolate(_list(0))])},\n \"download\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Download\"])},\n \"download_as_name\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New name\"])},\n \"download_as_name_full\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"New name, leave blank to reuse\"])},\n \"files\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Files\"])},\n \"editing\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Editing \", _interpolate(_list(0))])},\n \"delete_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete?\"])},\n \"metadata_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Metadata different from saved\"])},\n \"emoji_changed\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unsaved emoji file changes, check highlighted emoji\"])},\n \"replace_warning\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"This will REPLACE the local pack of the same name\"])}\n },\n \"temp_overrides\": {\n \":pleroma\": {\n \":instance\": {\n \":public\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Instance is public\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disabling this will make all API accessible only for logged-in users, this will make Public and Federated timelines inaccessible to anonymous visitors.\"])}\n },\n \":limit_to_local_content\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit search to local content\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Disables global network search for unauthenticated (default), all users or none\"])}\n },\n \":description_limit\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Limit\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Character limit for attachment descriptions\"])}\n },\n \":background_image\": {\n \"label\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background image\"])},\n \"description\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Background image (primarily used by PleromaFE)\"])}\n }\n }\n }\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 \"quotes\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Quotes\"])},\n \"repeat_confirm\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do you really want to repeat this status?\"])},\n \"repeat_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat confirmation\"])},\n \"repeat_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Repeat\"])},\n \"repeat_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not repeat\"])},\n \"delete\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete status\"])},\n \"delete_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, list: _list } = ctx;return _normalize([\"Error deleting status: \", _interpolate(_list(0))])},\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 \"delete_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete confirmation\"])},\n \"delete_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Delete\"])},\n \"delete_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\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 \"sensitive_muted\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Muting sensitive content\"])},\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 \"reaction_count_label\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"num\")), \" person reacted\"]), _normalize([_interpolate(_named(\"num\")), \" people reacted\"])])},\n \"hide_quote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Hide the quoted status\"])},\n \"display_quote\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Display the quoted status\"])},\n \"invisible_quote\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Quoted status unavailable: \", _interpolate(_named(\"link\"))])},\n \"more_actions\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"More actions on this status\"])},\n \"loading\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Loading...\"])},\n \"load_error\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Unable to load status: \", _interpolate(_named(\"error\"))])}\n },\n \"user_card\": {\n \"approve\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve confirmation\"])},\n \"approve_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Approve\"])},\n \"approve_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not approve\"])},\n \"approve_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to approve \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\n \"block\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"blocked\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Blocked!\"])},\n \"block_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block confirmation\"])},\n \"block_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to block \", _interpolate(_named(\"user\")), \"?\"])},\n \"block_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Block\"])},\n \"block_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not block\"])},\n \"deactivated\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deactivated\"])},\n \"deny\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny confirmation\"])},\n \"deny_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Deny\"])},\n \"deny_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not deny\"])},\n \"deny_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you want to deny \", _interpolate(_named(\"user\")), \"'s follow request?\"])},\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 \"unfollow_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow confirmation\"])},\n \"unfollow_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to unfollow \", _interpolate(_named(\"user\")), \"?\"])},\n \"unfollow_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Unfollow\"])},\n \"unfollow_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not 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 \"mute_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute confirmation\"])},\n \"mute_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to mute \", _interpolate(_named(\"user\")), \"?\"])},\n \"mute_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute\"])},\n \"mute_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Do not mute\"])},\n \"mute_duration_prompt\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Mute this user for (0 for indefinite time):\"])},\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 \"remove_follower_confirm_title\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove follower confirmation\"])},\n \"remove_follower_confirm_accept_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Remove\"])},\n \"remove_follower_confirm_cancel_button\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Keep\"])},\n \"remove_follower_confirm\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Do you really want to remove \", _interpolate(_named(\"user\")), \" from your followers?\"])},\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 \"group\": (ctx) => {const { normalize: _normalize } = ctx;return _normalize([\"Group\"])},\n \"birthday\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named } = ctx;return _normalize([\"Born \", _interpolate(_named(\"birthday\"))])},\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 \"autocomplete_available\": (ctx) => {const { normalize: _normalize, interpolate: _interpolate, named: _named, plural: _plural } = ctx;return _plural([_normalize([_interpolate(_named(\"number\")), \" result is available. Use up and down keys to navigate through them.\"]), _normalize([_interpolate(_named(\"number\")), \" results are available. Use up and down keys to navigate through them.\"])])}\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\t41785,\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;","export default {\n name: 'Alert',\n selector: '.alert',\n validInnerComponents: [\n 'Text',\n 'Icon',\n 'Link',\n 'Border',\n 'ButtonUnstyled'\n ],\n variants: {\n normal: '.neutral',\n error: '.error',\n warning: '.warning',\n success: '.success'\n },\n defaultRules: [\n {\n directives: {\n background: '--text',\n opacity: 0.5,\n blur: '9px'\n }\n },\n {\n parent: {\n component: 'Alert'\n },\n component: 'Border',\n textColor: '--parent'\n },\n {\n variant: 'error',\n directives: {\n background: '--cRed'\n }\n },\n {\n variant: 'warning',\n directives: {\n background: '--cOrange'\n }\n },\n {\n variant: 'success',\n directives: {\n background: '--cGreen'\n }\n }\n ]\n}\n","export default {\n name: 'Attachment',\n selector: '.Attachment',\n validInnerComponents: [\n 'Border',\n 'ButtonUnstyled',\n 'Input'\n ],\n defaultRules: [\n {\n directives: {\n roundness: 3\n }\n },\n {\n component: 'ButtonUnstyled',\n parent: { component: 'Attachment' },\n directives: {\n background: '#FFFFFF',\n opacity: 0.5\n }\n }\n ]\n}\n","export default {\n name: 'Badge',\n selector: '.badge',\n validInnerComponents: [\n 'Text',\n 'Icon'\n ],\n variants: {\n notification: '.-notification'\n },\n defaultRules: [\n {\n component: 'Root',\n directives: {\n '--badgeNotification': 'color | --cRed'\n }\n },\n {\n directives: {\n background: '--cGreen'\n }\n },\n {\n variant: 'notification',\n directives: {\n background: '--cRed'\n }\n }\n ]\n}\n","export default {\n name: 'Border',\n selector: '/*border*/',\n virtual: true,\n defaultRules: [\n {\n directives: {\n textColor: '$mod(--parent, 10)',\n textAuto: 'no-auto'\n }\n }\n ]\n}\n","export default {\n name: 'Button', // Name of the component\n selector: '.button-default', // CSS selector/prefix\n // outOfTreeSelector: '' // out-of-tree selector is used when other components are laid over it but it's not part of the tree, see Underlay component\n // States, system witll calculate ALL possible combinations of those and prepend \"normal\" to them + standalone \"normal\" state\n states: {\n // States are a bit expensive - the amount of combinations generated is about (1/6)n^3+n, so adding more state increased number of combination by an order of magnitude!\n // All states inherit from \"normal\" state, there is no other inheirtance, i.e. hover+disabled only inherits from \"normal\", not from hover nor disabled.\n // However, cascading still works, so resulting state will be result of merging of all relevant states/variants\n // normal: '' // normal state is implicitly added, it is always included\n toggled: '.toggled',\n pressed: ':active',\n hover: ':hover:not(:disabled)',\n focused: ':focus-within',\n disabled: ':disabled'\n },\n // Variants are mutually exclusive, each component implicitly has \"normal\" variant, and all other variants inherit from it.\n variants: {\n // Variants save on computation time since adding new variant just adds one more \"set\".\n // normal: '', // you can override normal variant, it will be appenended to the main class\n danger: '.danger'\n // Overall the compuation difficulty is N*((1/6)M^3+M) where M is number of distinct states and N is number of variants.\n // This (currently) is further multipled by number of places where component can exist.\n },\n // This lists all other components that can possibly exist within one. Recursion is currently not supported (and probably won't be supported ever).\n validInnerComponents: [\n 'Text',\n 'Icon'\n ],\n // Default rules, used as \"default theme\", essentially.\n defaultRules: [\n {\n component: 'Root',\n directives: {\n '--defaultButtonHoverGlow': 'shadow | 0 0 4 --text',\n '--defaultButtonShadow': 'shadow | 0 0 2 #000000',\n '--defaultButtonBevel': 'shadow | $borderSide(#FFFFFF, top, 0.2) | $borderSide(#000000, bottom, 0.2)',\n '--pressedButtonBevel': 'shadow | $borderSide(#FFFFFF, bottom, 0.2)| $borderSide(#000000, top, 0.2)'\n }\n },\n {\n // component: 'Button', // no need to specify components every time unless you're specifying how other component should look\n // like within it\n directives: {\n background: '--fg',\n shadow: ['--defaultButtonShadow', '--defaultButtonBevel'],\n roundness: 3\n }\n },\n {\n state: ['hover'],\n directives: {\n shadow: ['--defaultButtonHoverGlow', '--defaultButtonBevel']\n }\n },\n {\n state: ['pressed'],\n directives: {\n shadow: ['--defaultButtonShadow', '--pressedButtonBevel']\n }\n },\n {\n state: ['hover', 'pressed'],\n directives: {\n shadow: ['--defaultButtonHoverGlow', '--pressedButtonBevel']\n }\n },\n {\n state: ['toggled'],\n directives: {\n background: '--inheritedBackground,-14.2',\n shadow: ['--defaultButtonShadow', '--pressedButtonBevel']\n }\n },\n {\n state: ['toggled', 'hover'],\n directives: {\n background: '--inheritedBackground,-14.2',\n shadow: ['--defaultButtonHoverGlow', '--pressedButtonBevel']\n }\n },\n {\n state: ['disabled'],\n directives: {\n background: '$blend(--inheritedBackground, 0.25, --parent)',\n shadow: ['--defaultButtonBevel']\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'Button',\n state: ['disabled']\n },\n directives: {\n textOpacity: 0.25,\n textOpacityMode: 'blend'\n }\n }\n ]\n}\n","export default {\n name: 'ButtonUnstyled',\n selector: '.button-unstyled',\n states: {\n toggled: '.toggled',\n disabled: ':disabled',\n hover: ':hover:not(:disabled)',\n focused: ':focus-within'\n },\n validInnerComponents: [\n 'Text',\n 'Icon',\n 'Badge'\n ],\n defaultRules: [\n {\n directives: {\n background: '#ffffff',\n opacity: 0,\n shadow: []\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['hover']\n },\n directives: {\n textColor: '--parent--text'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['toggled']\n },\n directives: {\n textColor: '--parent--text'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['toggled', 'hover']\n },\n directives: {\n textColor: '--parent--text'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['toggled', 'focused']\n },\n directives: {\n textColor: '--parent--text'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['toggled', 'focused', 'hover']\n },\n directives: {\n textColor: '--parent--text'\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'ButtonUnstyled',\n state: ['disabled']\n },\n directives: {\n textOpacity: 0.25,\n textOpacityMode: 'blend'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'ButtonUnstyled',\n state: ['disabled']\n },\n directives: {\n textOpacity: 0.25,\n textOpacityMode: 'blend'\n }\n }\n ]\n}\n","export default {\n name: 'Chat',\n selector: '.chat-message-list',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Avatar',\n 'ChatMessage'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg',\n blur: '5px'\n }\n }\n ]\n}\n","export default {\n name: 'ChatMessage',\n selector: '.chat-message',\n variants: {\n outgoing: '.outgoing'\n },\n validInnerComponents: [\n 'Text',\n 'Icon',\n 'Border',\n 'Button',\n 'RichContent',\n 'Attachment',\n 'PollGraph'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg, 2',\n backgroundNoCssColor: 'yes'\n }\n },\n {\n variant: 'outgoing',\n directives: {\n background: '--bg, 5'\n }\n }\n ]\n}\n","/**\n * suggest - generates a suggestor function to be used by emoji-input\n * data: object providing source information for specific types of suggestions:\n * data.emoji - optional, an array of all emoji available i.e.\n * (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 && user.name && (\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","export default {\n name: 'FunText',\n selector: '/*fun-text*/',\n virtual: true,\n variants: {\n greentext: '.greentext',\n cyantext: '.cyantext'\n },\n states: {\n faint: '.faint'\n },\n defaultRules: [\n {\n directives: {\n textColor: '--text',\n textAuto: 'preserve'\n }\n },\n {\n state: ['faint'],\n directives: {\n textOpacity: 0.5\n }\n },\n {\n variant: 'greentext',\n directives: {\n textColor: '--cGreen',\n textAuto: 'preserve'\n }\n },\n {\n variant: 'cyantext',\n directives: {\n textColor: '--cBlue',\n textAuto: 'preserve'\n }\n }\n ]\n}\n","export default {\n name: 'Icon',\n virtual: true,\n selector: '.svg-inline--fa',\n defaultRules: [\n {\n component: 'Icon',\n directives: {\n textColor: '$blend(--stack, 0.5, --parent--text)',\n textAuto: 'no-auto'\n }\n }\n ]\n}\n","const hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--text',\n alpha: 1\n}\n\nexport default {\n name: 'Input',\n selector: '.input',\n variant: {\n checkbox: '.-checkbox',\n radio: '.-radio'\n },\n states: {\n disabled: ':disabled',\n hover: ':hover:not(:disabled)',\n focused: ':focus-within'\n },\n validInnerComponents: [\n 'Text'\n ],\n defaultRules: [\n {\n component: 'Root',\n directives: {\n '--defaultInputBevel': 'shadow | $borderSide(#FFFFFF, bottom, 0.2)| $borderSide(#000000, top, 0.2)'\n }\n },\n {\n variant: 'checkbox',\n directives: {\n roundness: 1\n }\n },\n {\n directives: {\n '--font': 'generic | inherit',\n background: '--fg, -5',\n roundness: 3,\n shadow: [{\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n }, '--defaultInputBevel']\n }\n },\n {\n state: ['hover'],\n directives: {\n shadow: [hoverGlow, '--defaultInputBevel']\n }\n }\n ]\n}\n","export default {\n name: 'Link',\n selector: 'a',\n virtual: true,\n states: {\n faint: '.faint'\n },\n defaultRules: [\n {\n component: 'Link',\n directives: {\n textColor: '--link'\n }\n },\n {\n component: 'Link',\n state: ['faint'],\n directives: {\n textOpacity: 0.5,\n textOpacityMode: 'fake'\n }\n }\n ]\n}\n","export default {\n name: 'ListItem',\n selector: '.list-item',\n states: {\n active: '.-active',\n hover: ':hover:not(.-non-interactive)'\n },\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'RichContent',\n 'Input',\n 'Avatar'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg',\n opacity: 0\n }\n },\n {\n state: ['active'],\n directives: {\n background: '--inheritedBackground, 10',\n opacity: 1\n }\n },\n {\n state: ['hover'],\n directives: {\n background: '--inheritedBackground, 10',\n opacity: 1\n }\n },\n {\n state: ['hover', 'active'],\n directives: {\n background: '--inheritedBackground, 20',\n opacity: 1\n }\n }\n ]\n}\n","export default {\n name: 'MenuItem',\n selector: '.menu-item',\n validInnerComponents: [\n 'Text',\n 'Icon',\n 'Input',\n 'Border',\n 'ButtonUnstyled',\n 'Badge',\n 'Avatar'\n ],\n states: {\n hover: ':hover',\n active: '.-active'\n },\n defaultRules: [\n {\n directives: {\n background: '--bg',\n opacity: 0\n }\n },\n {\n state: ['hover'],\n directives: {\n background: '$mod(--bg, 5)',\n opacity: 1\n }\n },\n {\n state: ['active'],\n directives: {\n background: '$mod(--bg, 10)',\n opacity: 1\n }\n },\n {\n state: ['active', 'hover'],\n directives: {\n background: '$mod(--bg, 15)',\n opacity: 1\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'MenuItem',\n state: ['hover']\n },\n directives: {\n textColor: '--link',\n textAuto: 'no-preserve'\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'MenuItem',\n state: ['active']\n },\n directives: {\n textColor: '--link',\n textAuto: 'no-preserve'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'MenuItem',\n state: ['active']\n },\n directives: {\n textColor: '--link',\n textAuto: 'no-preserve'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'MenuItem',\n state: ['hover']\n },\n directives: {\n textColor: '--link',\n textAuto: 'no-preserve'\n }\n }\n ]\n}\n","export default {\n name: 'MobileDrawer',\n selector: '.mobile-drawer',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'Input',\n 'PanelHeader',\n 'MenuItem',\n 'Notification',\n 'Alert',\n 'UserCard'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg',\n backgroundNoCssColor: 'yes'\n }\n },\n {\n component: 'PanelHeader',\n parent: { component: 'MobileDrawer' },\n directives: {\n background: '--fg',\n shadow: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }]\n }\n }\n ]\n}\n","export default {\n name: 'Modals',\n selector: '.modal-view',\n lazy: true,\n validInnerComponents: [\n 'Panel'\n ],\n defaultRules: []\n}\n","export default {\n name: 'Notification',\n selector: '.Notification',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'RichContent',\n 'Input',\n 'Avatar',\n 'Attachment',\n 'PollGraph'\n ],\n defaultRules: []\n}\n","export default {\n name: 'Panel',\n selector: '.panel',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'Input',\n 'PanelHeader',\n 'MenuItem',\n 'Post',\n 'Notification',\n 'Alert',\n 'UserCard',\n 'Chat',\n 'Attachment',\n 'Tab',\n 'ListItem'\n ],\n validInnerComponentsLite: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'Input',\n 'PanelHeader',\n 'Alert'\n ],\n defaultRules: [\n {\n directives: {\n backgroundNoCssColor: 'yes',\n background: '--bg',\n roundness: 3,\n blur: '5px',\n shadow: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }]\n }\n }\n ]\n}\n","export default {\n name: 'PanelHeader',\n selector: '.panel-heading',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Button',\n 'ButtonUnstyled',\n 'Badge',\n 'Alert',\n 'Avatar'\n ],\n defaultRules: [\n {\n component: 'PanelHeader',\n directives: {\n backgroundNoCssColor: 'yes',\n background: '--fg',\n shadow: []\n }\n }\n ]\n}\n","export default {\n name: 'PollGraph',\n selector: '.result-fill',\n defaultRules: [\n {\n directives: {\n background: '--accent',\n opacity: 0.5\n }\n }\n ]\n}\n","export default {\n name: 'Popover',\n selector: '.popover',\n lazy: true,\n variants: {\n modal: '.modal'\n },\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'Input',\n 'MenuItem',\n 'Post',\n 'UserCard'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg',\n blur: '10px',\n shadow: [{\n x: 2,\n y: 2,\n blur: 3,\n spread: 0,\n color: '#000000',\n alpha: 0.5\n }]\n }\n }\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?.*?\\/?>)/gis.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-z]+[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 decoded = decodeURI(url)\n // https://git.pleroma.social/pleroma/elixir-libraries/linkify/-/blob/master/lib/linkify/parser.ex\n // https://www.pcre.org/original/doc/html/pcrepattern.html\n const regex = /tag[s]*\\/([\\p{L}\\p{N}_]*[\\p{Alphabetic}_·\\u{200c}][\\p{L}\\p{N}_·\\p{M}\\u{200c}]*)$/ug\n const result = regex.exec(decoded)\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 \"/Users/lainsoykaf/repos/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\nconst MAYBE_LINE_BREAKING_ELEMENTS = [\n 'blockquote',\n 'br',\n 'hr',\n 'ul',\n 'ol',\n 'li',\n 'p',\n 'table',\n 'tbody',\n 'td',\n 'th',\n 'thead',\n 'tr',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5'\n]\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 // Faint style (for notifs)\n faint: {\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 let Tag = getTagName(opener)\n if (Tag.toLowerCase() === 'script') Tag = 'js-exploit'\n if (Tag.toLowerCase() === 'style') Tag = 'css-exploit'\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 if (MAYBE_LINE_BREAKING_ELEMENTS.includes(Tag)) {\n // all the elements that can cause a line change\n currentMentions = null\n } else if (Tag === 'img') { // replace images with StillImage\n return ['', [mentionsLinePadding, renderImage(opener)], '']\n } else if (Tag === 'a' && this.handleLinks) { // replace mentions with MentionLink\n if (fullAttrs.class && fullAttrs.class.includes('mention')) {\n // Handling mentions here\n return renderMention(attrs, children)\n } else {\n currentMentions = null\n }\n } else if (Tag === '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', this.faint ? '-faint' : '']}>\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","export default {\n name: 'RichContent',\n selector: '.RichContent',\n validInnerComponents: [\n 'Text',\n 'FunText',\n 'Link'\n ],\n defaultRules: [\n {\n directives: {\n '--font': 'generic | inherit',\n '--monoFont': 'generic | monospace',\n textNoCssColor: 'yes'\n }\n }\n ]\n}\n","export default {\n name: 'Root',\n selector: ':root',\n validInnerComponents: [\n 'Underlay',\n 'Modals',\n 'Popover',\n 'TopBar',\n 'Scrollbar',\n 'ScrollbarElement',\n 'MobileDrawer',\n 'Alert',\n 'Button' // mobile post button\n ],\n validInnerComponentsLite: [\n 'Underlay',\n 'Scrollbar',\n 'ScrollbarElement'\n ],\n defaultRules: [\n {\n directives: {\n // These are here just to establish order,\n // themes should override those\n '--bg': 'color | #121a24',\n '--fg': 'color | #182230',\n '--text': 'color | #b9b9ba',\n '--link': 'color | #d8a070',\n '--accent': 'color | #d8a070',\n '--cRed': 'color | #FF0000',\n '--cBlue': 'color | #0095ff',\n '--cGreen': 'color | #0fa00f',\n '--cOrange': 'color | #ffa500',\n\n // Fonts\n '--font': 'generic | sans-serif',\n '--monoFont': 'generic | monospace',\n\n // Fallback no-background-image color\n // (also useful in some other places like scrollbars)\n '--wallpaper': 'color | --bg, -2',\n\n // Selection colors\n '--selectionBackground': 'color | --accent',\n '--selectionText': 'color | $textColor(--accent, --text, no-preserve)'\n }\n }\n ]\n}\n","export default {\n name: 'Scrollbar',\n selector: '::-webkit-scrollbar',\n defaultRules: [\n {\n directives: {\n background: '--wallpaper'\n }\n }\n ]\n}\n","const 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})\n\nconst buttonInsetFakeBorders = [border(true, false), border(false, true)]\nconst inputInsetFakeBorders = [border(true, true), border(false, false)]\nconst buttonOuterShadow = {\n x: 0,\n y: 0,\n blur: 2,\n spread: 0,\n color: '#000000',\n alpha: 1\n}\n\nconst hoverGlow = {\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '--text',\n alpha: 1\n}\n\nexport default {\n name: 'ScrollbarElement',\n selector: '::-webkit-scrollbar-button',\n states: {\n pressed: ':active',\n hover: ':hover:not(:disabled)',\n disabled: ':disabled'\n },\n validInnerComponents: [\n 'Text'\n ],\n defaultRules: [\n {\n directives: {\n background: '--fg',\n shadow: [buttonOuterShadow, ...buttonInsetFakeBorders],\n roundness: 3\n }\n },\n {\n state: ['hover'],\n directives: {\n shadow: [hoverGlow, ...buttonInsetFakeBorders]\n }\n },\n {\n state: ['pressed'],\n directives: {\n shadow: [buttonOuterShadow, ...inputInsetFakeBorders]\n }\n },\n {\n state: ['hover', 'pressed'],\n directives: {\n shadow: [hoverGlow, ...inputInsetFakeBorders]\n }\n },\n {\n state: ['toggled'],\n directives: {\n background: '--accent,-24.2',\n shadow: [buttonOuterShadow, ...inputInsetFakeBorders]\n }\n },\n {\n state: ['toggled', 'hover'],\n directives: {\n background: '--accent,-24.2',\n shadow: [hoverGlow, ...inputInsetFakeBorders]\n }\n },\n {\n state: ['disabled'],\n directives: {\n background: '$blend(--inheritedBackground, 0.25, --parent)',\n shadow: [...buttonInsetFakeBorders]\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'Button',\n state: ['disabled']\n },\n directives: {\n textOpacity: 0.25,\n textOpacityMode: 'blend'\n }\n }\n ]\n}\n","export default {\n name: 'Post',\n selector: '.Status',\n states: {\n selected: '.-focused'\n },\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'Button',\n 'ButtonUnstyled',\n 'RichContent',\n 'Input',\n 'Avatar',\n 'Attachment',\n 'PollGraph'\n ],\n validInnerComponentsLite: [\n 'Text',\n 'Link',\n 'Icon',\n 'Border',\n 'ButtonUnstyled',\n 'RichContent',\n 'Avatar'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg'\n }\n },\n {\n state: ['selected'],\n directives: {\n background: '--inheritedBackground, 10'\n }\n }\n ]\n}\n","export default {\n name: 'Tab', // Name of the component\n selector: '.tab', // CSS selector/prefix\n states: {\n active: '.active',\n hover: ':hover:not(.disabled)',\n disabled: '.disabled'\n },\n validInnerComponents: [\n 'Text',\n 'Icon'\n ],\n defaultRules: [\n {\n directives: {\n background: '--fg',\n shadow: ['--defaultButtonShadow', '--defaultButtonBevel'],\n roundness: 3\n }\n },\n {\n state: ['hover'],\n directives: {\n shadow: ['--defaultButtonHoverGlow', '--defaultButtonBevel']\n }\n },\n {\n state: ['active'],\n directives: {\n opacity: 0\n }\n },\n {\n state: ['hover', 'active'],\n directives: {\n shadow: ['--defaultButtonShadow', '--defaultButtonBevel']\n }\n },\n {\n state: ['disabled'],\n directives: {\n background: '$blend(--inheritedBackground, 0.25, --parent)',\n shadow: ['--defaultButtonBevel']\n }\n },\n {\n component: 'Text',\n parent: {\n component: 'Tab',\n state: ['disabled']\n },\n directives: {\n textOpacity: 0.25,\n textOpacityMode: 'blend'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'Tab',\n state: ['active']\n },\n directives: {\n textColor: '--text'\n }\n },\n {\n component: 'Icon',\n parent: {\n component: 'Tab',\n state: ['active', 'hover']\n },\n directives: {\n textColor: '--text'\n }\n }\n ]\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 },\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']\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 role=\"tab\"\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 role=\"tab\"\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\n class=\"tabs\"\n role=\"tablist\"\n >\n {tabs}\n </div>\n <div\n ref=\"contents\"\n role=\"tabpanel\"\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","export default {\n name: 'Text',\n selector: '/*text*/',\n virtual: true,\n states: {\n faint: '.faint'\n },\n defaultRules: [\n {\n directives: {\n textColor: '--text',\n textAuto: 'no-preserve'\n }\n },\n {\n state: ['faint'],\n directives: {\n textOpacity: 0.5\n }\n }\n ]\n}\n","export default {\n name: 'TopBar',\n selector: 'nav',\n validInnerComponents: [\n 'Link',\n 'Text',\n 'Icon',\n 'Button',\n 'ButtonUnstyled',\n 'Input',\n 'Badge'\n ],\n defaultRules: [\n {\n directives: {\n background: '--fg',\n shadow: [{\n x: 0,\n y: 0,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }]\n }\n }\n ]\n}\n","export default {\n name: 'Underlay',\n selector: '#content',\n // Out of tree selector: Most components are laid over underlay, but underlay itself is not part of the DOM tree,\n // i.e. it's a separate absolutely-positioned component, so we need to treat it differently depending on whether\n // we are searching for underlay specifically or for whatever is laid on top of it.\n outOfTreeSelector: '.underlay',\n validInnerComponents: [\n 'Panel'\n ],\n defaultRules: [\n {\n directives: {\n background: '#000000',\n opacity: 0.2\n }\n }\n ]\n}\n","export default {\n name: 'Avatar',\n selector: '.Avatar',\n variants: {\n compact: '.-compact'\n },\n defaultRules: [\n {\n directives: {\n roundness: 3,\n shadow: [{\n x: 0,\n y: 1,\n blur: 8,\n spread: 0,\n color: '#000000',\n alpha: 0.7\n }]\n }\n }\n ]\n}\n","export default {\n name: 'UserCard',\n selector: '.user-card',\n validInnerComponents: [\n 'Text',\n 'Link',\n 'Icon',\n 'Button',\n 'ButtonUnstyled',\n 'Input',\n 'RichContent',\n 'Alert'\n ],\n defaultRules: [\n {\n directives: {\n background: '--bg',\n opacity: 0,\n roundness: 3,\n shadow: [{\n x: 1,\n y: 1,\n blur: 4,\n spread: 0,\n color: '#000000',\n alpha: 0.6\n }],\n '--profileTint': 'color | $alpha(--background, 0.5)'\n }\n },\n {\n parent: {\n component: 'UserCard'\n },\n component: 'RichContent',\n directives: {\n opacity: 0\n }\n }\n ]\n}\n","// 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} role=\"button\" tabindex=\"0\">{this.$t('general.more')}</a>}\n </div>\n </div>\n )\n }\n }\n}\n\nexport default withLoadMore\n","const 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 'nan-TW',\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 { isEqual } from 'lodash'\nimport { languages, langCodeToJsonName } from './languages.js'\n\nconst ULTIMATE_FALLBACK_LOCALE = 'en'\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 const languages = (Array.isArray(language) ? language : [language]).filter(k => k)\n\n if (!languages.includes(ULTIMATE_FALLBACK_LOCALE)) {\n languages.push(ULTIMATE_FALLBACK_LOCALE)\n }\n const [first, ...rest] = languages\n\n if (first === i18n.locale && isEqual(rest, i18n.fallbackLocale)) {\n return\n }\n\n for (const lang of languages) {\n if (hasLanguageFile(lang)) {\n const messages = await loadLanguageFile(lang)\n i18n.setLocaleMessage(lang, messages.default)\n }\n }\n\n i18n.fallbackLocale = rest\n i18n.locale = first\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","import 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, // used for theme editor v2\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 muteSensitiveStatuses: false,\n modalOnRepeat: false,\n modalOnUnfollow: false,\n modalOnBlock: true,\n modalOnMute: false,\n modalOnDelete: true,\n modalOnLogout: true,\n modalOnApproveFollow: false,\n modalOnDenyFollow: false,\n modalOnRemoveUserFromFollowers: 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 emojiReactionsScale: 0.5,\n textSize: '14px',\n emojiSize: '2.2rem',\n navbarSize: '3.5rem',\n panelHeaderSize: '3.2rem',\n forcedRoundness: -1,\n fontsOverride: {},\n virtualScrolling: true,\n sensitiveByDefault: false,\n conversationDisplay: 'linear',\n conversationTreeAdvanced: false,\n conversationOtherRepliesButton: 'below',\n conversationTreeFadeAncestors: false,\n showExtraNotifications: true,\n showExtraNotificationsTip: true,\n showChatsInExtraNotifications: true,\n showAnnouncementsInExtraNotifications: true,\n showFollowRequestsInExtraNotifications: true,\n maxDepthInThread: 6,\n autocompleteSelect: false,\n closingDrawerMarksAsSeen: true,\n unseenAtTop: false,\n ignoreInactionableSeen: false,\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 birthdayRequired: false,\n birthdayMinAge: 0,\n\n // Feature-set, apparently, not everything here is reported...\n shoutAvailable: false,\n pleromaChatMessagesAvailable: false,\n pleromaCustomEmojiReactionsAvailable: false,\n gopherAvailable: false,\n mediaProxyAvailable: false,\n suggestionsEnabled: false,\n suggestionsWeb: '',\n quotingAvailable: false,\n groupActorAvailable: false,\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 const packs = emoji.tags\n .filter(k => k.startsWith('pack:'))\n .map(k => {\n const packName = k.slice(5) // remove 'pack:' prefix\n return {\n id: `custom-${packName}`,\n text: packName\n }\n })\n\n if (!packs.length) {\n return [{\n id: 'unpacked'\n }]\n } else {\n return packs\n }\n }\n\n return state.customEmoji\n .reduce((res, emoji) => {\n packsOf(emoji).forEach(({ id: packId, text: 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 }\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 try {\n const annotations = await loadAnnotations(lang)\n commit('setUnicodeEmojiAnnotations', { lang, annotations })\n } catch (e) {\n console.warn(`Error loading unicode emoji annotations for ${lang}: `, e)\n // ignore\n }\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 noPackLast = (a, b) => {\n const aNull = a === ''\n const bNull = b === ''\n if (aNull === bNull) {\n return 0\n } else if (aNull && !bNull) {\n return 1\n } else {\n return -1\n }\n }\n const byPackThenByName = (a, b) => {\n const packOf = emoji => (emoji.tags.filter(k => k.startsWith('pack:'))[0] || '').slice(5)\n const packOfA = packOf(a)\n const packOfB = packOf(b)\n return noPackLast(packOfA, packOfB) || caseInsensitiveStrCmp(packOfA, packOfB) || 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 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 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\nexport const defaultState = () => ({\n allStatuses: [],\n scrobblesNextFetch: {},\n allStatusesObject: {},\n conversationsObject: {},\n maxId: 0,\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\nconst getLatestScrobble = (state, user) => {\n if (state.scrobblesNextFetch[user.id] && state.scrobblesNextFetch[user.id] > Date.now()) {\n return\n }\n\n state.scrobblesNextFetch[user.id] = Date.now() + 24 * 60 * 60 * 1000\n apiService.fetchScrobbles({ accountId: user.id }).then((scrobbles) => {\n if (scrobbles.length > 0) {\n user.latestScrobble = scrobbles[0]\n\n state.scrobblesNextFetch[user.id] = Date.now() + 60 * 1000\n }\n })\n}\n\n// Add status to the global storages (arrays and objects maintaining statuses) except timelines\nconst addStatusToGlobalStorage = (state, data) => {\n getLatestScrobble(state, data.user)\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\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 if (status.quote) {\n addStatus(status.quote, /* showImmediately = */ false, /* addToTimeline = */ false)\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 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 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 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 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 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, dispatch, state }, { statuses, showImmediately = false, timeline = false, noIdUpdate = false, userId, pagination }) {\n commit('addNewStatuses', { statuses, showImmediately, timeline, noIdUpdate, user: rootState.users.currentUser, userId, pagination })\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, dispatch }, status) {\n apiService.deleteStatus({ id: status.id, credentials: rootState.users.currentUser.credentials })\n .then((_) => {\n commit('setDeleted', { status })\n })\n .catch((e) => {\n dispatch('pushGlobalNotice', {\n level: 'error',\n messageKey: 'status.delete_error',\n messageArgs: [e.message],\n timeout: 5000\n })\n })\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 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 return 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('addNewUsers', data.statuses.map(s => s.user).filter(u => u))\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 apiService from '../services/api/api.service.js'\n\nimport {\n isStatusNotification,\n isValidNotification,\n maybeShowNotification\n} from '../services/notification_utils/notification_utils.js'\n\nimport {\n closeDesktopNotification,\n closeAllDesktopNotifications\n} from '../services/desktop_notification_utils/desktop_notification_utils.js'\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 ...emptyNotifications()\n})\n\nexport const notifications = {\n state: defaultState(),\n mutations: {\n addNewNotifications (state, { notifications }) {\n notifications.forEach(notification => {\n state.data.push(notification)\n state.idStore[notification.id] = notification\n })\n },\n clearNotifications (state) {\n state = emptyNotifications()\n },\n updateNotificationsMinMaxId (state, id) {\n state.maxId = id > state.maxId ? id : state.maxId\n state.minId = id < state.minId ? id : state.minId\n },\n setNotificationsLoading (state, { value }) {\n state.loading = value\n },\n setNotificationsSilence (state, { value }) {\n state.desktopNotificationSilence = value\n },\n markNotificationsAsSeen (state) {\n state.data.forEach((notification) => {\n notification.seen = true\n })\n },\n markSingleNotificationAsSeen (state, { id }) {\n const notification = state.idStore[id]\n if (notification) notification.seen = true\n },\n dismissNotification (state, { id }) {\n state.data = state.data.filter(n => n.id !== id)\n delete state.idStore[id]\n },\n updateNotification (state, { id, updater }) {\n const notification = state.idStore[id]\n notification && updater(notification)\n }\n },\n actions: {\n addNewNotifications (store, { notifications, older }) {\n const { commit, dispatch, state, rootState } = store\n const validNotifications = notifications.filter((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 commit('updateNotificationsMinMaxId', notification.id)\n return false\n }\n return true\n })\n\n const statusNotifications = validNotifications.filter(notification => isStatusNotification(notification.type) && notification.status)\n\n // Synchronous commit to add all the statuses\n commit('addNewStatuses', { statuses: statusNotifications.map(notification => notification.status) })\n\n // Update references to statuses in notifications to ones in the store\n statusNotifications.forEach(notification => {\n const id = notification.status.id\n const referenceStatus = rootState.statuses.allStatusesObject[id]\n\n if (referenceStatus) {\n notification.status = referenceStatus\n }\n })\n\n validNotifications.forEach(notification => {\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.idStore.hasOwnProperty(notification.id)) {\n commit('updateNotificationsMinMaxId', notification.id)\n commit('addNewNotifications', { notifications: [notification] })\n\n maybeShowNotification(store, notification)\n } else if (notification.seen) {\n state.idStore[notification.id].seen = true\n }\n })\n },\n notificationClicked ({ state, dispatch }, { id }) {\n const notification = state.idStore[id]\n const { type, seen } = notification\n\n if (!seen) {\n switch (type) {\n case 'mention':\n case 'pleroma:report':\n case 'follow_request':\n break\n default:\n dispatch('markSingleNotificationAsSeen', { id })\n }\n }\n },\n setNotificationsLoading ({ rootState, commit }, { value }) {\n commit('setNotificationsLoading', { value })\n },\n setNotificationsSilence ({ rootState, commit }, { value }) {\n commit('setNotificationsSilence', { value })\n },\n markNotificationsAsSeen ({ rootState, state, commit }) {\n commit('markNotificationsAsSeen')\n apiService.markNotificationsAsSeen({\n id: state.maxId,\n credentials: rootState.users.currentUser.credentials\n }).then(() => {\n closeAllDesktopNotifications(rootState)\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 }).then(() => {\n closeDesktopNotification(rootState, { id })\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 }\n}\n\nexport default notifications\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 statusId = 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.statusId = statusId\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, statusId = 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, statusId, tag })\n const boundFetchAndUpdate = () =>\n fetchAndUpdate({ timeline, credentials, store, userId, listId, statusId, 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, statusId = false, tag }) {\n return timelineFetcher.startFetching({ timeline, store, credentials, userId, listId, statusId, 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 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/sw/sw.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, args) => {\n const id = typeof args === 'object' ? args.id : args\n const expiresIn = typeof args === 'object' ? args.expiresIn : 0\n\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, expiresIn })\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 setBlockIdsMaxId (state, blockIdsMaxId) {\n state.currentUser.blockIdsMaxId = blockIdsMaxId\n },\n saveMuteIds (state, muteIds) {\n state.currentUser.muteIds = muteIds\n },\n setMuteIdsMaxId (state, muteIdsMaxId) {\n state.currentUser.muteIdsMaxId = muteIdsMaxId\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 state.signUpNotice = {}\n },\n signUpSuccess (state) {\n state.signUpPending = false\n },\n signUpFailure (state, errors) {\n state.signUpPending = false\n state.signUpErrors = errors\n state.signUpNotice = {}\n },\n signUpNotice (state, notice) {\n state.signUpPending = false\n state.signUpErrors = []\n state.signUpNotice = notice\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 signUpNotice: {},\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, args) {\n const { reset } = args || {}\n\n const maxId = store.state.currentUser.blockIdsMaxId\n return store.rootState.api.backendInteractor.fetchBlocks({ maxId })\n .then((blocks) => {\n if (reset) {\n store.commit('saveBlockIds', map(blocks, 'id'))\n } else {\n map(blocks, 'id').map(id => store.commit('addBlockId', id))\n }\n if (blocks.length) {\n store.commit('setBlockIdsMaxId', last(blocks).id)\n }\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, args) {\n const { reset } = args || {}\n\n const maxId = store.state.currentUser.muteIdsMaxId\n return store.rootState.api.backendInteractor.fetchMutes({ maxId })\n .then((mutes) => {\n if (reset) {\n store.commit('saveMuteIds', map(mutes, 'id'))\n } else {\n map(mutes, 'id').map(id => store.commit('addMuteId', id))\n }\n if (mutes.length) {\n store.commit('setMuteIdsMaxId', last(mutes).id)\n }\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.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\n if (data.access_token) {\n store.commit('signUpSuccess')\n store.commit('setToken', data.access_token)\n store.dispatch('loginUser', data.access_token)\n return 'ok'\n } else { // Request succeeded, but user cannot login yet.\n store.commit('signUpNotice', data)\n return 'request_sent'\n }\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 const dispatch = store.dispatch\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 dispatch('fetchEmoji')\n\n getNotificationPermission()\n .then(permission => commit('setNotificationPermission', permission))\n\n // Set our new backend interactor\n commit('setBackendInteractor', backendInteractorService(accessToken))\n dispatch('pushServerSideStorage')\n\n if (user.token) {\n dispatch('setWsToken', user.token)\n\n // Initialize the shout socket.\n dispatch('initializeSocket')\n }\n\n const startPolling = () => {\n // Start getting fresh posts.\n dispatch('startFetchingTimeline', { timeline: 'friends' })\n\n // Start fetching notifications\n dispatch('startFetchingNotifications')\n\n // Start fetching chats\n dispatch('startFetchingChats')\n }\n\n dispatch('startFetchingLists')\n\n if (user.locked) {\n dispatch('startFetchingFollowRequests')\n }\n\n if (store.getters.mergedConfig.useStreamingApi) {\n dispatch('fetchTimeline', { timeline: 'friends', since: null })\n dispatch('fetchNotifications', { since: null })\n dispatch('enableMastoSockets', true).catch((error) => {\n console.error('Failed initializing MastoAPI Streaming socket', error)\n }).then(() => {\n dispatch('fetchChats', { latest: true })\n setTimeout(() => dispatch('setNotificationsSilence', false), 10000)\n })\n } else {\n startPolling()\n }\n\n // Get user mutes\n dispatch('fetchMutes')\n\n dispatch('setLayoutWidth', windowWidth())\n 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\n // remove authentication token on client/authentication errors\n if ([400, 401, 403, 422].includes(response.status)) {\n commit('clearToken')\n }\n\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.error(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 statusId = false\n }) {\n if (store.state.fetchers[timeline]) return\n\n const fetcher = store.state.backendInteractor.startFetchingTimeline({\n timeline, store, userId, listId, statusId, 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 { 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('confirmProfileOption', { name, value })\n } else {\n commit('confirmProfileOption', { 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 profileConfig = {\n state: { ...defaultState },\n mutations: {\n confirmProfileOption (state, { name, value }) {\n set(state, name, value)\n },\n wipeProfileOption (state, { name }) {\n set(state, name, null)\n },\n wipeAllProfileOptions (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 setProfileOption ({ 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('wipeProfileOption', { name })\n\n api({ rootState, commit }, { path, value, oldValue })\n .catch((e) => {\n console.warn('Error setting server-side option:', e)\n commit('confirmProfileOption', { name, value: oldValue })\n })\n },\n logout ({ commit }) {\n commit('wipeAllProfileOptions')\n }\n }\n}\n\nexport default profileConfig\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 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","import { set, get, cloneDeep, differenceWith, isEqual, flatten } from 'lodash'\n\nexport const defaultState = {\n frontends: [],\n loaded: false,\n needsReboot: null,\n config: null,\n modifiedPaths: null,\n descriptions: null,\n draft: null,\n dbConfigEnabled: null\n}\n\nexport const newUserFlags = {\n ...defaultState.flagStorage\n}\n\nconst adminSettingsStorage = {\n state: {\n ...cloneDeep(defaultState)\n },\n mutations: {\n setInstanceAdminNoDbConfig (state) {\n state.loaded = false\n state.dbConfigEnabled = false\n },\n setAvailableFrontends (state, { frontends }) {\n state.frontends = frontends.map(f => {\n f.installedRefs = f.installed_refs\n if (f.name === 'pleroma-fe') {\n f.refs = ['master', 'develop']\n } else {\n f.refs = [f.ref]\n }\n return f\n })\n },\n updateAdminSettings (state, { config, modifiedPaths }) {\n state.loaded = true\n state.dbConfigEnabled = true\n state.config = config\n state.modifiedPaths = modifiedPaths\n },\n updateAdminDescriptions (state, { descriptions }) {\n state.descriptions = descriptions\n },\n updateAdminDraft (state, { path, value }) {\n const [group, key, subkey] = path\n const parent = [group, key, subkey]\n\n set(state.draft, path, value)\n\n // force-updating grouped draft to trigger refresh of group settings\n if (path.length > parent.length) {\n set(state.draft, parent, cloneDeep(get(state.draft, parent)))\n }\n },\n resetAdminDraft (state) {\n state.draft = cloneDeep(state.config)\n }\n },\n actions: {\n loadFrontendsStuff ({ state, rootState, dispatch, commit }) {\n rootState.api.backendInteractor.fetchAvailableFrontends()\n .then(frontends => commit('setAvailableFrontends', { frontends }))\n },\n loadAdminStuff ({ state, rootState, dispatch, commit }) {\n rootState.api.backendInteractor.fetchInstanceDBConfig()\n .then(backendDbConfig => {\n if (backendDbConfig.error) {\n if (backendDbConfig.error.status === 400) {\n backendDbConfig.error.json().then(errorJson => {\n if (/configurable_from_database/.test(errorJson.error)) {\n commit('setInstanceAdminNoDbConfig')\n }\n })\n }\n } else {\n dispatch('setInstanceAdminSettings', { backendDbConfig })\n }\n })\n if (state.descriptions === null) {\n rootState.api.backendInteractor.fetchInstanceConfigDescriptions()\n .then(backendDescriptions => dispatch('setInstanceAdminDescriptions', { backendDescriptions }))\n }\n },\n setInstanceAdminSettings ({ state, commit, dispatch }, { backendDbConfig }) {\n const config = state.config || {}\n const modifiedPaths = new Set()\n backendDbConfig.configs.forEach(c => {\n const path = [c.group, c.key]\n if (c.db) {\n // Path elements can contain dot, therefore we use ' -> ' as a separator instead\n // Using strings for modified paths for easier searching\n c.db.forEach(x => modifiedPaths.add([...path, x].join(' -> ')))\n }\n const convert = (value) => {\n if (Array.isArray(value) && value.length > 0 && value[0].tuple) {\n return value.reduce((acc, c) => {\n return { ...acc, [c.tuple[0]]: convert(c.tuple[1]) }\n }, {})\n } else {\n return value\n }\n }\n set(config, path, convert(c.value))\n })\n commit('updateAdminSettings', { config, modifiedPaths })\n commit('resetAdminDraft')\n },\n setInstanceAdminDescriptions ({ state, commit, dispatch }, { backendDescriptions }) {\n const convert = ({ children, description, label, key = '<ROOT>', group, suggestions }, path, acc) => {\n const newPath = group ? [group, key] : [key]\n const obj = { description, label, suggestions }\n if (Array.isArray(children)) {\n children.forEach(c => {\n convert(c, newPath, obj)\n })\n }\n set(acc, newPath, obj)\n }\n\n const descriptions = {}\n backendDescriptions.forEach(d => convert(d, '', descriptions))\n commit('updateAdminDescriptions', { descriptions })\n },\n\n // This action takes draft state, diffs it with live config state and then pushes\n // only differences between the two. Difference detection only work up to subkey (third) level.\n pushAdminDraft ({ rootState, state, commit, dispatch }) {\n // TODO cleanup paths in modifiedPaths\n const convert = (value) => {\n if (typeof value !== 'object') {\n return value\n } else if (Array.isArray(value)) {\n return value.map(convert)\n } else {\n return Object.entries(value).map(([k, v]) => ({ tuple: [k, v] }))\n }\n }\n\n // Getting all group-keys used in config\n const allGroupKeys = flatten(\n Object\n .entries(state.config)\n .map(\n ([group, lv1data]) => Object\n .keys(lv1data)\n .map((key) => ({ group, key }))\n )\n )\n\n // Only using group-keys where there are changes detected\n const changedGroupKeys = allGroupKeys.filter(({ group, key }) => {\n return !isEqual(state.config[group][key], state.draft[group][key])\n })\n\n // Here we take all changed group-keys and get all changed subkeys\n const changed = changedGroupKeys.map(({ group, key }) => {\n const config = state.config[group][key]\n const draft = state.draft[group][key]\n\n // We convert group-key value into entries arrays\n const eConfig = Object.entries(config)\n const eDraft = Object.entries(draft)\n\n // Then those entries array we diff so only changed subkey entries remain\n // We use the diffed array to reconstruct the object and then shove it into convert()\n return ({ group, key, value: convert(Object.fromEntries(differenceWith(eDraft, eConfig, isEqual))) })\n })\n\n rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: changed\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n },\n pushAdminSetting ({ rootState, state, commit, dispatch }, { path, value }) {\n const [group, key, ...rest] = Array.isArray(path) ? path : path.split(/\\./g)\n const clone = {} // not actually cloning the entire thing to avoid excessive writes\n set(clone, rest, value)\n\n // TODO cleanup paths in modifiedPaths\n const convert = (value) => {\n if (typeof value !== 'object') {\n return value\n } else if (Array.isArray(value)) {\n return value.map(convert)\n } else {\n return Object.entries(value).map(([k, v]) => ({ tuple: [k, v] }))\n }\n }\n\n rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: [{\n group,\n key,\n value: convert(clone)\n }]\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n },\n resetAdminSetting ({ rootState, state, commit, dispatch }, { path }) {\n const [group, key, subkey] = path.split(/\\./g)\n\n state.modifiedPaths.delete(path)\n\n return rootState.api.backendInteractor.pushInstanceDBConfig({\n payload: {\n configs: [{\n group,\n key,\n delete: true,\n subkeys: [subkey]\n }]\n }\n })\n .then(() => rootState.api.backendInteractor.fetchInstanceDBConfig())\n .then(backendDbConfig => dispatch('setInstanceAdminSettings', { backendDbConfig }))\n }\n }\n}\n\nexport default adminSettingsStorage\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 resetPostStatusModal (state) {\n state.params = null\n }\n },\n actions: {\n openPostStatusModal ({ commit }, params) {\n commit('openPostStatusModal', params)\n },\n closePostStatusModal ({ commit }) {\n commit('closePostStatusModal')\n },\n resetPostStatusModal ({ commit }) {\n commit('resetPostStatusModal')\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('addNewUsers', chats.map(k => k.account).filter(k => k))\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.privileges.includes('announcements_manage_announcements')\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.info('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.error(\"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.error(\"Couldn't persist state:\")\n console.error(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 v-show=\"$store.state.interface.themeApplied\"\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 <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 {\n .panel {\n background: var(--background);\n backdrop-filter: var(--backdrop-filter);\n }\n\n .signed-in {\n overflow: visible;\n z-index: 10;\n }\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=\"input 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=\"input 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.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: 1em;\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 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=680d7040\"\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=680d7040&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"input 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=9758273c\"\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 \"/Users/lainsoykaf/repos/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=\"input 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=5be73abd\"\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 \"/Users/lainsoykaf/repos/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=968080b6\"\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=968080b6&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 menu-item-collapsible\"\n :class=\"{ '-expanded': showTimelines }\"\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=\"button-unstyled extra-button\"\n :to=\"{ name: 'lists' }\"\n @click.stop\n >\n <FAIcon\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 menu-item-collapsible\"\n :class=\"{ '-expanded': showLists }\"\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.NavPanel {\n .panel {\n overflow: hidden;\n box-shadow: var(--shadow);\n }\n\n ul {\n list-style: none;\n margin: 0;\n padding: 0;\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 }\n\n .nav-panel-heading {\n // breaks without a unit\n // stylelint-disable-next-line length-zero-no-unit\n --panel-heading-height-padding: 0px;\n }\n}\n</style>\n","<template>\n <OptionalRouterLink\n v-slot=\"{ isActive, href, navigate } = {}\"\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\"\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 -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.NavigationEntry.menu-item {\n --__line-height: 2.5em;\n --__horizontal-gap: 0.5em;\n --__vertical-gap: 0.4em;\n\n padding: 0;\n display: flex;\n align-items: baseline;\n\n &[aria-expanded] {\n padding-right: var(--__horizontal-gap);\n }\n\n .main-link {\n line-height: var(--__line-height);\n box-sizing: border-box;\n flex: 1;\n padding: var(--__vertical-gap) var(--__horizontal-gap);\n }\n\n .menu-icon {\n line-height: var(--__line-height);\n padding: 0;\n width: var(--__line-height);\n margin-right: var(--__horizontal-gap);\n }\n\n .timelines-chevron {\n line-height: var(--__line-height);\n padding: 0;\n width: var(--__line-height);\n margin-right: 0;\n }\n\n .extra-button {\n line-height: var(--__line-height);\n padding: 0;\n width: var(--__line-height);\n text-align: center;\n\n &:last-child {\n margin-right: calc(-1 * var(--__horizontal-gap));\n }\n }\n\n .badge {\n margin: 0 var(--__horizontal-gap);\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\nexport function routeTo (item, currentUser) {\n if (!item.route && !item.routeObject) return null\n\n let route\n\n if (item.routeObject) {\n route = item.routeObject\n } else {\n route = { name: (item.anon || currentUser) ? item.route : item.anonRoute }\n }\n\n if (USERNAME_ROUTES.has(route.name)) {\n route.params = { username: currentUser.screen_name, name: currentUser.screen_name }\n }\n\n return route\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 \"/Users/lainsoykaf/repos/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 { routeTo } 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 return routeTo(this.item, this.currentUser)\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=0fc7e714\"\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=0fc7e714&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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=\"button-unstyled pinned-item\"\n active-class=\"toggled\"\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=\"badge -dot -notification\"\n />\n </router-link>\n </span>\n</template>\n\n<script src=\"./navigation_pins.js\"></script>\n\n<style lang=\"scss\">\n.NavigationPins {\n display: flex;\n flex-wrap: wrap;\n overflow: hidden;\n height: 100%;\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 &.toggled {\n margin-bottom: -4px;\n border-bottom: 4px solid;\n }\n }\n}\n</style>\n","import { mapState } from 'vuex'\nimport { TIMELINES, ROOT_ITEMS, routeTo } 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 return routeTo(item, this.currentUser)\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 supportsAnnouncements: state => state.announcements.supportsAnnouncements,\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 hasAnnouncements: this.supportsAnnouncements,\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 hasAnnouncements: this.supportsAnnouncements,\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=61b7abc2\"\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=61b7abc2&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=87bf5564\"\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=87bf5564&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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\n .who-to-follow img {\n width: 32px;\n height: 32px;\n }\n\n .who-to-follow {\n padding: 0 1em;\n margin: 0;\n }\n\n .who-to-follow-items {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n padding: 0;\n margin: 1em 0;\n }\n\n .who-to-follow-more {\n padding: 0;\n margin: 1em 0;\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=f150b2ba\"\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=f150b2ba&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\"\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=\"panel-body 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=\"panel-body shout-input\">\n <textarea\n v-model=\"currentMessage\"\n class=\"shout-input-textarea input\"\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.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: var(--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: var(--roundness);\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=7897a31a\"\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=7897a31a&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :disable-click-threshold=\"swipeDisableClickThreshold\"\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.media-modal-view {\n @keyframes media-fadein {\n from {\n opacity: 0;\n }\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(0.4, 0, 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: rgb(0 0 0 / 30%);\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: rgb(0 0 0 / 30%);\n }\n\n &--prev {\n left: 0;\n\n .arrow-icon {\n left: $modal-view-button-icon-margin;\n }\n }\n\n &--next {\n right: 0;\n\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\n .button-icon {\n top: $modal-view-button-icon-margin;\n right: $modal-view-button-icon-margin;\n }\n }\n}\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\n overflow: hidden;\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 \"/Users/lainsoykaf/repos/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 * disableClickThreshold: the minimum distance in pixels for the swipe to\n * not trigger a click\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 disableClickThreshold: {\n type: Function,\n default: () => 1\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 disableClickThreshold: this.disableClickThreshold,\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 \"/Users/lainsoykaf/repos/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 swipeDisableClickThreshold () {\n // If there is only one media, allow more mouse movements to close the modal\n // because there is less chance that the user wants to switch to another image\n return () => this.canNavigate ? 1 : 30\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=a080a8e6\"\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=a080a8e6&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 mobile-drawer\"\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\n :to=\"{ name: 'login' }\"\n class=\"menu-item\"\n >\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\n :to=\"timelinesRoute\"\n class=\"menu-item\"\n >\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\n :to=\"{ name: 'lists' }\"\n class=\"menu-item\"\n >\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 class=\"menu-item\"\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 -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\n :to=\"{ name: 'interactions', params: { username: currentUser.screen_name } }\"\n class=\"menu-item\"\n >\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\n to=\"/friend-requests\"\n class=\"menu-item\"\n >\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 -notification\"\n >\n {{ followRequestCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"shout\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'shout-panel' }\"\n class=\"menu-item\"\n >\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\n :to=\"{ name: 'search' }\"\n class=\"menu-item\"\n >\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\n :to=\"{ name: 'who-to-follow' }\"\n class=\"menu-item\"\n >\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=\"menu-item\"\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\n :to=\"{ name: 'about'}\"\n class=\"menu-item\"\n >\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 <button\n class=\"menu-item\"\n @click.stop=\"openAdminModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n /> {{ $t(\"nav.administration\") }}\n </button>\n </li>\n <li\n v-if=\"currentUser && supportsAnnouncements\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'announcements' }\"\n class=\"menu-item\"\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 -notification\"\n >\n {{ unreadAnnouncementCount }}\n </span>\n </router-link>\n </li>\n <li\n v-if=\"currentUser\"\n @click=\"toggleDrawer\"\n >\n <router-link\n :to=\"{ name: 'edit-navigation' }\"\n class=\"menu-item\"\n >\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=\"menu-item\"\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.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: rgb(0 0 0 / 50%);\n}\n\n.side-drawer-darken-closed {\n background-color: rgb(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: 0.35s;\n transition-timing-function: cubic-bezier(0, 1, 0.5, 1);\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: var(--shadow);\n background-color: var(--background);\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 border-bottom: 1px solid;\n border-color: var(--border);\n}\n\n.side-drawer ul:last-child {\n border: 0;\n}\n\n.side-drawer li {\n padding: 0;\n\n a,\n button {\n box-sizing: border-box;\n display: block;\n height: 3em;\n line-height: 3em;\n padding: 0 0.7em;\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', 'user')\n },\n openAdminModal () {\n this.$store.dispatch('openSettingsModal', 'admin')\n }\n }\n}\n\nexport default SideDrawer\n","import { render } from \"./side_drawer.vue?vue&type=template&id=ebcba672\"\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=ebcba672&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=6550f2dc\"\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=6550f2dc&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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 display: flex;\n justify-content: center;\n align-items: center;\n box-shadow: 0 2px 2px rgb(0 0 0 / 30%), 0 4px 6px rgb(0 0 0 / 30%);\n z-index: 10;\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: var(--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=\"badge -dot -notification\"\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=\"badge -dot -notification\"\n />\n </button>\n </div>\n </nav>\n <aside\n v-if=\"currentUser\"\n class=\"mobile-notifications-drawer mobile-drawer\"\n :class=\"{ '-closed': !notificationsOpen }\"\n @touchstart.stop=\"notificationsTouchStart\"\n @touchmove.stop=\"notificationsTouchMove\"\n >\n <div class=\"panel-heading mobile-notifications-header\">\n <span class=\"title\">\n {{ $t('notifications.notifications') }}\n <span\n v-if=\"unseenCountBadgeText\"\n class=\"badge -notification unseen-count\"\n >{{ unseenCountBadgeText }}</span>\n </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 v-if=\"!closingDrawerMarksAsSeen\"\n class=\"button-unstyled mobile-nav-button\"\n :title=\"$t('nav.mobile_notifications_mark_as_seen')\"\n @click.stop.prevent=\"markNotificationsAsSeen()\"\n >\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"check-double\"\n />\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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./mobile_nav.js\"></script>\n\n<style lang=\"scss\">\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: var(--navbar-height);\n grid-template-columns: 2fr auto;\n width: 100%;\n box-sizing: border-box;\n\n a {\n color: var(--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 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 .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: var(--shadow);\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 background: var(--background);\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: 3.5em;\n line-height: 3.5em;\n position: absolute;\n box-shadow: var(--shadow);\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: 3.5em;\n width: 100vw;\n height: calc(100vh - var(--navbar-height));\n overflow-x: hidden;\n overflow-y: scroll;\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 .confirm-modal.dark-overlay {\n &::before {\n z-index: 3000;\n }\n\n .dialog-modal.panel {\n z-index: 3001;\n }\n }\n}\n\n</style>\n","import SideDrawer from '../side_drawer/side_drawer.vue'\nimport Notifications from '../notifications/notifications.vue'\nimport ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport {\n unseenNotificationsFromStore,\n countExtraNotifications\n} 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 faCheckDouble\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faTimes,\n faBell,\n faBars,\n faArrowUp,\n faMinus,\n faCheckDouble\n)\n\nconst MobileNav = {\n components: {\n SideDrawer,\n Notifications,\n NavigationPins,\n ConfirmModal\n },\n data: () => ({\n notificationsCloseGesture: undefined,\n notificationsOpen: false,\n notificationsAtTop: true,\n showingConfirmLogout: false\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 + countExtraNotifications(this.$store)\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n unseenCountBadgeText () {\n return `${this.unseenCount ? this.unseenCount : ''}`\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 shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n },\n closingDrawerMarksAsSeen () {\n return this.$store.getters.mergedConfig.closingDrawerMarksAsSeen\n },\n ...mapGetters(['unreadChatCount'])\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 && this.closingDrawerMarksAsSeen) {\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 showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n markNotificationsAsSeen () {\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=799239cc\"\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=799239cc&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :title=\"sitename\"\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 :title=\"$t('nav.preferences')\"\n @click.stop=\"openSettingsModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"cog\"\n />\n </button>\n <button\n v-if=\"currentUser && currentUser.role === 'admin'\"\n class=\"button-unstyled nav-icon\"\n target=\"_blank\"\n :title=\"$t('nav.administration')\"\n @click.stop=\"openAdminModal\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"tachometer-alt\"\n />\n </button>\n <span class=\"spacer\" />\n <button\n v-if=\"currentUser\"\n class=\"button-unstyled nav-icon\"\n :title=\"$t('login.logout')\"\n @click.stop.prevent=\"logout\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"sign-out-alt\"\n />\n </button>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmLogout\"\n :title=\"$t('login.logout_confirm_title')\"\n :confirm-text=\"$t('login.logout_confirm_accept_button')\"\n :cancel-text=\"$t('login.logout_confirm_cancel_button')\"\n @accepted=\"doLogout\"\n @cancelled=\"hideConfirmLogout\"\n >\n {{ $t('login.logout_confirm') }}\n </confirm-modal>\n </teleport>\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 :aria-expanded=\"!hidden\"\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=\"input 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 :title=\"$t('nav.search')\"\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 :title=\"$t('nav.search_close')\"\n :aria-expanded=\"!hidden\"\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.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: var(--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=2eae7674\"\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=2eae7674&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 ConfirmModal from '../confirm_modal/confirm_modal.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 ConfirmModal\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 showingConfirmLogout: false\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 shouldConfirmLogout () {\n return this.$store.getters.mergedConfig.modalOnLogout\n }\n },\n methods: {\n scrollToTop () {\n window.scrollTo(0, 0)\n },\n showConfirmLogout () {\n this.showingConfirmLogout = true\n },\n hideConfirmLogout () {\n this.showingConfirmLogout = false\n },\n logout () {\n if (!this.shouldConfirmLogout) {\n this.doLogout()\n } else {\n this.showConfirmLogout()\n }\n },\n doLogout () {\n this.$router.replace('/main/public')\n this.$store.dispatch('logout')\n this.hideConfirmLogout()\n },\n onSearchBarToggled (hidden) {\n this.searchBarHidden = hidden\n },\n openSettingsModal () {\n this.$store.dispatch('openSettingsModal', 'user')\n },\n openAdminModal () {\n this.$store.dispatch('openSettingsModal', 'admin')\n }\n }\n}\n","import { render } from \"./desktop_nav.vue?vue&type=template&id=5dbfe449\"\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 \"/Users/lainsoykaf/repos/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=\"input 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.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: var(--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;\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: var(--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=455ebd9f\"\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=455ebd9f&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\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=7e74cdc2\"\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=7e74cdc2&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"resetAndClose\"\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 resetAndClose () {\n this.$store.dispatch('resetPostStatusModal')\n this.$store.dispatch('closePostStatusModal')\n }\n }\n}\n\nexport default PostStatusModal\n","import { render } from \"./post_status_modal.vue?vue&type=template&id=365216ee\"\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=365216ee&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\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=16d58712\"\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=16d58712&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"{ [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.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_modals_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 .close-notice {\n padding-right: 0.2em;\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=44c1c9e9\"\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=44c1c9e9&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=b6a1e204\"\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 \"/Users/lainsoykaf/repos/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=\"badge -counter\">\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\n v-if=\"isPage && !status\"\n class=\"conversation-body\"\n :class=\"{ 'panel-body': isExpanded }\"\n >\n <p v-if=\"!loadStatusError\">\n <FAIcon\n spin\n icon=\"circle-notch\"\n />\n {{ $t('status.loading') }}\n </p>\n <p v-else>\n {{ $t('status.load_error', { error: loadStatusError }) }}\n </p>\n </div>\n <div\n v-else\n class=\"conversation-body\"\n :class=\"{ 'panel-body': isExpanded }\"\n >\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 class=\"Conversation -hidden\"\n :style=\"hiddenStyle\"\n />\n</template>\n\n<script src=\"./conversation.js\"></script>\n\n<style lang=\"scss\">\n.Conversation {\n z-index: 1;\n\n &.-hidden {\n background: var(--__panel-background);\n backdrop-filter: var(--__panel-backdrop-filter);\n }\n\n .conversation-dive-to-top-level-box {\n padding: var(--status-margin);\n border-bottom: 1px solid var(--border);\n border-radius: 0;\n\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);\n border-left: 2px solid var(--border);\n }\n\n .thread-ancestor.-faded .RichContent {\n /* stylelint-disable declaration-no-important */\n --text: var(--textFaint) !important;\n --link: var(--linkFaint) !important;\n --funtextGreentext: var(--funtextGreentextFaint) !important;\n --funtextCyantext: var(--funtextCyantextFaint) !important;\n /* stylelint-enable declaration-no-important */\n }\n\n .thread-ancestor-dive-box {\n padding-left: var(--status-margin);\n border-bottom: 1px solid var(--border);\n border-radius: 0;\n\n /* Make the button stretch along the whole row */\n &,\n &-inner {\n display: flex;\n align-items: stretch;\n flex-direction: column;\n }\n }\n\n .thread-ancestor-dive-box-inner {\n padding: var(--status-margin);\n }\n\n .conversation-status {\n border-bottom: 1px solid var(--border);\n border-radius: 0;\n }\n\n .thread-ancestor-has-other-replies .conversation-status,\n &:last-child:not(.-expanded) .conversation-status,\n &.-expanded .conversation-status:last-child,\n .thread-ancestor:last-child .conversation-status,\n .thread-ancestor:last-child .thread-ancestor-dive-box,\n &.-expanded .thread-tree .conversation-status {\n border-bottom: none;\n }\n\n .thread-ancestors + .thread-tree > .conversation-status {\n border-top: 1px solid var(--border);\n }\n\n /* expanded conversation in timeline */\n &.status-fadein.-expanded .thread-body {\n border-left: 4px solid var(--cRed);\n border-radius: var(--roundness);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom: 1px solid var(--border);\n }\n\n &.-expanded.status-fadein {\n --___margin: calc(var(--status-margin) / 2);\n\n background: var(--background);\n margin: var(--___margin);\n\n &::before {\n z-index: -1;\n content: \"\";\n display: block;\n position: absolute;\n top: calc(var(--___margin) * -1);\n bottom: calc(var(--___margin) * -1);\n left: calc(var(--___margin) * -1);\n right: calc(var(--___margin) * -1);\n background: var(--background);\n backdrop-filter: var(--__panel-backdrop-filter);\n }\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.thread-tree-replies {\n margin-left: var(--status-margin);\n border-left: 2px solid var(--border);\n}\n\n.thread-tree-replies-hidden {\n padding: var(--status-margin);\n\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=7a8dab9a\"\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=7a8dab9a&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div\n v-if=\"loggedIn\"\n role=\"group\"\n >\n <button\n v-if=\"!conversation\"\n class=\"menu-item dropdown-item\"\n :aria-checked=\"replyVisibilityAll\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityAll = true\"\n >\n <span\n class=\"input menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityAll }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_all') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"menu-item dropdown-item\"\n :aria-checked=\"replyVisibilityFollowing\"\n role=\"menuitemradio\"\n @click=\"replyVisibilityFollowing = true\"\n >\n <span\n class=\"input menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilityFollowing }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.reply_visibility_following_short') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"menu-item dropdown-item\"\n :aria-checked=\"replyVisibilitySelf\"\n role=\"menuitemradio\"\n @click=\"replyVisibilitySelf = true\"\n >\n <span\n class=\"input menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': replyVisibilitySelf }\"\n :aria-hidden=\"true\"\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=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"muteBotStatuses\"\n @click=\"muteBotStatuses = !muteBotStatuses\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteBotStatuses }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mute_bot_posts') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"muteSensitiveStatuses\"\n @click=\"muteSensitiveStatuses = !muteSensitiveStatuses\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': muteSensitiveStatuses }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mute_sensitive_posts') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMedia\"\n @click=\"hideMedia = !hideMedia\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMedia }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_media_previews') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"hideMutedPosts\"\n @click=\"hideMutedPosts = !hideMutedPosts\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': hideMutedPosts }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.hide_all_muted_posts') }}\n </button>\n <button\n class=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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 muteSensitiveStatuses: {\n get () { return this.mergedConfig.muteSensitiveStatuses },\n set () {\n const value = !this.muteSensitiveStatuses\n this.$store.dispatch('setOption', { name: 'muteSensitiveStatuses', value })\n }\n }\n }\n}\n\nexport default QuickFilterSettings\n","import { render } from \"./quick_filter_settings.vue?vue&type=template&id=80caf036\"\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 \"/Users/lainsoykaf/repos/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\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <div role=\"group\">\n <button\n class=\"menu-item dropdown-item\"\n :aria-checked=\"conversationDisplay === 'tree'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'tree'\"\n >\n <span\n class=\"input menu-checkbox -radio\"\n :aria-hidden=\"true\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'tree' }\"\n /><FAIcon\n icon=\"folder-tree\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_tree_quick') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n :aria-checked=\"conversationDisplay === 'linear'\"\n role=\"menuitemradio\"\n @click=\"conversationDisplay = 'linear'\"\n >\n <span\n class=\"input menu-checkbox -radio\"\n :class=\"{ 'menu-checkbox-checked': conversationDisplay === 'linear' }\"\n :aria-hidden=\"true\"\n /><FAIcon\n icon=\"list\"\n :aria-hidden=\"true\"\n /> {{ $t('settings.conversation_display_linear_quick') }}\n </button>\n </div>\n <div\n role=\"separator\"\n class=\"dropdown-divider\"\n />\n <button\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"showUserAvatars\"\n @click=\"showUserAvatars = !showUserAvatars\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': showUserAvatars }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.mention_link_show_avatar_quick') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"autoUpdate\"\n @click=\"autoUpdate = !autoUpdate\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': autoUpdate }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.auto_update') }}\n </button>\n <button\n v-if=\"!conversation\"\n class=\"menu-item dropdown-item\"\n role=\"menuitemcheckbox\"\n :aria-checked=\"collapseWithSubjects\"\n @click=\"collapseWithSubjects = !collapseWithSubjects\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': collapseWithSubjects }\"\n :aria-hidden=\"true\"\n />{{ $t('settings.collapse_subject') }}\n </button>\n <button\n class=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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 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 muteSensitiveStatuses: {\n get () { return this.mergedConfig.muteSensitiveStatuses },\n set () {\n const value = !this.muteSensitiveStatuses\n this.$store.dispatch('setOption', { name: 'muteSensitiveStatuses', value })\n }\n }\n }\n}\n\nexport default QuickViewSettings\n","import { render } from \"./quick_view_settings.vue?vue&type=template&id=0a19a45c\"\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 \"/Users/lainsoykaf/repos/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 loadStatusError: 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.loadStatusError = null\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 .catch((error) => {\n this.loadStatusError = error\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=0e81f861\"\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=0e81f861&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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\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 transform: rotate(180deg);\n }\n\n .panel {\n box-shadow: var(--popoverShadow);\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 quotes: 'nav.quotes'\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=226ecece\"\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=226ecece&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 'statusId',\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'] : ['-embedded']\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'] : ['panel-body']),\n body: ['timeline-body'].concat(!this.embedded ? ['panel-body'] : ['panel-body']),\n footer: ['timeline-footer'].concat(!this.embedded ? ['panel-footer'] : ['panel-body'])\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 statusId: this.statusId,\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 if (this.timelineName === 'user') {\n this.$store.dispatch('fetchPinnedStatuses', this.userId)\n }\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 statusId: this.statusId,\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=d2379e52\"\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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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=\"statuses\"\n :label=\"$t('nav.mentions')\"\n />\n <span\n key=\"statuses\"\n :label=\"$t('interactions.statuses')\"\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 :no-extra=\"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 statuses: ['status'],\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=c055f9d4\"\nimport script from \"./interactions.js?vue&type=script&lang=js\"\nexport * from \"./interactions.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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.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: var(--textFaint);\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 -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 \"./chat_list_item\";\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=5502aba6\"\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=5502aba6&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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: var(--roundness);\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=480904b4\"\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=480904b4&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"panel-body\">\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 class=\"input\"\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=\"list-item\"\n @click.capture.prevent=\"goToChat(user)\"\n >\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 \"./chat_new\";\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=3553d6fa\"\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=3553d6fa&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=78089bff\"\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=78089bff&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"chat-message-list 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 -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 \"./chat\";\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=\"menu-item 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\";\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 \"/Users/lainsoykaf/repos/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=e0acb478\"\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=e0acb478&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=2ecf3492\"\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=2ecf3492&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 <div class=\"panel-body\">\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 <span\n v-if=\"!!user.birthday\"\n class=\"user-birthday\"\n >\n <FAIcon\n class=\"fa-old-padding\"\n icon=\"birthday-cake\"\n />\n {{ $t('user_card.birthday', { birthday: formattedBirthday }) }}\n </span>\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 </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 class=\"panel-body\"\n :label=\"$t('user_card.followees')\"\n :disabled=\"!user.friends_count\"\n >\n <FriendList\n :user-id=\"userId\"\n :non-interactive=\"true\"\n >\n <template #item=\"{item}\">\n <FollowCard :user=\"item\" />\n </template>\n </FriendList>\n </div>\n <div\n v-if=\"followersTabVisible\"\n key=\"followers\"\n class=\"panel-body\"\n :label=\"$t('user_card.followers')\"\n :disabled=\"!user.followers_count\"\n >\n <FollowerList\n :user-id=\"userId\"\n :non-interactive=\"true\"\n >\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=\"favoritesTabVisible\"\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 :user-id=\"isUs ? undefined : userId\"\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>\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.user-profile {\n flex: 2;\n flex-basis: 500px;\n\n // No sticky header on user profile\n --currentPanelStack: 1;\n\n .user-birthday {\n margin: 0 0.75em 0.5em;\n }\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);\n border-radius: var(--roundness);\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);\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,\n .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\n.user-profile-placeholder {\n .panel-body {\n display: flex;\n justify-content: center;\n align-items: middle;\n padding: 7em;\n }\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 :user=\"user\"\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-flow: row wrap;\n justify-content: space-between;\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","import ConfirmModal from '../confirm_modal/confirm_modal.vue'\n\nexport default {\n props: ['user', 'relationship'],\n data () {\n return {\n inProgress: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ConfirmModal\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 shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n }\n },\n methods: {\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\n onClick () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.inProgress = true\n this.$store.dispatch('removeUserFromFollowers', this.relationship.id).then(() => {\n this.inProgress = false\n })\n this.hideConfirmRemoveUserFromFollowers()\n }\n }\n}\n","import { render } from \"./remove_follower_button.vue?vue&type=template&id=bc80064a\"\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 \"/Users/lainsoykaf/repos/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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\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=e6b6839c\"\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=e6b6839c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","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 localeService from 'src/services/locale/locale.service.js'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faCircleNotch,\n faBirthdayCake\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faCircleNotch,\n faBirthdayCake\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 favoritesTabVisible () {\n return this.isUs || !this.user.hide_favorites\n },\n formattedBirthday () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.user.birthday)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\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')\n } else if (!this.user.hide_favorites) {\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=5a656232\"\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=5a656232&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"Search panel panel-default\">\n <div class=\"panel-heading\">\n <div class=\"title\">\n {{ $t('nav.search') }}\n </div>\n </div>\n <div class=\"panel-body search-input-container\">\n <input\n ref=\"searchInput\"\n v-model=\"searchTerm\"\n class=\"input 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=\"panel-body 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\"\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.search-result-heading {\n color: var(--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: var(--border);\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: var(--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: var(--text);\n }\n}\n\n.more-statuses-button {\n height: 3.5em;\n line-height: 3.5em;\n width: 100%;\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=21a1c16e\"\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=21a1c16e&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\n v-if=\"!hasSignUpNotice\"\n class=\"panel-body\"\n >\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=\"input 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=\"input 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=\"input 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=\"input 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=\"input 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=\"input 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.birthday.$error }\"\n >\n <label\n class=\"form--label\"\n for=\"sign-up-birthday\"\n >\n {{ birthdayRequired ? $t('registration.birthday') : $t('registration.birthday_optional') }}\n </label>\n <input\n id=\"sign-up-birthday\"\n v-model=\"user.birthday\"\n :disabled=\"isPending\"\n class=\"input form-control\"\n type=\"date\"\n :max=\"birthdayRequired ? birthdayMinAttr : undefined\"\n :aria-required=\"birthdayRequired\"\n >\n </div>\n <div\n v-if=\"v$.user.birthday.$dirty\"\n class=\"form-error\"\n >\n <ul>\n <li v-if=\"v$.user.birthday.required.$invalid\">\n <span>{{ $t('registration.validations.birthday_required') }}</span>\n </li>\n <li v-if=\"v$.user.birthday.maxValue.$invalid\">\n <span>{{ $tc('registration.validations.birthday_min_age', { date: birthdayMinFormatted }) }}</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 @click.stop.prevent\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=\"input 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=\"input 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=\"input 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 v-else>\n <p class=\"registration-notice\">\n {{ signUpNotice.message }}\n </p>\n </div>\n </div>\n</template>\n\n<script src=\"./registration.js\"></script>\n<style lang=\"scss\">\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: 0.6s;\n animation-timing-function: ease-in-out;\n }\n\n .form-group--error .form--label {\n color: var(--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.registration-notice {\n margin: 0.6em;\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'\nimport { DAY } from 'src/services/date_utils/date_utils.js'\n\nconst registration = {\n setup () { return { v$: useVuelidate() } },\n data: () => ({\n user: {\n email: '',\n fullname: '',\n username: '',\n password: '',\n confirm: '',\n birthday: '',\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 birthday: {\n required: requiredIf(() => this.birthdayRequired),\n maxValue: value => {\n return !this.birthdayRequired || new Date(value).getTime() <= this.birthdayMin.getTime()\n }\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 birthdayMin () {\n const minAge = this.birthdayMinAge\n const today = new Date()\n today.setUTCMilliseconds(0)\n today.setUTCSeconds(0)\n today.setUTCMinutes(0)\n today.setUTCHours(0)\n const minDate = new Date()\n minDate.setTime(today.getTime() - minAge * DAY)\n return minDate\n },\n birthdayMinAttr () {\n return this.birthdayMin.toJSON().replace(/T.+$/, '')\n },\n birthdayMinFormatted () {\n const browserLocale = localeService.internalToBrowserLocale(this.$i18n.locale)\n return this.user.birthday && new Date(Date.parse(this.birthdayMin)).toLocaleDateString(browserLocale, { timeZone: 'UTC', day: 'numeric', month: 'long', year: 'numeric' })\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 signUpNotice: (state) => state.users.signUpNotice,\n hasSignUpNotice: (state) => !!state.users.signUpNotice.message,\n termsOfService: (state) => state.instance.tos,\n accountActivationRequired: (state) => state.instance.accountActivationRequired,\n accountApprovalRequired: (state) => state.instance.accountApprovalRequired,\n birthdayRequired: (state) => state.instance.birthdayRequired,\n birthdayMinAge: (state) => state.instance.birthdayMinAge\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.internalToBackendLocaleMulti(this.user.language.filter(k => k))\n }\n\n this.v$.$touch()\n\n if (!this.v$.$invalid) {\n try {\n const status = await this.signUp(this.user)\n if (status === 'ok') {\n this.$router.push({ name: 'friends' })\n }\n // If status is not 'ok' (i.e. it needs further actions to be done\n // before you can login), display sign up notice, do not switch anywhere\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=7ea81881\"\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=7ea81881&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"alert 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=\"input 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.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 .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=0f7f4f90\"\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=0f7f4f90&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\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-flow: row wrap;\n\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 ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { notificationsFromStore } from '../../services/notification_utils/notification_utils.js'\n\nconst FollowRequestCard = {\n props: ['user'],\n components: {\n BasicUserCard,\n ConfirmModal\n },\n data () {\n return {\n showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\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 showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\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 this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\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 this.hideDenyConfirmDialog()\n }\n },\n computed: {\n mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\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=3bb26ea8\"\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=3bb26ea8&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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","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=1d38a2c8\"\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 \"/Users/lainsoykaf/repos/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","<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=22763f84\"\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=22763f84&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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=56c37220\"\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=56c37220&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"./mrf_transparency_panel\";\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=51a39ce5\"\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=51a39ce5&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=4d996902\"\nimport script from \"./about.js?vue&type=script&lang=js\"\nexport * from \"./about.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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","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=147deeb8\"\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 \"/Users/lainsoykaf/repos/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.list-card {\n display: flex;\n}\n\n.list-name {\n flex-grow: 1;\n}\n\n.list-name,\n.button-list-edit {\n margin: 0;\n padding: 1em;\n color: var(--link);\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=50e00ac0\"\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=50e00ac0&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 class=\"input\"\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.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 class=\"input\"\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.ListsUserSearch {\n .input-wrap {\n display: flex;\n margin: 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=a34c6b8c\"\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=a34c6b8c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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: user.id, listId: this.id })\n },\n removeUser (userId) {\n this.$store.dispatch('removeListAccount', { accountId: userId, 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=b36e4970\"\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=b36e4970&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"canPostAnnouncement\"\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.announcements-page {\n .post-form {\n padding: var(--status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--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=\"canEditAnnouncement\"\n class=\"btn button-default\"\n @click=\"enterEditMode\"\n >\n {{ $t('announcements.edit_action') }}\n </button>\n <button\n v-if=\"canEditAnnouncement\"\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.announcement {\n border-bottom: 1px solid var(--border);\n border-radius: 0;\n padding: var(--status-margin);\n\n .heading,\n .body {\n margin-bottom: var(--status-margin);\n }\n\n .footer {\n display: flex;\n flex-direction: column;\n\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=\"input 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 class=\"input\"\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 class=\"input\"\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=643e229c\"\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=643e229c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 canEditAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_announcements')\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 canPostAnnouncement () {\n return this.currentUser && this.currentUser.privileges.includes('announcements_manage_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=823f5d9e\"\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=823f5d9e&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=761df8ea\"\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=761df8ea&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 QuotesTimeline = {\n created () {\n this.$store.commit('clearTimeline', { timeline: 'quotes' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'quotes', statusId: this.statusId })\n },\n components: {\n Timeline\n },\n computed: {\n statusId () { return this.$route.params.id },\n timeline () { return this.$store.state.statuses.timelines.quotes }\n },\n watch: {\n statusId () {\n this.$store.commit('clearTimeline', { timeline: 'quotes' })\n this.$store.dispatch('startFetchingTimeline', { timeline: 'quotes', statusId: this.statusId })\n }\n },\n unmounted () {\n this.$store.dispatch('stopFetchingTimeline', 'quotes')\n }\n}\n\nexport default QuotesTimeline\n","import { render } from \"./quotes_timeline.vue?vue&type=template&id=ea719eba\"\nimport script from \"./quotes_timeline.js?vue&type=script&lang=js\"\nexport * from \"./quotes_timeline.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.quotes')\"\n :timeline=\"timeline\"\n :timeline-name=\"'quotes'\"\n :status-id=\"statusId\"\n />\n</template>\n\n<script src='./quotes_timeline.js'></script>\n","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'\nimport QuotesTimeline from '../components/quotes_timeline/quotes_timeline.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 { name: 'quotes', path: '/notice/:id/quotes', component: QuotesTimeline },\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'\nimport VueVirtualScroller from 'vue-virtual-scroller'\nimport 'vue-virtual-scroller/dist/vue-virtual-scroller.css'\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 { applyConfig } from '../services/style_setter/style_setter.js'\nimport FaviconService from '../services/favicon_service/favicon_service.js'\nimport { initServiceWorker, updateFocus } from '../services/sw/sw.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 store.dispatch('setInstanceOption', { name: 'birthdayRequired', value: !!data.pleroma.metadata.birthday_required })\n store.dispatch('setInstanceOption', { name: 'birthdayMinAge', value: data.pleroma.metadata.birthday_min_age || 0 })\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\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: 'pleromaCustomEmojiReactionsAvailable', value: features.includes('pleroma_custom_emoji_reactions') })\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 store.dispatch('setInstanceOption', { name: 'quotingAvailable', value: features.includes('quote_posting') })\n store.dispatch('setInstanceOption', { name: 'groupActorAvailable', value: features.includes('pleroma:group_actors') })\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 if (store.getters.getUserToken()) {\n try {\n await store.dispatch('loginUser', store.getters.getUserToken())\n } catch (e) {\n console.error(e)\n }\n }\n return Promise.resolve()\n}\n\nconst afterStoreSetup = async ({ store, i18n }) => {\n store.dispatch('setLayoutWidth', windowWidth())\n store.dispatch('setLayoutHeight', windowHeight())\n\n FaviconService.initFaviconService()\n initServiceWorker(store)\n\n window.addEventListener('focus', () => updateFocus())\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 await store.dispatch('setTheme')\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 app.use(VueVirtualScroller)\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 notificationsModule from './modules/notifications.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 profileConfigModule from './modules/profileConfig.js'\nimport serverSideStorageModule from './modules/serverSideStorage.js'\nimport adminSettingsModule from './modules/adminSettings.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.global, 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 notifications: notificationsModule,\n lists: listsModule,\n api: apiModule,\n config: configModule,\n profileConfig: profileConfigModule,\n serverSideStorage: serverSideStorageModule,\n adminSettings: adminSettingsModule,\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 { applyConfig } from '../services/style_setter/style_setter.js'\nimport messages from '../i18n/messages'\nimport { set } from 'lodash'\nimport localeService from '../services/locale/locale.service.js'\n\nconst BACKEND_LANGUAGE_COOKIE_NAME = 'userLanguage'\nconst APPEARANCE_SETTINGS_KEYS = new Set([\n 'sidebarColumnWidth',\n 'contentColumnWidth',\n 'notifsColumnWidth',\n 'textSize',\n 'navbarSize',\n 'panelHeaderSize',\n 'forcedRoundness',\n 'emojiSize',\n 'emojiReactionsScale'\n])\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\n // Theme stuff\n theme: undefined, // Very old theme store, stores preset name, still in use\n\n // V1\n colors: {}, // VERY old theme store, just colors of V1, probably not even used anymore\n\n // V2\n customTheme: undefined, // \"snapshot\", previously was used as actual theme store for V2 so it's still used in case of PleromaFE downgrade event.\n customThemeSource: undefined, // \"source\", stores original theme data\n\n // V3\n themeDebug: false, // debug mode that uses computed backgrounds instead of real ones to debug contrast functions\n forceThemeRecompilation: false, // flag that forces recompilation on boot even if cache exists\n theme3hacks: { // Hacks, user overrides that are independent of theme used\n underlay: 'none',\n fonts: {\n interface: undefined,\n input: undefined,\n post: undefined,\n monospace: undefined\n }\n },\n\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 muteSensitiveStatuses: undefined, // instance default\n collapseMessageWithSubject: undefined, // instance default\n padEmoji: true,\n hideAttachments: false,\n hideAttachmentsInConv: false,\n hideScrobbles: false,\n hideScrobblesAfter: '2d',\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 statuses: 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 notificationNative: {\n follows: true,\n mentions: true,\n statuses: true,\n likes: false,\n repeats: false,\n moves: false,\n emojiReactions: false,\n followRequest: true,\n reports: true,\n chatMention: true,\n polls: true\n },\n webPushNotifications: false,\n webPushAlwaysShowNotifications: 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 modalOnRepeat: undefined, // instance default\n modalOnUnfollow: undefined, // instance default\n modalOnBlock: undefined, // instance default\n modalOnMute: undefined, // instance default\n modalOnDelete: undefined, // instance default\n modalOnLogout: undefined, // instance default\n modalOnApproveFollow: undefined, // instance default\n modalOnDenyFollow: undefined, // instance default\n modalOnRemoveUserFromFollowers: 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 emojiReactionsScale: undefined,\n textSize: undefined, // instance default\n emojiSize: undefined, // instance default\n navbarSize: undefined, // instance default\n panelHeaderSize: undefined, // instance default\n forcedRoundness: undefined, // instance default\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 showExtraNotifications: undefined, // instance default\n showExtraNotificationsTip: undefined, // instance default\n showChatsInExtraNotifications: undefined, // instance default\n showAnnouncementsInExtraNotifications: undefined, // instance default\n showFollowRequestsInExtraNotifications: undefined, // instance default\n maxDepthInThread: undefined, // instance default\n autocompleteSelect: undefined, // instance default\n closingDrawerMarksAsSeen: undefined, // instance default\n unseenAtTop: undefined, // instance default\n ignoreInactionableSeen: 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 setOptionTemporarily (state, { name, value }) {\n set(state, name, value)\n applyConfig(state)\n },\n setOption (state, { name, value }) {\n set(state, name, value)\n },\n setHighlight (state, { user, color, type }) {\n const data = this.state.config.highlight[user]\n if (color || type) {\n 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 setOptionTemporarily ({ commit, dispatch, state, rootState }, { name, value }) {\n if (rootState.interface.temporaryChangesTimeoutId !== null) {\n console.warn('Can\\'t track more than one temporary change')\n return\n }\n const oldValue = state[name]\n\n commit('setOptionTemporarily', { name, value })\n\n const confirm = () => {\n dispatch('setOption', { name, value })\n commit('clearTemporaryChanges')\n }\n\n const revert = () => {\n commit('setOptionTemporarily', { name, value: oldValue })\n commit('clearTemporaryChanges')\n }\n\n commit('setTemporaryChanges', {\n timeoutId: setTimeout(revert, 10000),\n confirm,\n revert\n })\n },\n setThemeV2 ({ commit, dispatch }, { customTheme, customThemeSource }) {\n commit('setOption', { name: 'theme', value: 'custom' })\n commit('setOption', { name: 'customTheme', value: customTheme })\n commit('setOption', { name: 'customThemeSource', value: customThemeSource })\n dispatch('setTheme', { themeData: customThemeSource, recompile: true })\n },\n setOption ({ commit, dispatch, state }, { name, value }) {\n const exceptions = new Set([\n 'useStreamingApi'\n ])\n\n if (exceptions.has(name)) {\n switch (name) {\n case 'useStreamingApi': {\n const action = value ? 'enableMastoSockets' : 'disableMastoSockets'\n\n dispatch(action).then(() => {\n commit('setOption', { name: 'useStreamingApi', value })\n }).catch((e) => {\n console.error('Failed starting MastoAPI Streaming socket', e)\n dispatch('disableMastoSockets')\n dispatch('setOption', { name: 'useStreamingApi', value: false })\n })\n break\n }\n }\n } else {\n commit('setOption', { name, value })\n if (APPEARANCE_SETTINGS_KEYS.has(name)) {\n applyConfig(state)\n }\n if (name.startsWith('theme3hacks')) {\n dispatch('setTheme', { recompile: true })\n }\n switch (name) {\n case 'theme':\n if (value === 'custom') break\n dispatch('setTheme', { themeName: value, recompile: true, saveData: true })\n break\n case 'themeDebug': {\n dispatch('setTheme', { recompile: true })\n break\n }\n case 'interfaceLanguage':\n messages.setLanguage(this.getters.i18n, value)\n dispatch('loadUnicodeEmojiData', value)\n Cookies.set(\n BACKEND_LANGUAGE_COOKIE_NAME,\n localeService.internalToBackendLocaleMulti(value)\n )\n break\n case 'thirdColumnMode':\n dispatch('setLayoutWidth', undefined)\n break\n }\n }\n }\n }\n}\n\nexport default config\n","import { getPreset, applyTheme, tryLoadCache } from '../services/style_setter/style_setter.js'\nimport { CURRENT_VERSION, generatePreset } from 'src/services/theme_data/theme_data.service.js'\nimport { convertTheme2To3 } from 'src/services/theme_data/theme2_to_theme3.js'\n\nconst defaultState = {\n localFonts: null,\n themeApplied: false,\n temporaryChangesTimeoutId: null, // used for temporary options that revert after a timeout\n temporaryChangesConfirm: () => {}, // used for applying temporary options\n temporaryChangesRevert: () => {}, // used for reverting temporary options\n settingsModalState: 'hidden',\n settingsModalLoadedUser: false,\n settingsModalLoadedAdmin: false,\n settingsModalTargetTab: null,\n settingsModalMode: 'user',\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 localFonts: typeof window.queryLocalFonts === 'function'\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 setTemporaryChanges (state, { timeoutId, confirm, revert }) {\n state.temporaryChangesTimeoutId = timeoutId\n state.temporaryChangesConfirm = confirm\n state.temporaryChangesRevert = revert\n },\n clearTemporaryChanges (state) {\n clearTimeout(state.temporaryChangesTimeoutId)\n state.temporaryChangesTimeoutId = null\n state.temporaryChangesConfirm = () => {}\n state.temporaryChangesRevert = () => {}\n },\n setThemeApplied (state) {\n state.themeApplied = true\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, value) {\n state.settingsModalMode = value\n state.settingsModalState = 'visible'\n if (value === 'user') {\n if (!state.settingsModalLoadedUser) {\n state.settingsModalLoadedUser = true\n }\n } else if (value === 'admin') {\n if (!state.settingsModalLoadedAdmin) {\n state.settingsModalLoadedAdmin = true\n }\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 setFontsList (state, value) {\n // Set is used here so that we filter out duplicate fonts (possibly same font but with different weight)\n state.localFonts = [...(new Set(value.map(font => font.family))).values()]\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 }, value = 'user') {\n commit('openSettingsModal', value)\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', 'user')\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 queryLocalFonts ({ commit, dispatch, state }) {\n if (state.localFonts !== null) return\n commit('setFontsList', [])\n if (!state.browserSupport.localFonts) {\n return\n }\n window\n .queryLocalFonts()\n .then((fonts) => {\n commit('setFontsList', fonts)\n })\n .catch((e) => {\n dispatch('pushGlobalNotice', {\n messageKey: 'settings.style.themes3.font.font_list_unavailable',\n messageArgs: {\n error: e\n },\n level: 'error'\n })\n })\n },\n setLastTimeline ({ commit }, value) {\n commit('setLastTimeline', value)\n },\n setTheme ({ commit, rootState }, { themeName, themeData, recompile, saveData } = {}) {\n const {\n theme: instanceThemeName\n } = rootState.instance\n\n const {\n theme: userThemeName,\n customTheme: userThemeSnapshot,\n customThemeSource: userThemeSource,\n forceThemeRecompilation,\n themeDebug,\n theme3hacks\n } = rootState.config\n\n const actualThemeName = userThemeName || instanceThemeName\n\n const forceRecompile = forceThemeRecompilation || recompile\n\n let promise = null\n\n if (themeData) {\n promise = Promise.resolve(normalizeThemeData(themeData))\n } else if (themeName) {\n promise = getPreset(themeName).then(themeData => normalizeThemeData(themeData))\n } else if (userThemeSource || userThemeSnapshot) {\n promise = Promise.resolve(normalizeThemeData({\n _pleroma_theme_version: 2,\n theme: userThemeSnapshot,\n source: userThemeSource\n }))\n } else if (actualThemeName && actualThemeName !== 'custom') {\n promise = getPreset(actualThemeName).then(themeData => {\n const realThemeData = normalizeThemeData(themeData)\n if (actualThemeName === instanceThemeName) {\n // This sole line is the reason why this whole block is above the recompilation check\n commit('setInstanceOption', { name: 'themeData', value: { theme: realThemeData } })\n }\n return realThemeData\n })\n } else {\n throw new Error('Cannot load any theme!')\n }\n\n // If we're not not forced to recompile try using\n // cache (tryLoadCache return true if load successful)\n if (!forceRecompile && !themeDebug && tryLoadCache()) {\n commit('setThemeApplied')\n return\n }\n\n promise\n .then(realThemeData => {\n const theme2ruleset = convertTheme2To3(realThemeData)\n\n if (saveData) {\n commit('setOption', { name: 'theme', value: themeName || actualThemeName })\n commit('setOption', { name: 'customTheme', value: realThemeData })\n commit('setOption', { name: 'customThemeSource', value: realThemeData })\n }\n const hacks = []\n\n Object.entries(theme3hacks).forEach(([key, value]) => {\n switch (key) {\n case 'fonts': {\n Object.entries(theme3hacks.fonts).forEach(([fontKey, font]) => {\n if (!font?.family) return\n switch (fontKey) {\n case 'interface':\n hacks.push({\n component: 'Root',\n directives: {\n '--font': 'generic | ' + font.family\n }\n })\n break\n case 'input':\n hacks.push({\n component: 'Input',\n directives: {\n '--font': 'generic | ' + font.family\n }\n })\n break\n case 'post':\n hacks.push({\n component: 'RichContent',\n directives: {\n '--font': 'generic | ' + font.family\n }\n })\n break\n case 'monospace':\n hacks.push({\n component: 'Root',\n directives: {\n '--monoFont': 'generic | ' + font.family\n }\n })\n break\n }\n })\n break\n }\n case 'underlay': {\n if (value !== 'none') {\n const newRule = {\n component: 'Underlay',\n directives: {}\n }\n if (value === 'opaque') {\n newRule.directives.opacity = 1\n newRule.directives.background = '--wallpaper'\n }\n if (value === 'transparent') {\n newRule.directives.opacity = 0\n }\n hacks.push(newRule)\n }\n break\n }\n }\n })\n\n const ruleset = [\n ...theme2ruleset,\n ...hacks\n ]\n\n applyTheme(\n ruleset,\n () => commit('setThemeApplied'),\n themeDebug\n )\n })\n\n return promise\n }\n }\n}\n\nexport default interfaceMod\n\nexport const normalizeThemeData = (input) => {\n if (Array.isArray(input)) {\n const themeData = { colors: {} }\n themeData.colors.bg = input[1]\n themeData.colors.fg = input[2]\n themeData.colors.text = input[3]\n themeData.colors.link = input[4]\n themeData.colors.cRed = input[5]\n themeData.colors.cGreen = input[6]\n themeData.colors.cBlue = input[7]\n themeData.colors.cOrange = input[8]\n return generatePreset(themeData).theme\n }\n\n let themeData, themeSource\n\n if (input.themeFileVerison === 1) {\n // this might not be even used at all, some leftover of unimplemented code in V2 editor\n return generatePreset(input).theme\n } else if (\n Object.prototype.hasOwnProperty.call(input, '_pleroma_theme_version') ||\n Object.prototype.hasOwnProperty.call(input, 'source') ||\n Object.prototype.hasOwnProperty.call(input, 'theme')\n ) {\n // We got passed a full theme file\n themeData = input.theme\n themeSource = input.source\n } else if (Object.prototype.hasOwnProperty.call(input, 'themeEngineVersion')) {\n // We got passed a source/snapshot\n themeData = input\n themeSource = input\n }\n // New theme presets don't have 'theme' property, they use 'source'\n\n let out // shout, shout let it all out\n if (themeSource && themeSource.themeEngineVersion === CURRENT_VERSION) {\n // There are some themes in wild that have completely broken source\n out = { ...(themeData || {}), ...themeSource }\n } else {\n out = themeData\n }\n\n // generatePreset here basically creates/updates \"snapshot\",\n // while also fixing the 2.2 -> 2.3 colors/shadows/etc\n return generatePreset(out).theme\n}\n","import { humanizeErrors } from '../../modules/errors'\n\nexport function StatusCodeError (statusCode, body, options, response) {\n this.name = 'StatusCodeError'\n this.statusCode = statusCode\n this.message = statusCode + ' - ' + (JSON && JSON.stringify ? JSON.stringify(body) : body)\n this.error = body // legacy attribute\n this.options = options\n this.response = response\n\n if (Error.captureStackTrace) { // required for non-V8 environments\n Error.captureStackTrace(this)\n }\n}\nStatusCodeError.prototype = Object.create(Error.prototype)\nStatusCodeError.prototype.constructor = StatusCodeError\n\nexport class RegistrationError extends Error {\n constructor (error) {\n super()\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this)\n }\n\n try {\n // the error is probably a JSON object with a single key, \"errors\", whose value is another JSON object containing the real errors\n if (typeof error === 'string') {\n error = JSON.parse(error)\n // 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}`\nconst PLEROMA_SCROBBLES_URL = id => `/api/v1/pleroma/accounts/${id}/scrobbles`\nconst PLEROMA_STATUS_QUOTES_URL = id => `/api/v1/pleroma/statuses/${id}/quotes`\nconst PLEROMA_USER_FAVORITES_TIMELINE_URL = id => `/api/v1/pleroma/accounts/${id}/favourites`\n\nconst PLEROMA_ADMIN_CONFIG_URL = '/api/pleroma/admin/config'\nconst PLEROMA_ADMIN_DESCRIPTIONS_URL = '/api/pleroma/admin/config/descriptions'\nconst PLEROMA_ADMIN_FRONTENDS_URL = '/api/pleroma/admin/frontends'\nconst PLEROMA_ADMIN_FRONTENDS_INSTALL_URL = '/api/pleroma/admin/frontends/install'\n\nconst PLEROMA_EMOJI_RELOAD_URL = '/api/pleroma/admin/reload_emoji'\nconst PLEROMA_EMOJI_IMPORT_FS_URL = '/api/pleroma/emoji/packs/import'\nconst PLEROMA_EMOJI_PACKS_URL = (page, pageSize) => `/api/v1/pleroma/emoji/packs?page=${page}&page_size=${pageSize}`\nconst PLEROMA_EMOJI_PACK_URL = (name) => `/api/v1/pleroma/emoji/pack?name=${name}`\nconst PLEROMA_EMOJI_PACKS_DL_REMOTE_URL = '/api/v1/pleroma/emoji/packs/download'\nconst PLEROMA_EMOJI_PACKS_LS_REMOTE_URL =\n (url, page, pageSize) => `/api/v1/pleroma/emoji/packs/remote?url=${url}&page=${page}&page_size=${pageSize}`\nconst PLEROMA_EMOJI_UPDATE_FILE_URL = (name) => `/api/v1/pleroma/emoji/packs/files?name=${name}`\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}?${new URLSearchParams(settings)}`, {\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 minId = false,\n until = false,\n userId = false,\n listId = false,\n statusId = 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 publicFavorites: PLEROMA_USER_FAVORITES_TIMELINE_URL,\n tag: MASTODON_TAG_TIMELINE_URL,\n bookmarks: MASTODON_BOOKMARK_TIMELINE_URL,\n quotes: PLEROMA_STATUS_QUOTES_URL\n }\n const isNotifications = timeline === 'notifications'\n const params = []\n\n let url = timelineUrls[timeline]\n\n if (timeline === 'favorites' && userId) {\n url = timelineUrls.publicFavorites(userId)\n }\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 (timeline === 'quotes') {\n url = url(statusId)\n }\n\n if (minId) {\n params.push(['min_id', minId])\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 return fetch(url, { headers: authHeaders(credentials) })\n .then(async (response) => {\n const success = response.ok\n\n const data = await response.json()\n\n if (success && !data.errors) {\n const pagination = parseLinkHeaderPagination(response.headers.get('Link'), {\n flakeId: timeline !== 'bookmarks' && timeline !== 'notifications'\n })\n\n return { data: data.map(isNotifications ? parseNotification : parseStatus), pagination }\n } else {\n data.errors ||= []\n data.status = response.status\n data.statusText = response.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 quoteId,\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: parseInt(poll.expiresIn, 10),\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 (quoteId) {\n form.append('quote_id', quoteId)\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: parseInt(poll.expiresIn, 10),\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 promisedRequest({\n url: MASTODON_DELETE_URL(id),\n 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 = ({ maxId, credentials }) => {\n const query = new URLSearchParams({ with_relationships: true })\n if (maxId) {\n query.append('max_id', maxId)\n }\n return promisedRequest({ url: `${MASTODON_USER_MUTES_URL}?${query.toString()}`, credentials })\n .then((users) => users.map(parseUser))\n}\n\nconst muteUser = ({ id, expiresIn, credentials }) => {\n const payload = {}\n if (expiresIn) {\n payload.expires_in = expiresIn\n }\n return promisedRequest({ url: MASTODON_MUTE_USER_URL(id), credentials, method: 'POST', payload })\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 = ({ maxId, credentials }) => {\n const query = new URLSearchParams({ with_relationships: true })\n if (maxId) {\n query.append('max_id', maxId)\n }\n return promisedRequest({ url: `${MASTODON_USER_BLOCKS_URL}?${query.toString()}`, 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\n// ADMIN STUFF // EXPERIMENTAL\nconst fetchInstanceDBConfig = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_CONFIG_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst fetchInstanceConfigDescriptions = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_DESCRIPTIONS_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst fetchAvailableFrontends = ({ credentials }) => {\n return fetch(PLEROMA_ADMIN_FRONTENDS_URL, {\n headers: authHeaders(credentials)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst pushInstanceDBConfig = ({ credentials, payload }) => {\n return fetch(PLEROMA_ADMIN_CONFIG_URL, {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...authHeaders(credentials)\n },\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst installFrontend = ({ credentials, payload }) => {\n return fetch(PLEROMA_ADMIN_FRONTENDS_INSTALL_URL, {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n ...authHeaders(credentials)\n },\n method: 'POST',\n body: JSON.stringify(payload)\n })\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst fetchScrobbles = ({ accountId, limit = 1 }) => {\n let url = PLEROMA_SCROBBLES_URL(accountId)\n const params = [['limit', limit]]\n const queryString = map(params, (param) => `${param[0]}=${param[1]}`).join('&')\n url += `?${queryString}`\n return fetch(url, {})\n .then((response) => {\n if (response.ok) {\n return response.json()\n } else {\n return {\n error: response\n }\n }\n })\n}\n\nconst deleteEmojiPack = ({ name }) => {\n return fetch(PLEROMA_EMOJI_PACK_URL(name), { method: 'DELETE' })\n}\n\nconst reloadEmoji = () => {\n return fetch(PLEROMA_EMOJI_RELOAD_URL, { method: 'POST' })\n}\n\nconst importEmojiFromFS = () => {\n return fetch(PLEROMA_EMOJI_IMPORT_FS_URL)\n}\n\nconst createEmojiPack = ({ name }) => {\n return fetch(PLEROMA_EMOJI_PACK_URL(name), { method: 'POST' })\n}\n\nconst listEmojiPacks = ({ page, pageSize }) => {\n return fetch(PLEROMA_EMOJI_PACKS_URL(page, pageSize))\n}\n\nconst listRemoteEmojiPacks = ({ instance, page, pageSize }) => {\n if (!instance.startsWith('http')) {\n instance = 'https://' + instance\n }\n\n return fetch(\n PLEROMA_EMOJI_PACKS_LS_REMOTE_URL(instance, page, pageSize),\n {\n headers: { 'Content-Type': 'application/json' }\n }\n )\n}\n\nconst downloadRemoteEmojiPack = ({ instance, packName, as }) => {\n return fetch(\n PLEROMA_EMOJI_PACKS_DL_REMOTE_URL,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n url: instance, name: packName, as\n })\n }\n )\n}\n\nconst saveEmojiPackMetadata = ({ name, newData }) => {\n return fetch(\n PLEROMA_EMOJI_PACK_URL(name),\n {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ metadata: newData })\n }\n )\n}\n\nconst addNewEmojiFile = ({ packName, file, shortcode, filename }) => {\n const data = new FormData()\n if (filename.trim() !== '') { data.set('filename', filename) }\n if (shortcode.trim() !== '') { data.set('shortcode', shortcode) }\n data.set('file', file)\n\n return fetch(\n PLEROMA_EMOJI_UPDATE_FILE_URL(packName),\n { method: 'POST', body: data }\n )\n}\n\nconst updateEmojiFile = ({ packName, shortcode, newShortcode, newFilename, force }) => {\n return fetch(\n PLEROMA_EMOJI_UPDATE_FILE_URL(packName),\n {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ shortcode, new_shortcode: newShortcode, new_filename: newFilename, force })\n }\n )\n}\n\nconst deleteEmojiFile = ({ packName, shortcode }) => {\n return fetch(`${PLEROMA_EMOJI_UPDATE_FILE_URL(packName)}&shortcode=${shortcode}`, { method: 'DELETE' })\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 fetchScrobbles,\n adminFetchAnnouncements,\n fetchInstanceDBConfig,\n fetchInstanceConfigDescriptions,\n fetchAvailableFrontends,\n pushInstanceDBConfig,\n installFrontend,\n importEmojiFromFS,\n reloadEmoji,\n listEmojiPacks,\n createEmojiPack,\n deleteEmojiPack,\n saveEmojiPackMetadata,\n addNewEmojiFile,\n updateEmojiFile,\n deleteEmojiFile,\n listRemoteEmojiPacks,\n downloadRemoteEmojiPack\n}\n\nexport default apiService\n","import { kebabCase } from 'lodash'\n\nconst propsToNative = props => Object.keys(props).reduce((acc, cur) => {\n acc[kebabCase(cur)] = props[cur]\n return acc\n}, {})\n\nexport { propsToNative }\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 ?? 1})`\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\nexport const unitToSeconds = (unit, amount) => {\n switch (unit) {\n case 'minutes': return 0.001 * amount * MINUTE\n case 'hours': return 0.001 * amount * HOUR\n case 'days': return 0.001 * amount * DAY\n }\n}\n\nexport const secondsToUnit = (unit, amount) => {\n switch (unit) {\n case 'minutes': return (1000 * amount) / MINUTE\n case 'hours': return (1000 * amount) / HOUR\n case 'days': return (1000 * amount) / DAY\n }\n}\n","import {\n showDesktopNotification as swDesktopNotification,\n closeDesktopNotification as swCloseDesktopNotification,\n isSWSupported\n} from '../sw/sw.js'\nconst state = { failCreateNotif: false }\n\nexport const showDesktopNotification = (rootState, desktopNotificationOpts) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n if (rootState.notifications.desktopNotificationSilence) { return }\n\n if (isSWSupported()) {\n swDesktopNotification(desktopNotificationOpts)\n } else if (!state.failCreateNotif) {\n try {\n const desktopNotification = new window.Notification(desktopNotificationOpts.title, desktopNotificationOpts)\n setTimeout(desktopNotification.close.bind(desktopNotification), 5000)\n } catch {\n state.failCreateNotif = true\n }\n }\n}\n\nexport const closeDesktopNotification = (rootState, { id }) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n\n if (isSWSupported()) {\n swCloseDesktopNotification({ id })\n }\n}\n\nexport const closeAllDesktopNotifications = (rootState) => {\n if (!('Notification' in window && window.Notification.permission === 'granted')) return\n\n if (isSWSupported()) {\n swCloseDesktopNotification({})\n }\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_favorites = data.pleroma.hide_favorites\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 output.birthday = data.pleroma.birthday\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 output.show_birthday = data.pleroma.show_birthday\n output.actor_type = data.source.pleroma.actor_type\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 output.quote = pleroma.quote ? parseStatus(pleroma.quote) : undefined\n output.quote_id = pleroma.quote_id ? pleroma.quote_id : (output.quote ? output.quote.id : undefined)\n output.quote_url = pleroma.quote_url\n output.quote_visible = pleroma.quote_visible\n output.quotes_count = pleroma.quotes_count\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.target = output.type !== 'move'\n ? null\n : parseUser(data.target)\n output.from_profile = parseUser(data.account)\n output.emoji = data.emoji\n output.emoji_url = data.emoji_url\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 const getOriginalFavicons = () => [...favicons]\n\n return {\n initFaviconService,\n clearFaviconBadge,\n drawFaviconBadge,\n getOriginalFavicons\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.\nexport const 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\nexport const fileTypeExt = url => {\n if (url.match(/\\.(a?png|jpe?g|gif|webp|avif)$/)) {\n return 'image'\n }\n if (url.match(/\\.(ogv|mp4|webm|mov)$/)) {\n return 'video'\n }\n if (url.match(/\\.(it|s3m|mod|umx|mp3|aac|m4a|flac|alac|ogg|oga|opus|wav|ape|midi?)$/)) {\n return 'audio'\n }\n return 'unknown'\n}\n\nexport const fileMatchesSomeType = (types, file) =>\n types.some(type => fileType(file.mimetype) === type)\n\nconst fileTypeService = {\n fileType,\n fileTypeExt,\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('_', '-')\nconst internalToBackendLocaleMulti = codes => {\n const langs = Array.isArray(codes) ? codes : [codes]\n return langs.map(internalToBackendLocale).join(',')\n}\n\nconst getLanguageName = (code) => {\n const specialLanguageNames = {\n ja_easy: 'やさしいにほんご',\n 'nan-TW': '臺語(閩南語)',\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 internalToBackendLocaleMulti,\n languages,\n getLanguageName\n}\n\nexport default localeService\n","import { muteWordHits } from '../status_parser/status_parser.js'\nimport { showDesktopNotification } from '../desktop_notification_utils/desktop_notification_utils.js'\n\nimport FaviconService from 'src/services/favicon_service/favicon_service.js'\n\nexport const ACTIONABLE_NOTIFICATION_TYPES = new Set(['mention', 'pleroma:report', 'follow_request'])\n\nlet cachedBadgeUrl = null\n\nexport const notificationsFromStore = store => store.state.notifications.data\n\nexport const visibleTypes = store => {\n // When called from within a module we need rootGetters to access wider scope\n // however when called from a component (i.e. this.$store) we already have wider scope\n const rootGetters = store.rootGetters || store.getters\n const { notificationVisibility } = rootGetters.mergedConfig\n\n return ([\n notificationVisibility.likes && 'like',\n notificationVisibility.mentions && 'mention',\n notificationVisibility.statuses && 'status',\n notificationVisibility.repeats && 'repeat',\n notificationVisibility.follows && 'follow',\n notificationVisibility.followRequest && 'follow_request',\n notificationVisibility.moves && 'move',\n notificationVisibility.emojiReactions && 'pleroma:emoji_reaction',\n notificationVisibility.reports && 'pleroma:report',\n notificationVisibility.polls && 'poll'\n ].filter(_ => _))\n}\n\nconst statusNotifications = new Set(['like', 'mention', 'status', 'repeat', 'pleroma:emoji_reaction', 'poll'])\n\nexport const isStatusNotification = (type) => statusNotifications.has(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 const rootGetters = store.rootGetters || store.getters\n return notification.status.muted || muteWordHits(notification.status, rootGetters.mergedConfig.muteWords).length > 0\n}\n\nexport const maybeShowNotification = (store, notification) => {\n const rootState = store.rootState || store.state\n const rootGetters = store.rootGetters || store.getters\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, 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 const sortedNotifications = notificationsFromStore(store).map(_ => _).sort(sortById)\n // TODO implement sorting elsewhere and make it optional\n return sortedNotifications.filter(\n (notification) => (types || visibleTypes(store)).includes(notification.type)\n )\n}\n\nexport const unseenNotificationsFromStore = store => {\n const rootGetters = store.rootGetters || store.getters\n const ignoreInactionableSeen = rootGetters.mergedConfig.ignoreInactionableSeen\n\n return filteredNotificationsFromStore(store).filter(({ seen, type }) => {\n if (!ignoreInactionableSeen) return !seen\n if (seen) return false\n return ACTIONABLE_NOTIFICATION_TYPES.has(type)\n })\n}\n\nexport const prepareNotificationObject = (notification, i18n) => {\n if (cachedBadgeUrl === null) {\n const favicons = FaviconService.getOriginalFavicons()\n const favicon = favicons[favicons.length - 1]\n if (!favicon) {\n cachedBadgeUrl = 'about:blank'\n } else {\n cachedBadgeUrl = favicon.favimg.src\n }\n }\n\n const notifObj = {\n tag: notification.id,\n type: notification.type,\n badge: cachedBadgeUrl\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 'status':\n i18nString = 'subscribed_status'\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\nexport const countExtraNotifications = (store) => {\n const rootGetters = store.rootGetters || store.getters\n const mergedConfig = rootGetters.mergedConfig\n\n if (!mergedConfig.showExtraNotifications) {\n return 0\n }\n\n return [\n mergedConfig.showChatsInExtraNotifications ? rootGetters.unreadChatCount : 0,\n mergedConfig.showAnnouncementsInExtraNotifications ? rootGetters.unreadAnnouncementCount : 0,\n mergedConfig.showFollowRequestsInExtraNotifications ? rootGetters.followRequestCount : 0\n ].reduce((a, c) => a + c, 0)\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 'status',\n 'favourite',\n 'reblog',\n 'follow',\n 'follow_request',\n 'move',\n 'poll',\n 'pleroma:emoji_reaction',\n 'pleroma:chat_mention',\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.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 unreadNotifsIds = notifications.filter(n => !n.seen).map(n => n.id)\n if (readNotifsIds.length > 0 && readNotifsIds.length > 0) {\n const minId = Math.min(...unreadNotifsIds) // Oldest known unread notification\n if (minId !== Infinity) {\n args.since = false // Don't use since_id since it sorta conflicts with min_id\n args.minId = minId - 1 // go beyond\n fetchNotifications({ store, args, older })\n }\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","const genRandomSeed = () => `${Math.random()}`.replace('.', '-')\n\nexport default genRandomSeed\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 quoteId = 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 quoteId,\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 { hex2rgb } from '../color_convert/color_convert.js'\nimport { init, getEngineChecksum } from '../theme_data/theme_data_3.service.js'\nimport { getCssRules } from '../theme_data/css_utils.js'\nimport { defaultState } from '../../modules/config.js'\nimport { chunk } from 'lodash'\n\n// On platforms where this is not supported, it will return undefined\n// Otherwise it will return an array\nconst supportsAdoptedStyleSheets = !!document.adoptedStyleSheets\n\nconst createStyleSheet = (id) => {\n if (supportsAdoptedStyleSheets) {\n return {\n el: null,\n sheet: new CSSStyleSheet(),\n rules: []\n }\n }\n\n const el = document.getElementById(id)\n // Clear all rules in it\n for (let i = el.sheet.cssRules.length - 1; i >= 0; --i) {\n el.sheet.deleteRule(i)\n }\n\n return {\n el,\n sheet: el.sheet,\n rules: []\n }\n}\n\nconst EAGER_STYLE_ID = 'pleroma-eager-styles'\nconst LAZY_STYLE_ID = 'pleroma-lazy-styles'\n\nconst adoptStyleSheets = (styles) => {\n if (supportsAdoptedStyleSheets) {\n document.adoptedStyleSheets = styles.map(s => s.sheet)\n }\n // Some older browsers do not support document.adoptedStyleSheets.\n // In this case, we use the <style> elements.\n // Since the <style> elements we need are already in the DOM, there\n // is nothing to do here.\n}\n\nexport const generateTheme = async (inputRuleset, callbacks, debug) => {\n const {\n onNewRule = (rule, isLazy) => {},\n onLazyFinished = () => {},\n onEagerFinished = () => {}\n } = callbacks\n\n // Assuming that \"worst case scenario background\" is panel background since it's the most likely one\n const themes3 = init({\n inputRuleset,\n ultimateBackgroundColor: inputRuleset[0].directives['--bg'].split('|')[1].trim(),\n debug\n })\n\n getCssRules(themes3.eager, debug).forEach(rule => {\n // Hacks to support multiple selectors on same component\n if (rule.match(/::-webkit-scrollbar-button/)) {\n const parts = rule.split(/[{}]/g)\n const newRule = [\n parts[0],\n ', ',\n parts[0].replace(/button/, 'thumb'),\n ', ',\n parts[0].replace(/scrollbar-button/, 'resizer'),\n ' {',\n parts[1],\n '}'\n ].join('')\n onNewRule(newRule, false)\n } else {\n onNewRule(rule, false)\n }\n })\n onEagerFinished()\n\n // Optimization - instead of processing all lazy rules in one go, process them in small chunks\n // so that UI can do other things and be somewhat responsive while less important rules are being\n // processed\n let counter = 0\n const chunks = chunk(themes3.lazy, 200)\n // let t0 = performance.now()\n const processChunk = () => {\n const chunk = chunks[counter]\n Promise.all(chunk.map(x => x())).then(result => {\n getCssRules(result.filter(x => x), debug).forEach(rule => {\n if (rule.match(/\\.modal-view/)) {\n const parts = rule.split(/[{}]/g)\n const newRule = [\n parts[0],\n ', ',\n parts[0].replace(/\\.modal-view/, '#modal'),\n ', ',\n parts[0].replace(/\\.modal-view/, '.shout-panel'),\n ' {',\n parts[1],\n '}'\n ].join('')\n onNewRule(newRule, true)\n } else {\n onNewRule(rule, true)\n }\n })\n // const t1 = performance.now()\n // console.debug('Chunk ' + counter + ' took ' + (t1 - t0) + 'ms')\n // t0 = t1\n counter += 1\n if (counter < chunks.length) {\n setTimeout(processChunk, 0)\n } else {\n onLazyFinished()\n }\n })\n }\n\n return { lazyProcessFunc: processChunk }\n}\n\nexport const tryLoadCache = () => {\n const json = localStorage.getItem('pleroma-fe-theme-cache')\n if (!json) return null\n let cache\n try {\n cache = JSON.parse(json)\n } catch (e) {\n console.error('Failed to decode theme cache:', e)\n return false\n }\n if (cache.engineChecksum === getEngineChecksum()) {\n const eagerStyles = createStyleSheet(EAGER_STYLE_ID)\n const lazyStyles = createStyleSheet(LAZY_STYLE_ID)\n\n cache.data[0].forEach(rule => eagerStyles.sheet.insertRule(rule, 'index-max'))\n cache.data[1].forEach(rule => lazyStyles.sheet.insertRule(rule, 'index-max'))\n\n adoptStyleSheets([eagerStyles, lazyStyles])\n\n return true\n } else {\n console.warn('Engine checksum doesn\\'t match, cache not usable, clearing')\n localStorage.removeItem('pleroma-fe-theme-cache')\n }\n}\n\nexport const applyTheme = async (input, onFinish = (data) => {}, debug) => {\n const eagerStyles = createStyleSheet(EAGER_STYLE_ID)\n const lazyStyles = createStyleSheet(LAZY_STYLE_ID)\n\n const { lazyProcessFunc } = await generateTheme(\n input,\n {\n onNewRule (rule, isLazy) {\n if (isLazy) {\n lazyStyles.sheet.insertRule(rule, 'index-max')\n lazyStyles.rules.push(rule)\n } else {\n eagerStyles.sheet.insertRule(rule, 'index-max')\n eagerStyles.rules.push(rule)\n }\n },\n onEagerFinished () {\n adoptStyleSheets([eagerStyles])\n },\n onLazyFinished () {\n adoptStyleSheets([eagerStyles, lazyStyles])\n const cache = { engineChecksum: getEngineChecksum(), data: [eagerStyles.rules, lazyStyles.rules] }\n onFinish(cache)\n localStorage.setItem('pleroma-fe-theme-cache', JSON.stringify(cache))\n }\n },\n debug\n )\n\n setTimeout(lazyProcessFunc, 0)\n\n return Promise.resolve()\n}\n\nconst extractStyleConfig = ({\n sidebarColumnWidth,\n contentColumnWidth,\n notifsColumnWidth,\n emojiReactionsScale,\n emojiSize,\n navbarSize,\n panelHeaderSize,\n textSize,\n forcedRoundness\n}) => {\n const result = {\n sidebarColumnWidth,\n contentColumnWidth,\n notifsColumnWidth,\n emojiReactionsScale,\n emojiSize,\n navbarSize,\n panelHeaderSize,\n textSize\n }\n\n switch (forcedRoundness) {\n case 'disable':\n break\n case '0':\n result.forcedRoundness = '0'\n break\n case '1':\n result.forcedRoundness = '1px'\n break\n case '2':\n result.forcedRoundness = '0.4rem'\n break\n default:\n }\n\n return result\n}\n\nconst defaultStyleConfig = extractStyleConfig(defaultState)\n\nexport const applyConfig = (input) => {\n const config = extractStyleConfig(input)\n\n if (config === defaultStyleConfig) {\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(config)\n .filter(([k, v]) => v)\n .map(([k, v]) => `--${k}: ${v}`).join(';')\n\n document.getElementById('style-config')?.remove()\n const styleEl = document.createElement('style')\n styleEl.id = 'style-config'\n head.appendChild(styleEl)\n const styleSheet = styleEl.sheet\n\n styleSheet.toString()\n styleSheet.insertRule(`:root { ${rules} }`, 'index-max')\n\n if (Object.prototype.hasOwnProperty.call(config, 'forcedRoundness')) {\n styleSheet.insertRule(` * {\n --roundness: var(--forcedRoundness) !important;\n }`, 'index-max')\n }\n\n body.classList.remove('hidden')\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}\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","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\nexport function isSWSupported () {\n return 'serviceWorker' in navigator\n}\n\nfunction isPushSupported () {\n return '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: false,\n applicationServerKey: urlBase64ToUint8Array(vapidPublicKey)\n }\n return registration.pushManager.subscribe(subscribeOptions)\n}\n\nfunction unsubscribePush (registration) {\n return registration.pushManager.getSubscription()\n .then((subscription) => {\n if (subscription === null) { return }\n return subscription.unsubscribe()\n })\n}\n\nfunction deleteSubscriptionFromBackEnd (token) {\n return 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}\nexport async function initServiceWorker (store) {\n if (!isSWSupported()) return\n await getOrCreateServiceWorker()\n navigator.serviceWorker.addEventListener('message', (event) => {\n const { dispatch } = store\n const { type, ...rest } = event.data\n\n switch (type) {\n case 'notificationClicked':\n dispatch('notificationClicked', { id: rest.id })\n }\n })\n}\n\nexport async function showDesktopNotification (content) {\n if (!isSWSupported) return\n const { active: sw } = await window.navigator.serviceWorker.getRegistration()\n if (!sw) return console.error('No serviceworker found!')\n sw.postMessage({ type: 'desktopNotification', content })\n}\n\nexport async function closeDesktopNotification ({ id }) {\n if (!isSWSupported) return\n const { active: sw } = await window.navigator.serviceWorker.getRegistration()\n if (!sw) return console.error('No serviceworker found!')\n if (id >= 0) {\n sw.postMessage({ type: 'desktopNotificationClose', content: { id } })\n } else {\n sw.postMessage({ type: 'desktopNotificationClose', content: { all: true } })\n }\n}\n\nexport async function updateFocus () {\n if (!isSWSupported) return\n const { active: sw } = await window.navigator.serviceWorker.getRegistration()\n if (!sw) return console.error('No serviceworker found!')\n sw.postMessage({ type: 'updateFocus' })\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')\n }\n })\n ]).catch((e) => console.warn(`Failed to disable Web Push Notifications: ${e.message}`))\n }\n}\n","import { convert } from 'chromatism'\n\nimport { hex2rgb, rgba2css } from '../color_convert/color_convert.js'\n\nexport const parseCssShadow = (text) => {\n const dimensions = /(\\d[a-z]*\\s?){2,4}/.exec(text)?.[0]\n const inset = /inset/.exec(text)?.[0]\n const color = text.replace(dimensions, '').replace(inset, '')\n\n const [x, y, blur = 0, spread = 0] = dimensions.split(/ /).filter(x => x).map(x => x.trim())\n const isInset = inset?.trim() === 'inset'\n const colorString = color.split(/ /).filter(x => x).map(x => x.trim())[0]\n\n return {\n x,\n y,\n blur,\n spread,\n inset: isInset,\n color: colorString\n }\n}\n\nexport const getCssColorString = (color, alpha = 1) => rgba2css({ ...convert(color).rgb, a: alpha })\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 getCssColorString(shad.color, shad.alpha),\n shad.inset ? 'inset' : ''\n ]).join(' ')).join(', ')\n}\n\nexport const 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 getCssColorString(shad.color, shad.alpha)\n ]).join(' '))\n .map(_ => `drop-shadow(${_})`)\n .join(' ')\n}\n\n// `debug` changes what backgrounds are used to \"stacked\" solid colors so you can see\n// what theme engine \"thinks\" is actual background color is for purposes of text color\n// generation and for when --stacked variable is used\nexport const getCssRules = (rules, debug) => rules.map(rule => {\n let selector = rule.selector\n if (!selector) {\n selector = 'html'\n }\n const header = selector + ' {'\n const footer = '}'\n\n const virtualDirectives = Object.entries(rule.virtualDirectives || {}).map(([k, v]) => {\n return ' ' + k + ': ' + v\n }).join(';\\n')\n\n const directives = Object.entries(rule.directives).map(([k, v]) => {\n switch (k) {\n case 'roundness': {\n return ' ' + [\n '--roundness: ' + v + 'px'\n ].join(';\\n ')\n }\n case 'shadow': {\n return ' ' + [\n '--shadow: ' + getCssShadow(rule.dynamicVars.shadow),\n '--shadowFilter: ' + getCssShadowFilter(rule.dynamicVars.shadow),\n '--shadowInset: ' + getCssShadow(rule.dynamicVars.shadow, true)\n ].join(';\\n ')\n }\n case 'background': {\n if (debug) {\n return `\n --background: ${getCssColorString(rule.dynamicVars.stacked)};\n background-color: ${getCssColorString(rule.dynamicVars.stacked)};\n `\n }\n if (v === 'transparent') {\n if (rule.component === 'Root') return []\n return [\n rule.directives.backgroundNoCssColor !== 'yes' ? ('background-color: ' + v) : '',\n ' --background: ' + v\n ].filter(x => x).join(';\\n')\n }\n const color = getCssColorString(rule.dynamicVars.background, rule.directives.opacity)\n const cssDirectives = ['--background: ' + color]\n if (rule.directives.backgroundNoCssColor !== 'yes') {\n cssDirectives.push('background-color: ' + color)\n }\n return cssDirectives.filter(x => x).join(';\\n')\n }\n case 'blur': {\n const cssDirectives = []\n if (rule.directives.opacity < 1) {\n cssDirectives.push(`--backdrop-filter: blur(${v}) `)\n if (rule.directives.backgroundNoCssColor !== 'yes') {\n cssDirectives.push(`backdrop-filter: blur(${v}) `)\n }\n }\n return cssDirectives.join(';\\n')\n }\n case 'font': {\n return 'font-family: ' + v\n }\n case 'textColor': {\n if (rule.directives.textNoCssColor === 'yes') { return '' }\n return 'color: ' + v\n }\n default:\n if (k.startsWith('--')) {\n const [type, value] = v.split('|').map(x => x.trim()) // woah, Extreme!\n switch (type) {\n case 'color': {\n const color = rule.dynamicVars[k]\n if (typeof color === 'string') {\n return k + ': ' + rgba2css(hex2rgb(color))\n } else {\n return k + ': ' + rgba2css(color)\n }\n }\n case 'generic':\n return k + ': ' + value\n default:\n return ''\n }\n }\n return ''\n }\n }).filter(x => x).map(x => ' ' + x).join(';\\n')\n\n return [\n header,\n directives + ';',\n (rule.component === 'Text' && rule.state.indexOf('faint') < 0 && rule.directives.textNoCssColor !== 'yes') ? ' color: var(--text);' : '',\n '',\n virtualDirectives,\n footer\n ].join('\\n')\n}).filter(x => x)\n\nexport const getScopedVersion = (rules, newScope) => {\n return rules.map(x => {\n if (x.startsWith('html')) {\n return x.replace('html', newScope)\n } else if (x.startsWith('#content')) {\n return x.replace('#content', newScope)\n } else {\n return newScope + ' > ' + x\n }\n })\n}\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","export default [\n 'bg',\n 'wallpaper',\n 'fg',\n 'text',\n 'underlay',\n 'link',\n 'accent',\n 'faint',\n 'faintLink',\n 'postFaintLink',\n\n 'cBlue',\n 'cRed',\n 'cGreen',\n 'cOrange',\n\n 'profileBg',\n 'profileTint',\n\n 'highlight',\n 'highlightLightText',\n 'highlightPostLink',\n 'highlightFaintText',\n 'highlightFaintLink',\n 'highlightPostFaintLink',\n 'highlightText',\n 'highlightLink',\n 'highlightIcon',\n\n 'popover',\n 'popoverLightText',\n 'popoverPostLink',\n 'popoverFaintText',\n 'popoverFaintLink',\n 'popoverPostFaintLink',\n 'popoverText',\n 'popoverLink',\n 'popoverIcon',\n\n 'selectedPost',\n 'selectedPostFaintText',\n 'selectedPostLightText',\n 'selectedPostPostLink',\n 'selectedPostFaintLink',\n 'selectedPostText',\n 'selectedPostLink',\n 'selectedPostIcon',\n\n 'selectedMenu',\n 'selectedMenuLightText',\n 'selectedMenuFaintText',\n 'selectedMenuFaintLink',\n 'selectedMenuText',\n 'selectedMenuLink',\n 'selectedMenuIcon',\n\n 'selectedMenuPopover',\n 'selectedMenuPopoverLightText',\n 'selectedMenuPopoverFaintText',\n 'selectedMenuPopoverFaintLink',\n 'selectedMenuPopoverText',\n 'selectedMenuPopoverLink',\n 'selectedMenuPopoverIcon',\n\n 'lightText',\n\n 'postLink',\n\n 'postGreentext',\n\n 'postCyantext',\n\n 'border',\n\n 'poll',\n 'pollText',\n\n 'icon',\n\n // Foreground,\n 'fgText',\n 'fgLink',\n\n // Panel header,\n 'panel',\n 'panelText',\n 'panelFaint',\n 'panelLink',\n\n // Top bar,\n 'topBar',\n 'topBarText',\n 'topBarLink',\n\n // Tabs,\n 'tab',\n 'tabText',\n 'tabActiveText',\n\n // Buttons,\n 'btn',\n 'btnText',\n 'btnPanelText',\n 'btnTopBarText',\n\n // Buttons: pressed,\n 'btnPressed',\n 'btnPressedText',\n 'btnPressedPanel',\n 'btnPressedPanelText',\n 'btnPressedTopBar',\n 'btnPressedTopBarText',\n\n // Buttons: toggled,\n 'btnToggled',\n 'btnToggledText',\n 'btnToggledPanelText',\n 'btnToggledTopBarText',\n\n // Buttons: disabled,\n 'btnDisabled',\n 'btnDisabledText',\n 'btnDisabledPanelText',\n 'btnDisabledTopBarText',\n\n // Input fields,\n 'input',\n 'inputText',\n 'inputPanelText',\n 'inputTopbarText',\n\n 'alertError',\n 'alertErrorText',\n 'alertErrorPanelText',\n\n 'alertWarning',\n 'alertWarningText',\n 'alertWarningPanelText',\n\n 'alertSuccess',\n 'alertSuccessText',\n 'alertSuccessPanelText',\n\n 'alertNeutral',\n 'alertNeutralText',\n 'alertNeutralPanelText',\n\n 'alertPopupError',\n 'alertPopupErrorText',\n\n 'alertPopupWarning',\n 'alertPopupWarningText',\n\n 'alertPopupSuccess',\n 'alertPopupSuccessText',\n\n 'alertPopupNeutral',\n 'alertPopupNeutralText',\n\n 'badgeNeutral',\n 'badgeNeutralText',\n\n 'badgeNotification',\n 'badgeNotificationText',\n\n 'chatBg',\n\n 'chatMessageIncomingBg',\n 'chatMessageIncomingText',\n 'chatMessageIncomingLink',\n 'chatMessageIncomingBorder',\n 'chatMessageOutgoingBg',\n 'chatMessageOutgoingText',\n 'chatMessageOutgoingLink',\n 'chatMessageOutgoingBorder'\n]\n","import { convert } from 'chromatism'\nimport allKeys from './theme2_keys'\n\n// keys that are meant to be used globally, i.e. what's the rest of the theme is based upon.\nexport const basePaletteKeys = new Set([\n 'bg',\n 'fg',\n 'text',\n 'link',\n 'accent',\n\n 'cBlue',\n 'cRed',\n 'cGreen',\n 'cOrange',\n\n 'wallpaper'\n])\n\nexport const fontsKeys = new Set([\n 'interface',\n 'input',\n 'post',\n 'postCode'\n])\n\nexport const opacityKeys = new Set([\n 'alert',\n 'alertPopup',\n 'bg',\n 'border',\n 'btn',\n 'faint',\n 'input',\n 'panel',\n 'popover',\n 'profileTint',\n 'underlay'\n])\n\nexport const shadowsKeys = new Set([\n 'panel',\n 'topBar',\n 'popup',\n 'avatar',\n 'avatarStatus',\n 'panelHeader',\n 'button',\n 'buttonHover',\n 'buttonPressed',\n 'input'\n])\n\nexport const radiiKeys = new Set([\n 'btn',\n 'input',\n 'checkbox',\n 'panel',\n 'avatar',\n 'avatarAlt',\n 'tooltip',\n 'attachment',\n 'chatMessage'\n])\n\n// Keys that are not available in editor and never meant to be edited\nexport const hiddenKeys = new Set([\n 'profileBg',\n 'profileTint'\n])\n\nexport const extendedBasePrefixes = [\n 'border',\n 'icon',\n 'highlight',\n 'lightText',\n\n 'popover',\n\n 'panel',\n 'topBar',\n 'tab',\n 'btn',\n 'input',\n 'selectedMenu',\n\n 'alert',\n 'alertPopup',\n 'badge',\n\n 'post',\n 'selectedPost', // wrong nomenclature\n 'poll',\n\n 'chatBg',\n 'chatMessage'\n]\nexport const nonComponentPrefixes = new Set([\n 'border',\n 'icon',\n 'highlight',\n 'lightText',\n 'chatBg'\n])\n\nexport const extendedBaseKeys = Object.fromEntries(\n extendedBasePrefixes.map(prefix => [\n prefix,\n allKeys.filter(k => {\n if (prefix === 'alert') {\n return k.startsWith(prefix) && !k.startsWith('alertPopup')\n }\n return k.startsWith(prefix)\n })\n ])\n)\n\n// Keysets that are only really used intermideately, i.e. to generate other colors\nexport const temporary = new Set([\n '',\n 'highlight'\n])\n\nexport const temporaryColors = {}\n\nexport const convertTheme2To3 = (data) => {\n data.colors.accent = data.colors.accent || data.colors.link\n data.colors.link = data.colors.link || data.colors.accent\n const generateRoot = () => {\n const directives = {}\n basePaletteKeys.forEach(key => { directives['--' + key] = 'color | ' + convert(data.colors[key]).hex })\n return {\n component: 'Root',\n directives\n }\n }\n\n const convertOpacity = () => {\n const newRules = []\n Object.keys(data.opacity || {}).forEach(key => {\n if (!opacityKeys.has(key) || data.opacity[key] === undefined) return null\n const originalOpacity = data.opacity[key]\n const rule = { source: '2to3' }\n\n switch (key) {\n case 'alert':\n rule.component = 'Alert'\n break\n case 'alertPopup':\n rule.component = 'Alert'\n rule.parent = { component: 'Popover' }\n break\n case 'bg':\n rule.component = 'Panel'\n break\n case 'border':\n rule.component = 'Border'\n break\n case 'btn':\n rule.component = 'Button'\n break\n case 'faint':\n rule.component = 'Text'\n rule.state = ['faint']\n break\n case 'input':\n rule.component = 'Input'\n break\n case 'panel':\n rule.component = 'PanelHeader'\n break\n case 'popover':\n rule.component = 'Popover'\n break\n case 'profileTint':\n return null\n case 'underlay':\n rule.component = 'Underlay'\n break\n }\n\n switch (key) {\n case 'alert':\n case 'alertPopup':\n case 'bg':\n case 'btn':\n case 'input':\n case 'panel':\n case 'popover':\n case 'underlay':\n rule.directives = { opacity: originalOpacity }\n break\n case 'faint':\n case 'border':\n rule.directives = { textOpacity: originalOpacity }\n break\n }\n\n newRules.push(rule)\n\n if (rule.component === 'Button') {\n newRules.push({ ...rule, component: 'ScrollbarElement' })\n newRules.push({ ...rule, component: 'Tab' })\n newRules.push({ ...rule, component: 'Tab', state: ['active'], directives: { opacity: 0 } })\n }\n if (rule.component === 'Panel') {\n newRules.push({ ...rule, component: 'Post' })\n }\n })\n return newRules\n }\n\n const convertRadii = () => {\n const newRules = []\n Object.keys(data.radii || {}).forEach(key => {\n if (!radiiKeys.has(key) || data.radii[key] === undefined) return null\n const originalRadius = data.radii[key]\n const rule = { source: '2to3' }\n\n switch (key) {\n case 'btn':\n rule.component = 'Button'\n break\n case 'tab':\n rule.component = 'Tab'\n break\n case 'input':\n rule.component = 'Input'\n break\n case 'checkbox':\n rule.component = 'Input'\n rule.variant = 'checkbox'\n break\n case 'panel':\n rule.component = 'Panel'\n break\n case 'avatar':\n rule.component = 'Avatar'\n break\n case 'avatarAlt':\n rule.component = 'Avatar'\n rule.variant = 'compact'\n break\n case 'tooltip':\n rule.component = 'Popover'\n break\n case 'attachment':\n rule.component = 'Attachment'\n break\n case 'ChatMessage':\n rule.component = 'Button'\n break\n }\n rule.directives = {\n roundness: originalRadius\n }\n newRules.push(rule)\n if (rule.component === 'Button') {\n newRules.push({ ...rule, component: 'ScrollbarElement' })\n newRules.push({ ...rule, component: 'Tab' })\n }\n })\n return newRules\n }\n\n const convertFonts = () => {\n const newRules = []\n Object.keys(data.fonts || {}).forEach(key => {\n if (!fontsKeys.has(key)) return\n if (!data.fonts[key]) return\n const originalFont = data.fonts[key].family\n const rule = { source: '2to3' }\n\n switch (key) {\n case 'interface':\n case 'postCode':\n rule.component = 'Root'\n break\n case 'input':\n rule.component = 'Input'\n break\n case 'post':\n rule.component = 'RichContent'\n break\n }\n switch (key) {\n case 'interface':\n case 'input':\n case 'post':\n rule.directives = { '--font': 'generic | ' + originalFont }\n break\n case 'postCode':\n rule.directives = { '--monoFont': 'generic | ' + originalFont }\n newRules.push({ ...rule, component: 'RichContent' })\n break\n }\n newRules.push(rule)\n })\n return newRules\n }\n const convertShadows = () => {\n const newRules = []\n Object.keys(data.shadows || {}).forEach(key => {\n if (!shadowsKeys.has(key)) return\n const originalShadow = data.shadows[key]\n const rule = { source: '2to3' }\n\n switch (key) {\n case 'panel':\n rule.component = 'Panel'\n break\n case 'topBar':\n rule.component = 'TopBar'\n break\n case 'popup':\n rule.component = 'Popover'\n break\n case 'avatar':\n rule.component = 'Avatar'\n break\n case 'avatarStatus':\n rule.component = 'Avatar'\n rule.parent = { component: 'Post' }\n break\n case 'panelHeader':\n rule.component = 'PanelHeader'\n break\n case 'button':\n rule.component = 'Button'\n break\n case 'buttonHover':\n rule.component = 'Button'\n rule.state = ['hover']\n break\n case 'buttonPressed':\n rule.component = 'Button'\n rule.state = ['pressed']\n break\n case 'input':\n rule.component = 'Input'\n break\n }\n rule.directives = {\n shadow: originalShadow\n }\n newRules.push(rule)\n if (key === 'topBar') {\n newRules.push({ ...rule, component: 'PanelHeader', parent: { component: 'MobileDrawer' } })\n }\n if (key === 'avatarStatus') {\n newRules.push({ ...rule, parent: { component: 'Notification' } })\n }\n if (key === 'buttonPressed') {\n newRules.push({ ...rule, state: ['toggled'] })\n newRules.push({ ...rule, state: ['toggled', 'focus'] })\n newRules.push({ ...rule, state: ['pressed', 'focus'] })\n }\n if (key === 'buttonHover') {\n newRules.push({ ...rule, state: ['toggled', 'hover'] })\n newRules.push({ ...rule, state: ['pressed', 'hover'] })\n newRules.push({ ...rule, state: ['toggled', 'focus', 'hover'] })\n newRules.push({ ...rule, state: ['pressed', 'focus', 'hover'] })\n }\n\n if (rule.component === 'Button') {\n newRules.push({ ...rule, component: 'ScrollbarElement' })\n newRules.push({ ...rule, component: 'Tab' })\n }\n })\n return newRules\n }\n\n const extendedRules = Object.entries(extendedBaseKeys).map(([prefix, keys]) => {\n if (nonComponentPrefixes.has(prefix)) return null\n const rule = { source: '2to3' }\n if (prefix === 'alertPopup') {\n rule.component = 'Alert'\n rule.parent = { component: 'Popover' }\n } else if (prefix === 'selectedPost') {\n rule.component = 'Post'\n rule.state = ['selected']\n } else if (prefix === 'selectedMenu') {\n rule.component = 'MenuItem'\n rule.state = ['hover']\n } else if (prefix === 'chatMessageIncoming') {\n rule.component = 'ChatMessage'\n } else if (prefix === 'chatMessageOutgoing') {\n rule.component = 'ChatMessage'\n rule.variant = 'outgoing'\n } else if (prefix === 'panel') {\n rule.component = 'PanelHeader'\n } else if (prefix === 'topBar') {\n rule.component = 'TopBar'\n } else if (prefix === 'chatMessage') {\n rule.component = 'ChatMessage'\n } else if (prefix === 'poll') {\n rule.component = 'PollGraph'\n } else if (prefix === 'btn') {\n rule.component = 'Button'\n } else {\n rule.component = prefix[0].toUpperCase() + prefix.slice(1).toLowerCase()\n }\n return keys.map((key) => {\n if (!data.colors[key]) return null\n const leftoverKey = key.replace(prefix, '')\n const parts = (leftoverKey || 'Bg').match(/[A-Z][a-z]*/g)\n const last = parts.slice(-1)[0]\n let newRule = { source: '2to3', directives: {} }\n let variantArray = []\n\n switch (last) {\n case 'Text':\n case 'Faint': // typo\n case 'Link':\n case 'Icon':\n case 'Greentext':\n case 'Cyantext':\n case 'Border':\n newRule.parent = rule\n newRule.directives.textColor = data.colors[key]\n newRule.directives.textAuto = 'no-auto'\n variantArray = parts.slice(0, -1)\n break\n default:\n newRule = { ...rule, directives: {} }\n newRule.directives.background = data.colors[key]\n variantArray = parts\n break\n }\n\n if (last === 'Text' || last === 'Link') {\n const secondLast = parts.slice(-2)[0]\n if (secondLast === 'Light') {\n return null // unsupported\n } else if (secondLast === 'Faint') {\n newRule.state = ['faint']\n variantArray = parts.slice(0, -2)\n }\n }\n\n switch (last) {\n case 'Text':\n case 'Link':\n case 'Icon':\n case 'Border':\n newRule.component = last\n break\n case 'Greentext':\n case 'Cyantext':\n newRule.component = 'FunText'\n newRule.variant = last.toLowerCase()\n break\n case 'Faint':\n newRule.component = 'Text'\n newRule.state = ['faint']\n break\n }\n\n variantArray = variantArray.filter(x => x !== 'Bg')\n\n if (last === 'Link' && prefix === 'selectedPost') {\n // selectedPost has typo - duplicate 'Post'\n variantArray = variantArray.filter(x => x !== 'Post')\n }\n\n if (prefix === 'popover' && variantArray[0] === 'Post') {\n newRule.component = 'Post'\n newRule.parent = { source: '2to3hack', component: 'Popover' }\n variantArray = variantArray.filter(x => x !== 'Post')\n }\n\n if (prefix === 'selectedMenu' && variantArray[0] === 'Popover') {\n newRule.parent = { source: '2to3hack', component: 'Popover' }\n variantArray = variantArray.filter(x => x !== 'Popover')\n }\n\n switch (prefix) {\n case 'btn':\n case 'input':\n case 'alert': {\n const hasPanel = variantArray.find(x => x === 'Panel')\n if (hasPanel) {\n newRule.parent = { source: '2to3hack', component: 'PanelHeader', parent: newRule.parent }\n variantArray = variantArray.filter(x => x !== 'Panel')\n }\n const hasTop = variantArray.find(x => x === 'Top') // TopBar\n if (hasTop) {\n newRule.parent = { source: '2to3hack', component: 'TopBar', parent: newRule.parent }\n variantArray = variantArray.filter(x => x !== 'Top' && x !== 'Bar')\n }\n break\n }\n }\n\n if (variantArray.length > 0) {\n if (prefix === 'btn') {\n newRule.state = variantArray.map(x => x.toLowerCase())\n } else {\n newRule.variant = variantArray[0].toLowerCase()\n }\n }\n\n if (newRule.component === 'Panel') {\n return [newRule, { ...newRule, component: 'MobileDrawer' }]\n } else if (newRule.component === 'Button') {\n const rules = [\n newRule,\n { ...newRule, component: 'Tab' },\n { ...newRule, component: 'ScrollbarElement' }\n ]\n if (newRule.state?.indexOf('toggled') >= 0) {\n rules.push({ ...newRule, state: [...newRule.state, 'focused'] })\n rules.push({ ...newRule, state: [...newRule.state, 'hover'] })\n rules.push({ ...newRule, state: [...newRule.state, 'hover', 'focused'] })\n }\n if (newRule.state?.indexOf('hover') >= 0) {\n rules.push({ ...newRule, state: [...newRule.state, 'focused'] })\n }\n return rules\n } else if (newRule.component === 'Badge') {\n if (newRule.variant === 'notification') {\n return [newRule, { component: 'Root', directives: { '--badgeNotification': 'color | ' + newRule.directives.background } }]\n } else if (newRule.variant === 'neutral') {\n return [{ ...newRule, variant: 'normal' }]\n } else {\n return [newRule]\n }\n } else if (newRule.component === 'TopBar') {\n return [newRule, { ...newRule, parent: { component: 'MobileDrawer' }, component: 'PanelHeader' }]\n } else {\n return [newRule]\n }\n })\n })\n\n const flatExtRules = extendedRules.filter(x => x).reduce((acc, x) => [...acc, ...x], []).filter(x => x).reduce((acc, x) => [...acc, ...x], [])\n\n return [generateRoot(), ...convertShadows(), ...convertRadii(), ...convertOpacity(), ...convertFonts(), ...flatExtRules]\n}\n","import { convert, brightness, contrastRatio } from 'chromatism'\nimport { rgb2hex, rgba2css, alphaBlendLayers, getTextColor, relativeLuminance, getCssColor } 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 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\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 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\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 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","import { convert, brightness } from 'chromatism'\nimport { alphaBlend, getTextColor, relativeLuminance } from '../color_convert/color_convert.js'\n\nexport const process = (text, functions, { findColor, findShadow }, { dynamicVars, staticVars }) => {\n const { funcName, argsString } = /\\$(?<funcName>\\w+)\\((?<argsString>[#a-zA-Z0-9-,.'\"\\s]*)\\)/.exec(text).groups\n const args = argsString.split(/,/g).map(a => a.trim())\n\n const func = functions[funcName]\n if (args.length < func.argsNeeded) {\n throw new Error(`$${funcName} requires at least ${func.argsNeeded} arguments, but ${args.length} were provided`)\n }\n return func.exec(args, { findColor, findShadow }, { dynamicVars, staticVars })\n}\n\nexport const colorFunctions = {\n alpha: {\n argsNeeded: 2,\n exec: (args, { findColor }, { dynamicVars, staticVars }) => {\n const [color, amountArg] = args\n\n const colorArg = convert(findColor(color, { dynamicVars, staticVars })).rgb\n const amount = Number(amountArg)\n return { ...colorArg, a: amount }\n }\n },\n textColor: {\n argsNeeded: 2,\n exec: (args, { findColor }, { dynamicVars, staticVars }) => {\n const [backgroundArg, foregroundArg, preserve = 'preserve'] = args\n\n const background = convert(findColor(backgroundArg, { dynamicVars, staticVars })).rgb\n const foreground = convert(findColor(foregroundArg, { dynamicVars, staticVars })).rgb\n\n return getTextColor(background, foreground, preserve === 'preserve')\n }\n },\n blend: {\n argsNeeded: 3,\n exec: (args, { findColor }, { dynamicVars, staticVars }) => {\n const [backgroundArg, amountArg, foregroundArg] = args\n\n const background = convert(findColor(backgroundArg, { dynamicVars, staticVars })).rgb\n const foreground = convert(findColor(foregroundArg, { dynamicVars, staticVars })).rgb\n const amount = Number(amountArg)\n\n return alphaBlend(background, amount, foreground)\n }\n },\n mod: {\n argsNeeded: 2,\n exec: (args, { findColor }, { dynamicVars, staticVars }) => {\n const [colorArg, amountArg] = args\n\n const color = convert(findColor(colorArg, { dynamicVars, staticVars })).rgb\n const amount = Number(amountArg)\n\n const effectiveBackground = dynamicVars.lowerLevelBackground\n const isLightOnDark = relativeLuminance(convert(effectiveBackground).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n return brightness(amount * mod, color).rgb\n }\n }\n}\n\nexport const shadowFunctions = {\n borderSide: {\n argsNeeded: 3,\n exec: (args, { findColor }) => {\n const [color, side, alpha = '1', widthArg = '1', inset = 'inset'] = args\n\n const width = Number(widthArg)\n const isInset = inset === 'inset'\n\n const targetShadow = {\n x: 0,\n y: 0,\n blur: 0,\n spread: 0,\n color,\n alpha: Number(alpha),\n inset: isInset\n }\n\n side.split('-').forEach((position) => {\n switch (position) {\n case 'left':\n targetShadow.x = width * (inset ? 1 : -1)\n break\n case 'right':\n targetShadow.x = -1 * width * (inset ? 1 : -1)\n break\n case 'top':\n targetShadow.y = width * (inset ? 1 : -1)\n break\n case 'bottom':\n targetShadow.y = -1 * width * (inset ? 1 : -1)\n break\n }\n })\n return [targetShadow]\n }\n }\n}\n","import { sortBy } from 'lodash'\n\n// \"Unrolls\" a tree structure of item: { parent: { ...item2, parent: { ...item3, parent: {...} } }}\n// into an array [item2, item3] for iterating\nexport const unroll = (item) => {\n const out = []\n let currentParent = item\n while (currentParent) {\n out.push(currentParent)\n currentParent = currentParent.parent\n }\n return out\n}\n\n// This gives you an array of arrays of all possible unique (i.e. order-insensitive) combinations\n// Can only accept primitives. Duplicates are not supported and can cause unexpected behavior\nexport const getAllPossibleCombinations = (array) => {\n const combos = [array.map(x => [x])]\n for (let comboSize = 2; comboSize <= array.length; comboSize++) {\n const previous = combos[combos.length - 1]\n const newCombos = previous.map(self => {\n const selfSet = new Set()\n self.forEach(x => selfSet.add(x))\n const nonSelf = array.filter(x => !selfSet.has(x))\n return nonSelf.map(x => [...self, x])\n })\n const flatCombos = newCombos.reduce((acc, x) => [...acc, ...x], [])\n const uniqueComboStrings = new Set()\n const uniqueCombos = flatCombos.map(sortBy).filter(x => {\n if (uniqueComboStrings.has(x.join())) {\n return false\n } else {\n uniqueComboStrings.add(x.join())\n return true\n }\n })\n combos.push(uniqueCombos)\n }\n return combos.reduce((acc, x) => [...acc, ...x], [])\n}\n\n/**\n * Converts rule, parents and their criteria into a CSS (or path if ignoreOutOfTreeSelector == true)\n * selector.\n *\n * \"path\" here refers to \"fake\" selector that cannot be actually used in UI but is used for internal\n * purposes\n *\n * @param {Object} components - object containing all components definitions\n *\n * @returns {Function}\n * @param {Object} rule - rule in question to convert to CSS selector\n * @param {boolean} ignoreOutOfTreeSelector - wthether to ignore aformentioned field in\n * component definition and use selector\n * @param {boolean} isParent - (mostly) internal argument used when recursing\n *\n * @returns {String} CSS selector (or path)\n */\nexport const genericRuleToSelector = components => (rule, ignoreOutOfTreeSelector, isParent) => {\n if (!rule && !isParent) return null\n const component = components[rule.component]\n const { states = {}, variants = {}, selector, outOfTreeSelector } = component\n\n const applicableStates = ((rule.state || []).filter(x => x !== 'normal')).map(state => states[state])\n\n const applicableVariantName = (rule.variant || 'normal')\n let applicableVariant = ''\n if (applicableVariantName !== 'normal') {\n applicableVariant = variants[applicableVariantName]\n } else {\n applicableVariant = variants?.normal ?? ''\n }\n\n let realSelector\n if (selector === ':root') {\n realSelector = ''\n } else if (isParent) {\n realSelector = selector\n } else {\n if (outOfTreeSelector && !ignoreOutOfTreeSelector) realSelector = outOfTreeSelector\n else realSelector = selector\n }\n\n const selectors = [realSelector, applicableVariant, ...applicableStates]\n .sort((a, b) => {\n if (a.startsWith(':')) return 1\n if (/^[a-z]/.exec(a)) return -1\n else return 0\n })\n .join('')\n\n if (rule.parent) {\n return (genericRuleToSelector(components)(rule.parent, ignoreOutOfTreeSelector, true) + ' ' + selectors).trim()\n }\n return selectors.trim()\n}\n\n/**\n * Check if combination matches\n *\n * @param {Object} criteria - criteria to match against\n * @param {Object} subject - rule/combination to check match\n * @param {boolean} strict - strict checking:\n * By default every variant and state inherits from \"normal\" state/variant\n * so when checking if combination matches, it WILL match against \"normal\"\n * state/variant. In strict mode inheritance is ignored an \"normal\" does\n * not match\n */\nexport const combinationsMatch = (criteria, subject, strict) => {\n if (criteria.component !== subject.component) return false\n\n // All variants inherit from normal\n if (subject.variant !== 'normal' || strict) {\n if (criteria.variant !== subject.variant) return false\n }\n\n // Subject states > 1 essentially means state is \"normal\" and therefore matches\n if (subject.state.length > 1 || strict) {\n const subjectStatesSet = new Set(subject.state)\n const criteriaStatesSet = new Set(criteria.state)\n\n const setsAreEqual =\n [...criteriaStatesSet].every(state => subjectStatesSet.has(state)) &&\n [...subjectStatesSet].every(state => criteriaStatesSet.has(state))\n\n if (!setsAreEqual) return false\n }\n return true\n}\n\n/**\n * Search for rule that matches `criteria` in set of rules\n * meant to be used in a ruleset.filter() function\n *\n * @param {Object} criteria - criteria to search for\n * @param {boolean} strict - whether search strictly or not (see combinationsMatch)\n *\n * @return function that returns true/false if subject matches\n */\nexport const findRules = (criteria, strict) => subject => {\n // If we searching for \"general\" rules - ignore \"specific\" ones\n if (criteria.parent === null && !!subject.parent) return false\n if (!combinationsMatch(criteria, subject, strict)) return false\n\n if (criteria.parent !== undefined && criteria.parent !== null) {\n if (!subject.parent && !strict) return true\n const pathCriteria = unroll(criteria)\n const pathSubject = unroll(subject)\n if (pathCriteria.length < pathSubject.length) return false\n\n // Search: .a .b .c\n // Matches: .a .b .c; .b .c; .c; .z .a .b .c\n // Does not match .a .b .c .d, .a .b .e\n for (let i = 0; i < pathCriteria.length; i++) {\n const criteriaParent = pathCriteria[i]\n const subjectParent = pathSubject[i]\n if (!subjectParent) return true\n if (!combinationsMatch(criteriaParent, subjectParent, strict)) return false\n }\n }\n return true\n}\n\n// Pre-fills 'normal' state/variant if missing\nexport const normalizeCombination = rule => {\n rule.variant = rule.variant ?? 'normal'\n rule.state = [...new Set(['normal', ...(rule.state || [])])]\n}\n","import { convert, brightness } from 'chromatism'\nimport sum from 'hash-sum'\nimport { flattenDeep, sortBy } from 'lodash'\nimport {\n alphaBlend,\n getTextColor,\n rgba2css,\n mixrgb,\n relativeLuminance\n} from '../color_convert/color_convert.js'\n\nimport {\n colorFunctions,\n shadowFunctions,\n process\n} from './theme3_slot_functions.js'\n\nimport {\n unroll,\n getAllPossibleCombinations,\n genericRuleToSelector,\n normalizeCombination,\n findRules\n} from './iss_utils.js'\nimport { parseCssShadow } from './css_utils.js'\n\n// Ensuring the order of components\nconst components = {\n Root: null,\n Text: null,\n FunText: null,\n Link: null,\n Icon: null,\n Border: null,\n Panel: null,\n Chat: null,\n ChatMessage: null\n}\n\nconst findShadow = (shadows, { dynamicVars, staticVars }) => {\n return (shadows || []).map(shadow => {\n let targetShadow\n if (typeof shadow === 'string') {\n if (shadow.startsWith('$')) {\n targetShadow = process(shadow, shadowFunctions, { findColor, findShadow }, { dynamicVars, staticVars })\n } else if (shadow.startsWith('--')) {\n const [variable] = shadow.split(/,/g).map(str => str.trim()) // discarding modifier since it's not supported\n const variableSlot = variable.substring(2)\n return findShadow(staticVars[variableSlot], { dynamicVars, staticVars })\n } else {\n targetShadow = parseCssShadow(shadow)\n }\n } else {\n targetShadow = shadow\n }\n\n const shadowArray = Array.isArray(targetShadow) ? targetShadow : [targetShadow]\n return shadowArray.map(s => ({\n ...s,\n color: findColor(s.color, { dynamicVars, staticVars })\n }))\n })\n}\n\nconst findColor = (color, { dynamicVars, staticVars }) => {\n if (typeof color !== 'string' || (!color.startsWith('--') && !color.startsWith('$'))) return color\n let targetColor = null\n if (color.startsWith('--')) {\n const [variable, modifier] = color.split(/,/g).map(str => str.trim())\n const variableSlot = variable.substring(2)\n if (variableSlot === 'stack') {\n const { r, g, b } = dynamicVars.stacked\n targetColor = { r, g, b }\n } else if (variableSlot.startsWith('parent')) {\n if (variableSlot === 'parent') {\n const { r, g, b } = dynamicVars.lowerLevelBackground\n targetColor = { r, g, b }\n } else {\n const virtualSlot = variableSlot.replace(/^parent/, '')\n targetColor = convert(dynamicVars.lowerLevelVirtualDirectivesRaw[virtualSlot]).rgb\n }\n } else {\n switch (variableSlot) {\n case 'inheritedBackground':\n targetColor = convert(dynamicVars.inheritedBackground).rgb\n break\n case 'background':\n targetColor = convert(dynamicVars.background).rgb\n break\n default:\n targetColor = convert(staticVars[variableSlot]).rgb\n }\n }\n\n if (modifier) {\n const effectiveBackground = dynamicVars.lowerLevelBackground ?? targetColor\n const isLightOnDark = relativeLuminance(convert(effectiveBackground).rgb) < 0.5\n const mod = isLightOnDark ? 1 : -1\n targetColor = brightness(Number.parseFloat(modifier) * mod, targetColor).rgb\n }\n }\n\n if (color.startsWith('$')) {\n try {\n targetColor = process(color, colorFunctions, { findColor }, { dynamicVars, staticVars })\n } catch (e) {\n console.error('Failure executing color function', e)\n targetColor = '#FF00FF'\n }\n }\n // Color references other color\n return targetColor\n}\n\nconst getTextColorAlpha = (directives, intendedTextColor, dynamicVars, staticVars) => {\n const opacity = directives.textOpacity\n const backgroundColor = convert(dynamicVars.lowerLevelBackground).rgb\n const textColor = convert(findColor(intendedTextColor, { dynamicVars, staticVars })).rgb\n if (opacity === null || opacity === undefined || opacity >= 1) {\n return convert(textColor).hex\n }\n if (opacity === 0) {\n return convert(backgroundColor).hex\n }\n const opacityMode = directives.textOpacityMode\n switch (opacityMode) {\n case 'fake':\n return convert(alphaBlend(textColor, opacity, backgroundColor)).hex\n case 'mixrgb':\n return convert(mixrgb(backgroundColor, textColor)).hex\n default:\n return rgba2css({ a: opacity, ...textColor })\n }\n}\n\n// Loading all style.js[on] files dynamically\nconst componentsContext = require.context('src', true, /\\.style.js(on)?$/)\ncomponentsContext.keys().forEach(key => {\n const component = componentsContext(key).default\n if (components[component.name] != null) {\n console.warn(`Component in file ${key} is trying to override existing component ${component.name}! You have collisions/duplicates!`)\n }\n components[component.name] = component\n})\n\nconst engineChecksum = sum(components)\n\nconst ruleToSelector = genericRuleToSelector(components)\n\nexport const getEngineChecksum = () => engineChecksum\n\n/**\n * Initializes and compiles the theme according to the ruleset\n *\n * @param {Object[]} inputRuleset - set of rules to compile theme against. Acts as an override to\n * component default rulesets\n * @param {string} ultimateBackgroundColor - Color that will be the \"final\" background for\n * calculating contrast ratios and making text automatically accessible. Really used for cases when\n * stuff is transparent.\n * @param {boolean} debug - print out debug information in console, mostly just performance stuff\n * @param {boolean} liteMode - use validInnerComponentsLite instead of validInnerComponents, meant to\n * generatate theme previews and such that need to be compiled faster and don't require a lot of other\n * components present in \"normal\" mode\n * @param {boolean} onlyNormalState - only use components 'normal' states, meant for generating theme\n * previews since states are the biggest factor for compilation time and are completely unnecessary\n * when previewing multiple themes at same time\n * @param {string} rootComponentName - [UNTESTED] which component to start from, meant for previewing a\n * part of the theme (i.e. just the button) for themes 3 editor.\n */\nexport const init = ({\n inputRuleset,\n ultimateBackgroundColor,\n debug = false,\n liteMode = false,\n onlyNormalState = false,\n rootComponentName = 'Root'\n}) => {\n if (!inputRuleset) throw new Error('Ruleset is null or undefined!')\n const staticVars = {}\n const stacked = {}\n const computed = {}\n\n const rulesetUnsorted = [\n ...Object.values(components)\n .map(c => (c.defaultRules || []).map(r => ({ component: c.name, ...r, source: 'Built-in' })))\n .reduce((acc, arr) => [...acc, ...arr], []),\n ...inputRuleset\n ].map(rule => {\n normalizeCombination(rule)\n let currentParent = rule.parent\n while (currentParent) {\n normalizeCombination(currentParent)\n currentParent = currentParent.parent\n }\n\n return rule\n })\n\n const ruleset = rulesetUnsorted\n .map((data, index) => ({ data, index }))\n .sort(({ data: a, index: ai }, { data: b, index: bi }) => {\n const parentsA = unroll(a).length\n const parentsB = unroll(b).length\n\n if (parentsA === parentsB) {\n if (a.component === 'Text') return -1\n if (b.component === 'Text') return 1\n return ai - bi\n }\n if (parentsA === 0 && parentsB !== 0) return -1\n if (parentsB === 0 && parentsA !== 0) return 1\n return parentsA - parentsB\n })\n .map(({ data }) => data)\n\n const virtualComponents = new Set(Object.values(components).filter(c => c.virtual).map(c => c.name))\n\n const processCombination = (combination) => {\n const selector = ruleToSelector(combination, true)\n const cssSelector = ruleToSelector(combination)\n\n const parentSelector = selector.split(/ /g).slice(0, -1).join(' ')\n const soloSelector = selector.split(/ /g).slice(-1)[0]\n\n const lowerLevelSelector = parentSelector\n const lowerLevelBackground = computed[lowerLevelSelector]?.background\n const lowerLevelVirtualDirectives = computed[lowerLevelSelector]?.virtualDirectives\n const lowerLevelVirtualDirectivesRaw = computed[lowerLevelSelector]?.virtualDirectivesRaw\n\n const dynamicVars = computed[selector] || {\n lowerLevelBackground,\n lowerLevelVirtualDirectives,\n lowerLevelVirtualDirectivesRaw\n }\n\n // Inheriting all of the applicable rules\n const existingRules = ruleset.filter(findRules(combination))\n const computedDirectives = existingRules.map(r => r.directives).reduce((acc, directives) => ({ ...acc, ...directives }), {})\n const computedRule = {\n ...combination,\n directives: computedDirectives\n }\n\n computed[selector] = computed[selector] || {}\n computed[selector].computedRule = computedRule\n computed[selector].dynamicVars = dynamicVars\n\n if (virtualComponents.has(combination.component)) {\n const virtualName = [\n '--',\n combination.component.toLowerCase(),\n combination.variant === 'normal'\n ? ''\n : combination.variant[0].toUpperCase() + combination.variant.slice(1).toLowerCase(),\n ...sortBy(combination.state.filter(x => x !== 'normal')).map(state => state[0].toUpperCase() + state.slice(1).toLowerCase())\n ].join('')\n\n let inheritedTextColor = computedDirectives.textColor\n let inheritedTextAuto = computedDirectives.textAuto\n let inheritedTextOpacity = computedDirectives.textOpacity\n let inheritedTextOpacityMode = computedDirectives.textOpacityMode\n const lowerLevelTextSelector = [...selector.split(/ /g).slice(0, -1), soloSelector].join(' ')\n const lowerLevelTextRule = computed[lowerLevelTextSelector]\n\n if (inheritedTextColor == null || inheritedTextOpacity == null || inheritedTextOpacityMode == null) {\n inheritedTextColor = computedDirectives.textColor ?? lowerLevelTextRule.textColor\n inheritedTextAuto = computedDirectives.textAuto ?? lowerLevelTextRule.textAuto\n inheritedTextOpacity = computedDirectives.textOpacity ?? lowerLevelTextRule.textOpacity\n inheritedTextOpacityMode = computedDirectives.textOpacityMode ?? lowerLevelTextRule.textOpacityMode\n }\n\n const newTextRule = {\n ...computedRule,\n directives: {\n ...computedRule.directives,\n textColor: inheritedTextColor,\n textAuto: inheritedTextAuto ?? 'preserve',\n textOpacity: inheritedTextOpacity,\n textOpacityMode: inheritedTextOpacityMode\n }\n }\n\n dynamicVars.inheritedBackground = lowerLevelBackground\n dynamicVars.stacked = convert(stacked[lowerLevelSelector]).rgb\n\n const intendedTextColor = convert(findColor(inheritedTextColor, { dynamicVars, staticVars })).rgb\n const textColor = newTextRule.directives.textAuto === 'no-auto'\n ? intendedTextColor\n : getTextColor(\n convert(stacked[lowerLevelSelector]).rgb,\n intendedTextColor,\n newTextRule.directives.textAuto === 'preserve'\n )\n const virtualDirectives = computed[lowerLevelSelector].virtualDirectives || {}\n const virtualDirectivesRaw = computed[lowerLevelSelector].virtualDirectivesRaw || {}\n\n // Storing color data in lower layer to use as custom css properties\n virtualDirectives[virtualName] = getTextColorAlpha(newTextRule.directives, textColor, dynamicVars)\n virtualDirectivesRaw[virtualName] = textColor\n\n computed[lowerLevelSelector].virtualDirectives = virtualDirectives\n computed[lowerLevelSelector].virtualDirectivesRaw = virtualDirectivesRaw\n\n return {\n dynamicVars,\n selector: cssSelector.split(/ /g).slice(0, -1).join(' '),\n ...combination,\n directives: {},\n virtualDirectives: {\n [virtualName]: getTextColorAlpha(newTextRule.directives, textColor, dynamicVars)\n },\n virtualDirectivesRaw: {\n [virtualName]: textColor\n }\n }\n } else {\n computed[selector] = computed[selector] || {}\n\n // TODO: DEFAULT TEXT COLOR\n const lowerLevelStackedBackground = stacked[lowerLevelSelector] || convert(ultimateBackgroundColor).rgb\n\n if (computedDirectives.background) {\n let inheritRule = null\n const variantRules = ruleset.filter(\n findRules({\n component: combination.component,\n variant: combination.variant,\n parent: combination.parent\n })\n )\n const lastVariantRule = variantRules[variantRules.length - 1]\n if (lastVariantRule) {\n inheritRule = lastVariantRule\n } else {\n const normalRules = ruleset.filter(findRules({\n component: combination.component,\n parent: combination.parent\n }))\n const lastNormalRule = normalRules[normalRules.length - 1]\n inheritRule = lastNormalRule\n }\n\n const inheritSelector = ruleToSelector({ ...inheritRule, parent: combination.parent }, true)\n const inheritedBackground = computed[inheritSelector].background\n\n dynamicVars.inheritedBackground = inheritedBackground\n\n const rgb = convert(findColor(computedDirectives.background, { dynamicVars, staticVars })).rgb\n\n if (!stacked[selector]) {\n let blend\n const alpha = computedDirectives.opacity ?? 1\n if (alpha >= 1) {\n blend = rgb\n } else if (alpha <= 0) {\n blend = lowerLevelStackedBackground\n } else {\n blend = alphaBlend(rgb, computedDirectives.opacity, lowerLevelStackedBackground)\n }\n stacked[selector] = blend\n computed[selector].background = { ...rgb, a: computedDirectives.opacity ?? 1 }\n }\n }\n\n if (computedDirectives.shadow) {\n dynamicVars.shadow = flattenDeep(findShadow(flattenDeep(computedDirectives.shadow), { dynamicVars, staticVars }))\n }\n\n if (!stacked[selector]) {\n computedDirectives.background = 'transparent'\n computedDirectives.opacity = 0\n stacked[selector] = lowerLevelStackedBackground\n computed[selector].background = { ...lowerLevelStackedBackground, a: 0 }\n }\n\n dynamicVars.stacked = stacked[selector]\n dynamicVars.background = computed[selector].background\n\n const dynamicSlots = Object.entries(computedDirectives).filter(([k, v]) => k.startsWith('--'))\n\n dynamicSlots.forEach(([k, v]) => {\n const [type, ...value] = v.split('|').map(x => x.trim()) // woah, Extreme!\n switch (type) {\n case 'color': {\n const color = findColor(value[0], { dynamicVars, staticVars })\n dynamicVars[k] = color\n if (combination.component === 'Root') {\n staticVars[k.substring(2)] = color\n }\n break\n }\n case 'shadow': {\n const shadow = value\n dynamicVars[k] = shadow\n if (combination.component === 'Root') {\n staticVars[k.substring(2)] = shadow\n }\n break\n }\n case 'generic': {\n dynamicVars[k] = value\n if (combination.component === 'Root') {\n staticVars[k.substring(2)] = value\n }\n break\n }\n }\n })\n\n const rule = {\n dynamicVars,\n selector: cssSelector,\n ...combination,\n directives: computedDirectives\n }\n\n return rule\n }\n }\n\n const processInnerComponent = (component, parent) => {\n const combinations = []\n const {\n states: originalStates = {},\n variants: originalVariants = {}\n } = component\n\n const validInnerComponents = (\n liteMode\n ? (component.validInnerComponentsLite || component.validInnerComponents)\n : component.validInnerComponents\n ) || []\n\n // Normalizing states and variants to always include \"normal\"\n const states = { normal: '', ...originalStates }\n const variants = { normal: '', ...originalVariants }\n const innerComponents = (validInnerComponents).map(name => {\n const result = components[name]\n if (result === undefined) console.error(`Component ${component.name} references a component ${name} which does not exist!`)\n return result\n })\n\n // Optimization: we only really need combinations without \"normal\" because all states implicitly have it\n const permutationStateKeys = Object.keys(states).filter(s => s !== 'normal')\n const stateCombinations = onlyNormalState\n ? [\n ['normal']\n ]\n : [\n ['normal'],\n ...getAllPossibleCombinations(permutationStateKeys)\n .map(combination => ['normal', ...combination])\n .filter(combo => {\n // Optimization: filter out some hard-coded combinations that don't make sense\n if (combo.indexOf('disabled') >= 0) {\n return !(\n combo.indexOf('hover') >= 0 ||\n combo.indexOf('focused') >= 0 ||\n combo.indexOf('pressed') >= 0\n )\n }\n return true\n })\n ]\n\n const stateVariantCombination = Object.keys(variants).map(variant => {\n return stateCombinations.map(state => ({ variant, state }))\n }).reduce((acc, x) => [...acc, ...x], [])\n\n stateVariantCombination.forEach(combination => {\n combination.component = component.name\n combination.lazy = component.lazy || parent?.lazy\n combination.parent = parent\n if (combination.state.indexOf('hover') >= 0) {\n combination.lazy = true\n }\n\n combinations.push(combination)\n\n innerComponents.forEach(innerComponent => {\n combinations.push(...processInnerComponent(innerComponent, combination))\n })\n })\n\n return combinations\n }\n\n const t0 = performance.now()\n const combinations = processInnerComponent(components[rootComponentName] ?? components.Root)\n const t1 = performance.now()\n if (debug) {\n console.debug('Tree traveral took ' + (t1 - t0) + ' ms')\n }\n\n const result = combinations.map((combination) => {\n if (combination.lazy) {\n return async () => processCombination(combination)\n } else {\n return processCombination(combination)\n }\n }).filter(x => x)\n const t2 = performance.now()\n if (debug) {\n console.debug('Eager processing took ' + (t2 - t1) + ' ms')\n }\n\n return {\n lazy: result.filter(x => typeof x === 'function'),\n eager: result.filter(x => typeof x !== 'function'),\n staticVars,\n engineChecksum\n }\n}\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=\"input 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=\"compact ? '2x' : '5x'\"\n :icon=\"placeholderIconClass\"\n :title=\"localDescription\"\n />\n <p v-if=\"!compact\">\n {{ localDescription }}\n </p>\n </a>\n\n <component\n :is=\"videoTag\"\n v-if=\"type === 'video' && !hidden\"\n class=\"video-container\"\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=\"input 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 'compact',\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 '-compact': this.compact\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=41bf8732\"\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 \"/Users/lainsoykaf/repos/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.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: var(--roundness);\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=5aea997c\"\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=5aea997c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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\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=3af1eb0e\"\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=3af1eb0e&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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, 'indeterminate-fix': indeterminateTransitionFix }\"\n >\n <input\n type=\"checkbox\"\n class=\"visible-for-screenreader-only\"\n :disabled=\"disabled\"\n :checked=\"modelValue\"\n :indeterminate=\"indeterminate\"\n @change=\"$emit('update:modelValue', $event.target.checked)\"\n >\n <i\n class=\"input -checkbox checkbox-indicator\"\n :aria-hidden=\"true\"\n @transitionend.capture=\"onTransitionEnd\"\n />\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 data: (vm) => ({\n indeterminateTransitionFix: vm.indeterminate\n }),\n watch: {\n indeterminate (e) {\n if (e) {\n this.indeterminateTransitionFix = true\n }\n }\n },\n methods: {\n onTransitionEnd (e) {\n if (!this.indeterminate) {\n this.indeterminateTransitionFix = false\n }\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n@import \"../../mixins\";\n\n.checkbox {\n position: relative;\n display: inline-block;\n min-height: 1.2em;\n\n & > &-indicator {\n /* Reset .input stuff */\n padding: 0;\n margin: 0;\n position: relative;\n line-height: inherit;\n display: inline;\n padding-left: 1.2em;\n box-shadow: none;\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: var(--roundness);\n box-shadow: var(--shadow);\n background-color: var(--background);\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: 0.5;\n }\n\n .label {\n color: var(--text);\n }\n }\n\n input[type=\"checkbox\"] {\n &:checked + .checkbox-indicator::before {\n color: var(--text);\n }\n\n &:indeterminate + .checkbox-indicator::before {\n content: \"–\";\n color: var(--text);\n }\n }\n\n &.indeterminate-fix {\n input[type=\"checkbox\"] + .checkbox-indicator::before {\n content: \"–\";\n }\n }\n\n & > span {\n margin-left: 0.5em;\n }\n}\n</style>\n","import { render } from \"./checkbox.vue?vue&type=template&id=fbadb12c\"\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=fbadb12c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import DialogModal from '../dialog_modal/dialog_modal.vue'\n\n/**\n * This component emits the following events:\n * cancelled, emitted when the action should not be performed;\n * accepted, emitted when the action should be performed;\n *\n * The caller should close this dialog after receiving any of the two events.\n */\nconst ConfirmModal = {\n components: {\n DialogModal\n },\n props: {\n title: {\n type: String\n },\n cancelText: {\n type: String\n },\n confirmText: {\n type: String\n }\n },\n computed: {\n },\n methods: {\n onCancel () {\n this.$emit('cancelled')\n },\n onAccept () {\n this.$emit('accepted')\n }\n }\n}\n\nexport default ConfirmModal\n","import { render } from \"./confirm_modal.vue?vue&type=template&id=c74bcd96\"\nimport script from \"./confirm_modal.js?vue&type=script&lang=js\"\nexport * from \"./confirm_modal.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <dialog-modal\n v-body-scroll-lock=\"true\"\n class=\"confirm-modal\"\n :on-cancel=\"onCancel\"\n >\n <template #header>\n <span v-text=\"title\" />\n </template>\n\n <slot />\n\n <template #footer>\n <button\n class=\"btn button-default\"\n @click.prevent=\"onAccept\"\n v-text=\"confirmText\"\n />\n\n <button\n class=\"btn button-default\"\n @click.prevent=\"onCancel\"\n v-text=\"cancelText\"\n />\n </template>\n </dialog-modal>\n</template>\n\n<script src=\"./confirm_modal.js\"></script>\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=\"panel-body 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// 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: rgb(27 31 35 / 50%);\n z-index: 2000;\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: 2001;\n cursor: default;\n display: block;\n\n .dialog-modal-heading {\n .title {\n text-align: center;\n }\n }\n\n .dialog-modal-content {\n margin: 0;\n padding: 1rem;\n white-space: normal;\n }\n\n .dialog-modal-footer {\n margin: 0;\n padding: 0.5em;\n border-top: 1px solid var(--border);\n display: flex;\n justify-content: flex-end;\n\n button {\n width: auto;\n margin-left: 0.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=9ae1905c\"\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=9ae1905c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"input emoji-input\"\n :class=\"{ 'with-picker': !hideEmojiButton }\"\n >\n <slot\n :id=\"'textbox-' + randomSeed\"\n :aria-owns=\"suggestionListId\"\n aria-autocomplete=\"both\"\n :aria-expanded=\"showSuggestions\"\n :aria-activedescendant=\"(!showSuggestions || highlighted === -1) ? '' : suggestionItemId(highlighted)\"\n />\n <!-- TODO: make the 'x' disappear if at the end maybe? -->\n <div\n ref=\"hiddenOverlay\"\n class=\"hidden-overlay\"\n :style=\"overlayStyle\"\n :aria-hidden=\"true\"\n >\n <span>{{ preText }}</span>\n <span\n ref=\"hiddenOverlayCaret\"\n class=\"caret\"\n >x</span>\n <span>{{ postText }}</span>\n </div>\n <screen-reader-notice\n ref=\"screenReaderNotice\"\n aria-live=\"assertive\"\n />\n <template v-if=\"enableEmojiPicker\">\n <button\n v-if=\"!hideEmojiButton\"\n class=\"button-unstyled emoji-picker-icon\"\n type=\"button\"\n :title=\"$t('emoji.add_emoji')\"\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 :trigger-attrs=\"{ 'aria-hidden': true }\"\n >\n <template #content>\n <div\n :id=\"suggestionListId\"\n ref=\"panel-body\"\n class=\"autocomplete-panel-body\"\n role=\"listbox\"\n >\n <div\n v-for=\"(suggestion, index) in suggestions\"\n :id=\"suggestionItemId(index)\"\n :key=\"index\"\n class=\"menu-item autocomplete-item\"\n role=\"option\"\n :class=\"{ '-active': index === highlighted }\"\n :aria-label=\"autoCompleteItemLabel(suggestion)\"\n :aria-selected=\"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.input.emoji-input {\n padding: 0;\n display: flex;\n flex-direction: column;\n position: relative;\n\n .emoji-picker-icon {\n position: absolute;\n top: 0;\n right: 0;\n margin: 0.2em 0.25em;\n font-size: 1.3em;\n cursor: pointer;\n line-height: 24px;\n\n &:hover i {\n color: var(--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,\n textarea {\n flex: 1 0 auto;\n color: inherit;\n /* stylelint-disable-next-line declaration-no-important */\n background: none !important;\n box-shadow: none;\n border: none;\n outline: none;\n }\n\n &.with-picker input {\n padding-right: 30px;\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\n /* DEBUG STUFF */\n color: red;\n\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\n.autocomplete {\n &-panel {\n position: absolute;\n }\n\n &-item.menu-item {\n display: flex;\n padding-top: 0;\n padding-bottom: 0;\n\n .image {\n width: calc(var(--__line-height) + var(--__vertical-gap) * 2);\n height: calc(var(--__line-height) + var(--__vertical-gap) * 2);\n line-height: var(--__line-height);\n text-align: center;\n margin-right: var(--__horizontal-gap);\n\n img {\n width: calc(var(--__line-height) + var(--__vertical-gap) * 2);\n height: calc(var(--__line-height) + var(--__vertical-gap) * 2);\n object-fit: contain;\n }\n\n span {\n font-size: var(--__line-height);\n line-height: var(--__line-height);\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}\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","const ScreenReaderNotice = {\n props: {\n ariaLive: {\n type: String,\n default: 'assertive'\n }\n },\n data () {\n return {\n currentText: ''\n }\n },\n methods: {\n announce (text) {\n this.currentText = text\n setTimeout(() => { this.currentText = '' }, 1000)\n }\n }\n}\n\nexport default ScreenReaderNotice\n","import { render } from \"./screen_reader_notice.vue?vue&type=template&id=4978e64a\"\nimport script from \"./screen_reader_notice.js?vue&type=script&lang=js\"\nexport * from \"./screen_reader_notice.js?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"visible-for-screenreader-only\"\n :aria-live=\"ariaLive\"\n >\n {{ currentText }}\n </div>\n</template>\n\n<script src=\"./screen_reader_notice.js\"></script>\n","import Completion from '../../services/completion/completion.js'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport Popover from 'src/components/popover/popover.vue'\nimport ScreenReaderNotice from 'src/components/screen_reader_notice/screen_reader_notice.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 randomSeed: genRandomSeed(),\n input: undefined,\n caretEl: undefined,\n highlighted: -1,\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 ScreenReaderNotice\n },\n computed: {\n padEmoji () {\n return this.$store.getters.mergedConfig.padEmoji\n },\n defaultCandidateIndex () {\n return this.$store.getters.mergedConfig.autocompleteSelect ? 0 : -1\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 suggestionListId () {\n return `suggestions-${this.randomSeed}`\n },\n suggestionItemId () {\n return (index) => `suggestion-item-${index}-${this.randomSeed}`\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 this.highlighted = this.defaultCandidateIndex\n this.$refs.screenReaderNotice.announce(\n this.$tc('tool_tip.autocomplete_available',\n this.suggestions.length,\n { number: this.suggestions.length }))\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\n this.highlighted -= 1\n if (this.highlighted === -1) {\n this.input.focus()\n } else if (this.highlighted < -1) {\n this.highlighted = len - 1\n }\n if (len > 0) {\n e.preventDefault()\n }\n },\n cycleForward (e) {\n const len = this.suggestions.length || 0\n\n this.highlighted += 1\n if (this.highlighted >= len) {\n this.highlighted = -1\n this.input.focus()\n }\n if (len > 0) {\n e.preventDefault()\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 autoCompleteItemLabel (suggestion) {\n if (suggestion.user) {\n return suggestion.displayText + ' ' + suggestion.detailText\n } else {\n return this.maybeLocalizedEmojiName(suggestion)\n }\n }\n }\n}\n\nexport default EmojiInput\n","import { render } from \"./emoji_input.vue?vue&type=template&id=463d5435\"\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=463d5435&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"click\"\n popover-class=\"emoji-picker popover-default\"\n :trigger-attrs=\"{ 'aria-hidden': true, tabindex: -1 }\"\n @show=\"onPopoverShown\"\n @close=\"onPopoverClosed\"\n >\n <template #content>\n <div class=\"heading\">\n <!--\n Body scroll lock needs to be on every scrollable element on safari iOS.\n Here we tell it to enable scrolling for this element.\n See https://github.com/willmcpo/body-scroll-lock#vanilla-js\n -->\n <span\n ref=\"header\"\n v-body-scroll-lock=\"isInModal\"\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=\"button-unstyled emoji-tabs-item\"\n :class=\"{\n toggled: activeGroupView === group.id\n }\"\n :title=\"group.text\"\n role=\"button\"\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=\"button-unstyled stickers-tab-icon additional-tabs-item\"\n :class=\"{toggled: 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=\"input form-control\"\n :placeholder=\"$t('emoji.search_emoji')\"\n @input=\"$event.target.composing = false\"\n >\n </div>\n <!-- Enables scrolling for this element on safari iOS. See comments for header. -->\n <DynamicScroller\n ref=\"emoji-groups\"\n v-body-scroll-lock=\"isInModal\"\n class=\"emoji-groups\"\n :class=\"groupsScrolledClass\"\n :min-item-size=\"minItemSize\"\n :items=\"emojiItems\"\n :emit-update=\"true\"\n @update=\"onScroll\"\n @visible=\"recalculateItemPerRow\"\n @resize=\"recalculateItemPerRow\"\n >\n <template #default=\"{ item: group, index, active }\">\n <DynamicScrollerItem\n :ref=\"setGroupRef('group-' + group.id)\"\n :item=\"group\"\n :active=\"active\"\n :data-index=\"index\"\n :size-dependencies=\"[group.emojis.length]\"\n >\n <div\n class=\"emoji-group\"\n >\n <h6\n v-if=\"group.isFirstRow\"\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 role=\"button\"\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 class=\"emoji-picker-emoji -custom\"\n loading=\"lazy\"\n :alt=\"maybeLocalizedEmojiName(emoji)\"\n :src=\"emoji.imageUrl\"\n :data-emoji-name=\"group.id + emoji.displayText\"\n />\n </span>\n </div>\n </DynamicScrollerItem>\n </template>\n </DynamicScroller>\n <div class=\"keep-open\">\n <Checkbox v-model=\"keepOpen\">\n {{ $t('emoji.keep_open') }}\n </Checkbox>\n </div>\n <div\n v-if=\"!hideCustomEmoji\"\n class=\"hide-custom-emoji\"\n >\n <Checkbox\n v-model=\"hideCustomEmojiInPicker\"\n @change=\"onShowing\"\n >\n {{ $t('emoji.hide_custom_emoji') }}\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 { 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, chunk } 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 getOffset = (elem) => {\n const style = elem.style.transform\n const res = /translateY\\((\\d+)px\\)/.exec(style)\n if (!res) { return 0 }\n return res[1]\n}\n\nconst toHeaderId = id => {\n return id.replace(/^row-\\d+-/, '')\n}\n\nconst EmojiPicker = {\n props: {\n enableStickerPicker: {\n required: false,\n type: Boolean,\n default: false\n },\n hideCustomEmoji: {\n required: false,\n type: Boolean,\n default: false\n }\n },\n inject: ['popoversZLayer'],\n data () {\n return {\n keyword: '',\n activeGroup: 'custom',\n showingStickers: false,\n groupsScrolledClass: 'scrolled-top',\n keepOpen: false,\n customEmojiTimeout: null,\n hideCustomEmojiInPicker: false,\n // Lazy-load only after the first time `showing` becomes true.\n contentLoaded: false,\n groupRefs: {},\n emojiRefs: {},\n filteredEmojiGroups: [],\n emojiSize: 0,\n width: 0\n }\n },\n components: {\n StickerPicker: defineAsyncComponent(() => import('../sticker_picker/sticker_picker.vue')),\n Checkbox,\n StillImage,\n Popover\n },\n methods: {\n updateEmojiSize () {\n const css = window.getComputedStyle(this.$refs.popover.$el)\n const emojiSize = css.getPropertyValue('--emojiSize')\n const emojiSizeUnit = emojiSize.replace(/[0-9,.]+/, '')\n const emojiSizeValue = Number(emojiSize.replace(/[^0-9,.]+/, ''))\n const fontSize = css.getPropertyValue('font-size').replace(/[^0-9,.]+/, '')\n\n let emojiSizeReal\n if (emojiSizeUnit.endsWith('em')) {\n emojiSizeReal = emojiSizeValue * fontSize\n } else {\n emojiSizeReal = emojiSizeValue\n }\n\n const fullEmojiSize = emojiSizeReal + (2 * 0.2 * fontSize)\n this.emojiSize = fullEmojiSize\n },\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 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 (startIndex, endIndex, visibleStartIndex, visibleEndIndex) {\n const target = this.$refs['emoji-groups'].$el\n this.scrolledGroup(target, visibleStartIndex, visibleEndIndex)\n },\n scrolledGroup (target, start, end) {\n const top = target.scrollTop + 5\n this.$nextTick(() => {\n this.emojiItems.slice(start, end + 1).forEach(group => {\n const headerId = toHeaderId(group.id)\n const ref = this.groupRefs['group-' + group.id]\n if (!ref) { return }\n const elem = ref.$el.parentElement\n if (!elem) { return }\n if (elem && getOffset(elem) <= top) {\n this.activeGroup = headerId\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 (groupId) {\n this.setShowStickers(false)\n const indexInList = this.emojiItems.findIndex(k => k.id === groupId)\n this.$refs['emoji-groups'].scrollToItem(indexInList)\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 onShowing () {\n const oldContentLoaded = this.contentLoaded\n this.updateEmojiSize()\n this.recalculateItemPerRow()\n this.$nextTick(() => {\n this.$refs.search.focus()\n })\n this.contentLoaded = true\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 recalculateItemPerRow () {\n this.$nextTick(() => {\n if (!this.$refs['emoji-groups']) {\n return\n }\n this.width = this.$refs['emoji-groups'].$el.clientWidth\n })\n }\n },\n watch: {\n keyword () {\n this.onScroll()\n this.debouncedHandleKeywordChange()\n },\n allCustomGroups () {\n this.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }\n },\n computed: {\n minItemSize () {\n return this.emojiSize\n },\n // used to watch it\n fontSize () {\n this.$nextTick(() => {\n this.updateEmojiSize()\n })\n return this.$store.getters.mergedConfig.fontSize\n },\n emojiHeight () {\n return this.emojiSize\n },\n itemPerRow () {\n return this.width ? Math.floor(this.width / this.emojiSize) : 6\n },\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 if (this.hideCustomEmoji || this.hideCustomEmojiInPicker) {\n return {}\n }\n const emojis = this.$store.getters.groupedCustomEmojis\n if (emojis.unpacked) {\n emojis.unpacked.text = this.$t('emoji.unpacked')\n }\n return emojis\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.filteredEmojiGroups = this.getFilteredEmojiGroups()\n }, 500)\n },\n emojiItems () {\n return this.filteredEmojiGroups.map(group =>\n chunk(group.emojis, this.itemPerRow)\n .map((items, index) => ({\n ...group,\n id: index === 0 ? group.id : `row-${index}-${group.id}`,\n emojis: items,\n isFirstRow: index === 0\n })))\n .reduce((a, c) => a.concat(c), [])\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 isInModal () {\n return this.popoversZLayer === 'modals'\n }\n }\n}\n\nexport default EmojiPicker\n","import { render } from \"./emoji_picker.vue?vue&type=template&id=4f641be7\"\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 \"/Users/lainsoykaf/repos/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.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=4b2584d4\"\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=4b2584d4&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { requestFollow, requestUnfollow } from '../../services/follow_manipulate/follow_manipulate'\nexport default {\n props: ['relationship', 'user', 'labelFollowing', 'buttonClass'],\n components: {\n ConfirmModal\n },\n data () {\n return {\n inProgress: false,\n showingConfirmUnfollow: false\n }\n },\n computed: {\n shouldConfirmUnfollow () {\n return this.$store.getters.mergedConfig.modalOnUnfollow\n },\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 showConfirmUnfollow () {\n this.showingConfirmUnfollow = true\n },\n hideConfirmUnfollow () {\n this.showingConfirmUnfollow = false\n },\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 if (this.shouldConfirmUnfollow) {\n this.showConfirmUnfollow()\n } else {\n this.doUnfollow()\n }\n },\n doUnfollow () {\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 this.hideConfirmUnfollow()\n }\n }\n}\n","import { render } from \"./follow_button.vue?vue&type=template&id=6a0717e7\"\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 \"/Users/lainsoykaf/repos/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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmUnfollow\"\n :title=\"$t('user_card.unfollow_confirm_title')\"\n :confirm-text=\"$t('user_card.unfollow_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.unfollow_confirm_cancel_button')\"\n @accepted=\"doUnfollow\"\n @cancelled=\"hideConfirmUnfollow\"\n >\n <i18n-t\n keypath=\"user_card.unfollow_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\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 :compact=\"compact\"\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.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 .gallery-row-inner {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-flow: row wrap;\n align-content: stretch;\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\n &:last-child {\n margin: 0;\n }\n }\n\n &.-grid {\n width: 100%;\n height: auto;\n position: relative;\n display: grid;\n grid-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 &.-grid,\n &.-minimal {\n height: auto;\n\n .gallery-row-inner {\n position: relative;\n }\n }\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 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</style>\n","import Attachment from '../attachment/attachment.vue'\nimport { sumBy, set } from 'lodash'\n\nconst Gallery = {\n props: [\n 'attachments',\n 'compact',\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=63648f45\"\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=63648f45&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"interface-language-switcher\">\n <label>\n {{ promptText }}\n </label>\n <ul class=\"setting-list\">\n <li\n v-for=\"index of controlledLanguage.keys()\"\n :key=\"index\"\n >\n <label>\n {{ index === 0 ? $t('settings.primary_language') : $tc('settings.fallback_language', index, { index }) }}\n <Select\n class=\"language-select\"\n :model-value=\"controlledLanguage[index]\"\n @update:modelValue=\"val => setLanguageAt(index, val)\"\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 </label>\n <button\n v-if=\"controlledLanguage.length > 1 && index !== 0\"\n class=\"button-default btn\"\n @click=\"() => removeLanguageAt(index)\"\n >\n {{ $t('settings.remove_language') }}\n </button>\n </li>\n <li>\n <button\n class=\"button-default btn\"\n @click=\"addLanguage\"\n >\n {{ $t('settings.add_language') }}\n </button>\n </li>\n </ul>\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: [Array, 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 () {\n return Array.isArray(this.language) ? this.language : [this.language]\n },\n set: function (val) {\n this.setLanguage(val)\n }\n }\n },\n\n methods: {\n getLanguageName (code) {\n return localeService.getLanguageName(code)\n },\n addLanguage () {\n this.controlledLanguage = [...this.controlledLanguage, '']\n },\n setLanguageAt (index, val) {\n const lang = [...this.controlledLanguage]\n lang[index] = val\n this.controlledLanguage = lang\n },\n removeLanguageAt (index) {\n const lang = [...this.controlledLanguage]\n lang.splice(index, 1)\n this.controlledLanguage = lang\n }\n }\n}\n</script>\n\n<style lang=\"scss\">\n.interface-language-switcher {\n .language-select {\n margin-right: 1em;\n }\n}\n</style>\n","import { render } from \"./interface_language_switcher.vue?vue&type=template&id=30d5e29c\"\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 \"./interface_language_switcher.vue?vue&type=style&index=0&id=30d5e29c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: var(--roundness);\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;\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: var(--text);\n border-style: solid;\n border-width: 1px;\n border-radius: var(--roundness);\n border-color: var(--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=0e42193a\"\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=0e42193a&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"list\"\n role=\"list\"\n >\n <div\n v-for=\"item in items\"\n :key=\"getKey(item)\"\n class=\"list-item\"\n :class=\"[getClass(item), nonInteractive ? '-non-interactive' : '']\"\n role=\"listitem\"\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 getClass: {\n type: Function,\n default: item => ''\n },\n nonInteractive: {\n type: Boolean,\n default: false\n }\n }\n}\n</script>\n","import { render } from \"./list.vue?vue&type=template&id=28bc7c3c\"\nimport script from \"./list.vue?vue&type=script&lang=js\"\nexport * from \"./list.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","/* 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 onClick () {\n if (this.uploadReady) {\n this.$refs.input.click()\n }\n },\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: Object,\n disabled: Boolean,\n normalButton: Boolean,\n acceptTypes: {\n type: String,\n default: '*/*'\n }\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=5556a4cf\"\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=5556a4cf&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"media-upload\"\n :class=\"[normalButton ? 'button-default btn' : 'button-unstyled', { disabled }]\"\n :title=\"$t('tool_tip.media_upload')\"\n @click=\"onClick\"\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 <template v-if=\"normalButton\">\n {{ ' ' }}\n {{ uploading ? $t('general.loading') : $t('tool_tip.media_upload') }}\n </template>\n <input\n v-if=\"uploadReady\"\n ref=\"input\"\n class=\"hidden-input-file\"\n :disabled=\"disabled\"\n type=\"file\"\n multiple=\"true\"\n :accept=\"acceptTypes\"\n @change=\"change\"\n >\n </button>\n</template>\n\n<script src=\"./media_upload.js\"></script>\n\n<style lang=\"scss\">\n.media-upload {\n .hidden-input-file {\n display: none;\n }\n}\n\nlabel.media-upload {\n cursor: pointer; // We use <label> for interactivity... i wonder if it's fine\n}\n</style>\n","<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\"\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=4f62ce53\"\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 \"/Users/lainsoykaf/repos/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 -link showMoreLess\"\n @click=\"toggleShowMore\"\n >\n {{ $t('status.plus_more', { number: extraMentions.length }) }}\n </button><button\n v-if=\"expanded\"\n class=\"button-unstyled -link 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=3e3ac2b3\"\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 \"/Users/lainsoykaf/repos/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: rgb(0 0 0 / 50%);\n }\n\n &.open {\n opacity: 1;\n }\n}\n\n@keyframes modal-background-fadein {\n from {\n background-color: rgb(0 0 0 / 0%);\n }\n\n to {\n background-color: rgb(0 0 0 / 50%);\n }\n}\n</style>\n","import { render } from \"./modal.vue?vue&type=template&id=e92832fc\"\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=e92832fc&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"unseenCountBadgeText\"\n class=\"badge -notification unseen-count\"\n >{{ unseenCountBadgeText }}</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-if=\"showExtraNotifications\"\n role=\"listitem\"\n class=\"notification\"\n >\n <extra-notifications />\n </div>\n <div\n v-for=\"notification in notificationsToDisplay\"\n :key=\"notification.id\"\n role=\"listitem\"\n class=\"notification\"\n :class=\"{unseen: !minimalMode && shouldShowUnseen(notification)}\"\n @click=\"e => notificationClicked(notification)\"\n >\n <div class=\"notification-overlay\" />\n <notification\n :notification=\"notification\"\n @interacted=\"e => notificationInteracted(notification)\"\n />\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 text-center\"\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' || notification.type === 'status'\"\n >\n <Status\n class=\"Notification\"\n :compact=\"true\"\n :statusoid=\"notification.status\"\n @interacted=\"interacted\"\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 <img\n v-if=\"notification.emoji_url\"\n class=\"emoji-reaction-emoji emoji-reaction-emoji-image\"\n :src=\"notification.emoji_url\"\n :alt=\"notification.emoji\"\n :title=\"notification.emoji\"\n >\n <span\n v-else\n class=\"emoji-reaction-emoji\"\n >{{ 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\"\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 :title=\"$t('tool_tip.toggle_expand')\"\n :aria-expanded=\"statusExpanded\"\n @click.prevent=\"toggleStatusExpanded\"\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 :compact=\"!statusExpanded\"\n :status=\"notification.status\"\n />\n </template>\n </div>\n </div>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingApproveConfirmDialog\"\n :title=\"$t('user_card.approve_confirm_title')\"\n :confirm-text=\"$t('user_card.approve_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.approve_confirm_cancel_button')\"\n @accepted=\"doApprove\"\n @cancelled=\"hideApproveConfirmDialog\"\n >\n {{ $t('user_card.approve_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n <confirm-modal\n v-if=\"showingDenyConfirmDialog\"\n :title=\"$t('user_card.deny_confirm_title')\"\n :confirm-text=\"$t('user_card.deny_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.deny_confirm_cancel_button')\"\n @accepted=\"doDeny\"\n @cancelled=\"hideDenyConfirmDialog\"\n >\n {{ $t('user_card.deny_confirm', { user: user.screen_name_ui }) }}\n </confirm-modal>\n </teleport>\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=\"input 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 RichContent from 'src/components/rich_content/rich_content.jsx'\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 RichContent\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=4b9f496f\"\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 \"/Users/lainsoykaf/repos/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 ConfirmModal from '../confirm_modal/confirm_modal.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 showingApproveConfirmDialog: false,\n showingDenyConfirmDialog: false\n }\n },\n props: ['notification'],\n emits: ['interacted'],\n components: {\n StatusContent,\n UserAvatar,\n UserCard,\n Timeago,\n Status,\n Report,\n RichContent,\n UserPopover,\n UserLink,\n ConfirmModal\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 interacted () {\n this.$emit('interacted')\n },\n toggleMute () {\n this.unmuted = !this.unmuted\n },\n showApproveConfirmDialog () {\n this.showingApproveConfirmDialog = true\n },\n hideApproveConfirmDialog () {\n this.showingApproveConfirmDialog = false\n },\n showDenyConfirmDialog () {\n this.showingDenyConfirmDialog = true\n },\n hideDenyConfirmDialog () {\n this.showingDenyConfirmDialog = false\n },\n approveUser () {\n if (this.shouldConfirmApprove) {\n this.showApproveConfirmDialog()\n } else {\n this.doApprove()\n }\n },\n doApprove () {\n this.$emit('interacted')\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 this.hideApproveConfirmDialog()\n },\n denyUser () {\n if (this.shouldConfirmDeny) {\n this.showDenyConfirmDialog()\n } else {\n this.doDeny()\n }\n },\n doDeny () {\n this.$emit('interacted')\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 this.hideDenyConfirmDialog()\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 mergedConfig () {\n return this.$store.getters.mergedConfig\n },\n shouldConfirmApprove () {\n return this.mergedConfig.modalOnApproveFollow\n },\n shouldConfirmDeny () {\n return this.mergedConfig.modalOnDenyFollow\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=60128f2b\"\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 \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <div class=\"ExtraNotifications\">\n <div\n v-if=\"shouldShowChats\"\n class=\"notification unseen\"\n >\n <div class=\"notification-overlay\" />\n <router-link\n class=\"button-unstyled -link extra-notification\"\n :to=\"{ name: 'chats', params: { username: currentUser.screen_name } }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 icon\"\n icon=\"comments\"\n />\n {{ $tc('notifications.unread_chats', unreadChatCount, { num: unreadChatCount }) }}\n </router-link>\n </div>\n <div\n v-if=\"shouldShowAnnouncements\"\n class=\"notification unseen\"\n >\n <div class=\"notification-overlay\" />\n <router-link\n class=\"button-unstyled -link extra-notification\"\n :to=\"{ name: 'announcements' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 icon\"\n icon=\"bullhorn\"\n />\n {{ $tc('notifications.unread_announcements', unreadAnnouncementCount, { num: unreadAnnouncementCount }) }}\n </router-link>\n </div>\n <div\n v-if=\"shouldShowFollowRequests\"\n class=\"notification unseen\"\n >\n <div class=\"notification-overlay\" />\n <router-link\n class=\"button-unstyled -link extra-notification\"\n :to=\"{ name: 'friend-requests' }\"\n >\n <FAIcon\n fixed-width\n class=\"fa-scale-110 icon\"\n icon=\"user-plus\"\n />\n {{ $tc('notifications.unread_follow_requests', followRequestCount, { num: followRequestCount }) }}\n </router-link>\n </div>\n <i18n-t\n v-if=\"shouldShowCustomizationTip\"\n tag=\"span\"\n class=\"notification tip extra-notification\"\n keypath=\"notifications.configuration_tip\"\n >\n <template #theSettings>\n <button\n class=\"button-unstyled -link\"\n @click=\"openNotificationSettings\"\n >\n {{ $t('notifications.configuration_tip_settings') }}\n </button>\n </template>\n <template #dismiss>\n <button\n class=\"button-unstyled -link\"\n @click=\"dismissConfigurationTip\"\n >\n {{ $t('notifications.configuration_tip_dismiss') }}\n </button>\n </template>\n </i18n-t>\n </div>\n</template>\n\n<script src=\"./extra_notifications.js\" />\n\n<style lang=\"scss\">\n.ExtraNotifications {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n .notification {\n width: 100%;\n border-bottom: 1px solid;\n border-color: var(--border);\n display: flex;\n flex-direction: column;\n align-items: stretch;\n }\n\n .extra-notification {\n padding: 1em;\n }\n\n .icon {\n margin-right: 0.5em;\n }\n\n .tip {\n display: inline;\n }\n}\n</style>\n","import { mapGetters } from 'vuex'\n\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faUserPlus,\n faComments,\n faBullhorn\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faUserPlus,\n faComments,\n faBullhorn\n)\n\nconst ExtraNotifications = {\n computed: {\n shouldShowChats () {\n return this.mergedConfig.showExtraNotifications && this.mergedConfig.showChatsInExtraNotifications && this.unreadChatCount\n },\n shouldShowAnnouncements () {\n return this.mergedConfig.showExtraNotifications && this.mergedConfig.showAnnouncementsInExtraNotifications && this.unreadAnnouncementCount\n },\n shouldShowFollowRequests () {\n return this.mergedConfig.showExtraNotifications && this.mergedConfig.showFollowRequestsInExtraNotifications && this.followRequestCount\n },\n hasAnythingToShow () {\n return this.shouldShowChats || this.shouldShowAnnouncements || this.shouldShowFollowRequests\n },\n shouldShowCustomizationTip () {\n return this.mergedConfig.showExtraNotificationsTip && this.hasAnythingToShow\n },\n currentUser () {\n return this.$store.state.users.currentUser\n },\n ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount', 'followRequestCount', 'mergedConfig'])\n },\n methods: {\n openNotificationSettings () {\n return this.$store.dispatch('openSettingsModalTab', 'notifications')\n },\n dismissConfigurationTip () {\n return this.$store.dispatch('setOption', { name: 'showExtraNotificationsTip', value: false })\n }\n }\n}\n\nexport default ExtraNotifications\n","import { render } from \"./extra_notifications.vue?vue&type=template&id=1da7f708\"\nimport script from \"./extra_notifications.js?vue&type=script&lang=js\"\nexport * from \"./extra_notifications.js?vue&type=script&lang=js\"\n\nimport \"./extra_notifications.vue?vue&type=style&index=0&id=1da7f708&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('likes')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.likes }\"\n />{{ $t('settings.notification_visibility_likes') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('repeats')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.repeats }\"\n />{{ $t('settings.notification_visibility_repeats') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('follows')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.follows }\"\n />{{ $t('settings.notification_visibility_follows') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('mentions')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.mentions }\"\n />{{ $t('settings.notification_visibility_mentions') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('statuses')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.statuses }\"\n />{{ $t('settings.notification_visibility_statuses') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('emojiReactions')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.emojiReactions }\"\n />{{ $t('settings.notification_visibility_emoji_reactions') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('moves')\"\n >\n <span\n class=\"input menu-checkbox\"\n :class=\"{ 'menu-checkbox-checked': filters.moves }\"\n />{{ $t('settings.notification_visibility_moves') }}\n </button>\n <button\n class=\"menu-item dropdown-item\"\n @click=\"toggleNotificationFilter('polls')\"\n >\n <span\n class=\"input 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=1f42343a\"\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 \"/Users/lainsoykaf/repos/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 ExtraNotifications from '../extra_notifications/extra_notifications.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 countExtraNotifications,\n ACTIONABLE_NOTIFICATION_TYPES\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 ExtraNotifications\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', 'status', 'repeat', 'like', 'follow', used to override global filter for use in \"Interactions\" timeline\n filterMode: Array,\n // Do not show extra notifications\n noExtra: {\n type: Boolean,\n default: false\n },\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.notifications.error\n },\n unseenNotifications () {\n return unseenNotificationsFromStore(this.$store)\n },\n filteredNotifications () {\n if (this.unseenAtTop) {\n return [\n ...filteredNotificationsFromStore(this.$store).filter(n => this.shouldShowUnseen(n)),\n ...filteredNotificationsFromStore(this.$store).filter(n => !this.shouldShowUnseen(n))\n ]\n } else {\n return filteredNotificationsFromStore(this.$store, this.filterMode)\n }\n },\n unseenCountBadgeText () {\n return `${this.unseenCount ? this.unseenCount : ''}${this.extraNotificationsCount ? '*' : ''}`\n },\n unseenCount () {\n return this.unseenNotifications.length\n },\n ignoreInactionableSeen () { return this.$store.getters.mergedConfig.ignoreInactionableSeen },\n extraNotificationsCount () {\n return countExtraNotifications(this.$store)\n },\n unseenCountTitle () {\n return this.unseenNotifications.length + (this.unreadChatCount) + this.unreadAnnouncementCount\n },\n loading () {\n return this.$store.state.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 unseenAtTop () { return this.$store.getters.mergedConfig.unseenAtTop },\n showExtraNotifications () {\n return !this.noExtra\n },\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 },\n updateScrollPosition () {\n this.showScrollTop = this.$refs.root.offsetTop < this.scrollerRef.scrollTop\n },\n shouldShowUnseen (notification) {\n if (notification.seen) return false\n\n const actionable = ACTIONABLE_NOTIFICATION_TYPES.has(notification.type)\n return this.ignoreInactionableSeen ? actionable : true\n },\n /* \"Interacted\" really refers to \"actionable\" notifications that require user input,\n * everything else (likes/repeats/reacts) cannot be acted and therefore we just clear\n * the \"seen\" status upon any clicks on them\n */\n notificationClicked (notification) {\n const { id } = notification\n this.$store.dispatch('notificationClicked', { id })\n },\n notificationInteracted (notification) {\n const { id } = notification\n this.$store.dispatch('markSingleNotificationAsSeen', { id })\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=5e40c502\"\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 \"/Users/lainsoykaf/repos/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.panel-loading {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n font-size: 2em;\n color: var(--text);\n\n .loading-text svg {\n line-height: 0;\n vertical-align: middle;\n color: var(--text);\n }\n}\n</style>\n","import { render } from \"./panel_loading.vue?vue&type=template&id=7adff444\"\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=7adff444&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 // Use styled button (to avoid nested buttons)\n normalButton: 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=57fbc478\"\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=57fbc478&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"popover-trigger-button\"\n :class=\"normalButton ? 'button-default btn' : 'button-unstyled'\"\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.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: var(--shadow);\n}\n\n.popover-default {\n &::after {\n content: \"\";\n position: absolute;\n top: -1px;\n bottom: -1px;\n left: -1px;\n right: -1px;\n z-index: -1px;\n box-shadow: var(--shadow);\n pointer-events: none;\n }\n\n border-radius: var(--roundness);\n border-color: var(--border);\n border-style: solid;\n border-width: 1px;\n background-color: var(--background);\n}\n\n.dropdown-menu {\n display: block;\n padding: 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 background-color: var(--background);\n\n .dropdown-divider {\n height: 0;\n margin: 0.5rem 0;\n overflow: hidden;\n border-top: 1px solid var(--border);\n }\n\n .dropdown-item {\n border: none;\n\n &-icon {\n svg {\n width: var(--__line-height);\n margin-right: var(--__horizontal-gap);\n }\n }\n\n &.-has-submenu {\n .chevron-icon {\n margin-right: 0.25rem;\n margin-left: 2rem;\n }\n }\n\n .menu-checkbox {\n display: inline-block;\n vertical-align: middle;\n min-width: calc(var(--__line-height) + 1px);\n max-width: calc(var(--__line-height) + 1px);\n min-height: calc(var(--__line-height) + 1px);\n max-height: calc(var(--__line-height) + 1px);\n line-height: var(--__line-height);\n text-align: center;\n border-radius: 0;\n box-shadow: var(--shadow);\n margin-right: var(--__horizontal-gap);\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</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 :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\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 :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\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 :title=\"$t('post_status.scope_notice_dismiss')\"\n role=\"button\"\n tabindex=\"0\"\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 <div\n v-if=\"quotable\"\n role=\"radiogroup\"\n class=\"btn-group reply-or-quote-selector\"\n >\n <button\n :id=\"`reply-or-quote-option-${randomSeed}-reply`\"\n class=\"btn button-default reply-or-quote-option\"\n :class=\"{ toggled: !newStatus.quoting }\"\n tabindex=\"0\"\n role=\"radio\"\n :aria-labelledby=\"`reply-or-quote-option-${randomSeed}-reply`\"\n :aria-checked=\"!newStatus.quoting\"\n @click=\"newStatus.quoting = false\"\n >\n {{ $t('post_status.reply_option') }}\n </button>\n <button\n :id=\"`reply-or-quote-option-${randomSeed}-quote`\"\n class=\"btn button-default reply-or-quote-option\"\n :class=\"{ toggled: newStatus.quoting }\"\n tabindex=\"0\"\n role=\"radio\"\n :aria-labelledby=\"`reply-or-quote-option-${randomSeed}-quote`\"\n :aria-checked=\"newStatus.quoting\"\n @click=\"newStatus.quoting = true\"\n >\n {{ $t('post_status.quote_option') }}\n </button>\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=\"input form-control\"\n >\n <template #default=\"inputProps\">\n <input\n v-model=\"newStatus.spoilerText\"\n type=\"text\"\n :placeholder=\"$t('post_status.content_warning')\"\n :disabled=\"posting && !optimisticPosting\"\n v-bind=\"propsToNative(inputProps)\"\n size=\"1\"\n class=\"input form-post-subject\"\n >\n </template>\n </EmojiInput>\n <EmojiInput\n ref=\"emoji-input\"\n v-model=\"newStatus.status\"\n :suggest=\"emojiUserSuggestor\"\n :placement=\"emojiPickerPlacement\"\n class=\"input 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 <template #default=\"inputProps\">\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=\"input form-post-body\"\n :class=\"{ 'scrollable-form': !!maxHeight }\"\n v-bind=\"propsToNative(inputProps)\"\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 </template>\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=\"input form-control\"\n :attrs=\"{ 'aria-label': $t('post_status.content_type_selection') }\"\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 <button\n v-else\n :disabled=\"uploadingFiles || disableSubmit\"\n class=\"btn button-default\"\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.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\n svg,\n 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: var(--textFaint);\n }\n\n .preview-status {\n border: 1px solid var(--border);\n border-radius: var(--roundness);\n padding: 0.5em;\n margin: 0;\n }\n\n .reply-or-quote-selector {\n margin-bottom: 0.5em;\n }\n\n .text-format {\n .only-format {\n color: var(--textFaint);\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 // 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 .media-upload-icon,\n .poll-icon,\n .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\n .error {\n text-align: center;\n }\n\n .media-upload-wrapper {\n margin-right: 0.2em;\n margin-bottom: 0.5em;\n width: 18em;\n\n img,\n 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 .input.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 background: transparent;\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: var(--cRed);\n }\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: var(--text);\n background-color: var(--bg);\n border-radius: var(--roundness);\n border: 2px dashed var(--text);\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=\"input 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=\"input 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.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\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 return DateUtils.secondsToUnit(unit, amount)\n },\n convertExpiryFromUnit (unit, amount) {\n return DateUtils.unitToSeconds(unit, amount)\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=5dd9a9d1\"\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=5dd9a9d1&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 genRandomSeed from '../../services/random_seed/random_seed.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 { propsToNative } from '../../services/attributes_helper/attributes_helper.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 'profileMention'\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 || this.profileMention) {\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 quoting: false\n }\n }\n\n return {\n randomSeed: genRandomSeed(),\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 quotable () {\n if (!this.$store.state.instance.quotingAvailable) {\n return false\n }\n\n if (!this.replyTo) {\n return false\n }\n\n const repliedStatus = this.$store.state.statuses.allStatusesObject[this.replyTo]\n if (!repliedStatus) {\n return false\n }\n\n if (repliedStatus.visibility === 'public' ||\n repliedStatus.visibility === 'unlisted' ||\n repliedStatus.visibility === 'local') {\n return true\n } else if (repliedStatus.visibility === 'private') {\n return repliedStatus.user.id === this.$store.state.users.currentUser.id\n }\n\n return false\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 quoting: false\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 replyOrQuoteAttr = newStatus.quoting ? 'quoteId' : 'inReplyToStatusId'\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 [replyOrQuoteAttr]: 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 const replyOrQuoteAttr = newStatus.quoting ? 'quoteId' : 'inReplyToStatusId'\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 [replyOrQuoteAttr]: 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 propsToNative (props) {\n return propsToNative(props)\n }\n }\n}\n\nexport default PostStatusForm\n","import { render } from \"./post_status_form.vue?vue&type=template&id=1e6e0d51\"\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=1e6e0d51&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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.ScopeSelector {\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}\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: { toggled: this.currentScope === 'public' },\n unlisted: { toggled: this.currentScope === 'unlisted' },\n private: { toggled: this.currentScope === 'private' },\n direct: { toggled: 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=8c2d97a4\"\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=8c2d97a4&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 'attrs'\n ]\n}\n","import { render } from \"./select.vue?vue&type=template&id=44737bd4\"\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=44737bd4&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 v-bind=\"attrs\"\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/* TODO fix order of styles */\nlabel.Select {\n padding: 0;\n\n select {\n appearance: none;\n background: transparent;\n border: none;\n color: var(--text);\n margin: 0;\n padding: 0 2em 0 0.2em;\n font-family: var(--font);\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 font-family: var(--font);\n line-height: 2;\n z-index: 0;\n pointer-events: none;\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=\"muteSensitiveStatuses && status.nsfw\"\n class=\"mute-thread\"\n >\n {{ $t('status.sensitive_muted') }}\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 :show-actor-type-indicator=\"showActorTypeIndicator\"\n :better-shadow=\"betterShadow\"\n :user=\"statusoid.user\"\n />\n <div class=\"right-side faint\">\n <bdi\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 </bdi>\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 :show-actor-type-indicator=\"showActorTypeIndicator\"\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\"\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=\"scrobblePresent\"\n class=\"status-rich-presence\"\n >\n <a\n v-if=\"scrobble.externalLink\"\n :href=\"scrobble.externalLink\"\n target=\"_blank\"\n >\n {{ scrobble.artist }} — {{ scrobble.title }}\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"play\"\n />\n <span class=\"status-rich-presence-time\">\n <Timeago\n template-key=\"time.in_past\"\n :time=\"scrobble.created_at\"\n :auto-update=\"60\"\n />\n </span>\n </a>\n <span v-if=\"!scrobble.externalLink\">\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"music\"\n />\n {{ scrobble.artist }} — {{ scrobble.title }}\n <FAIcon\n class=\"fa-scale-110 fa-old-padding\"\n icon=\"play\"\n />\n <span class=\"status-rich-presence-time\">\n <Timeago\n template-key=\"time.in_past\"\n :time=\"scrobble.created_at\"\n :auto-update=\"60\"\n />\n </span>\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 <article\n v-if=\"hasVisibleQuote\"\n class=\"quoted-status\"\n >\n <button\n class=\"button-unstyled -link display-quoted-status-button\"\n :aria-expanded=\"shouldDisplayQuote\"\n @click=\"toggleDisplayQuote\"\n >\n {{ shouldDisplayQuote ? $t('status.hide_quote') : $t('status.display_quote') }}\n <FAIcon\n class=\"display-quoted-status-button-icon\"\n :icon=\"shouldDisplayQuote ? 'chevron-up' : 'chevron-down'\"\n />\n </button>\n <Status\n v-if=\"shouldDisplayQuote\"\n :statusoid=\"quotedStatus\"\n :in-quote=\"true\"\n />\n </article>\n <p\n v-else-if=\"hasInvisibleQuote\"\n class=\"quoted-status -unavailable-prompt\"\n >\n <i18n-t keypath=\"status.invisible_quote\">\n <template #link>\n <bdi>\n <a\n :href=\"status.quote_url\"\n target=\"_blank\"\n >\n {{ status.quote_url }}\n </a>\n </bdi>\n </template>\n </i18n-t>\n </p>\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\"\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=\"shouldDisplayFavsAndRepeats\"\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 <router-link\n v-if=\"statusFromGlobalRepository.quotes_count > 0\"\n :to=\"{ name: 'quotes', params: { id: status.id } }\"\n >\n <div\n class=\"stat-count\"\n >\n <a class=\"stat-title\">{{ $t('status.quotes') }}</a>\n <div class=\"stat-number\">\n {{ statusFromGlobalRepository.quotes_count }}\n </div>\n </div>\n </router-link>\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 @click=\"$emit('interacted')\"\n />\n <favorite-button\n :logged-in=\"loggedIn\"\n :status=\"status\"\n @click=\"$emit('interacted')\"\n />\n <ReactButton\n v-if=\"loggedIn\"\n :status=\"status\"\n @click=\"$emit('interacted')\"\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 :show-actor-type-indicator=\"showActorTypeIndicator\"\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 :title=\"$t('tool_tip.reply')\"\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-16\"\n icon=\"plus\"\n />\n </FALayers>\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 \"../../mixins\";\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: var(--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</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=03d9209d\"\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=03d9209d&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :title=\"$t('tool_tip.favorite')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-scale-110 fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n :icon=\"['far', 'star']\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\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 \"../../mixins\";\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: var(--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=18a86a20\"\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=18a86a20&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\n <span class=\"ReactButton\">\n <EmojiPicker\n ref=\"picker\"\n :enable-sticker-picker=\"enableStickerPicker\"\n :hide-custom-emoji=\"hideCustomEmoji\"\n class=\"emoji-picker-panel\"\n @emoji=\"addReaction\"\n @show=\"onShow\"\n @close=\"onClose\"\n />\n <span\n class=\"button-unstyled popover-trigger\"\n role=\"button\"\n :tabindex=\"0\"\n :title=\"$t('tool_tip.add_reaction')\"\n @click.stop.prevent=\"show\"\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 </span>\n</template>\n\n<script src=\"./react_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../mixins\";\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);\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 mask:\n 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 mask-composite: xor;\n mask-composite: exclude;\n\n .emoji-button {\n cursor: pointer;\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 .popover-trigger {\n padding: 10px;\n margin: -10px;\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 Popover from '../popover/popover.vue'\nimport EmojiPicker from '../emoji_picker/emoji_picker.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { faPlus, faTimes } from '@fortawesome/free-solid-svg-icons'\nimport { faSmileBeam } from '@fortawesome/free-regular-svg-icons'\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 EmojiPicker\n },\n methods: {\n addReaction (event) {\n const emoji = event.insertion\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 },\n show () {\n if (!this.expanded) {\n this.$refs.picker.showPicker()\n }\n },\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n }\n },\n computed: {\n hideCustomEmoji () {\n return !this.$store.state.instance.pleromaCustomEmojiReactionsAvailable\n }\n }\n}\n\nexport default ReactButton\n","import { render } from \"./react_button.vue?vue&type=template&id=65cb031c\"\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=65cb031c&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :title=\"$t('tool_tip.repeat')\"\n :href=\"remoteInteractionLink\"\n >\n <FALayers class=\"fa-old-padding-layer\">\n <FAIcon\n class=\"fa-scale-110\"\n icon=\"retweet\"\n />\n <FAIcon\n class=\"focus-marker\"\n transform=\"shrink-6 up-9 right-12\"\n icon=\"plus\"\n />\n </FALayers>\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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmDialog\"\n :title=\"$t('status.repeat_confirm_title')\"\n :confirm-text=\"$t('status.repeat_confirm_accept_button')\"\n :cancel-text=\"$t('status.repeat_confirm_cancel_button')\"\n @accepted=\"doRetweet\"\n @cancelled=\"hideConfirmDialog\"\n >\n {{ $t('status.repeat_confirm') }}\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./retweet_button.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../mixins\";\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: var(--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 ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport { 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 components: {\n ConfirmModal\n },\n data () {\n return {\n animated: false,\n showingConfirmDialog: false\n }\n },\n methods: {\n retweet () {\n if (!this.status.repeated && this.shouldConfirmRepeat) {\n this.showConfirmDialog()\n } else {\n this.doRetweet()\n }\n },\n doRetweet () {\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 this.hideConfirmDialog()\n },\n showConfirmDialog () {\n this.showingConfirmDialog = true\n },\n hideConfirmDialog () {\n this.showingConfirmDialog = false\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 shouldConfirmRepeat () {\n return this.mergedConfig.modalOnRepeat\n }\n }\n}\n\nexport default RetweetButton\n","import { render } from \"./retweet_button.vue?vue&type=template&id=b0e3ccea\"\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=b0e3ccea&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :trigger-attrs=\"triggerAttrs\"\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\n :id=\"`popup-menu-${randomSeed}`\"\n class=\"dropdown-menu\"\n role=\"menu\"\n >\n <button\n v-if=\"canMute && !status.thread_muted\"\n class=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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=\"menu-item dropdown-item dropdown-item-icon\"\n role=\"menuitem\"\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 <teleport to=\"#modal\">\n <ConfirmModal\n v-if=\"showingDeleteDialog\"\n :title=\"$t('status.delete_confirm_title')\"\n :cancel-text=\"$t('status.delete_confirm_cancel_button')\"\n :confirm-text=\"$t('status.delete_confirm_accept_button')\"\n @cancelled=\"hideDeleteStatusConfirmDialog\"\n @accepted=\"doDeleteStatus\"\n >\n {{ $t('status.delete_confirm') }}\n </ConfirmModal>\n </teleport>\n </template>\n </Popover>\n</template>\n\n<script src=\"./extra_buttons.js\"></script>\n\n<style lang=\"scss\">\n@import \"../../mixins\";\n\n.ExtraButtons {\n .popover-trigger {\n position: static;\n padding: 10px;\n margin: -10px;\n\n &:hover .svg-inline--fa {\n color: var(--text);\n }\n }\n\n .popover-trigger-button {\n /* override of popover internal stuff */\n width: auto;\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</style>\n","import Popover from '../popover/popover.vue'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\nimport ConfirmModal from '../confirm_modal/confirm_modal.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: {\n Popover,\n ConfirmModal\n },\n data () {\n return {\n expanded: false,\n showingDeleteDialog: false,\n randomSeed: genRandomSeed()\n }\n },\n methods: {\n onShow () {\n this.expanded = true\n },\n onClose () {\n this.expanded = false\n },\n deleteStatus () {\n if (this.shouldConfirmDelete) {\n this.showDeleteStatusConfirmDialog()\n } else {\n this.doDeleteStatus()\n }\n },\n doDeleteStatus () {\n this.$store.dispatch('deleteStatus', { id: this.status.id })\n this.hideDeleteStatusConfirmDialog()\n },\n showDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = true\n },\n hideDeleteStatusConfirmDialog () {\n this.showingDeleteDialog = false\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 shouldConfirmDelete () {\n return this.$store.getters.mergedConfig.modalOnDelete\n },\n triggerAttrs () {\n return {\n title: this.$t('status.more_actions'),\n id: `popup-trigger-${this.randomSeed}`,\n 'aria-controls': `popup-menu-${this.randomSeed}`,\n 'aria-expanded': this.expanded,\n 'aria-haspopup': 'menu'\n }\n }\n }\n}\n\nexport default ExtraButtons\n","import { render } from \"./extra_buttons.vue?vue&type=template&id=ef1a1d8e\"\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=ef1a1d8e&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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/* 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 border-color: var(--border);\n border-style: solid;\n border-width: 1px;\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=3b58cb82\"\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=3b58cb82&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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.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=440a8c80\"\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=440a8c80&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 <span\n v-for=\"(reaction) in emojiReactions\"\n :key=\"reaction.url || reaction.name\"\n class=\"emoji-reaction-container btn-group\"\n >\n <component\n :is=\"loggedIn ? 'button' : 'a'\"\n v-bind=\"!loggedIn ? { href: remoteInteractionLink } : {}\"\n role=\"button\"\n class=\"emoji-reaction btn button-default\"\n :class=\"{ '-picked-reaction': reactedWith(reaction.name) }\"\n :title=\"reaction.url ? reaction.name : undefined\"\n :aria-pressed=\"reactedWith(reaction.name)\"\n @click=\"emojiOnClick(reaction.name, $event)\"\n >\n <span\n class=\"reaction-emoji\"\n >\n <img\n v-if=\"reaction.url\"\n :src=\"reaction.url\"\n class=\"reaction-emoji-content\"\n width=\"1em\"\n >\n <span\n v-else\n class=\"reaction-emoji reaction-emoji-content\"\n >{{ reaction.name }}</span>\n </span>\n <FALayers>\n <FAIcon\n v-if=\"reactedWith(reaction.name)\"\n class=\"active-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"check\"\n />\n <FAIcon\n v-if=\"!reactedWith(reaction.name)\"\n class=\"focus-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"plus\"\n />\n <FAIcon\n v-else\n class=\"focus-marker\"\n transform=\"shrink-6 up-9\"\n icon=\"minus\"\n />\n </FALayers>\n </component>\n <UserListPopover\n :users=\"accountsForEmoji[reaction.name]\"\n class=\"emoji-reaction-popover\"\n :trigger-attrs=\"counterTriggerAttrs(reaction)\"\n @show=\"fetchEmojiReactionsByIfMissing()\"\n >\n <span class=\"emoji-reaction-counts\">{{ reaction.count }}</span>\n </UserListPopover>\n </span>\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 \"../../mixins\";\n\n.EmojiReactions {\n display: flex;\n margin-top: 0.25em;\n flex-wrap: wrap;\n\n --emoji-size: calc(var(--emojiSize, 1.25em) * var(--emojiReactionsScale, 1));\n\n .emoji-reaction-container {\n display: flex;\n align-items: stretch;\n margin-top: 0.5em;\n margin-right: 0.5em;\n\n .emoji-reaction-popover {\n padding: 0;\n\n .emoji-reaction-count-button {\n margin: 0;\n height: 100%;\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n box-sizing: border-box;\n min-width: 2em;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n &.-picked-reaction {\n border: 1px solid var(--accent);\n margin-right: -1px;\n }\n }\n }\n }\n\n .emoji-reaction {\n padding-left: 0.5em;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n margin: 0;\n\n .reaction-emoji {\n width: var(--emoji-size);\n height: var(--emoji-size);\n margin-right: 0.25em;\n line-height: var(--emoji-size);\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .reaction-emoji-content {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n line-height: inherit;\n overflow: hidden;\n font-size: calc(var(--emoji-size) * 0.8);\n margin: 0;\n }\n\n &:focus {\n outline: none;\n }\n\n .svg-inline--fa {\n color: var(--text);\n }\n\n &.-picked-reaction {\n border: 1px solid var(--accent);\n margin-left: -1px; // offset the border, can't use inset shadows either\n margin-right: -1px;\n\n .svg-inline--fa {\n color: var(--accent);\n }\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 .svg-inline--fa {\n color: var(--accent);\n }\n\n .focus-marker {\n visibility: visible;\n }\n\n .active-marker {\n visibility: hidden;\n }\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\n &:hover {\n text-decoration: underline;\n }\n }\n}\n</style>\n","import UserAvatar from '../user_avatar/user_avatar.vue'\nimport UserListPopover from '../user_list_popover/user_list_popover.vue'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faPlus,\n faMinus,\n faCheck\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faPlus,\n faMinus,\n faCheck\n)\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 remoteInteractionLink () {\n return this.$store.getters.remoteInteractionLink({ statusId: this.status.id })\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 async fetchEmojiReactionsByIfMissing () {\n const hasNoAccounts = this.status.emoji_reactions.find(r => !r.accounts)\n if (hasNoAccounts) {\n return await 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 async emojiOnClick (emoji, event) {\n if (!this.loggedIn) return\n\n await this.fetchEmojiReactionsByIfMissing()\n if (this.reactedWith(emoji)) {\n this.unreact(emoji)\n } else {\n this.reactWith(emoji)\n }\n },\n counterTriggerAttrs (reaction) {\n return {\n class: [\n 'btn',\n 'button-default',\n 'emoji-reaction-count-button',\n { '-picked-reaction': this.reactedWith(reaction.name) }\n ],\n 'aria-label': this.$tc('status.reaction_count_label', reaction.count, { num: reaction.count })\n }\n }\n }\n}\n\nexport default EmojiReactions\n","import { render } from \"./emoji_reactions.vue?vue&type=template&id=680d2464\"\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=680d2464&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 faPlay\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 faPlay\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 'inQuote',\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 emits: ['interacted'],\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 displayQuote: !this.inQuote\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 botStatus () {\n return this.status.user.actor_type === 'Service'\n },\n showActorTypeIndicator () {\n return !this.hideBotIndication\n },\n sensitiveStatus () {\n return this.status.nsfw\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 // sensitive status\n (this.muteSensitiveStatuses && this.sensitiveStatus && !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 shouldDisplayFavsAndRepeats () {\n return !this.hidePostStats && this.isFocused && (this.combinedFavsAndRepeatsUsers.length > 0 || this.statusFromGlobalRepository.quotes_count)\n },\n muteBotStatuses () {\n return this.mergedConfig.muteBotStatuses\n },\n muteSensitiveStatuses () {\n return this.mergedConfig.muteSensitiveStatuses\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 hasVisibleQuote () {\n return this.status.quote_url && this.status.quote_visible\n },\n hasInvisibleQuote () {\n return this.status.quote_url && !this.status.quote_visible\n },\n quotedStatus () {\n return this.status.quote_id ? this.$store.state.statuses.allStatusesObject[this.status.quote_id] : undefined\n },\n shouldDisplayQuote () {\n return this.quotedStatus && this.displayQuote\n },\n scrobblePresent () {\n if (this.mergedConfig.hideScrobbles) return false\n if (!this.status.user.latestScrobble) return false\n const value = this.mergedConfig.hideScrobblesAfter.match(/\\d+/gs)[0]\n const unit = this.mergedConfig.hideScrobblesAfter.match(/\\D+/gs)[0]\n let multiplier = 60 * 1000 // minutes is smallest unit\n switch (unit) {\n case 'm':\n break\n case 'h':\n multiplier *= 60 // hour\n break\n case 'd':\n multiplier *= 60 // hour\n multiplier *= 24 // day\n break\n }\n const maxAge = Number(value) * multiplier\n const createdAt = Date.parse(this.status.user.latestScrobble.created_at)\n const age = Date.now() - createdAt\n if (age > maxAge) return false\n return this.status.user.latestScrobble.artist\n },\n scrobble () {\n return this.status.user.latestScrobble\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.$emit('interacted')\n this.error = undefined\n },\n toggleReplying () {\n this.$emit('interacted')\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 toggleDisplayQuote () {\n if (this.shouldDisplayQuote) {\n this.displayQuote = false\n } else if (!this.quotedStatus) {\n this.$store.dispatch('fetchStatus', this.status.quote_id)\n .then(() => {\n this.displayQuote = true\n })\n } else {\n this.displayQuote = true\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=de9df956\"\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 \"/Users/lainsoykaf/repos/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 :compact=\"compact\"\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=\"statusCard && !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 :role=\"showResults ? 'section' : (poll.multiple ? 'group' : 'radiogroup')\"\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 tabindex=\"0\"\n :role=\"poll.multiple ? 'checkbox' : 'radio'\"\n :aria-labelledby=\"`option-vote-${randomSeed}-${index}`\"\n :aria-checked=\"choices[index]\"\n class=\"input unstyled\"\n @click=\"activateOption(index)\"\n >\n <!-- TODO: USE CHECKBOX -->\n <input\n v-if=\"poll.multiple\"\n type=\"checkbox\"\n class=\"input -checkbox poll-checkbox\"\n :disabled=\"loading\"\n :value=\"index\"\n >\n <input\n v-else\n type=\"radio\"\n :disabled=\"loading\"\n :value=\"index\"\n class=\"input -radio\"\n >\n <label class=\"option-vote\">\n <RichContent\n :id=\"`option-vote-${randomSeed}-${index}`\"\n :html=\"option.title_html\"\n :handle-links=\"false\"\n :emoji=\"emoji\"\n />\n </label>\n </div>\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 }) }}\n </template>\n <template v-else>\n {{ $tc(\"polls.votes_count\", poll.votes_count, { count: poll.votes_count }) }}\n </template>\n <span v-if=\"expiresAt !== null\">\n &nbsp;·&nbsp;\n </span>\n </div>\n <span v-if=\"expiresAt !== null\">\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.poll {\n .votes {\n display: flex;\n flex-direction: column;\n margin: 0 0 0.5em;\n }\n\n .poll-option {\n margin: 0.75em 0.5em;\n\n .input {\n line-height: inherit;\n }\n }\n\n .option-result {\n height: 100%;\n display: flex;\n flex-direction: row;\n position: relative;\n color: var(--textLight);\n }\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\n .result-percentage {\n width: 3.5em;\n flex-shrink: 0;\n }\n\n .result-fill {\n height: 100%;\n position: absolute;\n border-radius: var(--roundness);\n top: 0;\n left: 0;\n transition: width 0.5s;\n }\n\n .option-vote {\n display: flex;\n align-items: center;\n }\n\n input {\n width: 3.5em;\n }\n\n .footer {\n display: flex;\n align-items: center;\n }\n\n &.loading * {\n cursor: progress;\n }\n\n .poll-vote-button {\n padding: 0 0.5em;\n margin-right: 0.5em;\n }\n\n .poll-checkbox {\n display: none;\n }\n}\n</style>\n","import Timeago from 'components/timeago/timeago.vue'\nimport genRandomSeed from '../../services/random_seed/random_seed.service.js'\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 randomSeed: genRandomSeed()\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) || null\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=716cda44\"\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=716cda44&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :faint=\"compact\"\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 :faint=\"compact\"\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=380d2196\"\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 \"/Users/lainsoykaf/repos/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 statusCard () {\n if (!this.status.card) return null\n return this.status.card.url === this.status.quote_url ? null : this.status.card\n },\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=79c8e5d6\"\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=79c8e5d6&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 :loading=\"loading\"\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.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: rgb(127 127 127 / 50%);\n color: #fff;\n display: block;\n padding: 2px 4px;\n border-radius: var(--roundness);\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 'loading'\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=5bc60eeb\"\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=5bc60eeb&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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 faPeopleGroup\n} from '@fortawesome/free-solid-svg-icons'\n\nlibrary.add(\n faRobot,\n faPeopleGroup\n)\n\nconst UserAvatar = {\n props: [\n 'user',\n 'betterShadow',\n 'compact',\n 'showActorTypeIndicator'\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=95cf35e0\"\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=95cf35e0&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"showActorTypeIndicator && user?.actor_type === 'Service'\"\n icon=\"robot\"\n class=\"actor-type-indicator\"\n />\n <FAIcon\n v-if=\"showActorTypeIndicator && user?.actor_type === 'Group'\"\n icon=\"people-group\"\n class=\"actor-type-indicator\"\n />\n </span>\n</template>\n\n<script src=\"./user_avatar.js\"></script>\n<style lang=\"scss\">\n.Avatar {\n --_avatarShadowBox: var(--shadow);\n --_avatarShadowFilter: var(--shadowFilter);\n --_avatarShadowInset: var(--shadowInset);\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: var(--roundness);\n }\n\n .avatar {\n width: 100%;\n height: 100%;\n box-shadow: var(--_avatarShadowBox);\n border-radius: var(--roundness);\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: var(--roundness);\n }\n\n &.-placeholder {\n background-color: var(--background);\n }\n }\n\n img {\n width: 100%;\n height: 100%;\n }\n\n .actor-type-indicator {\n position: absolute;\n bottom: 0;\n right: 0;\n margin: -0.2em;\n padding: 0.2em;\n background: rgb(127 127 127 / 50%);\n color: #fff;\n border-radius: var(--roundness);\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 neutral user-role\"\n >\n {{ $t('user_card.deactivated') }}\n </span>\n <span\n v-if=\"!!visibleRole\"\n class=\"alert neutral user-role\"\n >\n {{ $t(`general.role.${visibleRole}`) }}\n </span>\n <span\n v-if=\"user.actor_type === 'Service'\"\n class=\"alert neutral user-role\"\n >\n {{ $t('user_card.bot') }}\n </span>\n <span\n v-if=\"user.actor_type === 'Group'\"\n class=\"alert user-role\"\n >\n {{ $t('user_card.group') }}\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=\"input userHighlightText\"\n type=\"text\"\n >\n <input\n v-if=\"userHighlightType !== 'disabled'\"\n :id=\"'userHighlightColor'+user.id\"\n v-model=\"userHighlightColor\"\n class=\"input 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 v-if=\"!hideBio\">\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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmMute\"\n :title=\"$t('user_card.mute_confirm_title')\"\n :confirm-text=\"$t('user_card.mute_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.mute_confirm_cancel_button')\"\n @accepted=\"doMuteUser\"\n @cancelled=\"hideConfirmMute\"\n >\n <i18n-t\n keypath=\"user_card.mute_confirm\"\n tag=\"div\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n <div\n class=\"mute-expiry\"\n >\n <label>\n {{ $t('user_card.mute_duration_prompt') }}\n </label>\n <input\n v-model=\"muteExpiryAmount\"\n type=\"number\"\n class=\"expiry-amount hide-number-spinner\"\n :min=\"0\"\n >\n <Select\n v-model=\"muteExpiryUnit\"\n unstyled=\"true\"\n class=\"expiry-unit\"\n >\n <option\n v-for=\"unit in muteExpiryUnits\"\n :key=\"unit\"\n :value=\"unit\"\n >\n {{ $t(`time.${unit}_short`, ['']) }}\n </option>\n </Select>\n </div>\n </confirm-modal>\n </teleport>\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=\"menu-item dropdown-item menu-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=\"menu-item dropdown-item menu-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=\"menu-item dropdown-item menu-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=\"menu-item dropdown-item menu-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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.FORCE_NSFW)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.STRIP_MEDIA)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.FORCE_UNLISTED)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.SANDBOX)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.DISABLE_REMOTE_SUBSCRIPTION)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.DISABLE_ANY_SUBSCRIPTION)\"\n >\n <span\n class=\"input 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=\"menu-item dropdown-item menu-item\"\n @click=\"toggleTag(tags.QUARANTINE)\"\n >\n <span\n class=\"input 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.moderation-tools-popover {\n height: 100%;\n\n .trigger {\n /* stylelint-disable-next-line declaration-no-important */\n display: flex !important;\n height: 100%;\n }\n}\n\n.moderation-tools-button {\n svg,\n i {\n font-size: 0.8em;\n }\n}\n</style>\n","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=b04ea1aa\"\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=b04ea1aa&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"dropdown-item menu-item\"\n @click=\"hideRepeats\"\n >\n {{ $t('user_card.hide_repeats') }}\n </button>\n <button\n v-if=\"!relationship.showing_reblogs\"\n class=\"dropdown-item menu-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=\"dropdown-item menu-item\"\n @click=\"removeUserFromFollowers\"\n >\n {{ $t('user_card.remove_follower') }}\n </button>\n <button\n v-if=\"relationship.blocking\"\n class=\"dropdown-item menu-item\"\n @click=\"unblockUser\"\n >\n {{ $t('user_card.unblock') }}\n </button>\n <button\n v-else\n class=\"dropdown-item menu-item\"\n @click=\"blockUser\"\n >\n {{ $t('user_card.block') }}\n </button>\n <button\n class=\"dropdown-item menu-item\"\n @click=\"reportUser\"\n >\n {{ $t('user_card.report') }}\n </button>\n <button\n v-if=\"pleromaChatMessagesAvailable\"\n class=\"dropdown-item menu-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 <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmBlock\"\n :title=\"$t('user_card.block_confirm_title')\"\n :confirm-text=\"$t('user_card.block_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.block_confirm_cancel_button')\"\n @accepted=\"doBlockUser\"\n @cancelled=\"hideConfirmBlock\"\n >\n <i18n-t\n keypath=\"user_card.block_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n <teleport to=\"#modal\">\n <confirm-modal\n v-if=\"showingConfirmRemoveFollower\"\n :title=\"$t('user_card.remove_follower_confirm_title')\"\n :confirm-text=\"$t('user_card.remove_follower_confirm_accept_button')\"\n :cancel-text=\"$t('user_card.remove_follower_confirm_cancel_button')\"\n @accepted=\"doRemoveUserFromFollowers\"\n @cancelled=\"hideConfirmRemoveUserFromFollowers\"\n >\n <i18n-t\n keypath=\"user_card.remove_follower_confirm\"\n tag=\"span\"\n >\n <template #user>\n <span\n v-text=\"user.screen_name_ui\"\n />\n </template>\n </i18n-t>\n </confirm-modal>\n </teleport>\n </div>\n</template>\n\n<script src=\"./account_actions.js\"></script>\n\n<style lang=\"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}\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=\"menu-item dropdown-item\"\n @click=\"toggleList(list.id)\"\n >\n <span\n class=\"input 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=\"menu-item 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=1c1ce14c\"\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 \"/Users/lainsoykaf/repos/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 ConfirmModal from '../confirm_modal/confirm_modal.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 showingConfirmBlock: false,\n showingConfirmRemoveFollower: false\n }\n },\n components: {\n ProgressButton,\n Popover,\n UserListMenu,\n ConfirmModal\n },\n methods: {\n showConfirmBlock () {\n this.showingConfirmBlock = true\n },\n hideConfirmBlock () {\n this.showingConfirmBlock = false\n },\n showConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = true\n },\n hideConfirmRemoveUserFromFollowers () {\n this.showingConfirmRemoveFollower = false\n },\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 if (!this.shouldConfirmBlock) {\n this.doBlockUser()\n } else {\n this.showConfirmBlock()\n }\n },\n doBlockUser () {\n this.$store.dispatch('blockUser', this.user.id)\n this.hideConfirmBlock()\n },\n unblockUser () {\n this.$store.dispatch('unblockUser', this.user.id)\n },\n removeUserFromFollowers () {\n if (!this.shouldConfirmRemoveUserFromFollowers) {\n this.doRemoveUserFromFollowers()\n } else {\n this.showConfirmRemoveUserFromFollowers()\n }\n },\n doRemoveUserFromFollowers () {\n this.$store.dispatch('removeUserFromFollowers', this.user.id)\n this.hideConfirmRemoveUserFromFollowers()\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 shouldConfirmBlock () {\n return this.$store.getters.mergedConfig.modalOnBlock\n },\n shouldConfirmRemoveUserFromFollowers () {\n return this.$store.getters.mergedConfig.modalOnRemoveUserFromFollowers\n },\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=275782b2\"\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=275782b2&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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=\"input 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.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(--textFaint);\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=573fc555\"\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=573fc555&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/pleroma-fe/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { unitToSeconds } from 'src/services/date_utils/date_utils.js'\nimport 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 ConfirmModal from '../confirm_modal/confirm_modal.vue'\nimport generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator'\nimport { mapGetters } from 'vuex'\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport {\n faBell,\n faRss,\n faSearchPlus,\n faExternalLinkAlt,\n faEdit,\n 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 showingConfirmMute: false,\n muteExpiryAmount: 0,\n muteExpiryUnit: 'minutes'\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 shouldConfirmMute () {\n return this.mergedConfig.modalOnMute\n },\n muteExpiryUnits () {\n return ['minutes', 'hours', 'days']\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 ConfirmModal\n },\n methods: {\n showConfirmMute () {\n this.showingConfirmMute = true\n },\n hideConfirmMute () {\n this.showingConfirmMute = false\n },\n muteUser () {\n if (!this.shouldConfirmMute) {\n this.doMuteUser()\n } else {\n this.showConfirmMute()\n }\n },\n doMuteUser () {\n this.$store.dispatch('muteUser', {\n id: this.user.id,\n expiresIn: this.shouldConfirmMute ? unitToSeconds(this.muteExpiryUnit, this.muteExpiryAmount) : 0\n })\n this.hideConfirmMute()\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', { profileMention: 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=33645328\"\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 \"/Users/lainsoykaf/repos/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 \"/Users/lainsoykaf/repos/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=24c6ba41\"\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=24c6ba41&lang=scss\"\n\nimport exportComponent from \"/Users/lainsoykaf/repos/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/* popover styles load on-demand, so we need to override */\n/* stylelint-disable block-no-empty */\n.user-popover.popover {\n}\n/* stylelint-enable block-no-empty */\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=03a88bbe\"\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 \"/Users/lainsoykaf/repos/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 + '#t=0.00000000000001'\"\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\"./nan-TW.json\": [\n\t\t42101,\n\t\t9862\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;","var map = {\n\t\"./components/alert.style.js\": 73359,\n\t\"./components/attachment/attachment.style.js\": 91488,\n\t\"./components/badge.style.js\": 25982,\n\t\"./components/border.style.js\": 92274,\n\t\"./components/button.style.js\": 69050,\n\t\"./components/button_unstyled.style.js\": 33915,\n\t\"./components/chat/chat.style.js\": 84369,\n\t\"./components/chat_message/chat_message.style.js\": 92260,\n\t\"./components/fun_text.style.js\": 30623,\n\t\"./components/icon.style.js\": 85516,\n\t\"./components/input.style.js\": 91142,\n\t\"./components/link.style.js\": 98758,\n\t\"./components/list/list_item.style.js\": 67997,\n\t\"./components/menu_item.style.js\": 55061,\n\t\"./components/mobile_drawer.style.js\": 81875,\n\t\"./components/modal/modals.style.js\": 72325,\n\t\"./components/notification/notification.style.js\": 63142,\n\t\"./components/panel.style.js\": 79803,\n\t\"./components/panel_header.style.js\": 75989,\n\t\"./components/poll/poll_graph.style.js\": 42705,\n\t\"./components/popover.style.js\": 77134,\n\t\"./components/rich_content/rich_content.style.js\": 41733,\n\t\"./components/root.style.js\": 52187,\n\t\"./components/scrollbar.style.js\": 39660,\n\t\"./components/scrollbar_element.style.js\": 81462,\n\t\"./components/status/post.style.js\": 3165,\n\t\"./components/tab_switcher/tab.style.js\": 71792,\n\t\"./components/text.style.js\": 63907,\n\t\"./components/top_bar.style.js\": 4748,\n\t\"./components/underlay.style.js\": 5801,\n\t\"./components/user_avatar/avatar.style.js\": 20999,\n\t\"./components/user_card/user_card.style.js\": 99366\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 72;","// 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\",\"9862\":\"i18n/nan-TW-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) + \".\" + {\"48\":\"f58874c23a9bf1c1f591\",\"50\":\"e12ddcfa4a9a2f213472\",\"227\":\"e2936eb1824633263448\",\"278\":\"0fb5386110af3ba2c4ee\",\"313\":\"4f1783c6c1da758319c0\",\"325\":\"7c472bf001679929edea\",\"346\":\"c0b7cbff0696430bc3f5\",\"379\":\"25ae71e0ad9cdd21d447\",\"420\":\"5f54dd17041a9e6fb818\",\"457\":\"d4e08be048463f199b6d\",\"577\":\"6f674d7be8545f5249dd\",\"617\":\"7ebe52b8d626dbf54a5f\",\"625\":\"12a2621ada8dc497ef38\",\"678\":\"88d6d49775d8f9c663c4\",\"786\":\"5e356aaeaee395d041df\",\"830\":\"72cfdbaab827e141e497\",\"1012\":\"062e7bc0ce036e0869c2\",\"1044\":\"3eeb1788264aaa9730cb\",\"1056\":\"6f226c69bc9e3cdb2943\",\"1095\":\"6c4f3b09781d790d0db6\",\"1159\":\"1b71f7623efed055d62b\",\"1162\":\"915ed087d80fc6754272\",\"1236\":\"d057e86d94a109d9b786\",\"1290\":\"98c56a5553477fcf8510\",\"1404\":\"49435b294880e56b2ad5\",\"1452\":\"a9b68824327da9c02318\",\"1546\":\"dbd8d4cf53226f886114\",\"1547\":\"47d5a2f34c7fdf53d2af\",\"1553\":\"e64d6e5b433ff40babd2\",\"1584\":\"360ff9ef00f0d1c7a57b\",\"1596\":\"af3ed87176f973878b6e\",\"1597\":\"134341dec11e42dd5fae\",\"1613\":\"b3eb2867f3dae2f0ca2e\",\"1780\":\"5673e32b5abc49b2a251\",\"1790\":\"b3e9991da8c100724645\",\"1821\":\"4e6a9b14341091c6742a\",\"1911\":\"10d386d227d8eccd9f8c\",\"1959\":\"b51522cc59d038be0544\",\"2044\":\"cb97beb999533eaae9ae\",\"2223\":\"26194bdddfdeb986269a\",\"2243\":\"332142b117058f869a60\",\"2342\":\"fc8b49efe1bec779ad7c\",\"2350\":\"3db034c6717655dfbbf6\",\"2397\":\"92776bda19293c36a513\",\"2479\":\"9a579697582dd4da8515\",\"2513\":\"b00a413b6132632523e5\",\"2569\":\"249cbfc14263d519b9a9\",\"2599\":\"79368ff8ed458bbadc8a\",\"2656\":\"3e534416e3850186a747\",\"2685\":\"4029b72c11321ff49f04\",\"2699\":\"5e1160d486fdb5ee36e0\",\"2767\":\"fd2741548c8119e002d3\",\"2861\":\"7078f54504f4019e7019\",\"2873\":\"e48b37a24122d49c3b21\",\"2874\":\"8f7695808eb625453ecb\",\"2883\":\"09d4b290940a5743f28b\",\"2953\":\"95757c7acb6dff777d7d\",\"2966\":\"f819232d4ea91159bbb0\",\"2992\":\"c01381c77dfb84017633\",\"3056\":\"59c70483862a83131f1e\",\"3241\":\"8ac515e0f8396ddf6c08\",\"3276\":\"bc2b2889a512210a1537\",\"3313\":\"c23781e2ed7aa713e880\",\"3377\":\"bd49b949563ed3872ea7\",\"3568\":\"4408ab975172165278bd\",\"3687\":\"56150ad938e521d9ef81\",\"3746\":\"7a64af58316da6ca86f0\",\"3887\":\"286656f6511ecef0620b\",\"3951\":\"ba0ab95ab02ce2c939c6\",\"3968\":\"16c8ca99bc2dee099ca0\",\"3974\":\"aada1abf5a5718a2785a\",\"3994\":\"34b7da43677fa56e5e0d\",\"4047\":\"d6ce04e3e4e5a0e908bf\",\"4209\":\"810d16be9637c3bc4d2d\",\"4354\":\"3660e3b9815e1b9589e6\",\"4368\":\"a10b52fc261fdb767e0e\",\"4424\":\"d0b0f7e7004b95cf59f7\",\"4451\":\"e6066512bb8a65a06f89\",\"4542\":\"e519f9e06eed5ad3cf41\",\"4571\":\"2d53f85b5672fc5b9cd6\",\"4646\":\"1d790624b6ea3832617a\",\"4691\":\"4bf349a90cbee89b8a8f\",\"4710\":\"606d434132759db14a54\",\"4718\":\"1d71d86a284b090f309c\",\"4770\":\"ae00586748ab7e78fbcf\",\"4785\":\"a4d7bf8aa6b9fc268ee4\",\"4786\":\"5f3edfe74048b3f9d552\",\"4879\":\"481fa7a1009de1e09a52\",\"4902\":\"0d93fa9c70bd2987942a\",\"4975\":\"07aaea2428bb6b5a5fab\",\"5041\":\"e0210e062a8027ffb0f3\",\"5104\":\"d34521c9683e5616db34\",\"5115\":\"9efe70d4f87053f148b5\",\"5119\":\"fd30fc79a9ef9f40bcb3\",\"5224\":\"cb916206d909e482a501\",\"5250\":\"f0d4cfa412bbf8163d11\",\"5253\":\"b16cc51984a2c6585d41\",\"5292\":\"125b85a896c810481068\",\"5304\":\"5bb1461702b6b9a25a2a\",\"5401\":\"b51930b659a2fbe92aee\",\"5494\":\"cc3c026f0ff445ebb4b6\",\"5521\":\"a2458e1e0433704fc9d6\",\"5548\":\"b89324913e67b0cbef3a\",\"5571\":\"d319c737d904c64d8eba\",\"5728\":\"9049ee8252bf9c50468e\",\"5887\":\"c77502e4c10101eb9113\",\"5929\":\"5b36950c3b87c209730d\",\"5964\":\"1aaf6c712db167fede4d\",\"5968\":\"caa9039c69fc619bb4d2\",\"6060\":\"f2de1698d736be7cb7d3\",\"6068\":\"7ceb88c700f929fd1ba3\",\"6116\":\"7b4f0937d99eaea7c15c\",\"6126\":\"77123597a2fd634def06\",\"6148\":\"623b25e4acdba3caea90\",\"6226\":\"9592fc46ee6e2cc15606\",\"6234\":\"f245d3f221094411dfcd\",\"6256\":\"2fe76cb30e2fced8d88a\",\"6272\":\"897b7ce472b1a390f392\",\"6342\":\"3c4274351d849d5010b8\",\"6344\":\"7392cd8d62c85a8f3d55\",\"6355\":\"260623f695510b34c146\",\"6464\":\"6f764a6d660917d88ca5\",\"6544\":\"6b45d2e6967b35e56b44\",\"6701\":\"5bf7d83b03a43d6b222e\",\"6773\":\"b500e4e202a9368e2834\",\"6790\":\"e9c9074bcb0b7cf27297\",\"6797\":\"f9e844b4284c09a9fc7c\",\"6826\":\"d7cc494d80b3e019846f\",\"6831\":\"06f0b6d03919f378089e\",\"6869\":\"037a46de1cb0ffa99c15\",\"6936\":\"7abda2d4e5bb1ab9bb01\",\"6946\":\"f1d90d460b83ede42498\",\"7164\":\"c830189b2ad10099beec\",\"7169\":\"b30554764cd9dcab0ffb\",\"7261\":\"529b678e05ac5e6666f2\",\"7300\":\"f4f8eed224a9921d9d08\",\"7303\":\"a2bdd903832fd3246da2\",\"7304\":\"390af96d7085a650d098\",\"7360\":\"89b9143ae611e2581b5b\",\"7433\":\"8cb69392de1a430e9c3f\",\"7464\":\"1e5d90a5f496ece86600\",\"7569\":\"b04ae8a41f30fcc498c6\",\"7585\":\"72684aa7dac892cb8cb9\",\"7594\":\"f0ffca037eec090815d9\",\"7808\":\"bb22e819fa0ea9299fa4\",\"7845\":\"2dd01f0c6cca8f008ffd\",\"7855\":\"e66e1ab5f51865665b62\",\"7879\":\"4a78f601c28981142d91\",\"7897\":\"38b47dd7353471daf452\",\"8015\":\"5752a21beca678ca22de\",\"8031\":\"c2d7991f40a4a3d8d5e7\",\"8134\":\"895d6c19c442497a4542\",\"8395\":\"1f28233c5ea82e8b2e99\",\"8681\":\"6d0e78c53a6c996f7148\",\"8714\":\"b5f269a0a935c640f3b5\",\"8732\":\"b92bb230b66b7d16a9b5\",\"8873\":\"8424b58fe0295a7972dc\",\"8898\":\"9fe5ebef8867a98f5dcc\",\"8970\":\"da1cebce6afd4bb1ad5d\",\"8988\":\"386a43a597b524565c01\",\"8995\":\"5bc39548b737b814c5c3\",\"9060\":\"606ed1efce1ce3be713d\",\"9064\":\"71061bf9106a3f1d06d9\",\"9319\":\"0c4786052604b3d521bc\",\"9360\":\"88f983885c5e77a522d2\",\"9377\":\"ace1f809ee53a942bf38\",\"9399\":\"5bada7e5d0f89eec6a5f\",\"9414\":\"d3b3cddc42dd89280d68\",\"9459\":\"74b1f546c884d17b819a\",\"9465\":\"be3d0b67868addd4d2ca\",\"9670\":\"51d23959bb9bae4f0ecf\",\"9738\":\"dcde7d5d3f4927b6667e\",\"9757\":\"51de5e5ba7bcb8576f82\",\"9780\":\"a11ac7782cf683ba1fc4\",\"9790\":\"d7c07bee01a6e04f3214\",\"9862\":\"80c0071ebf383eea3b8f\",\"9864\":\"dccd74b28dd5784742c2\",\"9871\":\"6a62f1a822def6f9226a\",\"9873\":\"66fec1d991d30cf191ac\",\"9895\":\"fec00094453b1024af11\",\"9921\":\"a58099730061ede27597\",\"9924\":\"17cbe626b4520009e9b9\",\"9926\":\"67334e68952e79504647\",\"9978\":\"713bfd260289f3323612\",\"9979\":\"3c3a1928a4ec2842457e\",\"9994\":\"7ecc921ea6ae7d5ad431\"}[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 + \".\" + {\"1597\":\"a250eca8cf87418c7b3e\",\"5250\":\"b9104f3df4166526b081\",\"5292\":\"035030cbb2311a7ddada\",\"6464\":\"7845ee2ccc5e22628b2a\",\"7594\":\"a8030565c3ef463dc1de\"}[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 = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, 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\tif (linkTag.parentNode) linkTag.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\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\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, null, 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 = {\"1597\":1,\"5250\":1,\"5292\":1,\"6464\":1,\"7594\":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","// 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, [6561], () => (__webpack_require__(6560)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","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","name","selector","validInnerComponents","variants","normal","error","warning","success","defaultRules","directives","background","opacity","blur","parent","component","textColor","variant","roundness","notification","virtual","textAuto","states","toggled","pressed","hover","focused","disabled","danger","shadow","state","textOpacity","textOpacityMode","outgoing","backgroundNoCssColor","data","emojiCurry","suggestEmoji","emoji","usersCurry","store","suggestUsers","input","nameKeywordLocalizer","firstChar","emojis","noPrefix","toLowerCase","substr","_objectSpread","filter","names","concat","keywords","kw","match","length","k","score","Math","max","apply","_toConsumableArray","imageUrl","startsWith","displayText","sort","a","b","alphabetically","_ref","dispatch","suggestions","previousQuery","timeout","cancelUserSearch","debounceUserSearch","query","reject","setTimeout","userSearch","clearTimeout","_ref2","_asyncToGenerator","_regeneratorRuntime","_callee","newSuggestions","_context","prev","next","abrupt","includes","users","user","screen_name","slice","aScore","bScore","screen_name_ui","detailText","profile_image_url_original","replacement","stop","_x","arguments","greentext","cyantext","faint","checkbox","radio","x","y","spread","color","alpha","active","lazy","validInnerComponentsLite","modal","getTagName","tag","result","exec","getAttrs","innertag","substring","replace","RegExp","trim","attrs","Array","from","matchAll","_slicedToArray","_ref3","_ref4","v","fromEntries","_ref5","_ref6","attrKey","processTextForEmoji","text","processor","buffer","textBuffer","i","char","_step","found","_iterator","_createForOfIteratorHelper","s","n","done","value","shortcode","err","f","push","class","props","url","required","type","String","content","default","methods","onClick","decoded","this","decodeURI","link","generateTagLink","$router","window","open","_createElementBlock","_hoisted_1","_createElementVNode","href","_ctx","target","_cache","_withModifiers","innerHTML","MAYBE_LINE_BREAKING_ELEMENTS","components","MentionsLine","HashtagLink","html","attentions","handleLinks","Boolean","render","_this","preProcessPerLine","newHtml","currentMentions","lastSpacing","lastTags","writtenMentions","invisibleMentions","writtenTags","mentionIndex","tagsIndex","encounteredTextReverse","pass1","currentTag","undefined","emptyElements","Set","levels","tagBuffer","getCurrentBuffer","flushText","handleSelfClosing","handleOpen","curBuf","newLevel","_unescape","tagFull","tagName","pop","has","convertHtmlToTree","processItem","item","index","array","what","emptyText","_createVNode","StillImage","isArray","_item","_item2","opener","children","closer","Tag","fullAttrs","mentionsLinePadding","_mergeProps","linkData","getLinkData","notifying","some","statusnet_profile_url","MENTIONS_LIMIT","renderMention","pass2","reverse","processItemReverse","_item3","rel","_getLinkData","_objectWithoutProperties","_excluded","renderHashtag","newChildren","prototype","toString","call","_isVNode","event","$emit","textContent","stripTags","join","_flattenDeep","greentextHandle","lines","blockElements","linebreakElements","visualLineElements","values","nonEmptyElements","elem","allElements","level","flush","handleBr","unshift","shift","convertHtmlToLines","string","every","l","cleanedString","textNoCssColor","border","top","inset","buttonInsetFakeBorders","inputInsetFakeBorders","buttonOuterShadow","hoverGlow","selected","findFirstUsable","slots","findIndex","_","renderOnlyFocused","onSwitch","Function","activeTab","scrollableTabs","sideTabBar","bodyScrollLock","computed","activeIndex","slot","key","isActive","_this2","tabName","$slots","beforeUpdate","clickTab","_this3","preventDefault","setTab","Fragment","$refs","contents","scrollTop","_this4","tabs","classesTab","classesWrapper","image","label","icon","FAIcon","classes","fullHeight","renderSlot","_withDirectives","_resolveDirective","outOfTreeSelector","compact","library","faCircleNotch","fetch","select","unmounted","_ref$childPropName","childPropName","_ref$additionalPropNa","additionalPropNames","WrappedComponent","getComponentProps","loading","bottomedOut","entries","created","addEventListener","scrollLoad","fetchEntries","removeEventListener","$props","$store","updateEntries","newEntries","isEmpty","bodyBRect","document","body","getBoundingClientRect","height","$el","offsetHeight","innerHeight","pageYOffset","_defineProperty","$t","specialJsonName","ja","languages","langCodeToJsonName","langCodeToCldrName","ensureFinalFallback","codes","codeList","r","Symbol","iterator","_arrayLikeToArray","constructor","test","_unsupportedIterableToArray","_n","F","TypeError","u","_setLanguage","loadLanguageFile","en","require","setLanguage","i18n","language","_languages","first","rest","lang","_messages","_toArray","locale","_isEqual","fallbackLocale","messages","sent","setLocaleMessage","t0","finish","_x2","EventTarget","EventTargetPolyfill","SORTED_EMOJI_GROUP_IDS","REGIONAL_INDICATORS","start","A","codePointAt","res","end","letter","fromCodePoint","displayTextI18n","args","loadAnnotations","injectAnnotations","annotations","availableLangs","reduce","acc","cur","registrationOpen","server","textlimit","themeData","vapidPublicKey","alwaysShowSubjectInput","defaultAvatar","defaultBanner","collapseMessageWithSubject","useAtIcon","mentionLinkDisplay","mentionLinkShowTooltip","mentionLinkShowAvatar","mentionLinkFadeDomain","mentionLinkShowYous","mentionLinkBoldenYou","hideFilteredStatuses","hideMutedPosts","hideMutedThreads","hideWordFilteredPosts","hidePostStats","hideBotIndication","hideSitename","hideUserStats","muteBotStatuses","muteSensitiveStatuses","modalOnRepeat","modalOnUnfollow","modalOnBlock","modalOnMute","modalOnDelete","modalOnLogout","modalOnApproveFollow","modalOnDenyFollow","modalOnRemoveUserFromFollowers","loginMethod","logo","logoMargin","logoMask","logoLeft","disableUpdateNotification","minimalScopesMode","nsfwCensorImage","postContentType","redirectRootLogin","redirectRootNoLogin","scopeCopy","showFeaturesPanel","showInstanceSpecificPanel","sidebarRight","subjectLineBehavior","theme","emojiReactionsScale","textSize","emojiSize","navbarSize","panelHeaderSize","forcedRoundness","fontsOverride","virtualScrolling","sensitiveByDefault","conversationDisplay","conversationTreeAdvanced","conversationOtherRepliesButton","conversationTreeFadeAncestors","showExtraNotifications","showExtraNotificationsTip","showChatsInExtraNotifications","showAnnouncementsInExtraNotifications","showFollowRequestsInExtraNotifications","maxDepthInThread","autocompleteSelect","closingDrawerMarksAsSeen","unseenAtTop","ignoreInactionableSeen","customEmoji","customEmojiFetched","emojiFetched","unicodeEmojiAnnotations","pleromaBackend","postFormats","restrictedNicknames","safeDM","knownDomains","birthdayRequired","birthdayMinAge","shoutAvailable","pleromaChatMessagesAvailable","pleromaCustomEmojiReactionsAvailable","gopherAvailable","mediaProxyAvailable","suggestionsEnabled","suggestionsWeb","quotingAvailable","groupActorAvailable","instanceSpecificPanelContent","tos","backendVersion","frontendVersion","pollsAvailable","pollLimits","max_options","max_option_chars","min_expiration","max_expiration","mutations","setInstanceOption","setKnownDomains","domains","setUnicodeEmojiAnnotations","getters","instanceDefaultConfig","instanceDefaultProperties","groupedCustomEmojis","packs","tags","packName","packsOf","forEach","packId","standardEmojiList","groupId","standardEmojiGroupList","instanceDomain","URL","hostname","remoteInteractionLink","endsWith","statusId","nickname","actions","_ref7","_ref8","commit","getStaticEmoji","_ref9","slug","groups","_groups$symbols","symbols","console","warn","loadUnicodeEmojiData","_ref10","langList","all","_ref11","_callee2","_context2","getCustomEmoji","_ref12","_callee3","caseInsensitiveStrCmp","noPackLast","byPackThenByName","_context3","ok","json","assign","la","lb","aNull","bNull","packOf","packOfA","packOfB","_ref13","_ref14","image_url","fetchEmoji","_ref15","getKnownDomains","_ref16","_callee4","rootState","_context4","apiService","credentials","currentUser","emptyTl","statuses","statusesObject","faves","visibleStatuses","visibleStatusesObject","newStatusCount","maxId","minId","minVisibleId","followers","friends","userId","flushMarker","defaultState","allStatuses","scrobblesNextFetch","allStatusesObject","conversationsObject","favorites","timelines","mentions","public","media","publicAndExternal","dms","bookmarks","mergeOrAdd","arr","obj","oldItem","_merge","_omitBy","attachments","splice","new","status","deleted","prepareStatus","sortById","seqA","Number","seqB","isSeqA","isNaN","isSeqB","sortTimeline","timeline","_last","addNewStatuses","_ref$showImmediately","showImmediately","_ref$user","_ref$noIdUpdate","noIdUpdate","_ref$pagination","pagination","_isArray","timelineObject","minNew","_minBy","maxNew","_maxBy","newer","older","addStatus","resultForCurrentTimeline","addToTimeline","Date","now","accountId","scrobbles","latestScrobble","getLatestScrobble","conversationId","statusnet_conversation_id","addStatusToGlobalStorage","_find","visibility","quote","processors","edit","retweet","retweetedStatus","retweeted_status","favorite","add","counter","in_reply_to_status_id","favorited","fave_num","favoriteStatus","follow","unknown","log","_each","removeStatus","_remove","_first","showNewStatuses","oldTimeline","_slice","resetStatuses","emptyState","clearTimeline","_ref6$excludeUserId","excludeUserId","setFavorited","newStatus","setFavoritedConfirm","_findIndex","favoritedBy","setMutedStatus","thread_muted","setRetweeted","repeated","repeat_num","setRetweetedConfirm","rebloggedBy","setBookmarked","bookmarked","setBookmarkedConfirm","setDeleted","setManyDeleted","condition","setLoading","setNsfw","nsfw","queueFlush","queueFlushAll","addRepeats","_ref17","rebloggedByUsers","find","_ref18","addFavs","_ref19","favoritedByUsers","_ref20","addEmojiReactionsBy","_ref21","emojiReactions","emoji_reactions","addOwnReaction","_ref22","reactionIndex","reaction","count","accounts","newReaction","me","removeOwnReaction","_ref23","updateStatusWithPoll","_ref24","poll","setVirtualHeight","_ref25","virtualHeight","_ref26","_ref27","_ref27$showImmediatel","_ref27$timeline","_ref27$noIdUpdate","fetchStatus","_ref28","api","backendInteractor","fetchStatusSource","_ref29","fetchStatusHistory","_ref30","deleteStatus","_ref31","messageKey","messageArgs","message","deleteStatusById","_ref32","markStatusesAsDeleted","_ref33","_ref34","unfavorite","_ref35","fetchPinnedStatuses","_ref36","pinStatus","_ref37","pinOwnStatus","unpinStatus","_ref38","unpinOwnStatus","muteConversation","_ref39","unmuteConversation","_ref40","_ref41","unretweet","_ref42","bookmark","_ref43","bookmarkStatus","unbookmark","_ref44","unbookmarkStatus","_ref45","_ref46","_ref47","fetchFavsAndRepeats","_ref48","fetchFavoritedByUsers","fetchRebloggedByUsers","_ref49","_ref50","reactWithEmoji","_ref51","_ref52","unreactWithEmoji","_ref53","_ref54","fetchEmojiReactionsBy","_ref55","fetchEmojiReactions","fetchFavs","_ref56","fetchRepeats","_ref57","search","_ref58","q","limit","offset","following","search2","_ref59","_ref60","emptyNotifications","desktopNotificationSilence","POSITIVE_INFINITY","idStore","addNewNotifications","notifications","clearNotifications","updateNotificationsMinMaxId","setNotificationsLoading","setNotificationsSilence","markNotificationsAsSeen","seen","markSingleNotificationAsSeen","dismissNotification","updateNotification","updater","validNotifications","isValidNotification","statusNotifications","isStatusNotification","referenceStatus","report","hasOwnProperty","maybeShowNotification","notificationClicked","closeAllDesktopNotifications","single","closeDesktopNotification","dismissNotificationLocal","setLists","allLists","setList","listId","title","allListsObject","accountIds","entry","setListAccounts","addListAccount","removeListAccount","set","deleteList","lists","createList","fetchList","getList","fetchListAccounts","getListAccounts","updateList","saved","added","removed","addAccountsToList","removeAccountsFromList","findListTitle","findListAccounts","fetchAndUpdate","_ref2$timeline","_ref2$older","_ref2$showImmediately","_ref2$userId","_ref2$listId","_ref2$statusId","_ref2$tag","until","since","timelineData","_camelCase","_getters$mergedConfig","mergedConfig","replyVisibility","loggedIn","withMuted","numStatusesBeforeFetch","response","errors","statusText","ccTimeline","update","timelineFetcher","startFetching","_ref3$timeline","_ref3$userId","_ref3$listId","_ref3$statusId","_ref3$tag","promiseInterval","boundFetchAndUpdate","requests","listsFetcher","startFetchingTimeline","_ref$userId","_ref$listId","_ref$statusId","fetchTimeline","startFetchingNotifications","notificationsFetcher","fetchNotifications","startFetchingFollowRequests","followRequestFetcher","startFetchingLists","startUserSocket","instance","getMastodonSocketURI","stream","ProcessedWS","func","verifyCredentials","windowWidth","innerWidth","documentElement","clientWidth","windowHeight","clientHeight","REDIRECT_URI","location","origin","getOrCreateApp","clientId","clientSecret","form","FormData","append","___pleromafe_commit_hash","toISOString","method","app","client_id","client_secret","getClientToken","oauth","login","response_type","redirect_uri","scope","dataString","_reduce","encoded","encodeURIComponent","getToken","getTokenWithCredentials","username","password","verifyOTPCode","mfaToken","verifyRecoveryCode","revokeToken","token","mergeArrayLength","oldValue","newValue","_mergeWith","blockUser","relationship","unblockUser","muteUser","_typeof","expiresIn","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","_uniq","_concat","saveFollowerIds","followerIds","clearFriends","clearFollowers","addNewUsers","usersByNameObject","updateUserRelationship","updateUserInLists","inLists","saveBlockIds","blockIds","addBlockId","blockId","indexOf","setBlockIdsMaxId","blockIdsMaxId","saveMuteIds","muteIds","setMuteIdsMaxId","muteIdsMaxId","addMuteId","muteId","saveDomainMutes","domainMutes","addDomainMute","removeDomainMute","setPinnedToUser","pinnedStatusIds","pinned","setUserForStatus","setUserForNotification","action","from_profile","setColor","highlighted","highlight","signUpPending","signUpErrors","signUpNotice","signUpSuccess","signUpFailure","notice","findUser","findUserByName","findUserByUrl","fetchUserIfMissing","fetchUser","fetchUserByName","fetchUserRelationship","fetchUserInLists","fetchBlocks","reset","blocks","_map","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","config","webPushNotifications","notificationVisibility","unregisterPushNotifications","retweetedUsers","_compact","targetUsers","notificationIds","notificationsObject","relevantNotifications","searchUsers","signUp","userInfo","register","params","access_token","getCaptcha","logout","_store$rootState","oauthApi","userToken","backendInteractorService","loginUser","accessToken","Notification","permission","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","setWsToken","wsToken","setSocket","setFollowRequests","setMastoUserSocketStatus","incrementRetryMultiplier","resetRetryMultiplier","enableMastoSockets","initial","WebSocket","CLOSED","CLOSING","getState","WSConnectionStatus","disableMastoSockets","startMastoUserSocket","detail","chatId","chatUpdate","closeEvent","ignoreCodes","debug","stopMastoUserSocket","close","_ref7$timeline","_ref7$tag","_ref7$userId","_ref7$listId","_ref7$statusId","stopFetchingTimeline","stopFetchingNotifications","_extends","_objectDestructuringEmpty","stopFetchingFollowRequests","removeFollowRequest","request","it","stopFetchingLists","initializeSocket","Socket","connect","disconnectFromSocket","disconnect","defaultApi","path","_set","updateProfile","notificationsApi","settings","updateNotificationSettings","settingsMap","defaultScope","defaultNSFW","stripRichContent","get","acceptChatMessages","allowFollowingMove","discoverable","hideFavorites","hideFollowers","hideFollows","hideFollowersCount","hideFollowsCount","webPushHideContents","blockNotificationsFromStrangers","profileConfig","confirmProfileOption","wipeProfileOption","wipeAllProfileOptions","_value$get","_get","_original","setProfileOption","_map$set","_map$api","faTimes","Modal","NEW_USER_DATE","dirty","flagStorage","updateCounter","prefsStorage","_journal","simple","dontShowUpdateNotifs","collapseNav","collections","pinnedNavItems","raw","cache","newUserFlags","_moveItemInArray","movement","oldIndex","newIndex","newArray","_clamp","_wrapData","userName","_user","_timestamp","_version","_checkValidity","_verifyPrefs","_mergeJournal","_len","journals","_key","allJournals","_flatten","j","grouped","_groupBy","trimmedGrouped","journal","timestamp","remainder","lastRemoveIndex","_findLastIndex","operation","_uniqWith","_takeRight","clearServerSideStorage","userData","_cloneDeep","setServerSideStorage","live","storage","fqn","_getRecentData2","recent","stale","needUpload","cacheValid","liveValid","_getRecentData","_PLEROMA_HOTPATCH","reverseMigrations","to","_doMigrations","needsUpload","userNew","created_at","flagsTemplate","_recent","recentData","_excluded2","staleData","_excluded3","totalFlags","totalPrefs","allFlagKeys","toRaw","_getAllFlags","flag","recentFlag","staleFlag","_mergeFlags","recentJournal","staleJournal","resultOutput","totalJournal","command","newSet","_args","_mergePrefs","knownKeys","knownKeysSet","_resetFlags","min","setFlag","setPreference","addCollectionPreference","collection","removeCollectionPreference","reorderCollectionPreference","newCollection","updateCache","pushServerSideStorage","_ref16$force","force","pleroma_settings_store","frontends","loaded","needsReboot","modifiedPaths","descriptions","draft","dbConfigEnabled","adminSettingsStorage","setInstanceAdminNoDbConfig","setAvailableFrontends","installedRefs","installed_refs","refs","ref","updateAdminSettings","updateAdminDescriptions","updateAdminDraft","_path","resetAdminDraft","loadFrontendsStuff","fetchAvailableFrontends","loadAdminStuff","fetchInstanceDBConfig","backendDbConfig","errorJson","fetchInstanceConfigDescriptions","backendDescriptions","setInstanceAdminSettings","configs","c","group","db","convert","tuple","setInstanceAdminDescriptions","description","_ref11$key","newPath","d","pushAdminDraft","changed","lv1data","eConfig","eDraft","_differenceWith","pushInstanceDBConfig","payload","pushAdminSetting","split","clone","resetAdminSetting","_path$split","_path$split2","subkey","delete","subkeys","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","_ref4$statusIds","statusIds","preTickedStatuses","oldState","trackedPolls","pollsObject","mergeOrAddPoll","existingPoll","expired","parse","expires_at","trackPoll","pollId","currentValue","untrackPoll","updateTrackedPoll","fetchPoll","polls","votePoll","choices","vote","modalActivated","openPostStatusModal","closePostStatusModal","resetPostStatusModal","openEditStatusModal","closeEditStatusModal","openStatusHistoryModal","closeStatusHistoryModal","ChatService","newMessages","_ref$updateMaxId","updateMaxId","_ret","_loop","chat_id","fakeId","fakeMessage","idIndex","pending","idempotency_key","idempotencyKeyIndex","isConfirmation","lastSeenMessageId","newMessageCount","empty","getView","currentMessageChainId","_orderBy","firstMessage","previousMessage","date","setHours","getTime","afterDate","nextMessage","isTail","object","messageChainId","_uniqueId","isHead","deleteMessage","messageId","m","cullOlderMessages","maxIndex","minIndex","_sortBy","_step2","_iterator2","resetNewMessageCount","clear","failedMessageIds","handleMessageError","isRetry","lastPersistedMessage","oldId","chatList","chatListFetcher","openedChats","reactive","openedChatMessageServices","lastReadMessageId","getChatById","currentChat","currentChatMessageService","findOpenedChatByRecipientId","recipientId","sortedChatList","unreadChatCount","_sumBy","startFetchingChats","stopFetchingChats","fetchChats","addNewChats","rootGetters","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","privileges","getAnnouncements","visible","visibleObject","getWithinVisible","adminFetchAnnouncements","visibleAnnouncement","statusCode","markAnnouncementAsRead","dismissAnnouncement","startFetchingAnnouncements","interval","setInterval","stopFetchingAnnouncements","clearInterval","postAnnouncement","startsAt","endsAt","allDay","editAnnouncement","deleteAnnouncement","defaultReducer","paths","substate","saveImmedeatelyActions","defaultStorage","localforage","createPersistedState","_ref$key","_ref$paths","_ref$getState","getItem","_ref$setState","setState","setItem","info","_ref$reducer","reducer","_ref$storage","_ref$subscriber","subscriber","handler","subscribe","savedState","usersState","replaceState","merge","mutation","webPushNotification","notificationPermission","isUserMutation","isVapidMutation","isPermMutation","isUserConfigMutation","isVisibilityMutation","for","isPasswordAuth","isTokenAuth","mapState","mapGetters","mapMutations","mapActions","submit","submitToken","submitPassword","_this$oauth","identifier","passwordResetRequested","focusOnPasswordInput","clearError","passwordInput","focus","setSelectionRange","_hoisted_2","_toDisplayString","_hoisted_3","onSubmit","_Fragment","_hoisted_4","_hoisted_5","$event","placeholder","_hoisted_7","_hoisted_8","_hoisted_10","_component_router_link","_hoisted_11","_hoisted_12","_hoisted_13","_createBlock","_hoisted_14","_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","routeTo","anonRoute","custom","_renderSlot","_normalizeProps","_guardReactiveProps","faThumbtack","OptionalRouterLink","isPinned","pinnedItems","togglePin","serverSideStorage","_component_OptionalRouterLink","navigate","$attrs","_resolveDynamicComponent","iconLetter","labelRaw","showPin","_normalizeClass","transform","filterNavigation","hasChats","hasAnnouncements","isFederating","isPrivate","getListEntries","ListsMenuContent","NavigationEntry","privateMode","federating","_renderList","_component_NavigationEntry","faUsers","faGlobe","faBookmark","faEnvelope","faComments","faBell","faInfoCircle","faStream","faList","getRouteTo","pinnedList","faChevronDown","faChevronUp","faBullhorn","NavigationPins","Checkbox","editMode","showTimelines","showLists","timelinesList","rootList","toggleTimelines","toggleLists","toggleEditMode","toggleCollapse","collapsed","timelinesItems","rootItems","forceExpand","_component_NavigationPins","forceEditMode","_component_ListsMenuContent","shout","pleromaChatMessages","gopher","whoToFollow","mediaProxy","uploadlimit","fileSizeFormatService","num","unit","getWhoToFollow","panel","usersToFollow","toFollow","reply","shuffled","_shuffle","img","avatar","acct","externalUser","showWhoToFollow","userProfileLink","generateProfileLink","watch","oldUser","mounted","fill","src","currentMessage","togglePanel","newVal","scrollEl","querySelector","scrollHeight","$nextTick","floating","author","rows","onKeyup","_withKeys","setTransform","scale","PinchZoom","_toHandlers","$listeners","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","_createClass","swipePreviewCallback","swipeEndCallback","swipeCancelCallback","swipelessClickCallback","_ref$threshold","_ref$perpendicularTol","_ref$disableClickThre","disableClickThreshold","_classCallCheck","nop","_reset","_pointerId","_swiped","_preventNextClick","button","pointerId","coord","sign","isPositive","pointerType","handlePointerDown","$gesture","handlePointerMove","move","handlePointerUp","handlePointerCancel","cancel","handleNativeClick","click","preview","offsets","GestureService","onPointerdown","onPointermove","onPointerup","onPointercancel","faChevronLeft","faChevronRight","VideoAttachment","SwipeClick","Flash","swipeDirection","swipeThreshold","pinchZoomMinScale","pinchZoomScaleResetLimit","showing","currentMedia","canNavigate","getType","swipeDisableClickThreshold","hide","hideIfNotSwiped","comp","swipeClick","goPrev","prevIndex","newMedia","goNext","nextIndex","onImageLoaded","handleSwipePreview","pinchZoom","handleSwipeEnd","handleKeyupEvent","keyCode","handleKeydownEvent","_component_Modal","onBackdropClicked","_component_SwipeClick","onPreviewRequested","onSwipeFinished","onSwipelessClicked","_component_PinchZoom","alt","onLoad","_component_VideoAttachment","controls","_component_Flash","$tc","total","spin","faSignInAlt","faSignOutAlt","faHome","faUserPlus","faSearch","faTachometerAlt","faCog","faCompass","closed","closeGesture","toggleDrawer","unseenNotifications","unseenNotificationsFromStore","unseenNotificationsCount","sitename","timelinesRoute","lastTimeline","doLogout","touchStart","touchMove","openSettingsModal","openAdminModal","onTouchstart","onTouchmove","style","role","faPen","HIDDEN_FOR_PAGES","scrollingDown","inputActive","oldScrollPos","amountScrolled","autohideFloatingPostButton","activateFloatingPostButtonAutohide","handleOSK","deactivateFloatingPostButtonAutohide","isLoggedIn","isHidden","$route","isPersistent","alwaysShowNewPostButton","handleScrollStart","handleScrollEnd","openPostForm","smallPhone","smallPhoneKbOpen","biggerPhoneKbOpen","_debounce","scrollY","leading","trailing","faBars","faArrowUp","faMinus","faCheckDouble","SideDrawer","Notifications","ConfirmModal","notificationsCloseGesture","notificationsOpen","notificationsAtTop","showingConfirmLogout","closeMobileNotifications","countExtraNotifications","unseenCount","unseenCountBadgeText","isChat","chatsPinned","shouldConfirmLogout","toggleMobileSidebar","sideDrawer","openMobileNotifications","markRead","notificationsTouchStart","notificationsTouchMove","scrollToTop","scrollTo","scrollMobileNotificationsToTop","mobileNotifications","showConfirmLogout","hideConfirmLogout","onScroll","_ref$target","fetchOlderNotifications","_component_FALayers","_component_SideDrawer","_Teleport","_component_confirm_modal","onAccepted","onCancelled","searchTerm","searchInput","toggleHidden","SearchBar","searchBarHidden","supportsMask","CSS","supports","enableMask","logoStyle","logoMaskStyle","logoBgStyle","margin","onSearchBarToggled","_normalizeStyle","_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","_withCtx","_component_Status","statusoid","resettingForm","editStatus","isFormVisible","oldVal","val","doEditStatus","spoilerText","sensitive","contentType","statusPosterService","onPosted","postStatus","resetAndClose","statusHistory","historyCount","history","newStatusId","resetHistory","_component_status","notices","globalNotices","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","layoutType","navClasses","navbarColumnStretch","userBackground","background_image","instanceBackground","hideInstanceWallpaper","bgStyle","hideISP","isChats","isListEdit","editingAvailable","shoutboxPosition","hideShoutbox","_this$$store$getters$","thirdColumnMode","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","_component_MobilePostStatusButton","_component_UserReportingModal","_component_PostStatusModal","_component_EditStatusModal","_component_StatusHistoryModal","_component_SettingsModal","_component_UpdateNotification","_component_GlobalNoticeList","themeApplied","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","loadStatusError","isPage","fetchConversation","maxDepthToShowByDefault","maxDepth","streamingEnabled","displayStyle","isTreeView","isLinearView","treeViewIsSimple","shouldFadeAncestors","otherRepliesButtonPosition","showOtherRepliesButtonBelowStatus","showOtherRepliesButtonInsideStatus","prop","hideStatus","virtualHidden","originalStatusId","getConversationId","_clone","statusIndex","_filter","sortAndFilterConversation","statusMap","threadTree","linearized","walk","forest","topLevel","processed","replyIds","sizes","subTreeSizeFor","cid","depths","subTreeDepthFor","_this5","tl","otherTopLevelCount","showingTopLevel","canDive","diveRoot","parentOf","diveDepth","diveMode","shouldShowAllConversationButton","shouldShowAncestors","ancestorsOf","irid","hiddenStyle","_this6","_this7","def","isReplying","_this8","maybeHighlight","ThreadTree","QuickFilterSettings","QuickViewSettings","newConversationId","oldConversationId","resetDisplayState","_this9","ancestors","descendants","getHighlight","setThreadDisplay","nextStatus","setThreadDisplayRecursively","_this10","leastVisibleAncestor","diveIntoStatus","preventScroll","tryScrollTo","diveToTopLevel","topLevelAncestorOrSelfId","undive","_this11","goToCurrent","parentId","parentOrSelf","_component_QuickFilterSettings","_component_QuickViewSettings","numReplies","quotes","useListsMenu","openMenu","blockOpen","stopPropagation","timelineName","i18nkey","onShow","faCirclePlus","faCheck","Timeline","showScrollTop","paused","unfocused","virtualScrollIndex","blockingClicks","Conversation","TimelineMenu","filteredVisibleStatuses","filteredPinnedStatusIds","showLoadButton","loadButtonString","mobileLoadButtonString","rootClasses","embedded","header","footer","_keyBy","statusesToDisplay","amount","statusesPerSide","ceil","nonPinnedIndex","virtualScrollingEnabled","mobileLayout","handleScroll","handleVisibilityChange","handleShortKey","determineVisibleStatuses","offsetTop","stopBlockingClicks","blockClicksTemporarily","fetchOlderStatuses","_throttle","cappedScrollIndex","centerOfScreen","approxIndex","floor","virtualScrollIndexY","abs","doc","clientTop","pauseOnUnfocused","_component_TimelineMenu","_component_conversation","footerSlipgate","_component_Timeline","tabModeDict","follows","reactions","moves","allow_following_move","filterMode","canSeeReports","onModeSwitch","TabSwitcher","_component_tab_switcher","UserAvatar","RichContent","UserPopover","htmlTitle","name_html","withAvatar","_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","width","_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","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","browserSupport","cssFilter","popoverMarginStyle","left","hovered","menuOpened","onHover","bool","isHovered","confirm","hoveredMessageChain","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","_opts$delayed","delayed","_getScrollPosition$of","diff","scrollBy","trunc","options","_options$behavior","behavior","_options$forceRead","isBottomedOut","reachedTop","cullOlderCheck","handleScrollUp","positionBeforeLoading","previousPosition","newPosition","positionAfterLoading","_ref2$isFirstFetch","_ref2$fetchLatest","fetchLatest","fetchOlderMessages","sinceId","chatMessages","positionBeforeUpdate","getOrCreateChat","doStartFetching","handleAttachmentPosting","sendMessage","_this12","idempotencyKey","mediaId","isNormalized","buildFakeMessage","doSendMessage","retriesLeft","_this13","_ref4$retriesLeft","sendChatMessage","pow","_component_ChatMessage","onResize","showingConfirmRemoveFollower","shouldConfirmRemoveUserFromFollowers","showConfirmRemoveUserFromFollowers","hideConfirmRemoveUserFromFollowers","doRemoveUserFromFollowers","RemoteFollow","FollowButton","RemoveFollowerButton","isMe","_component_basic_user_card","noFollowsYou","followed_by","_component_FollowButton","_component_RemoveFollowerButton","_component_RemoteFollow","faBirthdayCake","FollowerList","withLoadMore","destroy","FriendList","defaultTabKey","footerRef","routeParams","load","stopFetching","isUs","isExternal","followsTabVisible","hide_follows","followersTabVisible","hide_followers","favoritesTabVisible","hide_favorites","formattedBirthday","browserLocale","birthday","timeZone","year","setFooterRef","el","userNameOrId","loadById","maybeId","maybeName","reason","errorMessage","switchUser","onTabSwitch","linkClicked","parentNode","FollowCard","switcher","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","oldLength","_uniqBy","getActiveTab","resultCount","onResultTabSwitch","lastHistoryRecord","hashtag","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","uses","_hoisted_26","setup","v$","useVuelidate","email","fullname","captcha","InterfaceLanguageSwitcher","validations","requiredIf","accountActivationRequired","sameAs","maxValue","birthdayMin","accountApprovalRequired","setCaptcha","bioPlaceholder","replaceNewlines","reasonPlaceholder","minAge","setUTCMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","minDate","setTime","DAY","birthdayMinAttr","toJSON","birthdayMinFormatted","isPending","serverValidationErrors","hasSignUpNotice","termsOfService","captcha_solution","solution","captcha_token","captcha_answer_data","answer_data","$touch","$invalid","cpt","str","_hoisted_49","_hoisted_50","$error","$model","$dirty","bio","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_component_interface_language_switcher","_hoisted_35","_hoisted_36","_hoisted_38","_hoisted_39","autocomplete","autocorrect","autocapitalize","spellcheck","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_47","_hoisted_48","passwordReset","throttled","mailerEnabled","dismissError","passwordResetApi","showingApproveConfirmDialog","showingDenyConfirmDialog","findFollowRequestNotificationId","notif","notificationsFromStore","showApproveConfirmDialog","hideApproveConfirmDialog","showDenyConfirmDialog","hideDenyConfirmDialog","approveUser","shouldConfirmApprove","doApprove","notifId","denyUser","shouldConfirmDeny","doDeny","FollowRequestCard","_component_FollowRequestCard","_this$$store$state$oa","staffAccounts","groupedStaffAccounts","groupBy","admin","moderator","toInstanceReasonObject","instances","federationPolicy","mrfPolicies","quarantineInstances","acceptInstances","rejectInstances","ftlRemovalInstances","mediaNsfwInstances","mediaRemovalInstances","keywordsFtlRemoval","keywordsReject","keywordsReplace","hasInstanceSpecificPolicies","hasKeywordPolicies","TermsOfServicePanel","StaffPanel","MRFTransparencyPanel","policy","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","_ctx$$router","back","listTitle","_component_ListsUserSearch","onResults","onLoading","onLoadingDone","_component_PanelLoading","cols","AnnouncementEditor","editing","editedAnnouncement","editError","canEditAnnouncement","isRead","publishedAt","published_at","formatTimeOrDate","starts_at","ends_at","markAsRead","all_day","toLocaleString","enterEditMode","pleroma","raw_content","submitEdit","cancelEdit","Announcement","_component_announcement_editor","_component_rich_content","newAnnouncement","posting","canPostAnnouncement","_component_announcement","validateAuthenticatedRoute","routes","_to","PublicAndExternalTimeline","PublicTimeline","FriendsTimeline","beforeEnter","TagTimeline","BookmarkTimeline","ConversationPage","meta","dontScroll","QuotesTimeline","RemoteUserResolver","UserProfile","Interactions","DMs","Registration","PasswordReset","FollowRequests","disableTeleport","OAuthCallback","Search","WhoToFollow","About","AnnouncementsPage","Lists","ListsTimeline","ListsEdit","ChatList","previousNavPaddingRight","previousAppBgWrapperRight","lockerEls","disableBodyScroll","scrollBarGap","reserveScrollBarGap","navEl","getElementById","getComputedStyle","getPropertyValue","paddingRight","appBgWrapperEl","classList","enableBodyScroll","remove","directive","binding","updated","Vue","staticInitialResults","decodeUTF8Base64","rawData","atob","Uint8Array","charCodeAt","TextDecoder","decode","preloadFetch","requestData","JSON","getInstanceConfig","max_toot_chars","vapid_public_key","approval_required","metadata","birthday_required","birthday_min_age","getBackendProvidedConfig","pleroma_fe","_x3","getStaticConfig","setSettings","_callee5","apiConfig","staticConfig","overrides","env","copyInstanceOption","_context5","___pleromafe_dev_overrides","___pleromafe_mode","NODE_ENV","staticConfigPreference","_x4","getTOS","_callee6","_context6","_x5","getInstancePanel","_callee7","_context7","_x6","getStickers","_callee9","stickers","_context9","_callee8","resPack","_context8","pack","_x8","localeCompare","_x7","getAppSecret","_callee10","_context10","_x9","resolveStaffAccounts","nicknames","uri","getNodeInfo","_callee11","features","uploadLimits","software","priv","federation","_context11","nodeName","openRegistrations","parseInt","general","banner","fieldsLimits","enabled","web","version","mrf_policies","_x10","setConfig","_callee12","configInfos","_context12","_x11","checkOAuthToken","_callee13","_context13","_x12","_callee14","router","_context14","FaviconService","initServiceWorker","updateFocus","applyConfig","createRouter","createWebHistory","scrollBehavior","_from","savedPosition","matched","createApp","App","use","vClickOutside","VBodyScrollLock","VueVirtualScroller","FontAwesomeIcon","FontAwesomeLayers","unwrapInjectedRef","mount","_x13","currentLocale","navigator","createI18n","global","persistedStateOptions","storageError","plugins","persistedState","pushNotifications","createStore","modules","interface","interfaceModule","instanceModule","usersModule","statusesModule","notificationsModule","listsModule","apiModule","configModule","profileConfigModule","serverSideStorageModule","adminSettings","adminSettingsModule","shoutModule","oauthModule","authFlow","authFlowModule","mediaViewerModule","oauthTokens","oauthTokensModule","reportsModule","pollsModule","postStatusModule","editStatusModule","statusHistoryModule","chatsModule","announcementsModule","strict","afterStoreSetup","process","COMMIT_HASH","DEV_OVERRIDES","APPEARANCE_SETTINGS_KEYS","expertLevel","colors","customTheme","customThemeSource","themeDebug","forceThemeRecompilation","theme3hacks","underlay","fonts","post","monospace","padEmoji","hideScrobbles","hideScrobblesAfter","maxThumbnails","hideNsfw","preloadImage","loopVideo","loopVideoSilentOnly","emojiReactionsOnTimeline","stopGifs","likes","repeats","followRequest","chatMention","notificationNative","webPushAlwaysShowNotifications","muteWords","hideScopeNotice","playVideosInModal","useOneClickNsfw","useContainFit","userPopoverAvatarAction","userPopoverOverlay","sidebarColumnWidth","contentColumnWidth","notifsColumnWidth","defaultConfig","setOptionTemporarily","setOption","loadSettings","presentKeys","intersection","temporaryChangesTimeoutId","revert","timeoutId","setThemeV2","recompile","themeName","saveData","Cookies","localFonts","temporaryChangesConfirm","temporaryChangesRevert","settingsModalState","settingsModalLoadedUser","settingsModalLoadedAdmin","settingsModalTargetTab","settingsModalMode","currentSaveStateNotice","noticeClearTimeout","queryLocalFonts","layoutHeight","settingsSaved","errorData","setTemporaryChanges","clearTemporaryChanges","setThemeApplied","setNotificationPermission","setLayoutType","closeSettingsModal","togglePeekSettingsModal","setSettingsModalTargetTab","pushGlobalNotice","removeGlobalNotice","setLayoutHeight","setLayoutWidth","layoutWidth","setLastTimeline","setFontsList","font","family","setPageTitle","option","clearSettingsModalTargetTab","openSettingsModalTab","_ref13$messageArgs","_ref13$level","_ref13$timeout","newNotice","normalOrMobile","setTheme","instanceThemeName","_rootState$config","userThemeName","userThemeSnapshot","userThemeSource","actualThemeName","forceRecompile","promise","normalizeThemeData","getPreset","_pleroma_theme_version","source","realThemeData","tryLoadCache","theme2ruleset","convertTheme2To3","hacks","fontKey","newRule","ruleset","applyTheme","bg","fg","cRed","cGreen","cBlue","cOrange","generatePreset","themeSource","out","themeFileVerison","themeEngineVersion","CURRENT_VERSION","StatusCodeError","stringify","captureStackTrace","create","RegistrationError","_Error","_callSuper","errorContents","ap_id","errs","_capitalize","_inherits","_wrapNativeSuper","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_DELETE_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_LISTS_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","PLEROMA_STATUS_QUOTES_URL","PLEROMA_USER_FAVORITES_TIMELINE_URL","PLEROMA_ADMIN_CONFIG_URL","PLEROMA_EMOJI_PACK_URL","PLEROMA_EMOJI_UPDATE_FILE_URL","oldfetch","fullUrl","promisedRequest","_ref$headers","headers","Accept","authHeaders","Authorization","parseUser","_ref24$limit","MASTODON_FOLLOWING_URL","announcementToPayload","_ref109","_ref113","_ref113$args","_ref114","_ref115","MASTODON_STREAMING","MASTODON_STREAMING_EVENTS","PLEROMA_STREAMING_EVENTS","_ref116","_ref116$preprocessor","preprocessor","handleMastoWS","_ref116$id","eventTarget","proxy","original","eventName","eventData","dispatchEvent","CustomEvent","wsEvent","readyState","parsedEvent","parseStatus","parseNotification","freeze","JOINED","ERROR","DISABLED","STARTING","STARTING_INITIAL","_ref50$since","_ref50$minId","_ref50$until","_ref50$userId","_ref50$listId","_ref50$statusId","_ref50$tag","_ref50$withMuted","_ref50$replyVisibilit","_ref50$includeTypes","includeTypes","timelineUrls","publicFavorites","isNotifications","queryString","param","parseLinkHeaderPagination","flakeId","urlContext","MASTODON_STATUS_CONTEXT_URL","MASTODON_STATUS_SOURCE_URL","parseSource","originalStatus","exportFriends","more","_ref27$limit","MASTODON_FOLLOWERS_URL","MASTODON_FOLLOW_URL","unfollowUser","MASTODON_UNFOLLOW_URL","MASTODON_BLOCK_USER_URL","MASTODON_UNBLOCK_USER_URL","MASTODON_REMOVE_USER_FROM_FOLLOWERS","_ref59$mediaIds","mediaIds","inReplyToStatusId","quoteId","pollOptions","normalizedPoll","expires_in","multiple","postHeaders","_ref60$mediaIds","putHeaders","_ref61","uploadMedia","_ref62","formData","parseAttachment","setMediaDescription","_ref63","_ref79","URLSearchParams","with_relationships","_ref80","_ref81","_ref82","_ref83","_ref84","_ref87","_ref88","deleteUser","addRight","deleteRight","agreement","resp","updateProfileImages","_ref5$avatar","_ref5$avatarName","avatarName","_ref5$banner","_ref5$background","importMutes","_ref64","importBlocks","_ref65","importFollows","_ref66","deleteAccount","_ref67","changeEmail","_ref68","moveAccount","_ref69","targetAccount","addAlias","_ref70","alias","deleteAlias","_ref71","listAliases","_ref72","_cacheBooster","changePassword","_ref73","newPassword","newPasswordConfirmation","settingsMFA","_ref74","mfaDisableOTP","_ref75","generateMfaBackupCodes","_ref78","mfaSetupOTP","_ref77","mfaConfirmOTP","_ref76","addBackup","_ref85","listBackups","_ref86","fetchFollowRequests","fetchLists","account_ids","MASTODON_APPROVE_USER_URL","MASTODON_DENY_USER_URL","_ref89","_ref90","_ref90$single","_ref105","_ref91","_ref92","_ref93","_ref94","_ref95","_ref96","_ref97","_ref98","status_ids","_ref100","_ref99","fetchKnownDomains","_ref101","_ref102","_ref103","_ref104","_ref117","_ref118","_ref119","_ref119$limit","_ref120","_ref120$mediaId","media_id","_ref121","last_read_id","_ref122","_ref123","MASTODON_USER_IN_LISTS","_ref107","_ref108","_ref110","_ref111","_ref112","fetchScrobbles","_ref129","_ref129$limit","_ref106","_ref124","_ref125","_ref126","_ref127","installFrontend","_ref128","importEmojiFromFS","reloadEmoji","listEmojiPacks","_ref132","page","pageSize","PLEROMA_EMOJI_PACKS_URL","createEmojiPack","_ref131","deleteEmojiPack","_ref130","saveEmojiPackMetadata","_ref135","newData","addNewEmojiFile","_ref136","filename","updateEmojiFile","_ref137","newShortcode","newFilename","new_shortcode","new_filename","deleteEmojiFile","_ref138","listRemoteEmojiPacks","_ref133","PLEROMA_EMOJI_PACKS_LS_REMOTE_URL","downloadRemoteEmojiPack","_ref134","as","propsToNative","_kebabCase","rgb2hex","g","_r","_map2","relativeLuminance","srgb","_srgbToLinear","bit","c2linear","srgbToLinear","getContrastRatio","getContrastRatioLayers","layers","bedrock","alphaBlendLayers","alphaBlend","fga","hex2rgb","hex","mixrgb","rgba2css","rgba","_rgba$a","getTextColor","preserve","base","invertLightness","rgb","contrastRatio","getCssColor","Component","isFunction","getComponentOptions","MINUTE","HOUR","WEEK","MONTH","YEAR","relativeTime","nowThreshold","round","relativeTimeShort","unitToSeconds","secondsToUnit","failCreateNotif","desktopNotificationOpts","isSWSupported","swDesktopNotification","desktopNotification","bind","_unused","swCloseDesktopNotification","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","show_birthday","actor_type","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","reblog","edited_at","conversation_id","local","in_reply_to_screen_name","in_reply_to_account_acct","parent_visible","quote_id","quote_url","quote_visible","quotes_count","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","favourite","emoji_url","actor","linkHeader","parsedLinkHeader","parseLinkHeader","max_id","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","getOriginalFavicons","fileSizeFormat","numArg","units","exponent","toFixed","fileTypeExt","fileMatchesSomeType","specialLanguageCodes","ja_easy","zh_Hant","zh","internalToBrowserLocale","internalToBackendLocale","getLanguageName","languageName","ISO6391","charAt","toLocaleUpperCase","languagesObject","internalToBackendLocaleMulti","ACTIONABLE_NOTIFICATION_TYPES","cachedBadgeUrl","visibleTypes","muteWordHits","isMutedNotification","notificationObject","prepareNotificationObject","filteredNotificationsFromStore","i18nString","notifObj","badge","mastoApiNotificationTypes","readNotifsIds","unreadNotifsIds","Infinity","findOffset","child","_ref$top","_ref$left","ignorePadding","offsetLeft","_findPadding","findPadding","topPadding","leftPadding","offsetParent","position","contains","_findPadding2","topPaddingStr","leftPaddingStr","promiseCall","stopped","random","statusSummary","muteWord","_ref$media","_ref$inReplyToStatusI","_ref$quoteId","_ref$contentType","_ref$preview","_ref$idempotencyKey","_ref2$media","_ref2$contentType","supportsAdoptedStyleSheets","adoptedStyleSheets","createStyleSheet","sheet","CSSStyleSheet","rules","cssRules","deleteRule","EAGER_STYLE_ID","LAZY_STYLE_ID","adoptStyleSheets","styles","generateTheme","inputRuleset","callbacks","_callbacks$onNewRule","onNewRule","_callbacks$onLazyFini","onLazyFinished","_callbacks$onEagerFin","onEagerFinished","themes3","chunks","processChunk","rule","isLazy","init","ultimateBackgroundColor","getCssRules","eager","_chunk","chunk","lazyProcessFunc","localStorage","engineChecksum","getEngineChecksum","eagerStyles","lazyStyles","insertRule","removeItem","onFinish","_yield$generateTheme","_args2","extractStyleConfig","defaultStyleConfig","_document$getElementB","head","styleEl","appendChild","styleSheet","getThemes","themes","promises","isV1","isPushSupported","getOrCreateServiceWorker","runtime","deleteSubscriptionFromBackEnd","_initServiceWorker","serviceWorker","_event$data","_showDesktopNotification","_yield$window$navigat","sw","getRegistration","postMessage","_closeDesktopNotification","_yield$window$navigat2","_updateFocus","_yield$window$navigat3","registration","base64String","base64","subscribeOptions","userVisibleOnly","applicationServerKey","repeat","pushManager","subscribePush","subscription","alerts","mention","responseData","sendSubscriptionToBackEnd","getSubscription","unsubscribe","unsubscribePush","parseCssShadow","_exec","_exec2","dimensions","_dimensions$split$fil","_dimensions$split$fil2","_dimensions$split$fil3","_dimensions$split$fil4","isInset","colorString","getCssColorString","getCssShadow","usesDropShadow","shad","virtualDirectives","dynamicVars","stacked","cssDirectives","_v$split$map","_v$split$map2","getScopedVersion","newScope","LAYERS","undelay","topBar","profileTint","popover","selectedMenu","btn","btnPanel","btnTopBar","inputPanel","inputTopBar","alert","alertPanel","chatBg","chatMessage","DEFAULT_OPACITY","alertPopup","SLOT_INHERITANCE","depends","priority","wallpaper","mod","brightness","layer","accent","faintLink","postFaintLink","profileBg","highlightLightText","highlightPostLink","highlightFaintText","highlightFaintLink","highlightPostFaintLink","highlightText","highlightLink","highlightIcon","popoverLightText","popoverPostLink","popoverFaintText","popoverFaintLink","popoverPostFaintLink","popoverText","popoverLink","popoverIcon","selectedPost","selectedPostFaintText","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","basePaletteKeys","fontsKeys","opacityKeys","shadowsKeys","radiiKeys","nonComponentPrefixes","extendedBaseKeys","prefix","allKeys","newRules","flatExtRules","toUpperCase","last","variantArray","secondLast","_newRule$state","_newRule$state2","shadows","originalShadow","radii","originalRadius","convertRadii","originalOpacity","convertOpacity","originalFont","convertFonts","getLayersArray","getLayers","opacitySlot","currentLayer","getDependencies","inheritance","layerDeps","expandSlotValue","getOpacitySlot","getDeps","findInheritedOpacity","visited","depSlot","dependency","getLayerSlot","findInheritedLayer","SLOT_ORDERED","whites","grays","blacks","unprocessed","step","node","ai","bi","depsA","depsB","topoSort","aV","bV","OPACITIES","defaultValue","affectedSlots","computeDynamicColor","sourceColor","getColor","targetColor","_sourceColor$split$ma","_sourceColor$split$ma2","variable","modifier","parseFloat","generateColors","composePreset","generateRadii","generateShadows","generateFonts","getCssShadowFilter","sourceColors","sourceOpacity","_getColors","colors2to3","backgroundColor","deps","isTextColor","outputColor","variableSlot","colorFunc","dep","ownOpacitySlot","opacityOverriden","dependencySlot","dependencyColor","htmlColors","solid","inputRadii","btnRadius","avatarAlt","tooltip","postCode","DEFAULT_SHADOWS","popup","avatarStatus","panelHeader","buttonHover","buttonPressed","hackContextDict","cleanInputShadows","shadowDef","inputShadows","shadows2to3","shadowsAcc","slotName","shadowDefs","slotFirstWord","colorSlotName","newShadow","shadowAcc","_ref49$color","statePositionAcc","functions","findColor","findShadow","staticVars","_exec$groups","_wrapRegExp","funcName","argsString","argsNeeded","colorFunctions","amountArg","colorArg","backgroundArg","foregroundArg","_args2$","foreground","blend","_args3","_args4","effectiveBackground","lowerLevelBackground","shadowFunctions","borderSide","_args5","side","_args5$","_args5$2","widthArg","_args5$3","targetShadow","unroll","currentParent","combinationsMatch","subject","subjectStatesSet","criteriaStatesSet","findRules","pathCriteria","pathSubject","criteriaParent","subjectParent","normalizeCombination","_rule$variant","Root","Text","FunText","Link","Icon","Border","Panel","_shadow$split$map","_color$split$map","_color$split$map2","_dynamicVars$stacked","_dynamicVars$lowerLev","virtualSlot","lowerLevelVirtualDirectivesRaw","inheritedBackground","_dynamicVars$lowerLev2","getTextColorAlpha","intendedTextColor","componentsContext","sum","ruleToSelector","genericRuleToSelector","ignoreOutOfTreeSelector","isParent","_variants$normal","_component$states","_component$variants","applicableStates","applicableVariantName","selectors","_components$rootCompo","_ref3$debug","_ref3$liteMode","liteMode","_ref3$onlyNormalState","onlyNormalState","_ref3$rootComponentNa","rootComponentName","parentsA","parentsB","virtualComponents","processCombination","combination","_computed$lowerLevelS","_computed$lowerLevelS2","_computed$lowerLevelS3","cssSelector","parentSelector","soloSelector","lowerLevelSelector","lowerLevelVirtualDirectives","virtualDirectivesRaw","computedDirectives","computedRule","_inheritedTextAuto","_computedDirectives$t","_computedDirectives$t2","_computedDirectives$t3","_computedDirectives$t4","virtualName","inheritedTextColor","inheritedTextAuto","inheritedTextOpacity","inheritedTextOpacityMode","lowerLevelTextSelector","lowerLevelTextRule","newTextRule","lowerLevelStackedBackground","inheritRule","variantRules","lastVariantRule","normalRules","inheritSelector","_computedDirectives$o","_computedDirectives$o2","performance","combinations","processInnerComponent","originalStates","originalVariants","innerComponents","permutationStateKeys","stateCombinations","combos","flatCombos","self","selfSet","uniqueComboStrings","uniqueCombos","comboSize","getAllPossibleCombinations","combo","innerComponent","t1","t2","highlightStyle","prefs","solidColor","tintColor","tintColor2","customProps","backgroundImage","backgroundPosition","highlightClass","complicated","_includes","faFile","faMusic","faImage","faVideo","faPlayCircle","faStop","faSearchPlus","faTrashAlt","faPencilAlt","faAlignRight","localDescription","nsfwImage","hideNsfwLocal","modalOpen","showHidden","flashLoaded","showDescription","classNames","usePlaceholder","placeholderName","placeholderIconClass","referrerpolicy","oembed","useModal","modalTypes","videoTag","onEdit","openModal","openModalForce","onRemove","onShiftUp","shiftUp","onShiftDn","shiftDn","stopFlash","flash","closePlayer","setFlashLoaded","toggleDescription","onload","onImageLoad","naturalWidth","hideDescription","onKeydown","_component_StillImage","onPlay","onPause","thumb_url","oembedHTML","onPlayerOpened","onPlayerClosed","slicedUsers","_component_user_link","vm","indeterminateTransitionFix","indeterminate","onTransitionEnd","modelValue","DialogModal","cancelText","confirmText","onAccept","_component_dialog_modal","darkOverlay","addPositionToWords","words","word","previous","splitByWhitespaceBoundary","currentWord","currentChar","pos","wordsWithPosition","toReplace","ariaLive","currentText","announce","_textAtCaret","faSmileBeam","suggest","enableEmojiPicker","hideEmojiButton","enableStickerPicker","newlineOnCtrlEnter","randomSeed","genRandomSeed","caretEl","caret","blurTimeout","temporarilyHideSuggestions","disableClickOutside","overlayStyle","pickerShown","EmojiPicker","UnicodeDomainIndicator","ScreenReaderNotice","defaultCandidateIndex","preText","postText","showSuggestions","textAtCaret","_this$wordAtCaret","wordAtCaret","Completion","maybeLocalizedEmojiNamesAndKeywords","_emoji$annotations$la","_emoji$annotations$la2","maybeLocalizedEmojiName","_emoji$annotations$la3","onInputScroll","hiddenOverlay","scrollLeft","suggestionListId","suggestionItemId","_this$$refs","hiddenOverlayCaret","suggestorPopover","setAnchorEl","picker","padding","lineHeight","fontFamily","fontSize","wordWrap","whiteSpace","onBlur","onFocus","onPaste","onKeyUp","onKeyDown","onClickInput","onTransition","showPopover","hidePopover","newWord","firstchar","matchedSuggestions","_take","screenReaderNotice","number","triggerShowPicker","showPicker","scrollIntoView","togglePicker","hidePicker","startEmojiLoad","insert","insertion","keepOpen","_ref2$surroundingSpac","surroundingSpace","before","after","isSpaceRegex","spaceBefore","spaceAfter","replaceText","suggestion","len","cycleBackward","cycleForward","rootRef","scrollerRef","closest","currentScroll","scrollerBottomBorder","rootBottomBorder","targetScroll","scroll","bottom","onPickerShown","onPickerClosed","setCaret","ctrlKey","shiftKey","onStickerUploaded","onStickerUploadFailed","selectionStart","updateStyles","autoCompleteItemLabel","ariaOwns","ariaAutocomplete","ariaExpanded","ariaActivedescendant","_component_screen_reader_notice","_component_EmojiPicker","onEmoji","_component_UnicodeDomainIndicator","at","faBoxOpen","faStickyNote","faSmile","faUser","faPaw","faIceCream","faBus","faBasketballBall","faLightbulb","faCode","faFlag","UNICODE_EMOJI_GROUP_ICON","activities","objects","flags","maybeLocalizedKeywords","nameLocalizer","hideCustomEmoji","inject","activeGroup","showingStickers","groupsScrolledClass","customEmojiTimeout","hideCustomEmojiInPicker","contentLoaded","groupRefs","emojiRefs","filteredEmojiGroups","StickerPicker","updateEmojiSize","css","emojiSizeUnit","emojiSizeValue","fullEmojiSize","onShowing","setGroupRef","onPopoverShown","onPopoverClosed","startIndex","endIndex","visibleStartIndex","visibleEndIndex","scrolledGroup","emojiItems","headerId","parentElement","getOffset","scrollHeader","headerRef","offsetWidth","headerCont","currentScrollRight","setScroll","setShowStickers","indexInList","scrollToItem","updateScrolledClass","scrollTopMax","toggleStickers","filterByKeyword","keywordLowercase","orderedEmojiList","indices","indexOfKeyword","flat","oldContentLoaded","recalculateItemPerRow","getFilteredEmojiGroups","defaultGroup","allEmojiGroups","_trim","debouncedHandleKeywordChange","allCustomGroups","minItemSize","emojiHeight","itemPerRow","activeGroupView","stickersAvailable","unpacked","unicodeEmojiGroups","stickerPickerEnabled","isFirstRow","isInModal","popoversZLayer","tabindex","_component_still_image","composing","_component_DynamicScroller","onUpdate","onVisible","_component_DynamicScrollerItem","_component_sticker_picker","onUploaded","onUploadFailed","ruffleInstance","getRuffle","RufflePlayer","polyfills","publicPath","script","onerror","onabort","oncancel","faExclamationTriangle","player","openPlayer","RuffleService","ruffle","newest","createPlayer","letterbox","container","fetchRelationship","attempt","requested","requestFollow","showingConfirmUnfollow","shouldConfirmUnfollow","isPressed","labelFollowing","showConfirmUnfollow","hideConfirmUnfollow","unfollow","doUnfollow","requestUnfollow","hidingLong","minimal","grid","audio","attachmentsRemaining","currentRow","attachmentsDimensionalScore","row","tooManyAttachments","editable","onNaturalSizeLoad","rowStyle","itemStyle","getAspectRatio","flex","toggleHidingLong","openGallery","onMedia","rowIndex","attachmentIndex","_component_Attachment","removeAttachment","shiftUpAttachment","shiftDnAttachment","editAttachment","onSetMedia","Select","promptText","controlledLanguage","addLanguage","setLanguageAt","removeLanguageAt","_component_Select","imageLoaded","useImage","censored","hideNsfwConfig","useDescription","newImg","provider_name","getKey","getClass","nonInteractive","faUpload","uploadCount","uploadReady","uploading","uploadFile","filesize","allowedsize","filesizeunit","allowedsizeunit","fileData","decreaseUploadCount","clearFile","multiUpload","files","change","dropFiles","normalButton","acceptTypes","fileInfos","accept","faAt","userScreenName","hasSelection","shouldShowTooltip","handleSelection","getSelection","containsNode","full","userNameFullUi","serverName","userNameFull","highlightType","_highlightStyle","classnames","shouldBoldenYou","isRemote","shouldShowFullUserName","conf","shouldShowAvatar","shouldShowYous","shouldFadeDomain","MentionLink","mentionsComputed","extraMentions","manyMentions","toggleShowMore","_component_MentionLink","provide","noBackground","reportId","generateUserProfileLink","_component_status_content","notes","faStar","faRetweet","faEyeSlash","faSuitcaseRolling","faExpandAlt","faCompressAlt","statusExpanded","unmuted","Report","toggleStatusExpanded","getUser","interacted","toggleMute","userClass","userStyle","targetUser","targetUserProfileLink","needMute","onInteracted","botIndicator","_component_Report","shouldShowChats","shouldShowAnnouncements","shouldShowFollowRequests","hasAnythingToShow","shouldShowCustomizationTip","openNotificationSettings","dismissConfigurationTip","theSettings","dismiss","filters","toggleNotificationFilter","NotificationFilters","ExtraNotifications","minimalMode","noExtra","seenToDisplayCount","mainClass","filteredNotifications","shouldShowUnseen","extraNotificationsCount","unseenCountTitle","noHeading","teleportTarget","wide","mobile","notificationsToDisplay","updateScrollPosition","actionable","notificationInteracted","markAsSeen","seenCount","notifs","_component_NotificationFilters","_component_extra_notifications","unseen","_component_notification","boundTo","boundToSelector","popoverClass","removePadding","overlayCenters","overlayCentersSelector","stayOnClick","triggerAttrs","anchorEl","teleport","lockReEntry","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","onClickContent","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","profileMention","_ref$attentions","allAttentions","_reject","attention","buildMentionsString","repliedUser","copyMessageScope","statusParams","mediaDescriptions","statusContentType","statusIsSensitive","statusFiles","statusPoll","statusMediaDescriptions","statusScope","quoting","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","quotable","repliedStatus","deep","statusChanged","autoPreview","clearStatus","mediaUpload","clearPollForm","preserveFocus","previewStatus","replyOrQuoteAttr","postingOptions","optimisticPosting","disableSubmit","submitOnEnter","setAllMediaDescriptions","postHandler","statusPoster","debouncePreviewStatus","closePreview","togglePreview","addMediaFile","fileInfo","removeMediaFile","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","disableLockWarning","disableSubject","_component_EmojiInput","inputProps","emojiPickerPlacement","onShown","onCompositionupdate","disableScopeSelector","disableVisibilitySelector","_component_scope_selector","postFormat","_component_poll_form","onUpdatePoll","_component_media_upload","onUploading","onAllUploaded","animation","onDragleave","onDrop","_component_gallery","disableSensitivityCheckbox","progress","$data","subscribeUrl","serverUrl","protocol","host","faLock","faLockOpen","currentScope","initialScope","showNothing","showPublic","showUnlisted","showPrivate","showDirect","originalScope","shouldShow","unlisted","private","direct","showAll","userDefault","onScopeChange","faReply","faStarRegular","animated","filterWord","addReaction","existingReaction","show","showingConfirmDialog","shouldConfirmRepeat","showConfirmDialog","doRetweet","hideConfirmDialog","faBookmarkReg","faShareAlt","faExternalLinkAlt","faHistory","showingDeleteDialog","shouldConfirmDelete","showDeleteStatusConfirmDialog","doDeleteStatus","hideDeleteStatusConfirmDialog","copyLink","clipboard","writeText","statusLink","reportStatus","showStatusHistory","p","canDelete","ownStatus","canPin","canMute","canBookmark","isEdited","_component_ConfirmModal","enter","oldStatus","usersCapped","UserListPopover","tooManyReactions","showMoreString","accountsForEmoji","toggleShowAll","reactedWith","fetchEmojiReactionsByIfMissing","reactWith","unreact","emojiOnClick","counterTriggerAttrs","_component_UserListPopover","faPlusSquare","faEye","faPlay","camelCase","controlledOrUncontrolledSet","camelized","uncontrolledName","ReplyButton","FavoriteButton","ReactButton","RetweetButton","ExtraButtons","StatusPopover","EmojiReactions","uncontrolledReplying","userExpanded","uncontrolledMediaPlaying","headTailLinks","displayQuote","inQuote","toggle","controlledName","showReasonMutedThread","inConversation","repeaterClass","repeaterStyle","replyProfileLink","isReply","retweeterUser","retweeter","retweeterHtml","retweeterProfileLink","statusFromGlobalRepository","botStatus","showActorTypeIndicator","sensitiveStatus","mentionsLine","writtenSet","attn","hasMentionsLine","reasonsToMute","userIsMuted","shouldNotMute","relationshipReblog","hideMutedUsers","isFocused","replyToName","replySubject","decodedSummary","startsWithRe","combinedFavsAndRepeatsUsers","combinedUsers","tagObj","shouldDisplayFavsAndRepeats","isSuspendable","inThreadForest","controlledThreadDisplayStatus","visibilityLocalized","hasVisibleQuote","hasInvisibleQuote","quotedStatus","shouldDisplayQuote","scrobblePresent","multiplier","maxAge","artist","scrobble","visibilityIcon","showError","toggleReplying","gotoOriginal","toggleUserExpanded","addMediaPlaying","removeMediaPlaying","setHeadTailLinks","controlledToggleThreadDisplay","scrollIfHighlighted","highlightId","rect","toggleDisplayQuote","inlineExpanded","isPreview","showPinned","_hoisted_63","_hoisted_64","_hoisted_65","_hoisted_66","_component_reply_button","onToggle","simpleTree","externalLink","_hoisted_31","_hoisted_37","_component_StatusPopover","flip","_hoisted_40","_component_MentionsLine","_hoisted_41","controlledShowingTall","controlledExpandingSubject","controlledShowingLongSubject","controlledToggleShowingTall","controlledToggleExpandingSubject","controlledToggleShowingLongSubject","onMediaplay","onMediapause","onParseReady","_hoisted_46","showOtherRepliesAsButton","_hoisted_51","_hoisted_52","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_57","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_61","_component_AvatarList","_component_EmojiReactions","_hoisted_62","_component_retweet_button","_component_favorite_button","_component_ReactButton","_component_extra_buttons","onOnError","onOnSuccess","_hoisted_67","basePoll","expiresAt","showResults","voted","totalVotesCount","votes_count","containerClass","choiceIndices","isDisabled","noChoice","percentageForOption","resultTitle","activateOption","clickedElement","_forEach","optionId","voters_count","faLink","postLength","parseReadyDone","localCollapseSubjectDefault","tallStatus","singleLine","longSubject","mightHideBecauseSubject","mightHideBecauseTall","hideSubjectStatus","hideTallStatus","showingMore","attachmentTypes","handle","toggleShowingTall","toggleExpandingSubject","toggleShowingLongSubject","fullContent","controlledOrUncontrolledToggle","uncontrolledShowingTall","uncontrolledShowingLongSubject","uncontrolledExpandingSubject","statusCard","nsfwClickthrough","attachmentSize","Poll","galleryAttachments","_component_Poll","_component_link_preview","realSrc","appendPx","loadLazy","dataSrc","imageLoadHandler","canvas","imageLoadError","removeAttribute","localeDateString","relativeTimeString","timeString","tc","templateKey","refreshRelativeTimeObject","longFormat","datetime","faRobot","faPeopleGroup","showPlaceholder","imgSrc","_ctx$user","_ctx$user2","FORCE_NSFW","STRIP_MEDIA","FORCE_UNLISTED","DISABLE_REMOTE_SUBSCRIPTION","DISABLE_ANY_SUBSCRIPTION","SANDBOX","QUARANTINE","showDeleteUserDialog","tagsSet","canGrantRole","canChangeActivationState","privileged","canDeleteAccount","canUseTagPolicy","tagPolicyAvailable","hasTag","privilege","toggleTag","toggleRight","deleteUserDialog","isProfile","isTargetUser","setToggled","_component_DialogModal","inListsSet","inList","toggleList","faEllipsisV","showingConfirmBlock","ProgressButton","UserListMenu","showConfirmBlock","hideConfirmBlock","showRepeats","hideRepeats","shouldConfirmBlock","doBlockUser","showing_reblogs","_component_UserListMenu","localNote","frozen","startEditing","cancelEditing","finalizeEditing","faRss","faEdit","followRequestInProgress","showingConfirmMute","muteExpiryAmount","muteExpiryUnit","bordered","isOtherUser","dailyAvg","days","userHighlightType","userHighlightColor","visibleRole","validRole","roleTitle","showModerationMenu","hasNote","supportsNote","shouldConfirmMute","muteExpiryUnits","ModerationTools","AccountActions","UserNote","showConfirmMute","hideConfirmMute","doMuteUser","setProfileView","zoomAvatar","mentionUser","onAvatarClickHandler","onAvatarClick","hideBio","heading","flexible","avatarAction","_component_AccountActions","subscribing","_component_ProgressButton","_component_ModerationTools","hasNoteEditor","_component_UserNote","blocksSuspend","hasAudio","onPlaying","setHasAudio","looping","onPaused","srcElement","webkitAudioDecodedByteCount","mozHasAudio","audioTracks","preload","loop","playsinline","webpackContext","webpackContextResolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","O","chunkIds","fn","notFulfilled","fulfilled","getter","__esModule","getPrototypeOf","mode","ns","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","miniCssF","globalThis","needAttach","scripts","getElementsByTagName","getAttribute","charset","nc","setAttribute","onScriptComplete","doneFns","removeChild","toStringTag","nmd","installedCssChunks","miniCss","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","loadStylesheet","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}

File Metadata

Mime Type
text/plain
Expires
Tue, Jan 20, 12:28 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
973431
Default Alt Text
app.3fbb12e9679dc0e0aa33.js.map (2 MB)

Event Timeline